1
Fork 0
mirror of https://github.com/RYGhub/royal-mifia.git synced 2024-11-21 13:34:17 +00:00

Many things

This commit is contained in:
Steffo 2017-05-08 12:07:19 +02:00
parent 27ec7b3c85
commit bc5350f86e
3 changed files with 76 additions and 22 deletions

71
main.py
View file

@ -503,7 +503,7 @@ class Game:
if isinstance(player.role, Mifioso): if isinstance(player.role, Mifioso):
player.message(bot, text) player.message(bot, text)
def findplayerbyid(self, tid) -> Player: def findplayerbyid(self, tid):
"""Trova il giocatore con un certo id.""" """Trova il giocatore con un certo id."""
for player in self.players: for player in self.players:
if player.tid == tid: if player.tid == tid:
@ -511,7 +511,7 @@ class Game:
else: else:
return None return None
def findplayerbyusername(self, tusername) -> Player: def findplayerbyusername(self, tusername):
"""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.strip("@").lower(): if player.tusername.lower() == tusername.strip("@").lower():
@ -683,7 +683,7 @@ class Game:
[ [
InlineKeyboardButton(s.preset_simple, callback_data="simple"), InlineKeyboardButton(s.preset_simple, callback_data="simple"),
InlineKeyboardButton(s.preset_classic, callback_data="classic"), InlineKeyboardButton(s.preset_classic, callback_data="classic"),
InlineKeyboardButton(s.preset_full, callback_data="full") InlineKeyboardButton(s.preset_advanced, callback_data="advanced")
], ],
[ [
InlineKeyboardButton(s.preset_custom, callback_data="custom") InlineKeyboardButton(s.preset_custom, callback_data="custom")
@ -710,6 +710,9 @@ class Game:
} }
self.votingmifia = True self.votingmifia = True
self.missingmifia = False self.missingmifia = False
self.message(bot, s.preset_simple_selected.format(mifioso=self.roleconfig["Mifioso"],
investigatore=self.roleconfig["Investigatore"],
royal=len(self.players) - self.roleconfig["Mifioso"] - self.roleconfig["Investigatore"]))
self.endconfig(bot) self.endconfig(bot)
elif preset == "classic": elif preset == "classic":
# Preset classico (solo Royal, Mifiosi, Investigatori, Angeli e Terroristi) # Preset classico (solo Royal, Mifiosi, Investigatori, Angeli e Terroristi)
@ -717,7 +720,7 @@ class Game:
"Mifioso": math.floor(len(self.players) / 8) + 1, # 1 Mifioso ogni 8 giocatori "Mifioso": math.floor(len(self.players) / 8) + 1, # 1 Mifioso ogni 8 giocatori
"Investigatore": math.floor(len(self.players) / 12) + 1, # 1 Detective ogni 12 giocatori "Investigatore": math.floor(len(self.players) / 12) + 1, # 1 Detective ogni 12 giocatori
"Angelo": math.floor(len(self.players) / 10) + 1, # 1 Angelo ogni 10 giocatori "Angelo": math.floor(len(self.players) / 10) + 1, # 1 Angelo ogni 10 giocatori
"Terrorista": 1 if random.randrange(0, 99) > 70 else 0, # 30% di avere un terrorista "Terrorista": 1 if random.randrange(0, 100) > 70 else 0, # 30% di avere un terrorista
"Derek": 0, "Derek": 0,
"Disastro": 0, "Disastro": 0,
"Mamma": 0, "Mamma": 0,
@ -727,25 +730,55 @@ class Game:
} }
self.votingmifia = True self.votingmifia = True
self.missingmifia = False self.missingmifia = False
self.message(bot, s.preset_classic_selected)
self.endconfig(bot) self.endconfig(bot)
elif preset == "full": elif preset == "advanced":
# Preset completo (non ci sono Royal, ogni giocatore ha un ruolo) # Preset avanzato: genera i ruoli in modo da rendere la partita divertente
self.roleconfig = { self.roleconfig = dict()
# 1 di ogni ruolo, ma ci devono essere almeno 8 giocatori per avviare la partita unassignedplayers = len(self.players)
"Mifioso": math.floor(len(self.players) / 9) + 1, # Mifioso: tra 1 e 25% dei giocatori
"Investigatore": math.floor(len(self.players) / 10) + 1, self.roleconfig["Mifioso"] = random.randint(1, math.ceil(unassignedplayers / 4)),
"Angelo": math.floor(len(self.players) / 11) + 1, unassignedplayers -= self.roleconfig["Mifioso"]
"Terrorista": math.floor(len(self.players) / 12) + 1, # Investigatore: tra 1 e 19% dei giocatori
"Derek": math.floor(len(self.players) / 13) + 1, self.roleconfig["Investigatore"] = random.randint(1, math.ceil(unassignedplayers / 4)),
"Disastro": math.floor(len(self.players) / 14) + 1, unassignedplayers -= self.roleconfig["Investigatore"]
"Mamma": math.floor(len(self.players) / 15) + 1, # Angelo: tra 1 e 14% dei giocatori
"Stagista": math.floor(len(self.players) / 16) + 1, self.roleconfig["Angelo"] = random.randint(1, math.ceil(unassignedplayers / 4))
"SignoreDelCaos": 0, unassignedplayers -= self.roleconfig["Angelo"]
"Servitore": 0 # Terrorista: ce n'è uno il 30% delle partite e solo se ci sono più di 5 giocatori senza ruoli maggiori
} if unassignedplayers >= 6:
self.roleconfig["Terrorista"] = 1 if random.randrange(0, 100) >= 70 else 0
else:
self.roleconfig["Terrorista"] = 0
unassignedplayers -= self.roleconfig["Terrorista"]
# Mamma: tra 0 e il 10% dei giocatori
self.roleconfig["Mamma"] = random.randint(0, math.ceil(unassignedplayers))
unassignedplayers -= self.roleconfig["Mamma"]
# Stagista e Derek: possono essere nella stessa partita solo il 10% delle volte
if random.randint(0, 100) >= 90 and unassignedplayers >= 2:
self.roleconfig["Stagista"] = 1
self.roleconfig["Derek"] = 1
unassignedplayers -= 2
# Altrimenti, viene scelto uno dei due ruoli e ne viene inserito uno (lo stagista ha probabilità più alte perchè più interattivo)
elif unassignedplayers >= 1:
if random.randint(0, 100) >= 30:
self.roleconfig["Stagista"] = 1
self.roleconfig["Derek"] = 0
else:
self.roleconfig["Stagista"] = 0
self.roleconfig["Derek"] = 1
unassignedplayers -= 1
# Disastro: tra 0 e l'8% dei giocatori
self.roleconfig["Disastro"] = random.randint(0, math.ceil(unassignedplayers) / 4)
unassignedplayers -= self.roleconfig["Disastro"]
# Non ci sono SignoreDelCaos e Servitore per motivi ovvi
self.roleconfig["SignoreDelCaos"] = 0
self.roleconfig["Servitore"] = 0
# Altri parametri
self.votingmifia = True self.votingmifia = True
self.missingmifia = True self.missingmifia = True
self.misschance = 5 self.misschance = 5
self.message(bot, s.preset_advanced_selected)
self.endconfig(bot) self.endconfig(bot)
elif preset == "custom": elif preset == "custom":
# Preset personalizzabile # Preset personalizzabile

View file

@ -1 +1 @@
telegram python-telegram-bot

View file

@ -396,11 +396,32 @@ preset_choose = "*Seleziona un preset per la partita:*\n" \
# Preset semplice # Preset semplice
preset_simple = "Semplice" preset_simple = "Semplice"
# Preset semplice selezionato
preset_simple_selected = "Selezionato il preset *Semplice*.\n" \
"In partita saranno presenti:\n" \
"*{mifioso}* Mifiosi,\n" \
"*{investigatore}* Investigatori,\n" \
"*{royal}* Royal."
# Preset classico # Preset classico
preset_classic = "Classico" preset_classic = "Classico"
# Preset completo # Preset classico selezionato
preset_full = "Completo" preset_classic_selected = "Selezionato il preset *Classico*.\n" \
"In questa partita saranno presenti:\n" \
"*{mifioso}* Mifiosi,\n" \
"*{investigatore}* Investigatori,\n" \
"*{angelo}* Angeli,\n" \
"*{royal}* Royal.\n" \
"Inoltre, _potrebbe_ esserci un terrorista..."
# Preset avanzato
preset_advanced = "Avanzato"
# Preset avanzato selezionato
preset_advanced_selected = "Selezionato il preset *Avanzato*.\n" \
"I ruoli in questa partita sono casuali!\n" \
"Buona fortuna a scoprirli!"
# Personalizza # Personalizza
preset_custom = "Personalizzato" preset_custom = "Personalizzato"