1
Fork 0
mirror of https://github.com/RYGhub/royal-mifia.git synced 2024-11-25 07:04:18 +00:00
This commit is contained in:
Steffo 2017-01-25 18:11:39 +01:00
parent 0baf19e61e
commit 37c8ad18a5
2 changed files with 34 additions and 9 deletions

39
main.py
View file

@ -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:

View file

@ -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",