mirror of
https://github.com/RYGhub/royal-mifia.git
synced 2024-11-26 07:34:19 +00:00
Improved role priority code
This commit is contained in:
parent
2f97fe7eb0
commit
e667b3da11
1 changed files with 21 additions and 35 deletions
52
main.py
52
main.py
|
@ -221,6 +221,9 @@ class Angelo(Role):
|
||||||
self.protecting = None
|
self.protecting = None
|
||||||
|
|
||||||
|
|
||||||
|
rolepriority = [Mifioso, Investigatore, Angelo]
|
||||||
|
|
||||||
|
|
||||||
class Player:
|
class Player:
|
||||||
"""Classe di un giocatore. Contiene tutti i dati riguardanti un giocatore all'interno di una partita, come il ruolo,
|
"""Classe di un giocatore. Contiene tutti i dati riguardanti un giocatore all'interno di una partita, come il ruolo,
|
||||||
e i dati riguardanti telegram, come ID e username."""
|
e i dati riguardanti telegram, come ID e username."""
|
||||||
|
@ -259,15 +262,13 @@ class Game:
|
||||||
self.phase = 'Join' # Fase di gioco: 'Join', 'Config', 'Voting'
|
self.phase = 'Join' # Fase di gioco: 'Join', 'Config', 'Voting'
|
||||||
|
|
||||||
self.configstep = 0 # Passo attuale di configurazione
|
self.configstep = 0 # Passo attuale di configurazione
|
||||||
self.totalmifiosi = 0 # Numero di mifiosi da inserire
|
self.roleconfig = dict() # Dizionario con le quantità di ruoli da aggiungere
|
||||||
self.totaldetectives = 0 # Numero di detective da inserire
|
|
||||||
self.totalangels = 0 # Numero di angeli da inserire
|
|
||||||
self.votingmifia = False # Seguire le regole originali della mifia che vota?
|
self.votingmifia = False # Seguire le regole originali della mifia che vota?
|
||||||
|
|
||||||
# Liste di ruoli in gioco, per velocizzare gli endday
|
# Liste di ruoli in gioco, per velocizzare gli endday
|
||||||
self.mifiosiingame = list()
|
self.playersinrole = dict()
|
||||||
self.detectivesingame = list()
|
for currentrole in rolepriority:
|
||||||
self.angelsingame = list()
|
self.playersinrole[currentrole.__name__] = list()
|
||||||
|
|
||||||
# Trova un nome per la partita
|
# Trova un nome per la partita
|
||||||
if len(freenames) > 0:
|
if len(freenames) > 0:
|
||||||
|
@ -324,19 +325,10 @@ class Game:
|
||||||
random.seed()
|
random.seed()
|
||||||
playersleft = self.players.copy()
|
playersleft = self.players.copy()
|
||||||
# Seleziona mifiosi
|
# Seleziona mifiosi
|
||||||
self.mifiosiingame = random.sample(playersleft, self.totalmifiosi)
|
for currentrole in rolepriority:
|
||||||
for player in self.mifiosiingame:
|
for player in random.sample(playersleft, self.roleconfig[currentrole.__name__]):
|
||||||
player.role = Mifioso()
|
self.playersinrole[currentrole.__name__].append(player)
|
||||||
playersleft.remove(player)
|
player.role = currentrole()
|
||||||
# Seleziona detective
|
|
||||||
self.detectivesingame = random.sample(playersleft, self.totaldetectives)
|
|
||||||
for player in self.detectivesingame:
|
|
||||||
player.role = Investigatore()
|
|
||||||
playersleft.remove(player)
|
|
||||||
# Seleziona angeli
|
|
||||||
self.angelsingame = random.sample(playersleft, self.totalangels)
|
|
||||||
for player in self.angelsingame:
|
|
||||||
player.role = Angelo()
|
|
||||||
playersleft.remove(player)
|
playersleft.remove(player)
|
||||||
# Assegna il ruolo di Royal a tutti gli altri
|
# Assegna il ruolo di Royal a tutti gli altri
|
||||||
for player in playersleft:
|
for player in playersleft:
|
||||||
|
@ -348,9 +340,9 @@ class Game:
|
||||||
player.message(bot, player.role.powerdesc.format(gamename=self.name))
|
player.message(bot, player.role.powerdesc.format(gamename=self.name))
|
||||||
# Manda ai mifiosi l'elenco dei loro compagni di squadra
|
# Manda ai mifiosi l'elenco dei loro compagni di squadra
|
||||||
text = s.mifia_team_intro
|
text = s.mifia_team_intro
|
||||||
for player in self.mifiosiingame:
|
for player in self.playersinrole['Mifioso']:
|
||||||
text += s.mifia_team_player.format(icon=player.role.icon, name=player.tusername)
|
text += s.mifia_team_player.format(icon=player.role.icon, name=player.tusername)
|
||||||
for player in self.mifiosiingame:
|
for player in self.playersinrole['Mifioso']:
|
||||||
player.message(bot, text)
|
player.message(bot, text)
|
||||||
|
|
||||||
def updatevotes(self):
|
def updatevotes(self):
|
||||||
|
@ -365,7 +357,7 @@ class Game:
|
||||||
"""Aggiorna il conteggio dei voti mifiosi di tutti i giocatori."""
|
"""Aggiorna il conteggio dei voti mifiosi di tutti i giocatori."""
|
||||||
for player in self.players:
|
for player in self.players:
|
||||||
player.mifiavotes = 0
|
player.mifiavotes = 0
|
||||||
for player in self.mifiosiingame:
|
for player in self.playersinrole['Mifioso']:
|
||||||
if player.alive:
|
if player.alive:
|
||||||
if player.role.target is not None:
|
if player.role.target is not None:
|
||||||
player.role.target.mifiavotes += 1
|
player.role.target.mifiavotes += 1
|
||||||
|
@ -442,17 +434,10 @@ class Game:
|
||||||
self.message(bot, s.mifia_target_protected.format(target=killed.tusername,
|
self.message(bot, s.mifia_target_protected.format(target=killed.tusername,
|
||||||
icon=killed.protectedby.role.icon,
|
icon=killed.protectedby.role.icon,
|
||||||
protectedby=killed.protectedby.tusername))
|
protectedby=killed.protectedby.tusername))
|
||||||
# Attiva il onendday dei mifiosi
|
# Attiva gli onendday
|
||||||
for player in self.mifiosiingame:
|
for currentrole in rolepriority:
|
||||||
if isinstance(player.role, Mifioso) and player.alive:
|
for player in self.playersinrole[currentrole.__name__]:
|
||||||
player.role.onendday(bot, self)
|
if player.alive:
|
||||||
# Investigatori
|
|
||||||
for player in self.detectivesingame:
|
|
||||||
if isinstance(player.role, Investigatore) and player.alive:
|
|
||||||
player.role.onendday(bot, self)
|
|
||||||
# Angeli
|
|
||||||
for player in self.angelsingame:
|
|
||||||
if isinstance(player.role, Angelo) and player.alive:
|
|
||||||
player.role.onendday(bot, self)
|
player.role.onendday(bot, self)
|
||||||
# Cancella tutti i voti
|
# Cancella tutti i voti
|
||||||
for player in self.players:
|
for player in self.players:
|
||||||
|
@ -509,6 +494,7 @@ class Game:
|
||||||
pickle.dump(self, file)
|
pickle.dump(self, file)
|
||||||
file.close()
|
file.close()
|
||||||
|
|
||||||
|
|
||||||
# Partite in corso
|
# Partite in corso
|
||||||
inprogress = list()
|
inprogress = list()
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue