mirror of
https://github.com/RYGhub/royal-mifia.git
synced 2024-11-25 15:14:18 +00:00
troppo
This commit is contained in:
parent
227040d126
commit
dc12d70f4d
7 changed files with 62 additions and 30 deletions
47
main.py
47
main.py
|
@ -45,11 +45,7 @@ class Player:
|
||||||
def message(self, bot, text):
|
def message(self, bot, text):
|
||||||
"""Manda un messaggio privato al giocatore."""
|
"""Manda un messaggio privato al giocatore."""
|
||||||
if not self.dummy:
|
if not self.dummy:
|
||||||
try:
|
bot.sendMessage(self.tid, text, parse_mode=ParseMode.MARKDOWN)
|
||||||
bot.sendMessage(self.tid, text, parse_mode=ParseMode.MARKDOWN)
|
|
||||||
except Unauthorized:
|
|
||||||
print("Unauthorized to message {}".format(self))
|
|
||||||
|
|
||||||
|
|
||||||
def kill(self, bot, game):
|
def kill(self, bot, game):
|
||||||
"""Uccidi il giocatore."""
|
"""Uccidi il giocatore."""
|
||||||
|
@ -132,7 +128,7 @@ class Game:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def assignroles(self, bot):
|
def assignroles(self, bot):
|
||||||
"""Assegna ruoli casuali a tutti i giocatori."""
|
"""Assegna i ruoli specificati ib playersinrole a tutti i giocatori."""
|
||||||
random.seed()
|
random.seed()
|
||||||
playersleft = self.players.copy()
|
playersleft = self.players.copy()
|
||||||
# Assegna i ruoli secondo i numeri all'interno di playersinrole
|
# Assegna i ruoli secondo i numeri all'interno di playersinrole
|
||||||
|
@ -283,6 +279,8 @@ class Game:
|
||||||
InlineKeyboardButton(s.preset_advanced, callback_data="advanced")
|
InlineKeyboardButton(s.preset_advanced, callback_data="advanced")
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
|
InlineKeyboardButton(s.preset_oneofall, callback_data="oneofall"),
|
||||||
|
|
||||||
InlineKeyboardButton(s.preset_custom, callback_data="custom")
|
InlineKeyboardButton(s.preset_custom, callback_data="custom")
|
||||||
]
|
]
|
||||||
])
|
])
|
||||||
|
@ -381,8 +379,35 @@ class Game:
|
||||||
self.votingmifia = False
|
self.votingmifia = False
|
||||||
self.missingmifia = False
|
self.missingmifia = False
|
||||||
self.message(bot, s.preset_advanced_selected)
|
self.message(bot, s.preset_advanced_selected)
|
||||||
if __debug__:
|
self.message(bot, "Punteggio di bilanciamento: {}".format(balance))
|
||||||
self.message(bot, "Punteggio di bilanciamento: {}".format(balance))
|
self.endconfig(bot)
|
||||||
|
elif preset == "oneofall":
|
||||||
|
self.roleconfig = {
|
||||||
|
"Mifioso": 1,
|
||||||
|
"Investigatore": 1,
|
||||||
|
"Corrotto": 1,
|
||||||
|
"Angelo": 1,
|
||||||
|
"Terrorista": 1,
|
||||||
|
"Derek": 1,
|
||||||
|
"Disastro": 1,
|
||||||
|
"Mamma": 1,
|
||||||
|
"Stagista": 1,
|
||||||
|
"SignoreDelCaos": 0,
|
||||||
|
"Servitore": 0
|
||||||
|
}
|
||||||
|
unassignedplayers = len(self.players) - 9
|
||||||
|
availableroles = list()
|
||||||
|
while unassignedplayers > 0:
|
||||||
|
if len(availableroles) == 0:
|
||||||
|
availableroles = rolepriority.copy()
|
||||||
|
availableroles.remove(SignoreDelCaos)
|
||||||
|
availableroles.remove(Servitore)
|
||||||
|
random.shuffle(availableroles)
|
||||||
|
self.roleconfig[availableroles.pop().__name__] += 1
|
||||||
|
unassignedplayers -= 1
|
||||||
|
self.votingmifia = False
|
||||||
|
self.missingmifia = False
|
||||||
|
self.message(bot, s.preset_oneofall_selected)
|
||||||
self.endconfig(bot)
|
self.endconfig(bot)
|
||||||
elif preset == "custom":
|
elif preset == "custom":
|
||||||
# Preset personalizzabile
|
# Preset personalizzabile
|
||||||
|
@ -530,7 +555,7 @@ class Game:
|
||||||
for role in self.playersinrole:
|
for role in self.playersinrole:
|
||||||
if len(role) > 0:
|
if len(role) > 0:
|
||||||
availableroles.append(role)
|
availableroles.append(role)
|
||||||
return locals()[random.sample(availableroles, 1)[0]]
|
return globals()[random.sample(availableroles, 1)[0]]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -970,7 +995,7 @@ def inlinekeyboard(bot, update):
|
||||||
bot.answerCallbackQuery(callback_query_id=update.callback_query.id, text=s.error_not_admin, show_alert=True)
|
bot.answerCallbackQuery(callback_query_id=update.callback_query.id, text=s.error_not_admin, show_alert=True)
|
||||||
return
|
return
|
||||||
game.loadpreset(bot, update.callback_query.data)
|
game.loadpreset(bot, update.callback_query.data)
|
||||||
bot.answerCallbackQuery(callback_query_id=update.callback_query.id, text=s.preset_selected.format(selected=update.callback_query.data), show_alert=True)
|
bot.answerCallbackQuery(callback_query_id=update.callback_query.id, text=s.preset_selected.format(selected=update.callback_query.data))
|
||||||
elif game.phase is 'Voting':
|
elif game.phase is 'Voting':
|
||||||
# Trova il giocatore
|
# Trova il giocatore
|
||||||
player = game.findplayerbyid(update.callback_query.from_user.id)
|
player = game.findplayerbyid(update.callback_query.from_user.id)
|
||||||
|
@ -984,7 +1009,7 @@ def inlinekeyboard(bot, update):
|
||||||
target = game.findplayerbyusername(update.callback_query.data)
|
target = game.findplayerbyusername(update.callback_query.data)
|
||||||
player.votingfor = target
|
player.votingfor = target
|
||||||
game.message(bot, s.vote.format(voting=player.tusername, voted=target.tusername))
|
game.message(bot, s.vote.format(voting=player.tusername, voted=target.tusername))
|
||||||
bot.answerCallbackQuery(callback_query_id=update.callback_query.id, text=s.vote_fp.format(voted=target.tusername), show_alert=True)
|
bot.answerCallbackQuery(callback_query_id=update.callback_query.id, text=s.vote_fp.format(voted=target.tusername))
|
||||||
|
|
||||||
|
|
||||||
updater.dispatcher.add_handler(CommandHandler('ping', ping))
|
updater.dispatcher.add_handler(CommandHandler('ping', ping))
|
||||||
|
|
|
@ -7,7 +7,7 @@ class Corrotto(Role):
|
||||||
team = 'Evil'
|
team = 'Evil'
|
||||||
name = s.corrupt_name
|
name = s.corrupt_name
|
||||||
powerdesc = s.corrupt_power_description
|
powerdesc = s.corrupt_power_description
|
||||||
value = -90
|
value = -75
|
||||||
refillpoweruses = 1
|
refillpoweruses = 1
|
||||||
|
|
||||||
def __init__(self, player):
|
def __init__(self, player):
|
||||||
|
@ -37,4 +37,4 @@ class Corrotto(Role):
|
||||||
|
|
||||||
def onendday(self, bot, game):
|
def onendday(self, bot, game):
|
||||||
# Ripristina il potere
|
# Ripristina il potere
|
||||||
self.poweruses = self.refillpoweruses
|
self.poweruses = self.refillpoweruses
|
||||||
|
|
|
@ -8,7 +8,7 @@ class Disastro(Role):
|
||||||
team = 'Good'
|
team = 'Good'
|
||||||
name = s.detective_name
|
name = s.detective_name
|
||||||
powerdesc = s.detective_power_description
|
powerdesc = s.detective_power_description
|
||||||
value = 0
|
value = -25
|
||||||
refillpoweruses = 1
|
refillpoweruses = 1
|
||||||
|
|
||||||
def __init__(self, player):
|
def __init__(self, player):
|
||||||
|
@ -25,6 +25,9 @@ class Disastro(Role):
|
||||||
if target is not None:
|
if target is not None:
|
||||||
self.poweruses -= 1
|
self.poweruses -= 1
|
||||||
randomrole = game.getrandomrole()
|
randomrole = game.getrandomrole()
|
||||||
|
while isinstance(target.role, randomrole):
|
||||||
|
# TODO: se ci fossero solo disastri in una partits cosa succederebbe?
|
||||||
|
randomrole = game.getrandomrole()
|
||||||
self.player.message(bot, s.detective_discovery.format(target=target.tusername,
|
self.player.message(bot, s.detective_discovery.format(target=target.tusername,
|
||||||
icon=randomrole.icon,
|
icon=randomrole.icon,
|
||||||
role=randomrole.name,
|
role=randomrole.name,
|
||||||
|
|
|
@ -37,4 +37,4 @@ class Investigatore(Role):
|
||||||
|
|
||||||
def onendday(self, bot, game):
|
def onendday(self, bot, game):
|
||||||
# Ripristina il potere
|
# Ripristina il potere
|
||||||
self.poweruses = self.refillpoweruses
|
self.poweruses = self.refillpoweruses
|
||||||
|
|
|
@ -5,7 +5,7 @@ import strings as s
|
||||||
class Servitore(Role):
|
class Servitore(Role):
|
||||||
"""Il servitore del Caos è il sottoposto al Signore del Caos.
|
"""Il servitore del Caos è il sottoposto al Signore del Caos.
|
||||||
Se non ci sono Signori del Caos in partita diventa Signore del Caos."""
|
Se non ci sono Signori del Caos in partita diventa Signore del Caos."""
|
||||||
icon = s.derek_icon
|
icon = s.chaos_servant_icon
|
||||||
team = 'Chaos'
|
team = 'Chaos'
|
||||||
name = s.chaos_servant_name
|
name = s.chaos_servant_name
|
||||||
powerdesc = s.chaos_servant_power_description
|
powerdesc = s.chaos_servant_power_description
|
||||||
|
|
|
@ -8,7 +8,7 @@ class Terrorista(Role):
|
||||||
team = "Evil"
|
team = "Evil"
|
||||||
name = s.terrorist_name
|
name = s.terrorist_name
|
||||||
powerdesc = s.terrorist_power_description
|
powerdesc = s.terrorist_power_description
|
||||||
value = -50
|
value = -75
|
||||||
|
|
||||||
def __repr__(self) -> str:
|
def __repr__(self) -> str:
|
||||||
return "<Role: Terrorista>"
|
return "<Role: Terrorista>"
|
||||||
|
@ -23,4 +23,4 @@ class Terrorista(Role):
|
||||||
game.message(bot, s.terrorist_target_killed.format(target=selectedplayer.tusername,
|
game.message(bot, s.terrorist_target_killed.format(target=selectedplayer.tusername,
|
||||||
icon=selectedplayer.role.icon,
|
icon=selectedplayer.role.icon,
|
||||||
role=selectedplayer.role.name))
|
role=selectedplayer.role.name))
|
||||||
selectedplayer.kill(bot, game)
|
selectedplayer.kill(bot, game)
|
||||||
|
|
28
strings.py
28
strings.py
|
@ -107,10 +107,10 @@ derek_deathwish_unset = "*Vivrai* per morire un altro giorno."
|
||||||
derek_deathwish_successful = "SPOILER: alla fine di questa giornata *\U0001F635 Derek* (@{name}) muore schiacciato da un container.\n"
|
derek_deathwish_successful = "SPOILER: alla fine di questa giornata *\U0001F635 Derek* (@{name}) muore schiacciato da un container.\n"
|
||||||
|
|
||||||
# Disastro: icona
|
# Disastro: icona
|
||||||
disaster_icon = "\U0001F913"
|
disaster_icon = "\U0001F46E"
|
||||||
|
|
||||||
# Disastro: nome ruolo
|
# Disastro: nome ruolo
|
||||||
disaster_name = "Disastro"
|
disaster_name = "Carabiniere"
|
||||||
|
|
||||||
# Mamma: icona
|
# Mamma: icona
|
||||||
mom_icon = "\U0001F917"
|
mom_icon = "\U0001F917"
|
||||||
|
@ -139,7 +139,7 @@ intern_power_description = "In qualsiasi momento della partita puoi scegliere un
|
||||||
"`/power {gamename} nomeutentedatoredilavoro`"
|
"`/power {gamename} nomeutentedatoredilavoro`"
|
||||||
|
|
||||||
# Stagista: inizia lo stage
|
# Stagista: inizia lo stage
|
||||||
intern_started_internship = "Stai andando in stage da @{master}."
|
intern_started_internship = "Andrai in stage da @{master}."
|
||||||
|
|
||||||
# Stagista: cambiato ruolo
|
# Stagista: cambiato ruolo
|
||||||
intern_changed_role = "Lo stagista ha finito il tirocinio ed ha imparato i segreti del mestiere di *{icon} {role}*."
|
intern_changed_role = "Lo stagista ha finito il tirocinio ed ha imparato i segreti del mestiere di *{icon} {role}*."
|
||||||
|
@ -189,6 +189,9 @@ chaos_lord_failed = "Il Caos è nell'aria...\n" \
|
||||||
# Servitore del Caos: nome ruolo
|
# Servitore del Caos: nome ruolo
|
||||||
chaos_servant_name = "Servitore del Caos"
|
chaos_servant_name = "Servitore del Caos"
|
||||||
|
|
||||||
|
# Servitore del Caos: icona
|
||||||
|
chaos_servant_icon = "\U0001F468\u200d\U0001F3A4"
|
||||||
|
|
||||||
# Servitore del Caos: descrizione potere
|
# Servitore del Caos: descrizione potere
|
||||||
chaos_servant_power_description = "Il Signore del Caos ti cederà i suoi poteri quando sarà morto.\n" \
|
chaos_servant_power_description = "Il Signore del Caos ti cederà i suoi poteri quando sarà morto.\n" \
|
||||||
"Facendo parte della fazione del Caos, hai automaticamente _vinto la partita_!"
|
"Facendo parte della fazione del Caos, hai automaticamente _vinto la partita_!"
|
||||||
|
@ -373,14 +376,7 @@ error_missing_parameters = "\U000026A0 Mancano uno o più parametri.\n" \
|
||||||
"Controlla la sintassi del comando e riprova."
|
"Controlla la sintassi del comando e riprova."
|
||||||
|
|
||||||
# Lista dei possibili nomi di una partita
|
# Lista dei possibili nomi di una partita
|
||||||
names_list = ["Caos",
|
names_list = ["Mela", "Pera", "Banana", "Pesca", "Kiwi"]
|
||||||
"Vuoto",
|
|
||||||
"Nulla",
|
|
||||||
"Buconero",
|
|
||||||
"Fine",
|
|
||||||
"Supernova",
|
|
||||||
"Centrogalattico",
|
|
||||||
"Madre"]
|
|
||||||
|
|
||||||
# Lista dei passi di configurazione da eseguire
|
# Lista dei passi di configurazione da eseguire
|
||||||
config_list = ["Quanti *Mifiosi* devono essere nella partita all'inizio?",
|
config_list = ["Quanti *Mifiosi* devono essere nella partita all'inizio?",
|
||||||
|
@ -435,8 +431,16 @@ preset_advanced_selected = "Selezionato il preset *Avanzato*.\n" \
|
||||||
"I ruoli in questa partita sono casuali!\n" \
|
"I ruoli in questa partita sono casuali!\n" \
|
||||||
"Buona fortuna a scoprirli!"
|
"Buona fortuna a scoprirli!"
|
||||||
|
|
||||||
|
# Preset con uno di tutti
|
||||||
|
preset_oneofall = "Round Robin"
|
||||||
|
|
||||||
|
# Preset con uno di tutti selezionato
|
||||||
|
preset_oneofall_selected = "Selezionato il preset *Round Robin*.\n" \
|
||||||
|
"In questa partita saranno presenti lo stesso numero di tutti i ruoli.\n" \
|
||||||
|
"Se sono presenti giocatori in eccesso, verrà assegnato loro un ruolo casuale."
|
||||||
|
|
||||||
# Personalizza
|
# Personalizza
|
||||||
preset_custom = "Personalizzato"
|
preset_custom = "Personalizzato"
|
||||||
|
|
||||||
# Preset selezionato
|
# Preset selezionato
|
||||||
preset_selected = "Preset selezionato: {selected}"
|
preset_selected = "Preset selezionato: {selected}"
|
||||||
|
|
Loading…
Reference in a new issue