mirror of
https://github.com/RYGhub/royal-mifia.git
synced 2024-11-25 07:04:18 +00:00
bugmax
This commit is contained in:
parent
0baf19e61e
commit
37c8ad18a5
2 changed files with 34 additions and 9 deletions
39
main.py
39
main.py
|
@ -1,5 +1,6 @@
|
||||||
#!/usr/bin/env python3.5
|
#!/usr/bin/env python3.5
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
import datetime
|
||||||
import pickle
|
import pickle
|
||||||
|
|
||||||
import math
|
import math
|
||||||
|
@ -311,7 +312,7 @@ class Mamma(Role):
|
||||||
role=target.role.name))
|
role=target.role.name))
|
||||||
break
|
break
|
||||||
|
|
||||||
|
# Ordine in cui vengono eseguiti i onendday dei vari ruoli.
|
||||||
rolepriority = [Mifioso, Investigatore, Disastro, Angelo, Derek, Terrorista, Mamma]
|
rolepriority = [Mifioso, Investigatore, Disastro, Angelo, Derek, Terrorista, Mamma]
|
||||||
|
|
||||||
|
|
||||||
|
@ -327,7 +328,8 @@ class Player:
|
||||||
self.votes = 0 # Voti che sta ricevendo questo giocatore. Aggiornato da updatevotes()
|
self.votes = 0 # Voti che sta ricevendo questo giocatore. Aggiornato da updatevotes()
|
||||||
self.protectedby = None # Protettore. Oggetto player che protegge questo giocatore dalla mifia.
|
self.protectedby = None # Protettore. Oggetto player che protegge questo giocatore dalla mifia.
|
||||||
self.mifiavotes = 0 # Voti che sta ricevendo questo giocatore dalla mifia. Aggiornato da updatemifiavotes()
|
self.mifiavotes = 0 # Voti che sta ricevendo questo giocatore dalla mifia. Aggiornato da updatemifiavotes()
|
||||||
self.dummy = dummy # E' un bot?
|
if __debug__:
|
||||||
|
self.dummy = dummy # E' un bot?
|
||||||
|
|
||||||
def __repr__(self) -> str:
|
def __repr__(self) -> str:
|
||||||
r = "<Player {username}>".format(username=self.tusername)
|
r = "<Player {username}>".format(username=self.tusername)
|
||||||
|
@ -500,6 +502,8 @@ class Game:
|
||||||
|
|
||||||
def endday(self, bot):
|
def endday(self, bot):
|
||||||
"""Finisci la giornata, uccidi il più votato del giorno ed esegui gli endday di tutti i giocatori."""
|
"""Finisci la giornata, uccidi il più votato del giorno ed esegui gli endday di tutti i giocatori."""
|
||||||
|
# SALVA LA PARTITA, così se crasha si riprende da qui
|
||||||
|
self.save()
|
||||||
# Conta i voti ed elimina il più votato.
|
# Conta i voti ed elimina il più votato.
|
||||||
topvotes = self.mostvotedplayer()
|
topvotes = self.mostvotedplayer()
|
||||||
if len(topvotes) > 0:
|
if len(topvotes) > 0:
|
||||||
|
@ -576,8 +580,8 @@ class Game:
|
||||||
if preset == "simple":
|
if preset == "simple":
|
||||||
# Preset semplice
|
# Preset semplice
|
||||||
self.roleconfig = {
|
self.roleconfig = {
|
||||||
"Mifioso": math.floor(len(self.players) / 8) + 1,
|
"Mifioso": math.floor(len(self.players) / 8) + 1, # 1 Mifioso ogni 8 giocatori
|
||||||
"Investigatore": math.floor(len(self.players) / 12) + 1,
|
"Investigatore": math.floor(len(self.players) / 12) + 1, # 1 Detective ogni 12 giocatori
|
||||||
"Angelo": 0,
|
"Angelo": 0,
|
||||||
"Terrorista": 0,
|
"Terrorista": 0,
|
||||||
"Derek": 0,
|
"Derek": 0,
|
||||||
|
@ -590,10 +594,10 @@ class Game:
|
||||||
elif preset == "classic":
|
elif preset == "classic":
|
||||||
# Preset classico
|
# Preset classico
|
||||||
self.roleconfig = {
|
self.roleconfig = {
|
||||||
"Mifioso": math.floor(len(self.players) / 8) + 1,
|
"Mifioso": math.floor(len(self.players) / 8) + 1, # 1 Mifioso ogni 8 giocatori
|
||||||
"Investigatore": math.floor(len(self.players) / 12) + 1,
|
"Investigatore": math.floor(len(self.players) / 12) + 1, # 1 Detective ogni 12 giocatori
|
||||||
"Angelo": math.floor(len(self.players) / 10) + 1,
|
"Angelo": math.floor(len(self.players) / 10) + 1, # 1 Angelo ogni 10 giocatori
|
||||||
"Terrorista": 1 if random.randrange(0, 99) > 70 else 0,
|
"Terrorista": 1 if random.randrange(0, 99) > 70 else 0, # 30% di avere un terrorista
|
||||||
"Derek": 0,
|
"Derek": 0,
|
||||||
"Disastro": 0,
|
"Disastro": 0,
|
||||||
"Mamma": 0
|
"Mamma": 0
|
||||||
|
@ -604,6 +608,7 @@ class Game:
|
||||||
elif preset == "full":
|
elif preset == "full":
|
||||||
# Preset completo
|
# Preset completo
|
||||||
self.roleconfig = {
|
self.roleconfig = {
|
||||||
|
# 1 di ogni ruolo
|
||||||
"Mifioso": math.floor(len(self.players) / 8) + 1,
|
"Mifioso": math.floor(len(self.players) / 8) + 1,
|
||||||
"Investigatore": math.floor(len(self.players) / 9) + 1,
|
"Investigatore": math.floor(len(self.players) / 9) + 1,
|
||||||
"Angelo": math.floor(len(self.players) / 10) + 1,
|
"Angelo": math.floor(len(self.players) / 10) + 1,
|
||||||
|
@ -658,6 +663,19 @@ class Game:
|
||||||
file = open(str(self.groupid) + ".p", 'wb')
|
file = open(str(self.groupid) + ".p", 'wb')
|
||||||
pickle.dump(self, file)
|
pickle.dump(self, file)
|
||||||
file.close()
|
file.close()
|
||||||
|
# Crea un file uguale ma con un timestamp
|
||||||
|
# Non sono troppo sicuro che il timestamp si faccia così
|
||||||
|
t = datetime.datetime(0,0,0,0,0).now()
|
||||||
|
try:
|
||||||
|
file = open("{group}-{yy}-{mm}-{dd}-{hh}-{mi}.p".format(group=str(self.groupid), yy=t.year, mm=t.month, dd=t.day, hh=t.hour, mi=t.minute), 'x')
|
||||||
|
except FileExistsError:
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
file.close()
|
||||||
|
# Scrivi sul file.
|
||||||
|
file = open("{group}-{yy}-{mm}-{dd}-{hh}-{mi}.p".format(group=str(self.groupid), yy=t.year, mm=t.month, dd=t.day, hh=t.hour, mi=t.minute), 'wb')
|
||||||
|
pickle.dump(self, file)
|
||||||
|
file.close()
|
||||||
|
|
||||||
def victoryconditions(self, bot):
|
def victoryconditions(self, bot):
|
||||||
# Condizioni di vittoria
|
# Condizioni di vittoria
|
||||||
|
@ -969,7 +987,10 @@ def power(bot, update):
|
||||||
player = game.findplayerbyid(int(update.message.from_user['id']))
|
player = game.findplayerbyid(int(update.message.from_user['id']))
|
||||||
if player is not None:
|
if player is not None:
|
||||||
if player.alive:
|
if player.alive:
|
||||||
player.role.power(bot, game, cmd[2])
|
if len(cmd) > 2:
|
||||||
|
player.role.power(bot, game, cmd[2])
|
||||||
|
else:
|
||||||
|
player.message(bot, s.error_missing_parameters)
|
||||||
else:
|
else:
|
||||||
player.message(bot, s.error_dead)
|
player.message(bot, s.error_dead)
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -279,6 +279,10 @@ error_no_username = "\U000026A0 Non hai nessun username di Telegram!\n" \
|
||||||
# Errore: non si può votare nella prima giornata
|
# Errore: non si può votare nella prima giornata
|
||||||
error_no_votes_on_first_day = "\U000026A0 I Royal non votano nella prima giornata, dato che non si sono ancora verificati omicidii."
|
error_no_votes_on_first_day = "\U000026A0 I Royal non votano nella prima giornata, dato che non si sono ancora verificati omicidii."
|
||||||
|
|
||||||
|
# Errore: mancano dei parametri nel comando
|
||||||
|
error_missing_parameters = "\U000026A0 Mancano uno o più parametri.\n" \
|
||||||
|
"Controlla la sintassi del comando e riprova."
|
||||||
|
|
||||||
# Lista dei possibili nomi di una partita
|
# Lista dei possibili nomi di una partita
|
||||||
names_list = ["Cassata",
|
names_list = ["Cassata",
|
||||||
"Cannoli",
|
"Cannoli",
|
||||||
|
|
Loading…
Reference in a new issue