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):
player.message(bot, text)
def findplayerbyid(self, tid) -> Player:
def findplayerbyid(self, tid):
"""Trova il giocatore con un certo id."""
for player in self.players:
if player.tid == tid:
@ -511,7 +511,7 @@ class Game:
else:
return None
def findplayerbyusername(self, tusername) -> Player:
def findplayerbyusername(self, tusername):
"""Trova il giocatore con un certo username."""
for player in self.players:
if player.tusername.lower() == tusername.strip("@").lower():
@ -683,7 +683,7 @@ class Game:
[
InlineKeyboardButton(s.preset_simple, callback_data="simple"),
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")
@ -710,6 +710,9 @@ class Game:
}
self.votingmifia = True
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)
elif preset == "classic":
# 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
"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
"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,
"Disastro": 0,
"Mamma": 0,
@ -727,25 +730,55 @@ class Game:
}
self.votingmifia = True
self.missingmifia = False
self.message(bot, s.preset_classic_selected)
self.endconfig(bot)
elif preset == "full":
# Preset completo (non ci sono Royal, ogni giocatore ha un ruolo)
self.roleconfig = {
# 1 di ogni ruolo, ma ci devono essere almeno 8 giocatori per avviare la partita
"Mifioso": math.floor(len(self.players) / 9) + 1,
"Investigatore": math.floor(len(self.players) / 10) + 1,
"Angelo": math.floor(len(self.players) / 11) + 1,
"Terrorista": math.floor(len(self.players) / 12) + 1,
"Derek": math.floor(len(self.players) / 13) + 1,
"Disastro": math.floor(len(self.players) / 14) + 1,
"Mamma": math.floor(len(self.players) / 15) + 1,
"Stagista": math.floor(len(self.players) / 16) + 1,
"SignoreDelCaos": 0,
"Servitore": 0
}
elif preset == "advanced":
# Preset avanzato: genera i ruoli in modo da rendere la partita divertente
self.roleconfig = dict()
unassignedplayers = len(self.players)
# Mifioso: tra 1 e 25% dei giocatori
self.roleconfig["Mifioso"] = random.randint(1, math.ceil(unassignedplayers / 4)),
unassignedplayers -= self.roleconfig["Mifioso"]
# Investigatore: tra 1 e 19% dei giocatori
self.roleconfig["Investigatore"] = random.randint(1, math.ceil(unassignedplayers / 4)),
unassignedplayers -= self.roleconfig["Investigatore"]
# Angelo: tra 1 e 14% dei giocatori
self.roleconfig["Angelo"] = random.randint(1, math.ceil(unassignedplayers / 4))
unassignedplayers -= self.roleconfig["Angelo"]
# 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.missingmifia = True
self.misschance = 5
self.message(bot, s.preset_advanced_selected)
self.endconfig(bot)
elif preset == "custom":
# 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_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_classic = "Classico"
# Preset completo
preset_full = "Completo"
# Preset classico selezionato
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
preset_custom = "Personalizzato"