1
Fork 0
mirror of https://github.com/RYGhub/royal-mifia.git synced 2024-11-25 23:24:18 +00:00

Altri commenti

This commit is contained in:
Steffo 2017-02-02 14:07:48 +01:00 committed by GitHub
parent 12266afdc7
commit 328c410cbd

34
main.py
View file

@ -243,11 +243,11 @@ class Derek(Role):
def power(self, bot, game, arg): def power(self, bot, game, arg):
# Attiva / disattiva la morte alla fine del round # Attiva / disattiva la morte alla fine del round
self.deathwish = not self.deathwish
if self.deathwish: if self.deathwish:
self.deathwish = False
self.player.message(bot, s.derek_deathwish_unset) self.player.message(bot, s.derek_deathwish_unset)
else: else:
self.deathwish = True
self.player.message(bot, s.derek_deathwish_set) self.player.message(bot, s.derek_deathwish_set)
def onendday(self, bot, game): def onendday(self, bot, game):
@ -310,14 +310,13 @@ class Mamma(Role):
return r return r
def onstartgame(self, bot, game): def onstartgame(self, bot, game):
while True: # Scegli un bersaglio casuale che non sia il giocatore stesso
target = random.sample(game.players, 1)[0] possibletargets = game.players.copy()
if target == self.player: possibletargets.pop(self.player)
continue target = random.sample(possibletargets, 1)[0]
self.player.message(bot, s.mom_discovery.format(target=target.tusername, self.player.message(bot, s.mom_discovery.format(target=target.tusername,
icon=target.role.icon, icon=target.role.icon,
role=target.role.name)) role=target.role.name))
break
class Stagista(Role): class Stagista(Role):
@ -420,12 +419,12 @@ class Player:
self.tid = tid # ID di Telegram self.tid = tid # ID di Telegram
self.tusername = tusername # Username di Telegram self.tusername = tusername # Username di Telegram
self.role = Role(self) # Di base, ogni giocatore è un ruolo indefinito self.role = Role(self) # Di base, ogni giocatore è un ruolo indefinito
self.alive = True self.alive = True # Il giocatore è vivo?
self.votingfor = None # Diventa un player se ha votato self.votingfor = None # Diventa un player se ha votato
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. Se è None, la mifia può uccidere questo giocatore
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? self.dummy = dummy # E' un bot? Usato solo per il debug (/debugjoin)
def __repr__(self) -> str: def __repr__(self) -> str:
r = "<Player {username}>".format(username=self.tusername) r = "<Player {username}>".format(username=self.tusername)
@ -524,7 +523,7 @@ class Game:
"""Assegna ruoli casuali a tutti i giocatori.""" """Assegna ruoli casuali a tutti i giocatori."""
random.seed() random.seed()
playersleft = self.players.copy() playersleft = self.players.copy()
# Seleziona mifiosi # Assegna i ruoli secondo i numeri all'interno di playersinrole
for currentrole in rolepriority: for currentrole in rolepriority:
for player in random.sample(playersleft, self.roleconfig[currentrole.__name__]): for player in random.sample(playersleft, self.roleconfig[currentrole.__name__]):
self.playersinrole[currentrole.__name__].append(player) self.playersinrole[currentrole.__name__].append(player)
@ -618,7 +617,7 @@ class Game:
# Fai gli endday in un certo ordine. # Fai gli endday in un certo ordine.
# Si potrebbe fare più velocemente, credo. # Si potrebbe fare più velocemente, credo.
# Ma non sto ho voglia di ottimizzare ora. # Ma non sto ho voglia di ottimizzare ora.
# Mifiosi # Endday dei mifiosi se votingmifia è attivo
if self.votingmifia: if self.votingmifia:
# Trova il più votato dai mifiosi e uccidilo # Trova il più votato dai mifiosi e uccidilo
killlist = self.mostvotedmifia() killlist = self.mostvotedmifia()
@ -652,6 +651,7 @@ class Game:
player.votingfor = None player.votingfor = None
# Controlla se qualcuno ha vinto # Controlla se qualcuno ha vinto
self.victoryconditions(bot) self.victoryconditions(bot)
# Incrementa il giorno
self.day += 1 self.day += 1
def startpreset(self, bot): def startpreset(self, bot):
@ -693,7 +693,7 @@ class Game:
def loadpreset(self, bot, preset): def loadpreset(self, bot, preset):
"""Fine della fase di preset: carica il preset selezionato o passa a config""" """Fine della fase di preset: carica il preset selezionato o passa a config"""
if preset == "simple": if preset == "simple":
# Preset semplice # Preset semplice (solo Royal, Mifiosi e Investigatori)
self.roleconfig = { self.roleconfig = {
"Mifioso": math.floor(len(self.players) / 8) + 1, # 1 Mifioso ogni 8 giocatori "Mifioso": math.floor(len(self.players) / 8) + 1, # 1 Mifioso ogni 8 giocatori
"Investigatore": math.floor(len(self.players) / 12) + 1, # 1 Detective ogni 12 giocatori "Investigatore": math.floor(len(self.players) / 12) + 1, # 1 Detective ogni 12 giocatori
@ -710,7 +710,7 @@ class Game:
self.missingmifia = False self.missingmifia = False
self.endconfig(bot) self.endconfig(bot)
elif preset == "classic": elif preset == "classic":
# Preset classico # Preset classico (solo Royal, Mifiosi, Investigatori, Angeli e Terroristi)
self.roleconfig = { self.roleconfig = {
"Mifioso": math.floor(len(self.players) / 8) + 1, # 1 Mifioso ogni 8 giocatori "Mifioso": math.floor(len(self.players) / 8) + 1, # 1 Mifioso ogni 8 giocatori
"Investigatore": math.floor(len(self.players) / 12) + 1, # 1 Detective ogni 12 giocatori "Investigatore": math.floor(len(self.players) / 12) + 1, # 1 Detective ogni 12 giocatori
@ -727,9 +727,9 @@ class Game:
self.missingmifia = False self.missingmifia = False
self.endconfig(bot) self.endconfig(bot)
elif preset == "full": elif preset == "full":
# Preset completo # Preset completo (non ci sono Royal, ogni giocatore ha un ruolo)
self.roleconfig = { self.roleconfig = {
# 1 di ogni ruolo # 1 di ogni ruolo, ma ci devono essere almeno 8 giocatori per avviare la partita
"Mifioso": math.floor(len(self.players) / 9) + 1, "Mifioso": math.floor(len(self.players) / 9) + 1,
"Investigatore": math.floor(len(self.players) / 10) + 1, "Investigatore": math.floor(len(self.players) / 10) + 1,
"Angelo": math.floor(len(self.players) / 11) + 1, "Angelo": math.floor(len(self.players) / 11) + 1,