Add a random delay to night in villagergame
This commit is contained in:
parent
bb99493ae8
commit
ed7d3eda6a
@ -185,14 +185,17 @@ class VillagergameMode(GameMode):
|
|||||||
"crazed shaman" : ( 0 , 0 , 0 , 0 , 1 ),
|
"crazed shaman" : ( 0 , 0 , 0 , 0 , 1 ),
|
||||||
"cursed villager" : ( 0 , 1 , 1 , 1 , 1 ),
|
"cursed villager" : ( 0 , 1 , 1 , 1 , 1 ),
|
||||||
})
|
})
|
||||||
|
self.delaying_night = False
|
||||||
|
|
||||||
def startup(self):
|
def startup(self):
|
||||||
events.add_listener("chk_win", self.chk_win)
|
events.add_listener("chk_win", self.chk_win)
|
||||||
|
events.add_listener("chk_nightdone", self.prolong_night)
|
||||||
events.add_listener("transition_day_begin", self.transition_day)
|
events.add_listener("transition_day_begin", self.transition_day)
|
||||||
events.add_listener("retribution_kill", self.on_retribution_kill, priority=4)
|
events.add_listener("retribution_kill", self.on_retribution_kill, priority=4)
|
||||||
|
|
||||||
def teardown(self):
|
def teardown(self):
|
||||||
events.remove_listener("chk_win", self.chk_win)
|
events.remove_listener("chk_win", self.chk_win)
|
||||||
|
events.remove_listener("chk_nightdone", self.prolong_night)
|
||||||
events.remove_listener("transition_day_begin", self.transition_day)
|
events.remove_listener("transition_day_begin", self.transition_day)
|
||||||
events.remove_listener("retribution_kill", self.on_retribution_kill, priority=4)
|
events.remove_listener("retribution_kill", self.on_retribution_kill, priority=4)
|
||||||
|
|
||||||
@ -207,9 +210,21 @@ class VillagergameMode(GameMode):
|
|||||||
else:
|
else:
|
||||||
evt.data["winner"] = None
|
evt.data["winner"] = None
|
||||||
|
|
||||||
|
def prolong_night(self, evt, cli, var):
|
||||||
|
evt.data["nightroles"].append(botconfig.NICK)
|
||||||
|
|
||||||
|
if not self.delaying_night:
|
||||||
|
nspecials = len(var.ROLES["seer"] | var.ROLES["harlot"] | var.ROLES["shaman"] | var.ROLES["crazed shaman"])
|
||||||
|
rand = random.randint(5 if nspecials else 0, 30)
|
||||||
|
self.delaying_night = True
|
||||||
|
|
||||||
|
t = threading.Timer(rand, evt.data["transition_day"], args=(cli,), kwargs={"gameid": var.NIGHT_ID})
|
||||||
|
t.start()
|
||||||
|
|
||||||
def transition_day(self, evt, cli, var):
|
def transition_day(self, evt, cli, var):
|
||||||
# 30% chance we kill a safe, otherwise kill at random
|
# 30% chance we kill a safe, otherwise kill at random
|
||||||
# when killing safes, go after seer, then harlot, then shaman
|
# when killing safes, go after seer, then harlot, then shaman
|
||||||
|
self.delaying_night = False
|
||||||
pl = list_players()
|
pl = list_players()
|
||||||
tgt = None
|
tgt = None
|
||||||
seer = None
|
seer = None
|
||||||
|
Loading…
x
Reference in New Issue
Block a user