mirror of
https://github.com/RYGhub/royal-mifia.git
synced 2024-11-25 15:14:18 +00:00
Finito lo stagista. E funziona!
This commit is contained in:
parent
c7f360caf1
commit
44976143cf
2 changed files with 50 additions and 34 deletions
67
main.py
67
main.py
|
@ -329,16 +329,16 @@ class Stagista(Role):
|
||||||
|
|
||||||
def power(self, bot, game, arg):
|
def power(self, bot, game, arg):
|
||||||
target = game.findplayerbyusername(arg)
|
target = game.findplayerbyusername(arg)
|
||||||
if target is not None and target is not self.player:
|
if target is not None and target is not self.player and target.alive:
|
||||||
self.master = target
|
self.master = target
|
||||||
self.player.message(bot, s.intern_started_internship)
|
self.player.message(bot, s.intern_started_internship.format(master=self.master.tusername))
|
||||||
else:
|
else:
|
||||||
self.player.message(bot, s.error_no_username)
|
self.player.message(bot, s.error_no_username)
|
||||||
|
|
||||||
def onendday(self, bot, game):
|
def onendday(self, bot, game):
|
||||||
if self.master is not None:
|
if self.master is not None:
|
||||||
if self.master.alive:
|
if self.master.alive:
|
||||||
game.message(bot, s.intern_changed_role)
|
game.message(bot, s.intern_changed_role.format(icon=self.master.role.__class__.icon, role=self.master.role.__class__.name))
|
||||||
game.changerole(self.player, self.master.role.__class__)
|
game.changerole(self.player, self.master.role.__class__)
|
||||||
else:
|
else:
|
||||||
game.message(bot, "easter egg. yey")
|
game.message(bot, "easter egg. yey")
|
||||||
|
@ -373,7 +373,7 @@ class Player:
|
||||||
if not self.dummy:
|
if not self.dummy:
|
||||||
try:
|
try:
|
||||||
bot.sendMessage(self.tid, text, parse_mode=ParseMode.MARKDOWN)
|
bot.sendMessage(self.tid, text, parse_mode=ParseMode.MARKDOWN)
|
||||||
except TelegramError:
|
except TelegramError as t:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
@ -452,7 +452,7 @@ class Game:
|
||||||
def findplayerbyusername(self, tusername) -> Player:
|
def findplayerbyusername(self, tusername) -> Player:
|
||||||
"""Trova il giocatore con un certo username."""
|
"""Trova il giocatore con un certo username."""
|
||||||
for player in self.players:
|
for player in self.players:
|
||||||
if player.tusername.lower() == tusername.lower():
|
if player.tusername.lower() == tusername.strip("@").lower():
|
||||||
return player
|
return player
|
||||||
else:
|
else:
|
||||||
return None
|
return None
|
||||||
|
@ -536,7 +536,7 @@ class Game:
|
||||||
def endday(self, bot):
|
def endday(self, bot):
|
||||||
"""Finisci la giornata, uccidi il più votato del giorno ed esegui gli endday di tutti i giocatori."""
|
"""Finisci la giornata, uccidi il più votato del giorno ed esegui gli endday di tutti i giocatori."""
|
||||||
# SALVA LA PARTITA, così se crasha si riprende da qui
|
# SALVA LA PARTITA, così se crasha si riprende da qui
|
||||||
self.save()
|
self.save(bot)
|
||||||
# Conta i voti ed elimina il più votato.
|
# Conta i voti ed elimina il più votato.
|
||||||
topvotes = self.mostvotedplayer()
|
topvotes = self.mostvotedplayer()
|
||||||
if len(topvotes) > 0:
|
if len(topvotes) > 0:
|
||||||
|
@ -625,6 +625,7 @@ class Game:
|
||||||
self.votingmifia = True
|
self.votingmifia = True
|
||||||
self.missingmifia = False
|
self.missingmifia = False
|
||||||
self.endconfig(bot)
|
self.endconfig(bot)
|
||||||
|
self.message(bot, "Utilizzo il preset di debug (uno di ogni ruolo)")
|
||||||
elif preset == "simple":
|
elif preset == "simple":
|
||||||
# Preset semplice
|
# Preset semplice
|
||||||
self.roleconfig = {
|
self.roleconfig = {
|
||||||
|
@ -702,7 +703,7 @@ class Game:
|
||||||
def endgame(self):
|
def endgame(self):
|
||||||
inprogress.remove(self)
|
inprogress.remove(self)
|
||||||
|
|
||||||
def save(self):
|
def save(self, bot):
|
||||||
# Crea il file.
|
# Crea il file.
|
||||||
try:
|
try:
|
||||||
file = open(str(self.groupid) + ".p", 'x')
|
file = open(str(self.groupid) + ".p", 'x')
|
||||||
|
@ -715,8 +716,8 @@ class Game:
|
||||||
pickle.dump(self, file)
|
pickle.dump(self, file)
|
||||||
file.close()
|
file.close()
|
||||||
# Crea un file uguale ma con un timestamp
|
# Crea un file uguale ma con un timestamp
|
||||||
# Non sono troppo sicuro che il timestamp si faccia così
|
# Non sono troppo sicuro che il timestamp si faccia così però funziona
|
||||||
t = datetime.datetime(0,0,0,0,0).now()
|
t = datetime.datetime(2000,1,1,1,1).now()
|
||||||
try:
|
try:
|
||||||
file = open("{group}-{yy}-{mm}-{dd}-{hh}-{mi}.p".format(group=str(self.groupid), yy=t.year, mm=t.month, dd=t.day, hh=t.hour, mi=t.minute), 'x')
|
file = open("{group}-{yy}-{mm}-{dd}-{hh}-{mi}.p".format(group=str(self.groupid), yy=t.year, mm=t.month, dd=t.day, hh=t.hour, mi=t.minute), 'x')
|
||||||
except FileExistsError:
|
except FileExistsError:
|
||||||
|
@ -726,6 +727,7 @@ class Game:
|
||||||
# Scrivi sul file.
|
# Scrivi sul file.
|
||||||
file = open("{group}-{yy}-{mm}-{dd}-{hh}-{mi}.p".format(group=str(self.groupid), yy=t.year, mm=t.month, dd=t.day, hh=t.hour, mi=t.minute), 'wb')
|
file = open("{group}-{yy}-{mm}-{dd}-{hh}-{mi}.p".format(group=str(self.groupid), yy=t.year, mm=t.month, dd=t.day, hh=t.hour, mi=t.minute), 'wb')
|
||||||
pickle.dump(self, file)
|
pickle.dump(self, file)
|
||||||
|
self.message(bot, s.game_saved)
|
||||||
file.close()
|
file.close()
|
||||||
|
|
||||||
def victoryconditions(self, bot):
|
def victoryconditions(self, bot):
|
||||||
|
@ -763,9 +765,10 @@ class Game:
|
||||||
|
|
||||||
def changerole(self, player, newrole):
|
def changerole(self, player, newrole):
|
||||||
"""Cambia il ruolo di un giocatore, aggiornando tutti i valori"""
|
"""Cambia il ruolo di un giocatore, aggiornando tutti i valori"""
|
||||||
self.playersinrole[player.role].remove(player)
|
if player.role.__class__ != Royal:
|
||||||
|
self.playersinrole[player.role.__class__.__name__].remove(player)
|
||||||
player.role = newrole(player)
|
player.role = newrole(player)
|
||||||
self.playersinrole[newrole].append(player)
|
self.playersinrole[newrole.__name__].append(player)
|
||||||
# TODO: controllare se basta fare così
|
# TODO: controllare se basta fare così
|
||||||
|
|
||||||
|
|
||||||
|
@ -1021,7 +1024,7 @@ def vote(bot, update):
|
||||||
game.message(bot, s.error_username)
|
game.message(bot, s.error_username)
|
||||||
return
|
return
|
||||||
player.votingfor = target
|
player.votingfor = target
|
||||||
game.message(bot, s.vote.format(voted=target.tusername))
|
game.message(bot, s.vote.format(voting=player.tusername, voted=target.tusername))
|
||||||
|
|
||||||
|
|
||||||
def endday(bot, update):
|
def endday(bot, update):
|
||||||
|
@ -1139,7 +1142,7 @@ def save(bot, update):
|
||||||
"""Salva una partita su file."""
|
"""Salva una partita su file."""
|
||||||
game = findgamebyid(update.message.chat['id'])
|
game = findgamebyid(update.message.chat['id'])
|
||||||
if game is not None:
|
if game is not None:
|
||||||
game.save()
|
game.save(bot)
|
||||||
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)
|
||||||
|
|
||||||
|
@ -1149,21 +1152,28 @@ def debug(bot, update):
|
||||||
if __debug__:
|
if __debug__:
|
||||||
game = findgamebyid(update.message.chat['id'])
|
game = findgamebyid(update.message.chat['id'])
|
||||||
if game is not None:
|
if game is not None:
|
||||||
if game.admin.tid == update.message.from_user['id']:
|
text = s.status_header.format(name=game.groupid, admin=game.admin.tid, phase=game.phase)
|
||||||
text = s.status_header.format(name=game.groupid, admin=game.admin.tid, phase=game.phase)
|
game.updatevotes()
|
||||||
game.updatevotes()
|
# Aggiungi l'elenco dei giocatori
|
||||||
# Aggiungi l'elenco dei giocatori
|
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:
|
||||||
else:
|
text += s.status_alive_player.format(icon=player.role.icon,
|
||||||
text += s.status_alive_player.format(icon=player.role.icon,
|
name=player.tusername,
|
||||||
name=player.tusername,
|
votes=str(player.votes))
|
||||||
votes=str(player.votes))
|
game.message(bot, text)
|
||||||
game.adminmessage(bot, text)
|
else:
|
||||||
game.message(bot, s.check_private)
|
bot.sendMessage(update.message.chat['id'], s.error_no_games_found, parse_mode=ParseMode.MARKDOWN)
|
||||||
else:
|
|
||||||
game.message(bot, s.error_not_admin)
|
|
||||||
|
def debugchangerole(bot, update):
|
||||||
|
"""Cambia il ruolo a un giocatore."""
|
||||||
|
if __debug__:
|
||||||
|
game = findgamebyid(update.message.chat['id'])
|
||||||
|
if game is not None:
|
||||||
|
cmd = update.message.text.split(' ', 2)
|
||||||
|
game.changerole(game.findplayerbyusername(cmd[1]), globals()[cmd[2]])
|
||||||
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)
|
||||||
|
|
||||||
|
@ -1209,6 +1219,7 @@ updater.dispatcher.add_handler(CommandHandler('fakerole', fakerole))
|
||||||
updater.dispatcher.add_handler(CommandHandler('save', save))
|
updater.dispatcher.add_handler(CommandHandler('save', save))
|
||||||
updater.dispatcher.add_handler(CommandHandler('load', load))
|
updater.dispatcher.add_handler(CommandHandler('load', load))
|
||||||
updater.dispatcher.add_handler(CommandHandler('delete', delete))
|
updater.dispatcher.add_handler(CommandHandler('delete', delete))
|
||||||
|
updater.dispatcher.add_handler(CommandHandler('debugchangerole', debugchangerole))
|
||||||
updater.dispatcher.add_handler(CallbackQueryHandler(selectpreset))
|
updater.dispatcher.add_handler(CallbackQueryHandler(selectpreset))
|
||||||
updater.dispatcher.add_error_handler(handleerror)
|
updater.dispatcher.add_error_handler(handleerror)
|
||||||
updater.start_polling()
|
updater.start_polling()
|
||||||
|
|
17
strings.py
17
strings.py
|
@ -125,21 +125,23 @@ mom_power_description = "All'inizio della partita scoprirai il ruolo di un gioca
|
||||||
# Mamma: scoperta di un ruolo
|
# Mamma: scoperta di un ruolo
|
||||||
mom_discovery = "@{target} è un *{icon} {role}*.\n" \
|
mom_discovery = "@{target} è un *{icon} {role}*.\n" \
|
||||||
|
|
||||||
#TODO: Mettere qualcosa qui
|
|
||||||
# Stagista: icona
|
# Stagista: icona
|
||||||
intern_icon = "intern_icon"
|
intern_icon = "\U0001F913"
|
||||||
|
|
||||||
# Stagista: nome ruolo
|
# Stagista: nome ruolo
|
||||||
intern_name = "Stagista"
|
intern_name = "Stagista"
|
||||||
|
|
||||||
# Stagista: descrizione del potere
|
# Stagista: descrizione del potere
|
||||||
intern_power_description = "intern_power_description"
|
intern_power_description = "In qualsiasi momento della partita puoi scegliere un altro giocatore.\n" \
|
||||||
|
"Il tuo ruolo diventerà uguale al suo.\n" \
|
||||||
|
"Ricordati che, qualsiasi cosa succeda, è sempre colpa dello stagista, cioè tua!"
|
||||||
|
|
||||||
|
# TODO: si dice in stage?
|
||||||
# Stagista: inizia lo stage
|
# Stagista: inizia lo stage
|
||||||
intern_started_internship = "intern_started_internship"
|
intern_started_internship = "Stai andando in stage da @{master}."
|
||||||
|
|
||||||
# Stagista: cambiato ruolo
|
# Stagista: cambiato ruolo
|
||||||
intern_changed_role = "intern_changed_role"
|
intern_changed_role = "Lo stagista ha finito il tirocinio ed ha imparato i segreti del mestiere di *{icon} {role}*."
|
||||||
|
|
||||||
# Generale: ruolo assegnato
|
# Generale: ruolo assegnato
|
||||||
role_assigned = "Ti è stato assegnato il ruolo di *{icon} {name}*."
|
role_assigned = "Ti è stato assegnato il ruolo di *{icon} {name}*."
|
||||||
|
@ -176,7 +178,7 @@ mifia_team_intro = "I mifiosi in questa partita sono:\n"
|
||||||
mifia_team_player = "{icon} {name}\n"
|
mifia_team_player = "{icon} {name}\n"
|
||||||
|
|
||||||
# Generale: votazione completata
|
# Generale: votazione completata
|
||||||
vote = "Hai votato per uccidere @{voted}."
|
vote = "@{voting} ha votato per uccidere @{voted}."
|
||||||
|
|
||||||
# Generale: un admin ha ucciso un giocatore con /kill
|
# Generale: un admin ha ucciso un giocatore con /kill
|
||||||
admin_killed = "{name} è morto _di infarto_.\n" \
|
admin_killed = "{name} è morto _di infarto_.\n" \
|
||||||
|
@ -186,6 +188,9 @@ admin_killed = "{name} è morto _di infarto_.\n" \
|
||||||
check_private = "Messaggio inviato in chat privata.\n" \
|
check_private = "Messaggio inviato in chat privata.\n" \
|
||||||
"Controlla @mifiabot."
|
"Controlla @mifiabot."
|
||||||
|
|
||||||
|
# Generale: partita salvata
|
||||||
|
game_saved = "Partita salvata su file."
|
||||||
|
|
||||||
# Generale: partita caricata
|
# Generale: partita caricata
|
||||||
game_loaded = "Partita caricata da file."
|
game_loaded = "Partita caricata da file."
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue