1
Fork 0
mirror of https://github.com/RYGhub/royal-mifia.git synced 2024-11-25 15:14:18 +00:00
This commit is contained in:
Steffo 2017-07-08 14:31:37 +02:00
parent 227040d126
commit dc12d70f4d
7 changed files with 62 additions and 30 deletions

47
main.py
View file

@ -45,11 +45,7 @@ class Player:
def message(self, bot, text):
"""Manda un messaggio privato al giocatore."""
if not self.dummy:
try:
bot.sendMessage(self.tid, text, parse_mode=ParseMode.MARKDOWN)
except Unauthorized:
print("Unauthorized to message {}".format(self))
bot.sendMessage(self.tid, text, parse_mode=ParseMode.MARKDOWN)
def kill(self, bot, game):
"""Uccidi il giocatore."""
@ -132,7 +128,7 @@ class Game:
return None
def assignroles(self, bot):
"""Assegna ruoli casuali a tutti i giocatori."""
"""Assegna i ruoli specificati ib playersinrole a tutti i giocatori."""
random.seed()
playersleft = self.players.copy()
# 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_oneofall, callback_data="oneofall"),
InlineKeyboardButton(s.preset_custom, callback_data="custom")
]
])
@ -381,8 +379,35 @@ class Game:
self.votingmifia = False
self.missingmifia = False
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)
elif preset == "custom":
# Preset personalizzabile
@ -530,7 +555,7 @@ class Game:
for role in self.playersinrole:
if len(role) > 0:
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)
return
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':
# Trova il giocatore
player = game.findplayerbyid(update.callback_query.from_user.id)
@ -984,7 +1009,7 @@ def inlinekeyboard(bot, update):
target = game.findplayerbyusername(update.callback_query.data)
player.votingfor = target
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))

View file

@ -7,7 +7,7 @@ class Corrotto(Role):
team = 'Evil'
name = s.corrupt_name
powerdesc = s.corrupt_power_description
value = -90
value = -75
refillpoweruses = 1
def __init__(self, player):
@ -37,4 +37,4 @@ class Corrotto(Role):
def onendday(self, bot, game):
# Ripristina il potere
self.poweruses = self.refillpoweruses
self.poweruses = self.refillpoweruses

View file

@ -8,7 +8,7 @@ class Disastro(Role):
team = 'Good'
name = s.detective_name
powerdesc = s.detective_power_description
value = 0
value = -25
refillpoweruses = 1
def __init__(self, player):
@ -25,6 +25,9 @@ class Disastro(Role):
if target is not None:
self.poweruses -= 1
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,
icon=randomrole.icon,
role=randomrole.name,

View file

@ -37,4 +37,4 @@ class Investigatore(Role):
def onendday(self, bot, game):
# Ripristina il potere
self.poweruses = self.refillpoweruses
self.poweruses = self.refillpoweruses

View file

@ -5,7 +5,7 @@ import strings as s
class Servitore(Role):
"""Il servitore del Caos è il sottoposto al 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'
name = s.chaos_servant_name
powerdesc = s.chaos_servant_power_description

View file

@ -8,7 +8,7 @@ class Terrorista(Role):
team = "Evil"
name = s.terrorist_name
powerdesc = s.terrorist_power_description
value = -50
value = -75
def __repr__(self) -> str:
return "<Role: Terrorista>"
@ -23,4 +23,4 @@ class Terrorista(Role):
game.message(bot, s.terrorist_target_killed.format(target=selectedplayer.tusername,
icon=selectedplayer.role.icon,
role=selectedplayer.role.name))
selectedplayer.kill(bot, game)
selectedplayer.kill(bot, game)

View file

@ -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"
# Disastro: icona
disaster_icon = "\U0001F913"
disaster_icon = "\U0001F46E"
# Disastro: nome ruolo
disaster_name = "Disastro"
disaster_name = "Carabiniere"
# Mamma: icona
mom_icon = "\U0001F917"
@ -139,7 +139,7 @@ intern_power_description = "In qualsiasi momento della partita puoi scegliere un
"`/power {gamename} nomeutentedatoredilavoro`"
# Stagista: inizia lo stage
intern_started_internship = "Stai andando in stage da @{master}."
intern_started_internship = "Andrai in stage da @{master}."
# Stagista: cambiato ruolo
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
chaos_servant_name = "Servitore del Caos"
# Servitore del Caos: icona
chaos_servant_icon = "\U0001F468\u200d\U0001F3A4"
# Servitore del Caos: descrizione potere
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_!"
@ -373,14 +376,7 @@ error_missing_parameters = "\U000026A0 Mancano uno o più parametri.\n" \
"Controlla la sintassi del comando e riprova."
# Lista dei possibili nomi di una partita
names_list = ["Caos",
"Vuoto",
"Nulla",
"Buconero",
"Fine",
"Supernova",
"Centrogalattico",
"Madre"]
names_list = ["Mela", "Pera", "Banana", "Pesca", "Kiwi"]
# Lista dei passi di configurazione da eseguire
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" \
"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
preset_custom = "Personalizzato"
# Preset selezionato
preset_selected = "Preset selezionato: {selected}"
preset_selected = "Preset selezionato: {selected}"