Finish nightmares

This commit is contained in:
skizzerz 2015-10-30 14:13:02 -07:00
parent 55070fd44b
commit 3b4f62e2f1
2 changed files with 156 additions and 10 deletions

View File

@ -9,6 +9,7 @@ from src.utilities import *
import botconfig import botconfig
from src import events from src import events
from src import decorators
def game_mode(name, minp, maxp, likelihood = 0): def game_mode(name, minp, maxp, likelihood = 0):
def decor(c): def decor(c):
@ -770,6 +771,10 @@ class SleepyMode(GameMode):
events.add_listener("chk_nightdone", self.prolong_night) events.add_listener("chk_nightdone", self.prolong_night)
events.add_listener("transition_day_begin", self.nightmare_kill) events.add_listener("transition_day_begin", self.nightmare_kill)
events.add_listener("del_player", self.happy_fun_times) events.add_listener("del_player", self.happy_fun_times)
self.north_cmd = decorators.cmd("north", "n", chan=False, pm=True, playing=True, phases=("night",))(self.north)
self.east_cmd = decorators.cmd("east", "e", chan=False, pm=True, playing=True, phases=("night",))(self.east)
self.south_cmd = decorators.cmd("south", "s", chan=False, pm=True, playing=True, phases=("night",))(self.south)
self.west_cmd = decorators.cmd("west", "w", chan=False, pm=True, playing=True, phases=("night",))(self.west)
def teardown(self): def teardown(self):
events.remove_listener("dullahan_targets", self.dullahan_targets) events.remove_listener("dullahan_targets", self.dullahan_targets)
@ -777,6 +782,14 @@ class SleepyMode(GameMode):
events.remove_listener("chk_nightdone", self.prolong_night) events.remove_listener("chk_nightdone", self.prolong_night)
events.remove_listener("transition_day_begin", self.nightmare_kill) events.remove_listener("transition_day_begin", self.nightmare_kill)
events.remove_listener("del_player", self.happy_fun_times) events.remove_listener("del_player", self.happy_fun_times)
decorators.COMMANDS["north"].remove(self.north_cmd)
decorators.COMMANDS["n"].remove(self.north_cmd)
decorators.COMMANDS["east"].remove(self.east_cmd)
decorators.COMMANDS["e"].remove(self.east_cmd)
decorators.COMMANDS["south"].remove(self.south_cmd)
decorators.COMMANDS["s"].remove(self.south_cmd)
decorators.COMMANDS["west"].remove(self.west_cmd)
decorators.COMMANDS["west"].remove(self.west_cmd)
def dullahan_targets(self, evt, cli, var, dullahans, max_targets): def dullahan_targets(self, evt, cli, var, dullahans, max_targets):
for dull in dullahans: for dull in dullahans:
@ -786,25 +799,158 @@ class SleepyMode(GameMode):
if random.random() < 1/5: if random.random() < 1/5:
self.having_nightmare = random.choice(var.list_players()) self.having_nightmare = random.choice(var.list_players())
with var.WARNING_LOCK: with var.WARNING_LOCK:
t = threading.Timer(60, self.do_nightmare) t = threading.Timer(60, self.do_nightmare, (cli,))
else: else:
self.having_nightmare = None self.having_nightmare = None
def do_nightmare(self): def do_nightmare(self, cli):
pm(cli, self.having_nightmare, ("While walking through the woods, you hear the clopping of hooves behind you. Turning around, " + pm(cli, self.having_nightmare, ("While walking through the woods, you hear the clopping of hooves behind you. Turning around, " +
"you see a large black horse with dark red eyes and flames where its mane and tail would be. " + "you see a large black horse with dark red eyes and flames where its mane and tail would be. " +
"After a brief period of time, it starts chasing after you! You think if you can cross the bridge " + "After a brief period of time, it starts chasing after you! You think if you can cross the bridge " +
"over the nearby river you'll be safe, but your surroundings are almost unrecognizable in this darkness.")) "over the nearby river you'll be safe, but your surroundings are almost unrecognizable in this darkness."))
correct = [None, None, None, None, None] self.correct = [None, None, None]
self.fake1 = [None, None, None]
self.fake2 = [None, None, None]
directions = ["n", "e", "s", "w"] directions = ["n", "e", "s", "w"]
self.nightmare_step = 0 self.step = 0
for i in range(0, 5): for i in range(0, 3):
correct[i] = random.choice(directions) self.correct[i] = random.choice(directions)
self.fake1[i] = random.choice(directions)
self.fake2[i] = random.choice(directions)
self.prev_direction = "s" if correct[0] != "s" else "w" self.prev_direction = "s" if correct[0] != "s" else "w"
self.nightmare_step() self.start_direction = self.prev_direction
self.on_path = set()
self.nightmare_step(cli)
def nightmare_step(self): def nightmare_step(self, cli):
pass # TODO: finish if self.prev_direction == "n":
directions = "east, south, and west"
elif self.prev_direction == "e":
directions = "north, south, and west"
elif self.prev_direction == "s":
directions = "north, east, and west"
elif self.prev_direction == "w":
directions = "north, east, and south"
if self.step == 0:
pm(cli, self.having_nightmare, ("You find yourself deep in the heart of the woods, with imposing trees covering up what little light " +
"exists with their dense canopy. The paths here are very twisty, and it's easy to wind up going in " +
"circles if one is not careful. Directions are {0}.").format(directions))
elif self.step == 1:
pm(cli, self.having_nightmare, ("You come across a small creek, the water babbling softly in the night as if nothing is amiss. " +
"As you approach, a flock of ravens bathing there disperses into all directions. " +
"Directions are {0}.").format(directions))
elif self.step == 2:
pm(cli, self.having_nightmare, ("The treeline starts thinning and you start feeling fresh air for the first time in a while, you " +
"must be getting close to the edge of the woods! Directions are {0}.").format(directions))
elif self.step == 3:
if "correct" in self.on_path:
pm(cli, self.having_nightmare, ("You break clear of the woods and see a roaring river ahead with a rope bridge going over it. " +
"You sprint to the bridge with the beast hot on your tail, your adrenaline overcoming your tired " +
"legs as you push yourself for one final burst. You make it across the bridge, and not a moment too " +
"soon as the sun starts rising up, causing you to wake from your dream in a cold sweat."))
self.having_nightmare = None
chk_nightdone(cli)
elif "fake1" in self.on_path:
pm(cli, self.having_nightmare, ("You break clear of the woods and see a roaring river ahead. However, look as you may you are unable " +
"to find any means of crossing it. Knowing how expansive the river is, and how fast the beast can chase " +
"you if it isn't being slowed down by the foliage, you think it's best to look for the correct side of the " +
"woods again by going back in. Cursing your bad luck, you head back into the woods."))
self.step = 0
self.prev_direction = self.start_direction
self.nightmare_step(cli)
elif "fake2" in self.on_path:
pm(cli, self.having_nightmare, ("You break clear of the woods only to find an expansive plains ahead of you, with no river in sight. " +
"You must have found your way out through the wrong side of the woods! Attempting to circle around the " +
"woods would result in the beast catching you in short order, so you softly curse at your bad luck as you " +
"head back into the woods to find the correct path."))
self.step = 0
self.prev_direction = self.start_direction
self.nightmare_step(cli)
def north(self, cli, nick, chan, rest):
if nick != self.having_nightmare:
return
advance = False
if ("correct" in self.on_path or self.step == 0) and self.correct[self.step] == "n":
self.on_path.add("correct")
advance = True
if ("fake1" in self.on_path or self.step == 0) and self.fake1[self.step] == "n":
self.on_path.add("fake1")
advance = True
if ("fake2" in self.on_path or self.step == 0) and self.fake2[self.step] == "n":
self.on_path.add("fake2")
advance = True
if advance:
self.step += 1
self.prev_direction = "n"
else:
self.step = 0
self.prev_direction = self.start_direction
self.nightmare_step(cli)
def east(self, cli, nick, chan, rest):
if nick != self.having_nightmare:
return
advance = False
if ("correct" in self.on_path or self.step == 0) and self.correct[self.step] == "e":
self.on_path.add("correct")
advance = True
if ("fake1" in self.on_path or self.step == 0) and self.fake1[self.step] == "e":
self.on_path.add("fake1")
advance = True
if ("fake2" in self.on_path or self.step == 0) and self.fake2[self.step] == "e":
self.on_path.add("fake2")
advance = True
if advance:
self.step += 1
self.prev_direction = "e"
else:
self.step = 0
self.prev_direction = self.start_direction
self.nightmare_step(cli)
def south(self, cli, nick, chan, rest):
if nick != self.having_nightmare:
return
advance = False
if ("correct" in self.on_path or self.step == 0) and self.correct[self.step] == "s":
self.on_path.add("correct")
advance = True
if ("fake1" in self.on_path or self.step == 0) and self.fake1[self.step] == "s":
self.on_path.add("fake1")
advance = True
if ("fake2" in self.on_path or self.step == 0) and self.fake2[self.step] == "s":
self.on_path.add("fake2")
advance = True
if advance:
self.step += 1
self.prev_direction = "s"
else:
self.step = 0
self.prev_direction = self.start_direction
self.nightmare_step(cli)
def west(self, cli, nick, chan, rest):
if nick != self.having_nightmare:
return
advance = False
if ("correct" in self.on_path or self.step == 0) and self.correct[self.step] == "w":
self.on_path.add("correct")
advance = True
if ("fake1" in self.on_path or self.step == 0) and self.fake1[self.step] == "w":
self.on_path.add("fake1")
advance = True
if ("fake2" in self.on_path or self.step == 0) and self.fake2[self.step] == "w":
self.on_path.add("fake2")
advance = True
if advance:
self.step += 1
self.prev_direction = "w"
else:
self.step = 0
self.prev_direction = self.start_direction
self.nightmare_step(cli)
def prolong_night(self, evt, cli, var): def prolong_night(self, evt, cli, var):
if self.having_nightmare is not None: if self.having_nightmare is not None:

View File

@ -6125,7 +6125,7 @@ def get_bitten_message(nick):
message = ("This time in your vision, you saw your best friend surrounded by wolves. However, instead of dying, they started " + message = ("This time in your vision, you saw your best friend surrounded by wolves. However, instead of dying, they started " +
"to mutate into a werewolf themselves. Looking on in shock, you start wondering how you can find help, when one of " + "to mutate into a werewolf themselves. Looking on in shock, you start wondering how you can find help, when one of " +
"the wolves turns to you and says to get going before day breaks. Confused, you look down and notice that you too " + "the wolves turns to you and says to get going before day breaks. Confused, you look down and notice that you too " +
"are a wolf; the shock of the realization waking you with a start.") "are a wolf; the shock of the realization wakes you with a start.")
elif time_left == 2: elif time_left == 2:
message = ("You had another strange vision last night. You saw an old childhood bully walking along the edge of a cliff. " + message = ("You had another strange vision last night. You saw an old childhood bully walking along the edge of a cliff. " +
"You follow behind them, and after a while they turn around, noticing you. Their face suddenly becomes devoid " + "You follow behind them, and after a while they turn around, noticing you. Their face suddenly becomes devoid " +