1
Fork 0
mirror of https://github.com/RYGhub/royal-mifia.git synced 2024-11-22 13:54:19 +00:00

Aggiunto lo stagista!

This commit is contained in:
Steffo 2017-01-28 23:21:52 +01:00
parent 658d36721a
commit c7f360caf1
2 changed files with 82 additions and 7 deletions

73
main.py
View file

@ -176,7 +176,7 @@ class Angelo(Role):
# Imposta qualcuno come protetto # Imposta qualcuno come protetto
selected = game.findplayerbyusername(arg) selected = game.findplayerbyusername(arg)
if selected is not None: if selected is not None:
if selected is not Player: if selected is not Player: # TODO: cavolo ho scritto qui?
# Togli la protezione a quello che stavi proteggendo prima # Togli la protezione a quello che stavi proteggendo prima
if self.protecting is not None: if self.protecting is not None:
self.protecting.protectedby = None self.protecting.protectedby = None
@ -312,8 +312,41 @@ class Mamma(Role):
role=target.role.name)) role=target.role.name))
break break
class Stagista(Role):
"""Lo stagista sceglie una persona da cui andare in stage e prende il suo ruolo."""
icon = s.intern_icon
team = 'Good'
name = s.intern_name
powerdesc = s.intern_power_description
def __init__(self, player):
super().__init__(player)
self.master = None
def __repr__(self) -> str:
return "<Role: Stagista>"
def power(self, bot, game, arg):
target = game.findplayerbyusername(arg)
if target is not None and target is not self.player:
self.master = target
self.player.message(bot, s.intern_started_internship)
else:
self.player.message(bot, s.error_no_username)
def onendday(self, bot, game):
if self.master is not None:
if self.master.alive:
game.message(bot, s.intern_changed_role)
game.changerole(self.player, self.master.role.__class__)
else:
game.message(bot, "easter egg. yey")
#TODO: mettere l'easter egg
# Ordine in cui vengono eseguiti i onendday dei vari ruoli. # Ordine in cui vengono eseguiti i onendday dei vari ruoli.
rolepriority = [Mifioso, Investigatore, Disastro, Angelo, Derek, Terrorista, Mamma] rolepriority = [Mifioso, Investigatore, Disastro, Angelo, Derek, Stagista, Terrorista, Mamma]
class Player: class Player:
@ -577,7 +610,22 @@ class Game:
def loadpreset(self, bot, preset): def loadpreset(self, bot, preset):
"""Fine della fase di preset: carica il preset selezionato o passa a config""" """Fine della fase di preset: carica il preset selezionato o passa a config"""
if preset == "simple": if __debug__:
# Debug dello stagista
self.roleconfig = {
"Mifioso": 1,
"Investigatore": 1,
"Angelo": 1,
"Terrorista": 1,
"Derek": 1,
"Disastro": 1,
"Mamma": 1,
"Stagista": 1
}
self.votingmifia = True
self.missingmifia = False
self.endconfig(bot)
elif preset == "simple":
# Preset semplice # Preset semplice
self.roleconfig = { self.roleconfig = {
"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
@ -586,7 +634,8 @@ class Game:
"Terrorista": 0, "Terrorista": 0,
"Derek": 0, "Derek": 0,
"Disastro": 0, "Disastro": 0,
"Mamma": 0 "Mamma": 0,
"Stagista": 0
} }
self.votingmifia = True self.votingmifia = True
self.missingmifia = False self.missingmifia = False
@ -600,7 +649,8 @@ class Game:
"Terrorista": 1 if random.randrange(0, 99) > 70 else 0, # 30% di avere un terrorista "Terrorista": 1 if random.randrange(0, 99) > 70 else 0, # 30% di avere un terrorista
"Derek": 0, "Derek": 0,
"Disastro": 0, "Disastro": 0,
"Mamma": 0 "Mamma": 0,
"Stagista": 0
} }
self.votingmifia = True self.votingmifia = True
self.missingmifia = False self.missingmifia = False
@ -615,7 +665,8 @@ class Game:
"Terrorista": math.floor(len(self.players) / 11) + 1, "Terrorista": math.floor(len(self.players) / 11) + 1,
"Derek": math.floor(len(self.players) / 12) + 1, "Derek": math.floor(len(self.players) / 12) + 1,
"Disastro": math.floor(len(self.players) / 13) + 1, "Disastro": math.floor(len(self.players) / 13) + 1,
"Mamma": math.floor(len(self.players) / 14) + 1 "Mamma": math.floor(len(self.players) / 14) + 1,
"Stagista": 0
} }
self.votingmifia = True self.votingmifia = True
self.missingmifia = True self.missingmifia = True
@ -678,7 +729,7 @@ class Game:
file.close() file.close()
def victoryconditions(self, bot): def victoryconditions(self, bot):
# Condizioni di vittoria """Controlla se qualcuno ha completato le condizioni di vittoria."""
good = 0 good = 0
evil = 0 evil = 0
for player in self.players: for player in self.players:
@ -710,6 +761,14 @@ class Game:
player.message(bot, s.end_mifia_killed + s.defeat) player.message(bot, s.end_mifia_killed + s.defeat)
self.endgame() self.endgame()
def changerole(self, player, newrole):
"""Cambia il ruolo di un giocatore, aggiornando tutti i valori"""
self.playersinrole[player.role].remove(player)
player.role = newrole(player)
self.playersinrole[newrole].append(player)
# TODO: controllare se basta fare così
# Partite in corso # Partite in corso
inprogress = list() inprogress = list()

View file

@ -125,6 +125,22 @@ mom_power_description = "All'inizio della partita scoprirai il ruolo di un gioca
# Mamma: scoperta di un ruolo # Mamma: scoperta di un ruolo
mom_discovery = "@{target} è un *{icon} {role}*.\n" \ mom_discovery = "@{target} è un *{icon} {role}*.\n" \
#TODO: Mettere qualcosa qui
# Stagista: icona
intern_icon = "intern_icon"
# Stagista: nome ruolo
intern_name = "Stagista"
# Stagista: descrizione del potere
intern_power_description = "intern_power_description"
# Stagista: inizia lo stage
intern_started_internship = "intern_started_internship"
# Stagista: cambiato ruolo
intern_changed_role = "intern_changed_role"
# Generale: ruolo assegnato # Generale: ruolo assegnato
role_assigned = "Ti è stato assegnato il ruolo di *{icon} {name}*." role_assigned = "Ti è stato assegnato il ruolo di *{icon} {name}*."