Add chk_traitor event (for the random game mode)
This commit is contained in:
parent
aaaf3df0f5
commit
5d8cd14db8
@ -788,10 +788,12 @@ class RandomMode(GameMode):
|
|||||||
def startup(self):
|
def startup(self):
|
||||||
events.add_listener("amnesiac_turn", self.amnesiac_turn, 1)
|
events.add_listener("amnesiac_turn", self.amnesiac_turn, 1)
|
||||||
events.add_listener("roles_check", self.roles_check, 1)
|
events.add_listener("roles_check", self.roles_check, 1)
|
||||||
|
events.add_listener("chk_traitor", self.chk_traitor, 1)
|
||||||
|
|
||||||
def teardown(self):
|
def teardown(self):
|
||||||
events.remove_listener("amnesiac_turn", self.amnesiac_turn, 1)
|
events.remove_listener("amnesiac_turn", self.amnesiac_turn, 1)
|
||||||
events.remove_listener("roles_check", self.roles_check, 1)
|
events.remove_listener("roles_check", self.roles_check, 1)
|
||||||
|
events.remove_listener("chk_traitor", self.chk_traitor, 1)
|
||||||
|
|
||||||
def amnesiac_turn(self, evt, var, amn, role):
|
def amnesiac_turn(self, evt, var, amn, role):
|
||||||
var.ROLES["amnesiac"].remove(amn)
|
var.ROLES["amnesiac"].remove(amn)
|
||||||
@ -805,6 +807,25 @@ class RandomMode(GameMode):
|
|||||||
def roles_check(self, evt, var, addroles):
|
def roles_check(self, evt, var, addroles):
|
||||||
evt.prevent_default = True
|
evt.prevent_default = True
|
||||||
|
|
||||||
|
def chk_traitor(self, evt, cli, var, cubes, betrayers):
|
||||||
|
if not var.FIRST_NIGHT:
|
||||||
|
return # use normal chk_traitor
|
||||||
|
|
||||||
|
for cube in cubes:
|
||||||
|
var.ROLES["wolf"].append(cube)
|
||||||
|
var.ROLES["wolf cub"].remove(cube)
|
||||||
|
var.ORIGINAL_ROLES["wolf"].append(cube)
|
||||||
|
var.ORIGINAL_ROLES["wolf cub"].remove(cube)
|
||||||
|
|
||||||
|
if len(var.ROLES["wolf"]) == 0:
|
||||||
|
for betrayer in betrayers:
|
||||||
|
var.ROLES["wolf"].append(betrayer)
|
||||||
|
var.ROLES["traitor"].remove(betrayer)
|
||||||
|
var.ORIGINAL_ROLES["wolf"].append(betrayer)
|
||||||
|
var.ORIGINAL_ROLES["traitor"].remove(betrayer)
|
||||||
|
|
||||||
|
evt.prevent_default = True
|
||||||
|
|
||||||
# Credits to Metacity for designing and current name
|
# Credits to Metacity for designing and current name
|
||||||
# Blame arkiwitect for the original name of KrabbyPatty
|
# Blame arkiwitect for the original name of KrabbyPatty
|
||||||
@game_mode("aleatoire", minp = 8, maxp = 24, likelihood = 4)
|
@game_mode("aleatoire", minp = 8, maxp = 24, likelihood = 4)
|
||||||
|
@ -1632,29 +1632,37 @@ def show_votes(cli, nick, chan, rest):
|
|||||||
cli.msg(chan, the_message)
|
cli.msg(chan, the_message)
|
||||||
|
|
||||||
def chk_traitor(cli):
|
def chk_traitor(cli):
|
||||||
|
realwolves = var.WOLF_ROLES[:]
|
||||||
|
realwolves.remove("wolf cub")
|
||||||
|
if len(var.list_players(realwolves)) > 0:
|
||||||
|
return # actual wolves still alive
|
||||||
|
|
||||||
wcl = copy.copy(var.ROLES["wolf cub"])
|
wcl = copy.copy(var.ROLES["wolf cub"])
|
||||||
ttl = copy.copy(var.ROLES["traitor"])
|
ttl = copy.copy(var.ROLES["traitor"])
|
||||||
for wc in wcl:
|
|
||||||
var.ROLES["wolf"].append(wc)
|
|
||||||
var.ROLES["wolf cub"].remove(wc)
|
|
||||||
pm(cli, wc, "You have grown up into a wolf and vowed to take revenge for your dead parents!")
|
|
||||||
debuglog(wc, "(wolf cub) GROW UP")
|
|
||||||
|
|
||||||
if len(var.ROLES["wolf"]) == 0:
|
event = Event("chk_traitor", {})
|
||||||
for tt in ttl:
|
if event.dispatch(cli, var, wcl, ttl):
|
||||||
var.ROLES["wolf"].append(tt)
|
for wc in wcl:
|
||||||
var.ROLES["traitor"].remove(tt)
|
var.ROLES["wolf"].append(wc)
|
||||||
if tt in var.ROLES["cursed villager"]:
|
var.ROLES["wolf cub"].remove(wc)
|
||||||
var.ROLES["cursed villager"].remove(tt)
|
pm(cli, wc, "You have grown up into a wolf and vowed to take revenge for your dead parents!")
|
||||||
pm(cli, tt, "HOOOOOOOOOWL. You have become... a wolf!\n"+
|
debuglog(wc, "(wolf cub) GROW UP")
|
||||||
"It is up to you to avenge your fallen leaders!")
|
|
||||||
debuglog(tt, "(traitor) TURNING")
|
|
||||||
|
|
||||||
# no message if wolf cub becomes wolf for now, may want to change that in future
|
if len(var.ROLES["wolf"]) == 0:
|
||||||
if len(var.ROLES["wolf"]) > 0:
|
for tt in ttl:
|
||||||
cli.msg(botconfig.CHANNEL, "\u0002The villagers, during their celebrations, are "+
|
var.ROLES["wolf"].append(tt)
|
||||||
"frightened as they hear a loud howl. The wolves are "+
|
var.ROLES["traitor"].remove(tt)
|
||||||
"not gone!\u0002")
|
if tt in var.ROLES["cursed villager"]:
|
||||||
|
var.ROLES["cursed villager"].remove(tt)
|
||||||
|
pm(cli, tt, "HOOOOOOOOOWL. You have become... a wolf!\n"+
|
||||||
|
"It is up to you to avenge your fallen leaders!")
|
||||||
|
debuglog(tt, "(traitor) TURNING")
|
||||||
|
|
||||||
|
# no message if wolf cub becomes wolf for now, may want to change that in future
|
||||||
|
if len(var.ROLES["wolf"]) > 0:
|
||||||
|
cli.msg(botconfig.CHANNEL, "\u0002The villagers, during their celebrations, are "+
|
||||||
|
"frightened as they hear a loud howl. The wolves are "+
|
||||||
|
"not gone!\u0002")
|
||||||
|
|
||||||
def stop_game(cli, winner = "", abort = False):
|
def stop_game(cli, winner = "", abort = False):
|
||||||
chan = botconfig.CHANNEL
|
chan = botconfig.CHANNEL
|
||||||
|
Loading…
x
Reference in New Issue
Block a user