mirror of
https://github.com/RYGhub/royal-mifia.git
synced 2024-11-25 15:14:18 +00:00
Implementato #40
This commit is contained in:
parent
c10497add3
commit
af1e2b8713
2 changed files with 37 additions and 16 deletions
47
main.py
47
main.py
|
@ -329,6 +329,7 @@ class Game:
|
|||
self.players = list() # Lista dei giocatori in partita
|
||||
self.tokill = list() # Giocatori che verranno uccisi all'endday
|
||||
self.phase = 'Join' # Fase di gioco: 'Join', 'Config', 'Voting'
|
||||
self.day = 0 # Numero del giorno. 0 se la partita deve ancora iniziare
|
||||
|
||||
self.configstep = 0 # Passo attuale di configurazione
|
||||
self.roleconfig = dict() # Dizionario con le quantità di ruoli da aggiungere
|
||||
|
@ -523,6 +524,7 @@ class Game:
|
|||
player.votingfor = None
|
||||
# Controlla se qualcuno ha vinto
|
||||
self.victoryconditions(bot)
|
||||
self.day += 1
|
||||
|
||||
def endconfig(self, bot):
|
||||
"""Fine della fase di config, inizio assegnazione ruoli"""
|
||||
|
@ -537,6 +539,7 @@ class Game:
|
|||
self.message(bot, s.error_not_enough_players)
|
||||
else:
|
||||
self.phase = 'Voting'
|
||||
self.day += 1
|
||||
self.assignroles(bot)
|
||||
self.message(bot, s.roles_assigned_successfully)
|
||||
|
||||
|
@ -669,10 +672,13 @@ def status(bot, update):
|
|||
for player in game.players:
|
||||
if not player.alive:
|
||||
text += s.status_dead_player.format(name=player.tusername)
|
||||
else:
|
||||
elif game.day > 1:
|
||||
text += s.status_alive_player.format(icon="\U0001F610",
|
||||
name=player.tusername,
|
||||
votes=str(player.votes))
|
||||
else:
|
||||
text += s.status_basic_player.format(icon="\U0001F610",
|
||||
name=player.tusername)
|
||||
game.message(bot, text)
|
||||
else:
|
||||
bot.sendMessage(update.message.chat['id'], s.error_no_games_found, parse_mode=ParseMode.MARKDOWN)
|
||||
|
@ -790,23 +796,32 @@ def config(bot, update):
|
|||
|
||||
def vote(bot, update):
|
||||
"""Vota per uccidere una persona."""
|
||||
# Trova la partita
|
||||
game = findgamebyid(update.message.chat['id'])
|
||||
if game is not None and game.phase is 'Voting':
|
||||
player = game.findplayerbyid(update.message.from_user['id'])
|
||||
if player is not None:
|
||||
if player.alive:
|
||||
target = game.findplayerbyusername(update.message.text.split(' ')[1])
|
||||
if target is not None:
|
||||
player.votingfor = target
|
||||
game.message(bot, s.vote.format(voted=target.tusername))
|
||||
else:
|
||||
game.message(bot, s.error_username)
|
||||
else:
|
||||
game.message(bot, s.error_dead)
|
||||
else:
|
||||
game.message(bot, s.error_not_in_game)
|
||||
else:
|
||||
if game is None:
|
||||
bot.sendMessage(update.message.chat['id'], s.error_no_games_found, parse_mode=ParseMode.MARKDOWN)
|
||||
return
|
||||
elif game.phase is not 'Voting':
|
||||
bot.sendMessage(update.message.chat['id'], s.error_no_games_found, parse_mode=ParseMode.MARKDOWN)
|
||||
return
|
||||
elif game.day <= 1:
|
||||
game.message(bot, s.error_no_votes_on_first_day)
|
||||
return
|
||||
# Trova il giocatore
|
||||
player = game.findplayerbyid(update.message.from_user['id'])
|
||||
if player is None:
|
||||
game.message(bot, s.error_not_in_game)
|
||||
return
|
||||
if not player.alive:
|
||||
game.message(bot, s.error_dead)
|
||||
return
|
||||
# Trova il bersaglio
|
||||
target = game.findplayerbyusername(update.message.text.split(' ')[1])
|
||||
if target is None:
|
||||
game.message(bot, s.error_username)
|
||||
return
|
||||
player.votingfor = target
|
||||
game.message(bot, s.vote.format(voted=target.tusername))
|
||||
|
||||
|
||||
def endday(bot, update):
|
||||
|
|
|
@ -194,6 +194,9 @@ status_header = "*ID:* {name}\n" \
|
|||
"*Fase:* {phase}\n" \
|
||||
"*Giocatori partecipanti:*\n"
|
||||
|
||||
# Status: giocatore vivo durante la prima giornata / fase di join (deve terminare con \n)
|
||||
status_basic_player = "{icon} @{name}\n"
|
||||
|
||||
# Status: giocatore vivo (deve terminare con \n)
|
||||
status_alive_player = "{icon} @{name} ({votes} voti)\n"
|
||||
|
||||
|
@ -260,6 +263,9 @@ error_chat_unavailable = "\U000026A0 Non hai mai scritto un messaggio in chat pr
|
|||
error_no_username = "\U000026A0 Non hai nessun username di Telegram!\n" \
|
||||
"Specificane uno nelle opzioni!"
|
||||
|
||||
# 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."
|
||||
|
||||
# Lista dei possibili nomi di una partita
|
||||
names_list = ["Cassata",
|
||||
"Cannoli",
|
||||
|
|
Loading…
Reference in a new issue