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:
parent
27ec7b3c85
commit
bc5350f86e
3 changed files with 76 additions and 22 deletions
71
main.py
71
main.py
|
@ -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
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
telegram
|
python-telegram-bot
|
25
strings.py
25
strings.py
|
@ -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"
|
||||||
|
|
Loading…
Reference in a new issue