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.players = list() # Lista dei giocatori in partita
|
||||||
self.tokill = list() # Giocatori che verranno uccisi all'endday
|
self.tokill = list() # Giocatori che verranno uccisi all'endday
|
||||||
self.phase = 'Join' # Fase di gioco: 'Join', 'Config', 'Voting'
|
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.configstep = 0 # Passo attuale di configurazione
|
||||||
self.roleconfig = dict() # Dizionario con le quantità di ruoli da aggiungere
|
self.roleconfig = dict() # Dizionario con le quantità di ruoli da aggiungere
|
||||||
|
@ -523,6 +524,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)
|
||||||
|
self.day += 1
|
||||||
|
|
||||||
def endconfig(self, bot):
|
def endconfig(self, bot):
|
||||||
"""Fine della fase di config, inizio assegnazione ruoli"""
|
"""Fine della fase di config, inizio assegnazione ruoli"""
|
||||||
|
@ -537,6 +539,7 @@ class Game:
|
||||||
self.message(bot, s.error_not_enough_players)
|
self.message(bot, s.error_not_enough_players)
|
||||||
else:
|
else:
|
||||||
self.phase = 'Voting'
|
self.phase = 'Voting'
|
||||||
|
self.day += 1
|
||||||
self.assignroles(bot)
|
self.assignroles(bot)
|
||||||
self.message(bot, s.roles_assigned_successfully)
|
self.message(bot, s.roles_assigned_successfully)
|
||||||
|
|
||||||
|
@ -669,10 +672,13 @@ def status(bot, update):
|
||||||
for player in game.players:
|
for player in game.players:
|
||||||
if not player.alive:
|
if not player.alive:
|
||||||
text += s.status_dead_player.format(name=player.tusername)
|
text += s.status_dead_player.format(name=player.tusername)
|
||||||
else:
|
elif game.day > 1:
|
||||||
text += s.status_alive_player.format(icon="\U0001F610",
|
text += s.status_alive_player.format(icon="\U0001F610",
|
||||||
name=player.tusername,
|
name=player.tusername,
|
||||||
votes=str(player.votes))
|
votes=str(player.votes))
|
||||||
|
else:
|
||||||
|
text += s.status_basic_player.format(icon="\U0001F610",
|
||||||
|
name=player.tusername)
|
||||||
game.message(bot, text)
|
game.message(bot, text)
|
||||||
else:
|
else:
|
||||||
bot.sendMessage(update.message.chat['id'], s.error_no_games_found, parse_mode=ParseMode.MARKDOWN)
|
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):
|
def vote(bot, update):
|
||||||
"""Vota per uccidere una persona."""
|
"""Vota per uccidere una persona."""
|
||||||
|
# Trova la partita
|
||||||
game = findgamebyid(update.message.chat['id'])
|
game = findgamebyid(update.message.chat['id'])
|
||||||
if game is not None and game.phase is 'Voting':
|
if game is None:
|
||||||
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:
|
|
||||||
bot.sendMessage(update.message.chat['id'], s.error_no_games_found, parse_mode=ParseMode.MARKDOWN)
|
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):
|
def endday(bot, update):
|
||||||
|
|
|
@ -194,6 +194,9 @@ status_header = "*ID:* {name}\n" \
|
||||||
"*Fase:* {phase}\n" \
|
"*Fase:* {phase}\n" \
|
||||||
"*Giocatori partecipanti:*\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: giocatore vivo (deve terminare con \n)
|
||||||
status_alive_player = "{icon} @{name} ({votes} voti)\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" \
|
error_no_username = "\U000026A0 Non hai nessun username di Telegram!\n" \
|
||||||
"Specificane uno nelle opzioni!"
|
"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
|
# Lista dei possibili nomi di una partita
|
||||||
names_list = ["Cassata",
|
names_list = ["Cassata",
|
||||||
"Cannoli",
|
"Cannoli",
|
||||||
|
|
Loading…
Reference in a new issue