1
Fork 0
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:
Steffo 2016-12-09 17:36:43 +01:00
parent c10497add3
commit af1e2b8713
2 changed files with 37 additions and 16 deletions

47
main.py
View file

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

View file

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