var AdventureActor = function(name) {\n this.name = name;\n this.act = function(){}\n}\n\nwindow.shuffle = function (array) {\n for (var i = 0; i < array.length; i++) {\n var r = Math.floor(i + (Math.random() * array.length - i))\n var b = array[i]\n array[i] = array[r]\n array[r] = b\n }\n return array\n}\n\nwindow.pick_actors = function(actors, min, max) {\n // How many actors do we want?\n var shuffled = shuffle(actors.slice(0))\n var n = 2 + Math.round(Math.random() * (actors.length - 2))\n var output = []\n for (var i = 0; i < n; i++){ \n output.push(shuffled.pop())\n }\n return output\n}
// Generated by CoffeeScript 1.4.0\n(function() {\n var Actor, Human, Thing, actor_classes, capitalize, products, tv_shows,\n __hasProp = {}.hasOwnProperty,\n __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };\n\n window.human_body_parts = ['nose', 'eyes', 'forehead', 'scalp', 'left ear', 'right ear', 'cheek', 'lips', 'tongue', 'chin', 'neck', "adam's apple", 'throat', 'shoulder blade', 'shoulder', 'funny bone', 'forearm', 'elbow', 'wrist', 'left hand', 'right hand', 'index finger', 'thumb', 'middle finger', 'ring finger', 'pinky', 'fingernail', 'palm', 'heart', 'chest', 'ribs', 'stomach', 'kidney', 'lungs', 'belly button', 'hips', 'genitals', 'taint', 'butt', 'thigh', 'knee', 'ankle', 'shin', 'heel', 'foot', 'big toe', 'pinky toe'];\n\n window.foods = ['milk', 'lettuce', 'cabbage', 'pork', 'beef', 'chicken', 'quinoa', 'beets', 'potatoes', 'carrots', 'peaches', 'oranges', 'apples'];\n\n Actor = (function() {\n\n function Actor() {}\n\n Actor.prototype.genitive = function() {\n return this.name + "'s";\n };\n\n return Actor;\n\n })();\n\n Human = (function(_super) {\n\n __extends(Human, _super);\n\n function Human() {\n return Human.__super__.constructor.apply(this, arguments);\n }\n\n Human.prototype.human = true;\n\n return Human;\n\n })(Actor);\n\n Thing = (function(_super) {\n\n __extends(Thing, _super);\n\n function Thing() {\n return Thing.__super__.constructor.apply(this, arguments);\n }\n\n Thing.prototype.human = false;\n\n return Thing;\n\n })(Actor);\n\n actor_classes = {};\n\n window.actor_classes = actor_classes;\n\n actor_classes.Lamp = (function(_super) {\n\n __extends(Lamp, _super);\n\n function Lamp() {\n return Lamp.__super__.constructor.apply(this, arguments);\n }\n\n Lamp.prototype.off = false;\n\n Lamp.prototype.burnt_out = false;\n\n Lamp.prototype.name = 'the table lamp';\n\n Lamp.prototype.can_act = function() {\n return !this.off && !this.burnt_out;\n };\n\n Lamp.prototype.tv_prompted = false;\n\n Lamp.prototype.healthy_act = function(others) {\n var actions, other;\n other = others.random();\n actions = ["" + this.name + " shines light on " + other.name, "" + this.name + " refuses to shine light on " + other.name, "" + this.name + " blinds " + other.name, "" + this.name + " bathes " + other.name + " in bright light", "" + this.name + " burns " + other.name, "" + this.name + " dimly illuminates " + other.name, "" + this.name + " provides sexy mood lighting"];\n if (!knows_thing('tv') && !this.tv_prompted) {\n this.tv_prompted = true;\n return "[[a light shines from someone who isn't the lamp|MeetTV]]";\n }\n return actions.random();\n };\n\n Lamp.prototype.act = function(others) {\n var human, humans, o, other;\n other = others.random();\n if (!this.off && !this.burnt_out) {\n if (Math.random() < .8) {\n return this.healthy_act(others);\n } else {\n if (Math.random() < .5) {\n this.burnt_out = true;\n return "" + this.name + "'s bulb burns out. Darkness fills the room";\n } else {\n this.off = true;\n return "" + this.name + " becomes unplugged. Darkness fills the room";\n }\n }\n } else if (this.off) {\n humans = (function() {\n var _i, _len, _results;\n _results = [];\n for (_i = 0, _len = others.length; _i < _len; _i++) {\n o = others[_i];\n if (o.human) {\n _results.push(o);\n }\n }\n return _results;\n })();\n if (humans.length > 0) {\n human = humans.random();\n this.off = false;\n return "" + human.name + " turns " + this.name + " back on";\n }\n } else if (this.burnt_out) {\n humans = (function() {\n var _i, _len, _results;\n _results = [];\n for (_i = 0, _len = others.length; _i < _len; _i++) {\n o = others[_i];\n if (o.human) {\n _results.push(o);\n }\n }\n return _results;\n })();\n if (humans.length > 0) {\n human = humans.random();\n this.burnt_out = false;\n return "" + human.name + " replaces the bulb of " + this.name;\n }\n }\n };\n\n return Lamp;\n\n })(Thing);\n\n actor_classes.Chair = (function(_super) {\n\n __extends(Chair, _super);\n\n function Chair() {\n return Chair.__super__.constructor.apply(this, arguments);\n }\n\n Chair.prototype.name = "the leather chair";\n\n Chair.prototype.act = function(others) {\n var human, o, other;\n if (Math.random() < .25) {\n return this.seat_act(others);\n } else {\n other = others.random();\n human = ((function() {\n var _i, _len, _results;\n _results = [];\n for (_i = 0, _len = others.length; _i < _len; _i++) {\n o = others[_i];\n if (o.human) {\n _results.push(o);\n }\n }\n return _results;\n })()).random();\n return ["" + this.name + " cushions " + other.name, "" + this.name + " supports " + other.name, "" + this.name + " comforts " + other.name, "" + this.name + " relaxes " + other.name, "" + this.name + " eases " + (human.genitive()) + " weary " + (human_body_parts.random()), "" + (this.genitive()) + " leather glistens in the sun"].random();\n }\n };\n\n Chair.prototype.seat_act = function(others) {\n var other;\n if (!(this.seated != null)) {\n other = others.random();\n this.seated = other;\n return ("" + this.name + " ") + ['seats', "won't seat"].random() + " " + other.name;\n } else {\n other = this.seated;\n this.seated = null;\n return ("" + this.name + " ") + ['ejects'].random() + (" " + other.name + " onto the floor");\n }\n };\n\n return Chair;\n\n })(Thing);\n\n actor_classes.Blender = (function(_super) {\n\n __extends(Blender, _super);\n\n function Blender() {\n return Blender.__super__.constructor.apply(this, arguments);\n }\n\n Blender.prototype.name = "the blender";\n\n Blender.prototype.act = function(others) {\n var human, other, x;\n human = ((function() {\n var _i, _len, _results;\n _results = [];\n for (_i = 0, _len = others.length; _i < _len; _i++) {\n x = others[_i];\n if (x.human) {\n _results.push(x);\n }\n }\n return _results;\n })()).random();\n other = others.random();\n if (!knows_thing('refrigerator') && !this.fridge_prompted && Math.random() < .5) {\n this.fridge_prompted = true;\n return "[[you make a smoothie but you have nowhere to put it|FridgeMeet]]";\n }\n return ["" + this.name + " purrs", "" + this.name + " blends the hand of " + human.name, "" + this.name + " purrs", "" + this.name + " blends up some veggies for " + other.name, "" + this.name + " vibrates in circles", "" + this.name + " whirs at " + other.name, "" + this.name + " spins for " + other.name, "" + this.name + " pours blended fruit juice onto " + other.name, "a blade breaks off of " + this.name + " and lodges itself inside of " + (human.genitive()) + " " + (window.human_body_parts.random())].random();\n };\n\n return Blender;\n\n })(Thing);\n\n actor_classes.Toilet = (function(_super) {\n\n __extends(Toilet, _super);\n\n function Toilet() {\n return Toilet.__super__.constructor.apply(this, arguments);\n }\n\n Toilet.prototype.name = "the toilet";\n\n Toilet.prototype.act = function(others) {\n var human, other, x;\n human = ((function() {\n var _i, _len, _results;\n _results = [];\n for (_i = 0, _len = others.length; _i < _len; _i++) {\n x = others[_i];\n if (x.human) {\n _results.push(x);\n }\n }\n return _results;\n })()).random();\n other = others.random();\n if (!knows_thing('shower') && !this.shower_prompted && Math.random() < .5) {\n this.shower_prompted = true;\n return "[[you notice the toilet's sibling|ShowerMeet]]";\n }\n return ["" + this.name + " slurps up " + (human.genitive()) + " shit", "" + this.name + " flushes", "" + this.name + " clogs up", "" + this.name + " makes a gurgling sound", "" + this.name + " splashes water on " + other.name, "" + this.name + " refuses to flush", "" + this.name + " emits a disgusting smell", "" + this.name + " releases a noxious gas"].random();\n };\n\n return Toilet;\n\n })(Thing);\n\n actor_classes.Wallpaper = (function(_super) {\n\n __extends(Wallpaper, _super);\n\n function Wallpaper() {\n return Wallpaper.__super__.constructor.apply(this, arguments);\n }\n\n Wallpaper.prototype.name = "the wallpaper";\n\n Wallpaper.prototype.act = function(others) {\n var actions, human, o, other;\n other = others.random();\n human = ((function() {\n var _i, _len, _results;\n _results = [];\n for (_i = 0, _len = others.length; _i < _len; _i++) {\n o = others[_i];\n if (o.human) {\n _results.push(o);\n }\n }\n return _results;\n })()).random();\n actions = ["" + this.name + " looks like vomiting cats", "" + this.name + " peels off in flakes and lands on " + other.name, "" + this.name + " undulates", "" + this.name + " surrounds " + other.name, "" + this.name + " warps", "" + this.name + " speaks volumes about your character", "" + this.name + " reveals your innermost desires", "the red color of the wallpaper makes you feel angry", "the yellow color of the wallpaper makes you feel happy", "the blue color of the wallpaper makes you feel sad", "the orange color of the wallpaper makes you feel optimistic", "" + this.name + " undulates", "" + this.name + " wiggles", "" + this.name + " bursts", "" + this.name + " distends"];\n return actions.random();\n };\n\n return Wallpaper;\n\n })(Thing);\n\n actor_classes.Fridge = (function(_super) {\n\n __extends(Fridge, _super);\n\n function Fridge() {\n return Fridge.__super__.constructor.apply(this, arguments);\n }\n\n Fridge.prototype.name = "the refrigerator";\n\n Fridge.prototype.prompted_party = false;\n\n Fridge.prototype.act = function(others) {\n var actions, human, o, other;\n other = others.random();\n human = ((function() {\n var _i, _len, _results;\n _results = [];\n for (_i = 0, _len = others.length; _i < _len; _i++) {\n o = others[_i];\n if (o.human) {\n _results.push(o);\n }\n }\n return _results;\n })()).random();\n actions = ["" + this.name + " cools " + other.name, "" + this.name + " feeds " + other.name + " " + (window.foods.random()), "" + this.name + " blows cold air at " + other.name, "" + this.name + " traps " + other.name + " within itself", "" + this.name + " spoils the " + (window.foods.random()), "" + human.name + " eats some " + (window.foods.random()) + " from " + this.name, "" + (this.genitive()) + " food goes into " + (human.genitive()) + " mouth"];\n if (state.active.variables.tupperware_partied) {\n actions = actions.concat(["" + human.name + " eats some leftover mashed potatoes from your mother"]);\n }\n if (!state.active.variables.tupperware_partied && Math.random() < .5 && !this.prompted_party) {\n return "[[" + this.name + " is almost out of food!|TupperwareParty]]";\n this.prompted_party = true;\n }\n return actions.random();\n };\n\n return Fridge;\n\n })(Thing);\n\n tv_shows = ["a doctor show", "a cop show", "a comedy", "a reality show", "a drama", "a mystery show"];\n\n products = ["deodorant", "cologne", "shampoo", "watches", "cars", "music", "diapers", "car insurance", "booze"];\n\n actor_classes.Television = (function(_super) {\n\n __extends(Television, _super);\n\n function Television() {\n return Television.__super__.constructor.apply(this, arguments);\n }\n\n Television.prototype.name = "the T.V.";\n\n Television.prototype.reduced_hp = false;\n\n Television.prototype.act = function(others) {\n if (thing_by_id("tv").hp > 0) {\n return this.act_alive(others);\n } else {\n return this.act_dead(others);\n }\n };\n\n Television.prototype.act_alive = function(others) {\n var actions, human, o, other;\n if (!this.reduced_health) {\n thing_by_id("tv").hp -= 1;\n this.reduced_health = true;\n }\n other = others.random();\n human = ((function() {\n var _i, _len, _results;\n _results = [];\n for (_i = 0, _len = others.length; _i < _len; _i++) {\n o = others[_i];\n if (o.human) {\n _results.push(o);\n }\n }\n return _results;\n })()).random();\n actions = ["" + this.name + " puts on " + (tv_shows.random()), "" + this.name + " tells " + other.name + " to buy " + (products.random())];\n return actions.random();\n };\n\n Television.prototype.act_dead = function(others) {\n return "[[" + this.name + " does nothing|BuryTV]]";\n };\n\n return Television;\n\n })(Thing);\n\n actor_classes.Shower = (function(_super) {\n\n __extends(Shower, _super);\n\n function Shower() {\n return Shower.__super__.constructor.apply(this, arguments);\n }\n\n Shower.prototype.name = "the shower";\n\n Shower.prototype.act = function(others) {\n var actions, human, o, other;\n other = others.random();\n human = ((function() {\n var _i, _len, _results;\n _results = [];\n for (_i = 0, _len = others.length; _i < _len; _i++) {\n o = others[_i];\n if (o.human) {\n _results.push(o);\n }\n }\n return _results;\n })()).random();\n actions = ["" + this.name + " cleans " + other.name, "" + this.name + " soaks " + other.name, "" + this.name + " douses " + other.name + " with cold water", "" + this.name + " douses " + other.name + " with hot water", "" + other.name + " gets in the shower", "" + human.name + " pees in the shower", "" + human.name + " cleans their " + (human_body_parts.random()), "" + human.name + " cleans behind their ears"];\n return actions.random();\n };\n\n return Shower;\n\n })(Thing);\n\n actor_classes.Stripper = (function(_super) {\n\n __extends(Stripper, _super);\n\n function Stripper() {\n return Stripper.__super__.constructor.apply(this, arguments);\n }\n\n Stripper.prototype.name = "the gigolo";\n\n Stripper.prototype.act = function(others) {\n var human, other, x;\n other = others.random();\n human = ((function() {\n var _i, _len, _results;\n _results = [];\n for (_i = 0, _len = others.length; _i < _len; _i++) {\n x = others[_i];\n if (x.human) {\n _results.push(x);\n }\n }\n return _results;\n })()).random();\n if (!human) {\n human = new actor_classes.Player();\n }\n return ["" + this.name + " turns " + human.name + " on", "" + this.name + " gives " + human.name + " a lap dance", "" + this.name + " fucks " + other.name, "" + this.name + " blows kisses at " + other.name, "" + this.name + " winks at " + other.name, "" + this.name + " offers " + other.name + " his services", "" + this.name + " looks sexy", "" + this.name + " struts his stuff"].random();\n };\n\n return Stripper;\n\n })(Human);\n\n actor_classes.Inspiring = (function(_super) {\n\n __extends(Inspiring, _super);\n\n function Inspiring() {\n return Inspiring.__super__.constructor.apply(this, arguments);\n }\n\n Inspiring.prototype.name = "the microblogger";\n\n Inspiring.prototype.act = function(others) {\n var other;\n other = others.random();\n return ["" + this.name + " sighs", "" + this.name + " looks optimistic", "" + this.name + " gives " + other.name + " a thumbs up", "" + this.name + " shows " + other.name + " a funny picture", "" + this.name + " writes a twitter post", "" + this.name + " writes a thinkpiece about " + other.name, "" + this.name + " liveblogs", "" + this.name + " tweets about " + other.name, "" + this.name + " makes a passive aggresive post about " + other.name, "" + this.name + " starts a petition"].random();\n };\n\n return Inspiring;\n\n })(Human);\n\n actor_classes.Player = (function(_super) {\n\n __extends(Player, _super);\n\n function Player() {\n return Player.__super__.constructor.apply(this, arguments);\n }\n\n Player.prototype.name = "you";\n\n Player.prototype.genitive = function() {\n return "your";\n };\n\n Player.prototype.act = function(others) {\n return ["" + this.name + " satisfy your needs", "" + this.name + " play the game", "" + this.name + " hang around", "" + this.name + " meet some people"].random();\n };\n\n return Player;\n\n })(Human);\n\n actor_classes.Comedian = (function(_super) {\n\n __extends(Comedian, _super);\n\n function Comedian() {\n return Comedian.__super__.constructor.apply(this, arguments);\n }\n\n Comedian.prototype.name = "the comedian";\n\n Comedian.prototype.act = function(others) {\n var actions, human, other, t;\n human = ((function() {\n var _i, _len, _results;\n _results = [];\n for (_i = 0, _len = others.length; _i < _len; _i++) {\n t = others[_i];\n if (t.human) {\n _results.push(t);\n }\n }\n return _results;\n })()).random() || new actor_classes.Player();\n other = others.random();\n return actions = ["" + this.name + " laughs", "" + this.name + " tells " + other.name + " a joke", "" + this.name + " tells a mean joke about " + other.name, "" + this.name + " makes fun of " + other.name, "" + this.name + " makes fun of " + (human.genitive()) + " " + (human_body_parts.random()), "" + other.name + " inspires one of " + (this.genitive()) + " jokes", "" + this.name + " roasts " + other.name, "" + this.name + " ribs " + other.name, "" + this.name + " jibes " + other.name].random();\n };\n\n return Comedian;\n\n })(Human);\n\n actor_classes.Dancer = (function(_super) {\n\n __extends(Dancer, _super);\n\n function Dancer() {\n return Dancer.__super__.constructor.apply(this, arguments);\n }\n\n Dancer.prototype.name = "the dancer";\n\n Dancer.prototype.act = function(others) {\n var h, human, other;\n human = ((function() {\n var _i, _len, _results;\n _results = [];\n for (_i = 0, _len = others.length; _i < _len; _i++) {\n h = others[_i];\n if (h.human) {\n _results.push(h);\n }\n }\n return _results;\n })()).random() || new actor_classes.Player();\n other = others.random();\n return ["" + this.name + " twirls on her foot", "" + this.name + " does a saucy jig", "" + this.name + " bends in surprising ways", "" + human.name + " spins and dips " + this.name, "" + this.name + " grinds on " + other.name, "" + this.name + " twerks towards " + other.name, "" + this.name + " thrusts her hips towards " + other.name, "" + (this.genitive()) + " hips lie", "" + this.name + " shakes what her mother gave her", "" + this.name + " shakes her money maker"].random();\n };\n\n return Dancer;\n\n })(Human);\n\n actor_classes.Priest = (function(_super) {\n\n __extends(Priest, _super);\n\n function Priest() {\n return Priest.__super__.constructor.apply(this, arguments);\n }\n\n Priest.prototype.name = "the priest";\n\n Priest.prototype.act = function(others) {\n var other;\n other = others.random();\n return ["" + this.name + " prays for peace", "" + this.name + " prays for " + other.name, "" + this.name + " believes in " + other.name, "" + this.name + " gives a sermon", "" + this.name + " debates " + other.name, "" + this.name + " weeps for " + (other.genitive()) + " soul", "" + this.name + " fears hell", "" + this.name + " persuades " + other.name + " to fear God"].random();\n };\n\n return Priest;\n\n })(Human);\n\n actor_classes.Clown = (function(_super) {\n\n __extends(Clown, _super);\n\n function Clown() {\n return Clown.__super__.constructor.apply(this, arguments);\n }\n\n Clown.prototype.name = "the clown";\n\n Clown.prototype.act = function(others) {\n var h, human, other;\n other = others.random();\n human = ((function() {\n var _i, _len, _results;\n _results = [];\n for (_i = 0, _len = other.length; _i < _len; _i++) {\n h = other[_i];\n if (h.human) {\n _results.push(h);\n }\n }\n return _results;\n })()).random() || new actor_classes.Player();\n return ["" + this.name + " throws a pie at " + other.name, "" + this.name + " clowns around with " + other.name, "" + this.name + " honks a horn at " + other.name, "" + this.name + " bumbles", "" + this.name + " steps on " + (human.genitive()) + " feet", "" + this.name + " plays with a rubber chicken", "" + this.name + " grins at " + other.name, "" + this.name + " cries at " + other.name, "" + this.name + " points and laughs at " + other.name, "" + this.name + " rides a little tricycle around the house"].random();\n };\n\n return Clown;\n\n })(Human);\n\n actor_classes.Fascist = (function(_super) {\n\n __extends(Fascist, _super);\n\n function Fascist() {\n return Fascist.__super__.constructor.apply(this, arguments);\n }\n\n Fascist.prototype.name = "the fascist";\n\n Fascist.prototype.act = function(others) {\n var other;\n other = others.random();\n return ["" + this.name + " oppresses " + other.name, "" + this.name + " demands " + other.name + " respect him", "" + this.name + " invents a salute", "" + this.name + " salutes " + other.name, "" + this.name + " commits war crimes", "" + this.name + " convinces " + other.name + " of his greatness", "" + other.name + " respects " + this.name, "" + other.name + " follows " + this.name, "" + other.name + " joins " + (this.genitive()) + " regime"].random();\n };\n\n return Fascist;\n\n })(Human);\n\n actor_classes.Enduring = (function(_super) {\n\n __extends(Enduring, _super);\n\n function Enduring() {\n return Enduring.__super__.constructor.apply(this, arguments);\n }\n\n Enduring.prototype.name = "the endurer";\n\n Enduring.prototype.act = function(others) {\n var other;\n other = others.random();\n return ["" + this.name + " endures", "" + this.name + " inspires " + other.name, "" + this.name + " is an example for us all", "" + this.name + " never complains", "" + this.name + " forgives " + other.name, "" + this.name + " tells a story about her hardships", "" + this.name + " tells " + other.name + " a story about her hardships", "" + this.name + " reminds " + other.name + " to be thankful for what they have"].random();\n };\n\n return Enduring;\n\n })(Human);\n\n actor_classes.Jissom = (function(_super) {\n\n __extends(Jissom, _super);\n\n function Jissom() {\n return Jissom.__super__.constructor.apply(this, arguments);\n }\n\n Jissom.prototype.name = "the puddle of ejaculate";\n\n Jissom.prototype.act = function(others) {\n var other;\n other = others.random();\n return ["" + this.name + " dries up a little.", "" + this.name + " slips " + other.name, "" + this.name + " gets on " + other.name, "" + this.name + " smells funky", "" + this.name + " gets on the curtains", "" + this.name + " gets on the walls", "" + this.name + " gives " + other.name + " a little taste", "" + this.name + " wafts smells at " + other.name, "" + this.name + " coagulates"].random();\n };\n\n return Jissom;\n\n })(Thing);\n\n window.pick_some = function(array, min, max) {\n var a, n;\n a = shuffle(array.slice(0));\n n = min + Math.ceil(Math.random() * (max - min));\n if (n === 0) {\n n = min;\n }\n return a.slice(0, n);\n };\n\n capitalize = function(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n };\n\n window.capitalize = capitalize;\n\n window.main_story = function() {\n var a, actors, f, friendly_things, friends, guaranteed_friend, guaranteed_thing, player, t, things, _ref, _ref1;\n friendly_things = (function() {\n var _i, _len, _ref, _results;\n _ref = state.active.variables.things;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n t = _ref[_i];\n if (t.can_adventure_with) {\n _results.push(t);\n }\n }\n return _results;\n })();\n things = pick_some(friendly_things, 1, 2);\n friends = pick_some(state.active.variables.friends, 1, 2);\n guaranteed_thing = state.active.variables.guaranteed_thing;\n if (guaranteed_thing && (_ref = guaranteed_thing.id, __indexOf.call((function() {\n var _i, _len, _results;\n _results = [];\n for (_i = 0, _len = things.length; _i < _len; _i++) {\n t = things[_i];\n _results.push(t.id);\n }\n return _results;\n })(), _ref) < 0)) {\n things[0] = guaranteed_thing;\n state.active.variables.guaranteed_thing = null;\n }\n guaranteed_friend = state.active.variables.guaranteed_friend;\n if (guaranteed_friend && (_ref1 = guaranteed_friend.id, __indexOf.call((function() {\n var _i, _len, _results;\n _results = [];\n for (_i = 0, _len = friends.length; _i < _len; _i++) {\n f = friends[_i];\n _results.push(f.id);\n }\n return _results;\n })(), _ref1) < 0)) {\n friends[0] = guaranteed_friend;\n state.active.variables.guaranteed_friend = null;\n }\n actors = (function() {\n var _i, _len, _ref2, _results;\n _ref2 = things.concat(friends);\n _results = [];\n for (_i = 0, _len = _ref2.length; _i < _len; _i++) {\n a = _ref2[_i];\n _results.push(new actor_classes[a.actor_class]);\n }\n return _results;\n })();\n player = new actor_classes.Player();\n if (friends.length === 1 && Math.random() < .5 || friends.length === 0) {\n actors = actors.concat(player);\n }\n return spin_yarn(actors);\n };\n\n window.spin_yarn = function(all_actors) {\n var a, acted, actor, actors, havent_acted, i, joiners, others, output, s, sentence_enders, string, _i, _j, _ref, _ref1;\n acted = [];\n output = [];\n for (i = _i = 0, _ref = 2 + Math.random() * 2; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {\n actors = (function() {\n var _j, _len, _results;\n _results = [];\n for (_j = 0, _len = all_actors.length; _j < _len; _j++) {\n a = all_actors[_j];\n if (!a.dead) {\n _results.push(a);\n }\n }\n return _results;\n })();\n havent_acted = (function() {\n var _j, _len, _results;\n _results = [];\n for (_j = 0, _len = actors.length; _j < _len; _j++) {\n a = actors[_j];\n if (__indexOf.call(acted, a) < 0) {\n _results.push(a);\n }\n }\n return _results;\n })();\n if (havent_acted.length === 0) {\n actor = actors.random();\n } else {\n actor = havent_acted.random();\n acted.push(actor);\n }\n others = (function() {\n var _j, _len, _results;\n _results = [];\n for (_j = 0, _len = all_actors.length; _j < _len; _j++) {\n a = all_actors[_j];\n if (a !== actor) {\n _results.push(a);\n }\n }\n return _results;\n })();\n s = actor.act(others);\n output.push(s);\n }\n string = "";\n for (i = _j = 0, _ref1 = output.length; _j < _ref1; i = _j += 2) {\n if (output[i + 1] != null) {\n sentence_enders = ['.\sn', '!\sn', '...\sn'];\n joiners = [' because ', ' and so ', ', therefore ', ' even though ', ' and then ', ' when ', ' once ', ' just because ', ', and yet ', ' but ', ' but even still ', " and well, let's just say ", '. Spitefully, ', '. Strangely, ', '. Appropriately, ', '. Angrily, ', '. Passively, ', '. Jealously, ', '. Happily, ', '. Fortunately, ', '. Awkwardly, ', '. Coyly, ', ' whenever ', ' unless ', ' and hell, ', ' and just for fun ', ' and anyway '];\n if (Math.random() < (sentence_enders.length * 2 / (sentence_enders.length + joiners.length))) {\n string += capitalize(output[i]) + sentence_enders.random() + capitalize(output[i + 1]);\n } else {\n string += capitalize(output[i]) + joiners.random() + output[i + 1];\n }\n string += ".\sn";\n } else {\n string += capitalize(output[i]) + ".";\n }\n }\n return string.trim();\n };\n\n window.to_sentence = function(ary) {\n return ary.slice(0, -1).join(", ") + " and " + ary[ary.length - 1];\n };\n\n}).call(this);
window.init_friends = function() {\n window.friend_templates = [\n {\n id: 'sex',\n name: 'a gigolo',\n cost: 50,\n passage: 'SexDisplay',\n actor_class: 'Stripper',\n portrait: 'art/sexy_portrait.png'\n },\n {\n id: 'inspiring',\n name: 'a microblogger',\n cost: 75,\n passage: 'InspireDisplay',\n actor_class: 'Inspiring',\n portrait: 'art/inspiring_portrait.png'\n },\n {\n id: 'funny',\n name: 'a comedian',\n cost: 120,\n passage: 'FunnyDisplay',\n actor_class: 'Comedian',\n portrait: 'art/funny_portrait.png'\n },\n {\n id: 'sexier',\n name: 'a sexy dancer',\n cost: 500,\n passage: 'SexierDisplay',\n actor_class: 'Dancer',\n portrait: 'art/dancer_portrait.png'\n },\n {\n id: 'funnier',\n name: 'a clown',\n cost: 750,\n passage: 'FunnierDisplay',\n actor_class: 'Clown',\n portrait: 'art/clown_portrait.png'\n },\n {\n id: 'priest',\n name: 'a unitarian priest',\n cost: 800,\n passage: 'PriestDisplay',\n actor_class: 'Priest',\n portrait: 'art/priest_portrait.png'\n },\n {\n id: 'fascist',\n name: 'a fascist',\n cost: 1200,\n passage: 'FascistDisplay',\n actor_class: 'Fascist',\n portrait: 'art/fascist_portrait.png'\n },\n {\n id: 'enduring',\n name: 'your enduring friend',\n cost: 1800,\n passage: 'EnduringDisplay',\n actor_class: 'Enduring',\n portrait: 'art/enduring_portrait.png'\n }\n ]\n}\n\nwindow.friend_template_by_id = function(id) {\n for (var i = 0; i < window.friend_templates.length; i++) {\n if (window.friend_templates[i].id === id) {\n return window.friend_templates[i]\n }\n }\n}\n\nwindow.init_friend_by_id = function(id) {\n var template = friend_template_by_id(id)\n return create_friend(template.name, template.passage, template.cost, template.actor_class, template.portrait)\n}\n\nwindow.create_friend = function(name, display_passage, friend_cost, actor_class, portrait) {\n var friend = {\n name: name,\n display_passage: display_passage,\n id: Math.floor(Math.random() * 100000),\n cost: friend_cost,\n actor_class: actor_class,\n portrait: portrait\n }\n return friend\n}\n\nwindow.friend_by_id = function(id) {\n var friends = state.active.variables.friends\n for (var i = 0; i < friends.length; i++) {\n if (friends[i].id === id) {\n return friends[i]\n }\n }\n return null\n}\n\nwindow.remove_friend = function(friend) {\n var friends = state.active.variables.friends\n for (var i = 0; i < friends.length; i++) {\n if (friends[i].id === friend.id) {\n friends.splice(i, 1)\n return\n }\n }\n}
<h1>FRIEND STORE</h1>\s\nIf you spend your ''CLOUT'' you can invite friends to your house.\nWho do you want to invite?\n\n[[< Return home|Afternoon]]\n<table class="friend_table">\s\n<tr>\s\n <td colspan="3" style="text-align: center"><h2>You have <<print $rapport>> ''Clout''.</h2></td>\n</tr>\s\n<tr>\s\n <td><<Portrait art/sexy_portrait.png>></td>\s\n <td><<Portrait art/inspiring_portrait.png>></td>\s\n <td><<Portrait art/funny_portrait.png>></td>\s\n</tr>\n<tr>\n <td>\s\n [[A sexy gigolo|BuyFriend][$friend_template_id="sex"]]\n Cost: 50 Clout\n Stats: Sex +\n </td>\s\n <td>\s\n [[An upbeat microblogger|BuyFriend][$friend_template_id="inspiring"]]\n Cost: 75 Clout\n Stats: Hope +\n </td>\s\n <td>\s\n [[A funny comedian|BuyFriend][$friend_template_id="funny"]]\n Cost: 120 Clout\n Stats: Funny +\n </td>\s\n</tr>\n\n<tr>\n <td><<Portrait art/dancer_portrait.png>></td>\n <td><<Portrait art/clown_portrait.png>></td>\n <td><<Portrait art/priest_portrait.png>></td>\n</tr>\n<tr>\n <td>\s\n [[A sexy dancer|BuyFriend][$friend_template_id="sexier"]]\n Cost: 500 Clout\n Stats: Sex ++\n </td>\n <td>\s\n [[A funny clown|BuyFriend][$friend_template_id="funnier"]]\n Cost: 750 Clout\n Stats: Funny ++\n </td>\n <td>\s\n [[An inspiring priest|BuyFriend][$friend_template_id="priest"]]\n Cost: 800 Clout\n Stats: Hope ++\n </td>\n</tr>\n <td><<Portrait art/fascist_portrait.png>></td>\n <td><<Portrait art/enduring_portrait.png>></td>\n<tr>\n</tr>\n<tr>\n <td>\n [[A fascist|BuyFriend][$friend_template_id="fascist"]]\n Cost: 1200 Clout\n Stats: Violence ++++, Sex ++++\n </td>\n <td>\n [[A survivor of many atrocities|BuyFriend][$friend_template_id="enduring"]]\n Cost: 1800 Clout\n Stats: Hope: ++++\n </td>\n</tr>\s\n</table>\s\n\n[[< Return home|Afternoon]]
<h1>FRIEND STORE</h1>\s\n<<set $friend = friend_template_by_id($friend_template_id)>>\s\n<<if $rapport >= $friend.cost>>\s\n <<if $friends.length < 3>>\s\n <table class="friend_table">\n <tr> <td><<Portrait $friend.portrait>></td> </tr>\n <tr><td>You spend <<print $friend.cost>> ''clout'' to invite <<print $friend.name>> to your house.</td></tr>\n </table>\s\n <<run $friends.push(init_friend_by_id($friend_template_id))>>\s\n <<set $rapport -= $friend.cost>>\s\n <center>[[Continue|Evening]]</center>\n <<else>>\s\n Your house is too full of your friends! You'll have to kick one out.\n <<each $friends>>\s\n <<print "[[Evict "+$o.name+"|EvictFriend][$evicted_friend_id = "+$o.id+"]]">>\n <</each>>\s\n [[Nevermind|BuyFriends]]\n <<endif>>\s\n<<else>>\s\n <center>You don't have enough ''clout'' to invite <<print $friend.name>> to your house.</center>\s\n <center>[[Return|BuyFriends]]</center>\n<<endif>>
<<set $friend = friend_by_id($evicted_friend_id)>>\s\n<<run remove_friend($friend)>>\s\n<<set $recouped_cost = Math.floor($friend.cost * .5)>>\s\n\n<center><<notify>>You kick <<print $friend.name>> out. You get back <<print $recouped_cost>> of the ''clout'' you used on them in the first place.<</notify>></center>\n<<display BuyFriend>>
<h1>AFTERNOON</h1>\n<<ImagePlate art/beat_plate.png>>\n<<set $friend = friend_by_id($beat_friend_id)>>\s\n<<set $guaranteed_friend = $friend>>\s\nYou savagely beat <<print $friend.name>>. That was very cathartic. <<AddNeed "anger_need" 30>>\n<<print main_story()>>\n\n[[Continue|Evening]]
<h1>AFTERNOON</h1>\s\n<<ImagePlate art/kill_plate.png>>\n<<set $friend = friend_by_id($kill_friend_id)>>\s\n<<run remove_friend($friend)>>\s\n<<set $guaranteed_friend = null>>\s\nYou kill <<print $friend.name>>. All of your pent up range melts away. <<AddNeed "anger_need" 100>>\n<<print main_story()>>\n\n[[Continue|Evening]]
[[Fuck the gigolo?|FuckFriend]]
<h1>AFTERNOON</h1>\s\n<<ImagePlate art/sexy_plate.png>>\nYou fuck the gigolo. That sure hit the spot! <<AddNeed "sex_need" 30>>\n<<print main_story()>>\n\n[[Continue|Evening]]
[[Joke around with the comedian?|JokeFriend]]
<h1>AFTERNOON</h1>\s\n<<ImagePlate art/funny_plate.png>>\nYour friend says, "What's a dentists favorite time? Tooth hurty!" <<AddNeed "funny_need" 30>>\n<<print main_story()>>\n\n[[Continue|Evening]]
[[Hang out with the microblogger?|HangInspiring]]
<h1>AFTERNOON</h1>\s\n<<ImagePlate art/inspiring_plate.png>>\nYou hang out with the microblogger. He tells you to not be ashamed of who you are. <<AddNeed "hope_need" 30>>\n<<print main_story()>>\n\n<<run add_need("hope_need", 30)>>\s\n[[Continue|Evening]]
[[Fuck the sexy dancer?|FuckSexier]]
<h1>AFTERNOON</h1>\s\n<<ImagePlate art/dancer_plate.png>>\nYou do the nasty with the dancer. Real grade "A" fuckin'. Nice job! <<AddNeed "sex_need" 50>>\n<<print main_story()>>\n\n[[Continue|Evening]]
[[Hang out with the clown?|FunnierJoke]]
<h1>AFTERNOON</h1>\s\n<<ImagePlate art/clown_plate.png>>\nThe clown throws a pie into the air and it lands on his face. What a riot! <<AddNeed "funny_need" 50>>\n<<print main_story()>>\n\n[[Continue|Evening]]
[[Get life advice from the priest?|PriestTalk]]
<h1>AFTERNOON</h1>\s\n<<ImagePlate art/priest_plate.png>>\nYour priest friend tells you that God loves all his/her creations equally. <<AddNeed "hope_need" 50>>\n<<print main_story()>>\n\n[[Continue|Evening]]
[[Abuse the fascist?|FuckFascist]]
<h1>AFTERNOON</h1>\s\n<<ImagePlate art/fascist_plate.png>>\nYou grease up your friend's asshole and brutally fist him. You climax and he does not. <<AddNeed "sex_need" 100>> <<AddNeed "anger_need" 100>>\n<<print main_story()>>\n\n[[Continue|Evening]]
[[Learn from your enduring friend?|LearnEnduring]]
<h1>AFTERNOON</h1>\s\n<<ImagePlate art/enduring_plate.png>>\nYour inpsiring friend tells you depressing stories about her life. You share heaving sobs of empathy. <<AddNeed "hope_need" 100>>\n<<print main_story()>>\n\n[[Continue|Evening]]
macros.add('each', {\n version: [1, 0, 0],\n tags: null,\n handler: function() {\n var ary = eval(Wikifier.parse(this.args[0]))\n var iterator_key = 'i';\n if (this.args.length > 1) {\n iterator_key = this.args[1]\n }\n var object_key = 'o'\n if (this.args.length > 2) {\n object_key = this.args[2]\n }\n var old_o = state.active.variables[object_key]\n var old_i = state.active.variables[iterator_key]\n for (var i = 0, len = ary.length; i < len; i++) {\n state.active.variables.o = ary[i]\n state.active.variables.i = i\n new Wikifier(this.output, this.payload[0].contents)\n }\n state.active.variables[iterator_key] = old_i\n state.active.variables[object_key] = old_o\n }\n}, false)
macros.add('random', {\n tags: ['or'],\n handler: function() {\n new Wikifier(this.output, this.payload.random().contents)\n }\n})
//Dynamic display: eval the args then <<display>> that\nmacros.add('dyn_display', {\n handler: function() {\n var target = eval(this.args.full)\n new Wikifier(this.output, "<<display " + target + ">>")\n }\n})
window.atrophy_needs = function() {\n var vars = state.active.variables\n // Reduce two needs by 10 each turn\n var needs = ["funny_need", "sex_need", "hope_need", "anger_need"]\n var first_need = needs.random()\n needs.pop(needs.indexOf(first_need))\n var second_need = needs.random()\n\n vars[first_need] -= 10\n vars[second_need] -= 10\n\n vars.things_need -= 10\n\n vars.friends.forEach(function(friend) {\n if (friend.dead) {\n friend.rotting = true\n }\n })\n\n if (vars.pregnant === true) {\n vars.pregnant_counter += 1\n }\n}\n\nwindow.player_dead = function() {\n var vars = state.active.variables\n return vars.funny_need <= 0 || vars.hope_need <= 0 || vars.anger_need <= 0 || vars.things_need <= 0\n}\n\nwindow.add_need = function(need, value) {\n state.active.variables[need] += value\n if (state.active.variables[need] > 100) {\n state.active.variables[need] = 100\n }\n}\n\nwindow._window_cclick_contexts = []\nwindow._window_cclick_ids = 0\n\nmacros.add('closure-click', {\n tags: null,\n handler: function() {\n context = {\n id: _window_cclick_ids += 1,\n vars: state.active.variables\n }\n _window_cclick_contexts.push(context)\n container = "<<click " + this.args.raw + ">>"\n container += "<<set _window_cclick_stash = state.active.variables>>"\n container += "<<set state.active.variables = _window_cclick_contexts[" + context.id + "]>>"\n container += this.payload[0]\n container += "<</click>>"\n }\n})\n\n//Usage: <<stamp $var>> finds any instance of $var and replaces it with its evaluated version\nmacros.add('stamp', {\n tags: null,\n handler: function() {\n var text = this.payload[0].contents.replace(this.args.raw, function(str){eval(Wikifier.parse(str));console.log(Wikifier.parse(str))})\n console.log(text)\n new Wikifier(this.output, text)\n }\n})\n\nmacros.add('notify', {\n tags: null,\n handler: function() {\n var payload = "<div class='attention'>"\n payload += this.payload[0].contents\n payload += "</div>"\n new Wikifier(this.output, payload)\n }\n})\n\nmacros.add('ProTip', {\n tags: null,\n handler: function() {\n var payload = "<div class='protip'><table><tr><td><img src='art/lightbulb_icon.png'></td><td style='vertical-align: center'>"\n payload += this.payload[0].contents\n payload += "</td></tr></table></div>"\n new Wikifier(this.output, payload)\n }\n})\n\nmacros.add('first', {\n tags: ['then'],\n handler: function() {\n var vars = state.active.variables\n var iterator = vars[state.active.title + "_first_iterator"] || 0\n if (iterator > this.payload.length) {\n iterator = this.payload.length - 1\n }\n vars[state.active.title + "_first_iterator"] = iterator + 1\n new Wikifier(this.output, this.payload[iterator].contents)\n }\n})\n\nmacros.add('switch', {\n tags: ['when', 'else'],\n handler: function() {\n var iter = eval(this.args[0])\n var payload = null\n for (var i = 0; i < this.payload.length; i++) {\n if (this.payload[i].name == 'switch') continue;\n if (eval(this.payload[i].arguments) === iter || (payload == null && this.payload[i].name === 'else')) {\n payload = this.payload[i]\n }\n }\n new Wikifier(this.output, payload.contents)\n }\n})\n\nwindow.need_name = function(id) {\n return {\n 'things_need': 'Thing Need',\n 'sex_need': 'Sex Need',\n 'anger_need': 'Anger Need',\n 'hope_need': 'Hope Need',\n 'funny_need': 'Humor Need'\n }[id]\n}\n\nwindow.random_need = function() {\n return [\n "things_need",\n "anger_need",\n "sex_need",\n "hope_need",\n "funny_need"\n ].random()\n}\n\nmacros.add('display_need', {\n handler: function() {\n var value = state.active.variables[this.args[0]]\n var total_pips = 10\n var pips = value / (100 / total_pips)\n var output = "<span title='" + need_value_name(this.args[0], value) + "' class='green_pips'>"\n for (var i = 0; i < pips; i++) {\n output += "|"\n }\n output += "</span><span class='red_pips'>"\n for (var i = pips; i < total_pips; i++) {\n output += "|"\n }\n output += "</span>"\n new Wikifier(this.output, output)\n }\n})\n\nwindow.need_value_names = {\n 'hope_need': [\n 'Hopeless',\n 'Despondent',\n 'Sad',\n 'Fulfilled',\n 'Self Actualized'\n ],\n 'sex_need': [\n 'Slavering',\n 'Horny',\n 'Randy',\n 'Piqued',\n 'Slaked'\n ],\n 'funny_need': [\n 'Earnest',\n 'Serious',\n 'Funny',\n 'Silly',\n 'Goofy'\n ],\n 'anger_need': [\n 'Blind',\n 'Angry',\n 'Annoyed',\n 'Calm',\n 'Serene'\n ],\n 'things_need': [\n 'Thonged',\n 'Hibbic',\n 'Finched',\n 'Nodded',\n 'Gimbal'\n ]\n}\n\nwindow.need_value_name = function(need_id, value) {\n return window.need_value_names[need_id][Math.floor((value - 1) / 20)];\n}\n\nmacros.add('display_some_of', {\n tags: ['and_or'],\n handler: function() {\n //Prevent no passages from displaying\n var displayed = 0\n for (var i = 0; i < this.payload.length; i++) {\n if (Math.random() < .5) {\n new Wikifier(this.output, this.payload[i].contents)\n displayed += 1\n }\n }\n if (displayed === 0) {\n new Wikifier(this.output, this.payload.random().contents)\n }\n }\n})
<<widget AddRelationship>>\n<<set $args[0] to (typeof $args[0] === 'string' ? thing_by_id($args[0]) : $args[0])>>\s\n<<run add_relationship($args[0], $args[1])>>\s\nYour relationship level with <<print $args[0].name>> is now <<print get_relationship_name($args[0].relationship)>>.\s\n<</widget>>\n\n<<widget AddNeed>>\s\n<<run add_need($args[0], $args[1])>>\s\nYou gain <<print $args[1]>> <<print need_name($args[0])>>.\s\n<</widget>>\s\n\n<<widget ReduceNeed>>\s\n<<run add_need($args[0], -$args[1])>>\s\nYou lose <<print $args[1]>> <<print need_name($args[0])>>.\s\n<</widget>>\s\n\n<<widget AtrophyNeeds>>\s\n<<set $n = pick_some(["things_need", "anger_need", "funny_need", "sex_need", "hope_need"], 2, 2)>>\s\n<<ReduceNeed $n[0] 20>>\n<<ReduceNeed $n[1] 20>>\n<</widget>>
window.need_name
Human Need
<<nobr>>\n<<set $sex_need = 90>>\n<<set $anger_need = 90>>\n<<set $funny_need = 90>>\n<<set $hope_need = 90>>\n<<set $things_need = 90>>\n<<set $rapport = 0>>\n<<set $rapport_xp = 0>>\n<<set $friends = []>>\n<<set $things = []>>\n<<set $friendship_tier = 0>>\n<<set $friendship_xp = 0>>\n<<run init_things()>>\n<<run init_friends()>>\n<<set $pregnant_counter = 0>>\n\n<<set $day = 0>>\n\nIf set, this adventurer class will def. appear in the next adventure.\n<<set $guaranteed_friend = "">>\n<<set $guaranteed_thing = "">>\n\n<<run $friends.push(init_friend_by_id("inspiring"))>>\n<<run $friends.push(init_friend_by_id("funny"))>>\n<</nobr>>
<<run $friends.push(init_friend_by_id("sex"))>>\n\n<<set $splooged = true>>\n<<set $chair = thing_by_id("chair")>>\n<<set $chair.can_adventure_with = true>>\n<<AddRelationship chair 1>>\n<<set $pregnant = true>>\n<<set $chair_home = true>>\n<<run $friends.push(init_friend_by_id("sexier"))>>\n<<run $friends.push(init_friend_by_id("funnier"))>>\n<<run $friends.push(init_friend_by_id("priest"))>>\n<<run $friends.push(init_friend_by_id("fascist"))>>\n<<run $friends.push(init_friend_by_id("enduring"))>>
You just moved into a cute house in Gushing Meadows. Your house is filled with stuff and all of your friends are living with you!\n\nAs a ''human'', you have several ''needs'': Violence Need, Sex Need, Humor Need, Hope Need, and Thing Need. Keep them ''satisfied'' or face ''tragic consequences''.\n\nCan you keep yourself alive and find ''TRUE LOVE''?? Let's find out! It's time to [[chase that American dream!|Morning]]!
<div style="text-align: center">\s\n<div class="status-bar">\s\n<h3>Needs: </h3>Violence (<<display_need "anger_need">>) Sex (<<display_need "sex_need">>) Humor (<<display_need "funny_need">>) Hope (<<display_need "hope_need">>) Things (<<display_need "things_need">>)\n<h3>Clout: </h3><<print $rapport>>\n</div>\n</div>
<<if not player_dead()>>\s\n <h1>AFTERNOON</h1>\s\n <<if $sex_need <= 0>>\s\n <<notify>>\s\n You failed to keep your horniness in check! You jack off and leave a pig puddle of ejaculate on the floor. You name the puddle "Jacky".\n <<AddRelationship "sex" 1>>\n <<set $guaranteed_thing = thing_by_id("sex")>>\s\n <<set $sex_need = 80>>\s\n <</notify>>\n\n <<endif>>\s\n <<if $guaranteed_thing>>\s\n <<set $random_thing = $guaranteed_thing>>\s\n <<else>>\s\n <<set var ft = $things.filter(function(x){return x.can_adventure_with}); $random_thing = ft[$day % ft.length]>>\s\n <<endif>>\s\n <<display StatusBar>>\s\n You return home weary after a long day of partying. What would you like to do?\n You have <<print to_sentence($friends.map(function(x){return x.name}))>>. <<print capitalize($random_thing.name)>> is also here.\n <<if $anger_need < 60>>\s\n\n <<notify>>\s\n You are very angry...\n <<if $friends.length > 0>>\s\n <ul>\s\n <<each $friends>>\s\n <<if $anger_need > 25>>\s\n <li><<print "[[Beat " + $o.name + "|BeatFriend][$beat_friend_id="+$o.id+"]]">></li>\s\n <<else>>\s\n <li><<print "[[Kill " + $o.name + "|KillFriend][$kill_friend_id="+$o.id+"]]">></li>\s\n <</if>>\s\n <</each>>\s\n </ul>\s\n <<else>>\s\n .. but you don't have anyone to take this aggresion out on!\n <<endif>>\s\n <</notify>>\n <</if>>\s\n <div class="actions">\n <<each $friends>>\s\n <div class="action_pane">\s\n <<Portrait $o.portrait>>\n <<dyn_display $o.display_passage>>\n </div>\s\n <</each>>\s\n <div class="action_pane">\s\n <<Portrait $random_thing.portrait>>\n <<set $acted_thing = $random_thing>>\s\n <<print "[[" + $random_thing.action_prompt + "|ThingInteraction]]">>\n </div>\n <<each [1,2,3].slice($friends.length)>>\s\n <div class="action_pane">[[Room For One More...|BuyFriends]]</div>\n <</each>>\n </div>\n <div style="text-align: center; width: 100%"><h1>[[Buy friends?|BuyFriends]]</h1></div>\n<<else>>\n <<display Dead>>\n<<endif>>
<h1>MORNING</h1>\s\n<<ImagePlate art/party_plate.png>>\s\n<<set $rapport_gained = 100 * ($rapport_xp + 1)>>\s\n<<set $rapport += $rapport_gained>>\s\nYou wake up, go through your morning routine, and go party. You party for 8 hours. \s\n<<random>>\s\n You meet a lot of people!\n <<or>>\s\n You tell everyone a great story and they all like it.\n <<or>>\s\n You tell everyone about your amazing friends!\n <<or>>\s\n You hear a really neat story about a cat.\n <<or>>\s\n You attend someone's wedding. Good for them!\n <<or>>\s\n You eat way too much cake! Ha ha\n<</random>>\s\n\nYou gain <<print $rapport_gained>> ''Clout''.\n<<if $day % 2 == 1 and $rapport_xp < 6>>\n <<notify>>\s\n You move up in your social circle! You are now \s\n <<switch $rapport_xp>>\s\n <<when 0>>\s\n "Noticed"!\n <<when 1>>\s\n "Tolerated"!\n <<when 1>>\s\n "Accepted"!\n <<when 2>>\s\n "Liked"!\n <<when 3>>\s\n "Respected"!\n <<when 4>>\s\n "Welcomed"!\n <<when 5>>\s\n "Admired"!\n <<when 6>>\s\n "Loved"!\n <</switch>>\s\n You will now earn more ''clout'' when partying!\n <</notify>>\n\n <<set $rapport_xp += 1>>\s\n<<endif>>\s\n<<AtrophyNeeds>>\n[[Return home|Afternoon]]
<<ImagePlate art/death_plate.png>>\n<<if $anger_need <= 0>>\s\n <center>You failed to keep your ''anger need'' sated! You die of an aneurism.</center>\n<<elseif $hope_need <= 0>>\s\n <center>You failed to keep your ''hope need'' sated. You no longer have the will to live. You just die.</center>\n<<elseif $funny_need <= 0>>\s\n <center>You failed to keep your ''humor need'' sated. Your mind collapses into a zero dimensional point. You live out the rest of your days as a humorless automaton.</center>\n<<elseif $things_need <= 0>>\s\n <center>You failed to keep your ''thing need'' sated so... yadda yadda yadda... you're done, kid.</center>\n<<endif>>\s\n<center>Game Over.</center>
<<set $corpse_owner = friend_by_id($corpse_id)>>\s\nYou throw <<print $corpse_owner.name>>'s corpse into the trash.\n\n<<run remove_friend($corpse_owner)>>\s\n[[Continue|Main]]
<<widget ImagePlate>>\s\n<div class="image_plate">\s\n<<print "[img["+$args[0]+"]]">>\s\n</div>\s\n<</widget>>\n\n<<widget Portrait>>\s\n<div class="portrait">\s\n<<print "[img["+$args[0]+"]]">>\s\n</div>\s\n<</widget>>
<div class="yarn">\s\n<<print main_story()>>\n\n<<set $_gained_thing_need = Math.floor(Math.random() * 30)>>\s\n<<AddNeed "things_need" $_gained_thing_need>>\n</div>\s
<<ImagePlate art/finale_plate.png>>\n<h1 style='text-align: center'>THE END</h1>
<h1>MORNING</h1>\n<<ImagePlate art/morning_plate.png>>\n<<set $day = $day + 1>>\s\n<h1><<print "[[" + ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"][$day % 7] + "|Morning]]">></h1>
/*Current color palette: http://www.colourlovers.com/palette/1722286/400_unique_artists_♥ */\n\ndiv.attention {\n border: 3px solid yellow; \n background: lightyellow;\n color: black;\n padding: 10px;\n display: inline-block;\n\n min-width: 0;\n max-width: minimum;\n}\n\nspan.green_pips {\n color: green\n}\n\nspan.red_pips {\n color: red\n}\n\nbody {\n background-color: #A8E6CE;\n font-family: sans-serif;\n}\n\n.passage {\n border-radius: 10px;\n background-color: #FFD3B5;\n padding: 10px;\n color: black;\n width: 100%;\n\n font-size: medium;\n}\n\ndiv.status-bar {\n background-color: #DCEDC2;\n padding: 10px;\n border-radius: 10px;\n\n width: fit-content;\n display: inline-block;\n padding: 20px;\n border: 3px solid #CADBB0;\n\n margin: 0 auto;\n align: center;\n text-align: center;\n}\n\n.status-bar h3 {\n padding: 0px;\n border: 0px;\n margin-top: 0px;\n margin-bottom: 0px;\n display: inline;\n}\n\ndiv.image_plate > img {\n display: block;\n margin: 0 auto;\n border-radius: 10px;\n background: #C8E7EA;\n border: 10px #C8E7EA solid;\n}\n\ndiv.portrait {\n display: inline-block;\n}\n\ndiv.portrait > img {\n float: left;\n}\n\ndiv.yarn {\n background: lightblue;\n padding: 10px;\n border-radius: 10px\n}\n\ntable.friend_purchase {\n text-align: center;\n}\n\ndiv.protip {\n border: 1px solid white;\n padding: 5px;\n margin: 5px;\n}\n\ndiv.protip table {\n margin: 0px;\n}\n\nh1 {\n text-align: center;\n}\n\ntable.friend_table {\n width: 100%;\n text-align: center;\n}\n\ntable.friend_table td {\n width: 33%;\n}\n\ndiv.actions {\n display: table;\n width: 100%;\n}\n\ndiv.action_pane {\n display: table-row;\n overflow: auto;\n float: left;\n width: 25%;\n text-align: center;\n}\n\ndiv.action_pane img {\n display: inline-block;\n}
window.init_things = function() {\n state.active.variables.things = [\n {\n id: "lamp",\n relationship: 1,\n max_relationship: 6,\n name: "the 'Timothy' Table Lamp",\n actor_class: "Lamp",\n portrait: "art/lamp_portrait.png",\n can_adventure_with: true,\n action_prompt: "Bask in the lamp's light?",\n action_text: "Timothy shines light on you.",\n action_plate: "art/lamp_plate.png"\n },\n {\n id: 'tv',\n relationship: 0,\n max_relationship: 6,\n name: "the 'Akira' Television",\n actor_class: "Television",\n portrait: "art/tv_portrait.png",\n can_adventure_with: false,\n dead: false,\n hp: 5,\n display_passage: 'TVDisplay',\n action_prompt: "Watch TV?",\n action_text: "Akira shows you a nature documentary.",\n action_plate: "art/tv_plate.png"\n },\n {\n id: 'sex',\n relationship: 0,\n max_relationship: 6,\n name: "'Jacky', the puddle of ejaculate",\n actor_class: "Jissom",\n portrait: "art/jissom_portrait.png",\n can_adventure_with: false,\n action_prompt: "Play with the puddle of ejaculate?",\n action_text: "Jacky smears on your clothes.",\n action_plate: "art/sex_plate.png"\n },\n {\n id: 'chair',\n relationship: 0,\n name: "the 'Christopher Knight' bonded leather chair",\n actor_class: "Chair",\n portrait: "art/chair_portrait.png",\n can_adventure_with: false,\n action_prompt: "Sit on the chair?",\n action_text: "Christopher Knight seats you.",\n action_plate: "art/chair_home_plate.png"\n },\n {\n id: 'toilet',\n relationship: 1,\n max_relationship: 6,\n name: "the 'Tucker' toilet",\n actor_class: "Toilet",\n portrait: "art/toilet_portrait.png",\n can_adventure_with: true,\n action_prompt: "Use the toilet?",\n action_text: "Tucker accepts your waste.",\n action_plate: "art/toilet_plate.png"\n },\n {\n id: 'wallpaper',\n relationship: 1,\n max_relationship: 6,\n name: "the unnamed wallpaper",\n actor_class: "Wallpaper",\n portrait: "art/wallpaper_portrait.png",\n can_adventure_with: true,\n action_prompt: "Examine the wallpaper?",\n action_text: "The wallpaper offers you a glimpse into the house's past.",\n action_plate: "art/wallpaper_plate.png"\n },\n {\n id: 'blender',\n relationship: 1,\n max_relationship: 6,\n name: 'the "Jennifer Lee" blender',\n actor_class: "Blender",\n portrait: "art/blender_portrait.png",\n can_adventure_with: true,\n action_prompt: "Blend some stuff?",\n action_text: 'The "Jennifer Lee" Blender helps you make a margarita.',\n action_plate: "art/blender_plate.png"\n },\n {\n id: 'refrigerator',\n relationship: 0,\n max_relationship: 6,\n name: 'the "Bianca" refrigerator',\n actor_class: "Fridge",\n portrait: "art/refrigerator_portrait.png",\n can_adventure_with: false,\n action_prompt: "Eat food?",\n action_text: 'You take an apple from the "Bianca" refrigerator and eat it.',\n action_plate: "art/refrigerator_plate.png"\n },\n {\n id: 'shower',\n relationship: 0,\n max_relationship: 6,\n name: 'the "Serena" standing shower',\n actor_class: "Shower",\n portrait: "art/shower_portrait.png",\n can_adventure_with: false,\n action_prompt: "Take a shower?",\n action_text: 'You take a shower in the "Serena" standing shower.',\n action_plate: "art/shower_plate.png"\n }\n ]\n}\n\nwindow.thing_by_id = function(id) {\n var things = state.active.variables.things\n for (var i = 0; i < things.length; i++) {\n if (things[i].id === id) {\n return things[i]\n }\n }\n return null\n}\n\nwindow.relationship_names = [\n 'Strangers',\n 'Just Met!',\n 'Acquantances',\n 'Chums',\n 'Friends',\n 'Pals',\n 'Buddies',\n 'Lovers',\n 'Married',\n 'Soul Mate'\n]\n\nwindow.antagonism_names = [\n 'Offputting',\n 'Rude',\n 'Enemy',\n 'Rival',\n 'Nemesis'\n]\nwindow.MAX_RELATIONSHIP = window.relationship_names.length\n\nwindow.add_relationship = function(thing, amount) {\n var relationship = thing.relationship\n relationship += amount\n if (relationship >= (thing.max_relationship || window.MAX_RELATIONSHIP)) {\n relationship = thing.max_relationship\n }\n\n if (relationship >= window.MAX_RELATIONSHIP) {\n relationship = window.MAX_RELATIONSHIP\n }\n thing.relationship = relationship\n\n if (thing.id !== 'chair' && thing.relationship > 0) {\n thing.can_adventure_with = true\n }\n}\n\nwindow.get_relationship_name = function(value) {\n if (value >= 0) {\n return relationship_names[value]\n } else {\n return antagonism_names[-value]\n }\n}\n\nwindow.knows_thing = function(thing_id) {\n return thing_by_id(thing_id).relationship > 0 && !thing_by_id(thing_id).dead\n}
<h1>EVENING</h1>\s\n<<set $chair = thing_by_id("chair")>>\s\n<<first>>\s\n <<ImagePlate art/chair_mall_plate.png>>\n You take a trip to the mall. It's your first time in a new mall. You have butterflies. The air is buzzing with the activity of televisions, illuminated signs, and loudspeakers. All around you shiny products are luring in potential customers. You spend some time becoming acquainted with the different shops. Today you are just getting an overview- there's too much spendor to take in.\n\n You don't quite get a chance to visit the furnature store before it closes. You look through the window and get a glimpse of a beautiful leather chair in the far corner of the store. You bob and wiggle to try to get a better view of it but the shopkeepr slams \s\n a metal barrier in your face. You'll have to come back tomorrow.\n\n [[Continue|NextDay]]\n<<then>>\s\n <<ImagePlate art/chair_mall_plate.png>>\n You return to check on the chair.\n\n Your eyes instinctively dart away, afraid of your habit of staring. The glance leaves an incomplete form in your imagination: a shiny brown shape, impossible welcoming curves, plush but firm cusions. \s\n You approach carefully, pretending to examine a hideous green courduroy recliner. You audibly scoff and curse while fumbling with the recliner lever, then transfer to the chair. \s\n You circle the chair exactly once, slowly. You don't want to seem timid or unsure. \s\n You run your index finger along the ridge of the chair's back and your finger neither sticks nor chafes. You gently prod the armrest. Adrenaline shoots through your body when you start to sit in it. You decide there's no reason to rush.\n <<AddRelationship $chair 1>>\n\n [[Continue|NextDay]]\n<<then>>\s\n <<ImagePlate art/chair_mall_plate.png>>\n You cordially approach the chair and sit down in it with your back straight. You bounce up and down a bit to test its give. You aren't sure what to do with your hands so you set them on the armrests. \s\n You suddenly feel very self conscious. You are worried that you have made a mistake and this might not be the chair for you. \s\n Another customer walks up, nods and smiles at the chair. You walk away. You are sure this other customer is going to buy the chair and live a happy life with it.\n\n You feel despondent.\n <<AddNeed "things_need" -10>>\n <<AddNeed "hope_need" -10>>\n <<AddRelationship $chair 1>>\n\n [[Continue|NextDay]]\n<<then>>\s\n <<ImagePlate art/chair_mall_plate.png>>\n The chair is still here! The other customer did not buy it. You decide to not waste any more time and welcome the chair into your home.\n\n After some initial awkardness finding the right spot in your living room the chair fits right in. <<if $friends.length > 0>>You let the chair seat <<print $friends.random().name>> and they gleefully accept.<<endif>>\n\n You feel that a new chapter in your life is opening up.\n <<AddNeed "hope_need" 10>>\n <<set $chair_home = true>>\s\n <<set $chair.can_adventure_with = true>>\s\n <<set $guaranteed_thing = thing_by_id("chair")>>\s\n <<AddRelationship $chair 1>>\n\n [[Continue|NextDay]]\n<<then>>\s\n <<ImagePlate art/chair_home_plate.png>>\n You watch a romantic movie while sitting in the chair. Midway through you gently set your hand on the armrest and an excited chill runs \s\n up your spine. You cry a little bit at the big finale and try not to get any tears on the chair.\n <<AddRelationship chair 1>>\n\n [[Continue|NextDay]]\n<<then>>\s\n <<ImagePlate art/chair_home_plate.png>>\n You sit down to eat a nice homecooked meal with the Christopher Knight leather chair. You drop a vinegary leaf of caprese basil into the chair's cushion crack. The Christopher Knight chair seems to appreciate it. \n <<AddRelationship chair 1>>\n\n [[Continue|NextDay]]\n<<then>>\s\n <<ImagePlate art/chair_home_plate.png>>\n Needing an alibi, you bring a book to read in the chair. You get very little reading done. You stroke the sides of the chair gently and frequently readjust yourself so you can feel the leather on your back.\s\n You wake up a bit later embarrased that you dozed off. You awkwardly continue your day.\n <<AddRelationship chair 1>>\n\n [[Continue|NextDay]]\n<<then>>\s\n <<ImagePlate art/chair_lounge_plate.png>>\n You sit in the chair with no pretense. You are here to lounge. Christopher sighs contentedly as you sit down. You kick off your shoes and stretch out your toes. \s\n You bend. You sigh. You wiggle and wriggle. You sit sideways across the armrests. You doze off for a little bit and then get back at it. \s\n You sit upside down and wrap your legs around the back of the chair like a spider. You do some crazy stuff with the seat cusion.\n\n The network of tendons inside of your body becomes ecstaticly tense and then suddenly slack. You drift off into a deep sleep, fetally curled and wrapped by Chritopher's manly pape.\n\n You are pregnant.\n <<set $pregnant = true>>\s\n <<AddRelationship chair 1>>\n\n [[Continue|NextDay]]\n<<then>>\s\n <<ImagePlate art/chair_lounge_plate.png>>\n You find a diamond ring nestled in Christopher's cushions. You accept. You have a small and tender ceremony. You vow never to scuff his leather and to love him \s\n even when he's sun damaged and his stitching falls apart. Then you rush back for your honeymoon. You lounge several times with the pent up ferver built up over your relationship.\n <<AddRelationship chair 1>>\n\n [[Continue|NextDay]]\n<<then>>\s\n <<ImagePlate art/chair_lounge_plate.png>>\n You feel your cuboid child growing inside of you. You enjoy a peaceful silence with the 'Christopher Knight' leather chair and then drift off to sleep.\n <<AddRelationship chair 1>>\n\n [[Continue|NextDay]]\n<<then>>\s\n <<ImagePlate art/birth_plate.png>>\n Today's the day! You give birth to a beautiful ottoman. Christopher stays by your side and supports you throughout the ordeal. You and Christopher name it Otto. You live happily ever after.\n\n [[Continue|End]]\n<</first>>\s
<h1>EVENING</h1>\s\n<<ImagePlate art/tv_portrait.png>>\nIn the corner of the room there's a glowing box with a man trapped inside. Now it's a woman. Now it's a pair of jeans? A label on the box says 'Akira'. He confuses you but he seems lively.\n<<set $guaranteed_thing = thing_by_id('tv')>>\s\n<<AddRelationship tv 1>>\n\n[[Continue|NextDay]]
<<ImagePlate art/tv_burial_plate.png>>\nYou hit the buttons on the tv and twist his knobs. It doesn't respond. You hit it and shake it and yell at it to wake up but it doesn't. This can't be happening. It's so sudden. Everything seems very unreal.\n\nYou fit the TV into a cardboard box, snug with custom shaped styrofoam and all its accessories in little plastic bags. You prepare it for the Great Free 2-Day Delivery With a Free Trial of Amazon Prime to the afterlife. \s\nYou gently lower it into the ground. You and all the TV's viewers say a few words about what the TV meant to you. It was an old TV but you hoped to have many more years of entertainment out of it. In the end you're not \s\nGod and neither are the TV repair men who kept the TV alive all these years. You all did your best and you gave the TV a good life. It's time to let go. You cry. Everyone cries.\n\n<<set thing_by_id("tv").can_adventure_with = false>>\s\n<<set thing_by_id("tv").dead = true>>\s\n<<set $tv_buried = true>>\s\n<<AddNeed "hope_need" 30>>\n[[Continue|NextDay]]
<h1>EVENING</h1>\s\n<<ImagePlate art/refrigerator_portrait.png>>\nYou dash off to the store to see if anyone can help you store this smoothie. A tall and expansive savior comes to your rescue. You buy the "Bianca" refrigerator and invite her to come live with you.\n<<AddRelationship refrigerator 1>>\n<<set $guaranteed_thing = thing_by_id("refrigerator")>>\s\n\n[[Continue|NextDay]]
<<ImagePlate art/tupperware_plate.png>>\nYou decide to throw a tupperware party to fill your refrigerator. Everyone can make it! Hooray! You hustle and bustle to prepare the house and make the food.\n\nYou house fills with tupperware containers and their escorts. You fill your friends with the food you've cooked. Chicken goes in the teacher (the big one). \s\nYou split the salad between the lawyer and his secretary and squeeze the little left over into your mother along with the mashed potatoes. \s\nYou put your friends into the refrigerator and mail the tupperware back.\n\n<<set $tupperware_partied = true>>\s\n<<set $f = thing_by_id("refrigerator")>>\s\n<<set $f.action_text = "You tickle your mother in the stomach and she regurgitates some mashed potatoes into your mouth.">>\s\n<<set $f.action_plate = "art/refrigerator_plate_2.png">>\s\n<<AddNeed "things_need" 10>>\n\n[[Continue|NextDay]]
<h1>EVENING</h1>\s\n<<ImagePlate art/shower_portrait.png>>\nThere's a damp closet here. A plastic curtain covers its sanitary pudenda. You can feel the weight of your curiosity in the top of your chest and the tips of your fingers. \s\nYou peel back a lip of the curtain and peek inside. You can see everything. The bottom of your stomach feels cold. A drop of water falls from the faucet and splashes you in the face.\n<<AddRelationship shower 1>>\n\n<<set $guaranteed_thing = thing_by_id("shower")>>\s\n[[Continue|NextDay]]
<h1>AFTERNOON</h1>\s\n<<set $guaranteed_thing = $acted_thing>>\s\n<<if $acted_thing.action_plate != null>>\s\n <<ImagePlate $acted_thing.action_plate>>\s\n<<else>>\s\n <<ImagePlate $acted_thing.portrait>>\s\n<<endif>>\n<<print $acted_thing.action_text>> <<AddNeed "things_need" 30>>\n<<print main_story()>>\n<<set $added_relationship = Math.floor(Math.random() * 3)>>\s\n<<AddRelationship $acted_thing $added_relationship>>\n<<set $guaranteed_thing = null>>\s\n\n[[Continue|Evening]]