| @@ -1,350 +1,379 @@ | |||||
| stories.push({ | |||||
| "id": "unaware-geta", | |||||
| "name": "Geta's Breakfast", | |||||
| "tags": [ | |||||
| "Player Prey", | |||||
| "Digestion", | |||||
| "Macro/Micro" | |||||
| ], | |||||
| "intro": { | |||||
| "start": "pepper-grinder", | |||||
| "setup": state => { | |||||
| }, | |||||
| "intro": state => { | |||||
| print(["Game started"]); | |||||
| (() => { | |||||
| function checkSuspicion(state, add=0) { | |||||
| state.player.stats.suspicion.value += add; | |||||
| if (state.player.stats.suspicion.value >= 100) { | |||||
| print(["Geta spots you!", "You're snatched up and tossed into the fox's bowl of cereal."]); | |||||
| goToRoom("in-bowl", state); | |||||
| return false; | |||||
| } | } | ||||
| }, | |||||
| "sounds": [ | |||||
| ], | |||||
| "preload": [ | |||||
| ], | |||||
| "world": { | |||||
| "pepper-grinder": { | |||||
| "id": "pepper-grinder", | |||||
| "name": "Pepper Grinder", | |||||
| "desc": "You're hiding behind a pepper grinder", | |||||
| "move": (room, state) => { | |||||
| print(["You dart over to the pepper grinder, which looms over you like a greatwood."]); | |||||
| }, | |||||
| "enter": (room, state) => { | |||||
| return true; | |||||
| } | |||||
| stories.push({ | |||||
| "id": "unaware-geta", | |||||
| "name": "Geta's Breakfast", | |||||
| "tags": [ | |||||
| "Player Prey", | |||||
| "Digestion", | |||||
| "Macro/Micro" | |||||
| ], | |||||
| "intro": { | |||||
| "start": "pepper-grinder", | |||||
| "setup": state => { | |||||
| state.player.stats.suspicion = {name: "Suspicion", type: "meter", value: 0, min: 0, max: 100, color: "rgb(100,100,100)"}; | |||||
| }, | }, | ||||
| "exit": (room, state) => { | |||||
| "intro": state => { | |||||
| print(["Game started"]); | |||||
| } | |||||
| }, | |||||
| "sounds": [ | |||||
| ], | |||||
| "preload": [ | |||||
| ], | |||||
| "world": { | |||||
| "pepper-grinder": { | |||||
| "id": "pepper-grinder", | |||||
| "name": "Pepper Grinder", | |||||
| "desc": "You're hiding behind a pepper grinder", | |||||
| "move": (room, state) => { | |||||
| print(["You dart over to the pepper grinder, which looms over you like a greatwood."]); | |||||
| }, | |||||
| "enter": (room, state) => { | |||||
| }, | |||||
| "exit": (room, state) => { | |||||
| }, | |||||
| "actions": [ | |||||
| { | |||||
| name: "Tap", | |||||
| desc: "Bang on the pepper shaker", | |||||
| execute: (room, state) => { | |||||
| print(["You thump the pepper shaker, making a dull thud."]); | |||||
| checkSuspicion(state, 25); | |||||
| }, | |||||
| show: [ | |||||
| ], | |||||
| conditions: [ | |||||
| ] | |||||
| }, | |||||
| ], | |||||
| "exits": { | |||||
| "up": { | |||||
| "target": "bowl", | |||||
| "desc": "Walk up to the cereal bowl", | |||||
| "show": [ | |||||
| ], | |||||
| "conditions": [ | |||||
| ], | |||||
| "hooks": [ | |||||
| (room, exit, state) => { | |||||
| return checkSuspicion(state, 10); | |||||
| } | |||||
| ] | |||||
| }, | |||||
| }, | |||||
| "hooks": [ | |||||
| ], | |||||
| "data": { | |||||
| "stats": { | |||||
| } | |||||
| } | |||||
| }, | }, | ||||
| "actions": [ | |||||
| ], | |||||
| "exits": { | |||||
| "up": { | |||||
| "target": "bowl", | |||||
| "desc": "Walk up to the cereal bowl", | |||||
| "bowl": { | |||||
| "id": "bowl", | |||||
| "name": "Behind the Bowl", | |||||
| "desc": "You're crouched behind Geta's bowl of cereal", | |||||
| "move": (room, state) => { | |||||
| print(["You scurry up to the looming bowl, staying low and out of Geta's sight."]); | |||||
| }, | |||||
| "enter": (room, state) => { | |||||
| }, | |||||
| "exit": (room, state) => { | |||||
| }, | |||||
| "actions": [ | |||||
| ], | |||||
| "exits": { | |||||
| "ascend": { | |||||
| "target": "in-bowl", | |||||
| "desc": "Climb into Geta's cereal", | |||||
| "show": [ | "show": [ | ||||
| ], | ], | ||||
| "conditions": [ | "conditions": [ | ||||
| ], | ], | ||||
| "hooks": [ | "hooks": [ | ||||
| ] | ] | ||||
| }, | |||||
| }, | |||||
| "hooks": [ | |||||
| ], | |||||
| "data": { | |||||
| "stats": { | |||||
| } | |||||
| } | |||||
| }, | |||||
| "bowl": { | |||||
| "id": "bowl", | |||||
| "name": "Behind the Bowl", | |||||
| "desc": "You're crouched behind Geta's bowl of cereal", | |||||
| "move": (room, state) => { | |||||
| print(["You scurry up to the looming bowl, staying low and out of Geta's sight."]); | |||||
| }, | |||||
| "enter": (room, state) => { | |||||
| }, | |||||
| "exit": (room, state) => { | |||||
| }, | |||||
| "actions": [ | |||||
| ], | |||||
| "exits": { | |||||
| "ascend": { | |||||
| "target": "in-bowl", | |||||
| "desc": "Climb into Geta's cereal", | |||||
| "show": [ | |||||
| ], | |||||
| "conditions": [ | |||||
| ], | |||||
| "hooks": [ | |||||
| }, | |||||
| "down": { | |||||
| "target": "pepper-grinder", | |||||
| "desc": "Run back behind the pepper grinder", | |||||
| "show": [ | |||||
| ], | |||||
| "conditions": [ | |||||
| ] | |||||
| ], | |||||
| "hooks": [ | |||||
| ] | |||||
| }, | |||||
| }, | }, | ||||
| "down": { | |||||
| "target": "pepper-grinder", | |||||
| "desc": "Run back behind the pepper grinder", | |||||
| "show": [ | |||||
| "hooks": [ | |||||
| ], | |||||
| "data": { | |||||
| "stats": { | |||||
| } | |||||
| } | |||||
| }, | |||||
| "in-bowl": { | |||||
| "id": "in-bowl", | |||||
| "name": "Bowl", | |||||
| "desc": "You're in the cereal bowl...", | |||||
| "move": (room, state) => { | |||||
| print(["Why did you do that?"]); | |||||
| }, | |||||
| "enter": (room, state) => { | |||||
| startTimer({ | |||||
| id: "geta-eat", | |||||
| func: state => { | |||||
| if (Math.random() < 0.6) { | |||||
| print(["Geta scoops up a spoonful of cereal; you narrowly avoid being caught."]); | |||||
| return true; | |||||
| } else { | |||||
| print(["Geta scoops you up and slurps you into his maw."]); | |||||
| goToRoom("maw", state); | |||||
| return false; | |||||
| } | |||||
| }, | |||||
| delay: 3000, | |||||
| loop: true, | |||||
| classes: [ | |||||
| ] | |||||
| }, state); | |||||
| }, | |||||
| "exit": (room, state) => { | |||||
| }, | |||||
| "actions": [ | |||||
| ], | ], | ||||
| "conditions": [ | |||||
| ], | |||||
| "exits": { | |||||
| }, | |||||
| "hooks": [ | "hooks": [ | ||||
| ] | |||||
| }, | |||||
| }, | |||||
| "hooks": [ | |||||
| ], | |||||
| "data": { | |||||
| "stats": { | |||||
| } | |||||
| } | |||||
| }, | |||||
| "in-bowl": { | |||||
| "id": "in-bowl", | |||||
| "name": "Bowl", | |||||
| "desc": "You're in the cereal bowl...", | |||||
| "move": (room, state) => { | |||||
| print(["Why did you do that?"]); | |||||
| ], | |||||
| "data": { | |||||
| "stats": { | |||||
| } | |||||
| } | |||||
| }, | }, | ||||
| "enter": (room, state) => { | |||||
| startTimer({ | |||||
| id: "geta-eat", | |||||
| func: state => { | |||||
| if (Math.random() < 0.6) { | |||||
| print(["Geta scoops up a spoonful of cereal; you narrowly avoid being caught."]); | |||||
| "maw": { | |||||
| "id": "maw", | |||||
| "name": "Geta's Maw", | |||||
| "desc": "You've been slurped up into the fox's jaws", | |||||
| "move": (room, state) => { | |||||
| }, | |||||
| "enter": (room, state) => { | |||||
| startTimer({ | |||||
| id: "swallow", | |||||
| func: state => { | |||||
| print(["It's too late to escape. You're swallowed down."]); | |||||
| goToRoom("throat", state); | |||||
| return true; | return true; | ||||
| } else { | |||||
| print(["Geta scoops you up and slurps you into his maw."]); | |||||
| goToRoom("maw", state); | |||||
| return false; | |||||
| } | |||||
| }, | |||||
| delay: 3000, | |||||
| loop: true, | |||||
| classes: [ | |||||
| ] | |||||
| }, state); | |||||
| }, | |||||
| "exit": (room, state) => { | |||||
| }, | |||||
| "actions": [ | |||||
| ], | |||||
| "exits": { | |||||
| }, | |||||
| "hooks": [ | |||||
| ], | |||||
| "data": { | |||||
| "stats": { | |||||
| }, | |||||
| delay: 5000, | |||||
| loop: false, | |||||
| classes: [ | |||||
| ] | |||||
| }, state); | |||||
| }, | |||||
| "exit": (room, state) => { | |||||
| }, | |||||
| "actions": [ | |||||
| ], | |||||
| "exits": { | |||||
| }, | |||||
| "hooks": [ | |||||
| ], | |||||
| "data": { | |||||
| "stats": { | |||||
| } | |||||
| } | } | ||||
| } | |||||
| }, | |||||
| "maw": { | |||||
| "id": "maw", | |||||
| "name": "Geta's Maw", | |||||
| "desc": "You've been slurped up into the fox's jaws", | |||||
| "move": (room, state) => { | |||||
| }, | }, | ||||
| "enter": (room, state) => { | |||||
| startTimer({ | |||||
| id: "swallow", | |||||
| func: state => { | |||||
| print(["It's too late to escape. You're swallowed down."]); | |||||
| goToRoom("throat", state); | |||||
| return true; | |||||
| }, | |||||
| delay: 5000, | |||||
| loop: false, | |||||
| classes: [ | |||||
| ] | |||||
| }, state); | |||||
| }, | |||||
| "exit": (room, state) => { | |||||
| }, | |||||
| "actions": [ | |||||
| ], | |||||
| "exits": { | |||||
| }, | |||||
| "hooks": [ | |||||
| ], | |||||
| "data": { | |||||
| "stats": { | |||||
| "throat": { | |||||
| "id": "throat", | |||||
| "name": "Geta's Gullet", | |||||
| "desc": "GULP!", | |||||
| "move": (room, state) => { | |||||
| }, | |||||
| "enter": (room, state) => { | |||||
| startTimer({ | |||||
| id: "gut", | |||||
| func: state => { | |||||
| print(["You slush down into Geta's stomach"]); | |||||
| goToRoom("stomach", state); | |||||
| return true; | |||||
| }, | |||||
| delay: 7000, | |||||
| loop: false, | |||||
| classes: [ | |||||
| ] | |||||
| }, state); | |||||
| }, | |||||
| "exit": (room, state) => { | |||||
| }, | |||||
| "actions": [ | |||||
| ], | |||||
| "exits": { | |||||
| }, | |||||
| "hooks": [ | |||||
| ], | |||||
| "data": { | |||||
| "stats": { | |||||
| } | |||||
| } | } | ||||
| } | |||||
| }, | |||||
| "throat": { | |||||
| "id": "throat", | |||||
| "name": "Geta's Gullet", | |||||
| "desc": "GULP!", | |||||
| "move": (room, state) => { | |||||
| }, | }, | ||||
| "enter": (room, state) => { | |||||
| startTimer({ | |||||
| id: "gut", | |||||
| func: state => { | |||||
| print(["You slush down into Geta's stomach"]); | |||||
| goToRoom("stomach", state); | |||||
| return true; | |||||
| "stomach": { | |||||
| "id": "stomach", | |||||
| "name": "Geta's Stomach", | |||||
| "desc": "Glorp", | |||||
| "move": (room, state) => { | |||||
| }, | |||||
| "enter": (room, state) => { | |||||
| startTimer({ | |||||
| id: "digest", | |||||
| func: state => { | |||||
| print(["You're digested before too long."]); | |||||
| goToRoom("digested", state); | |||||
| return true; | |||||
| }, | |||||
| delay: 10000, | |||||
| loop: false, | |||||
| classes: [ | |||||
| ] | |||||
| }, state); | |||||
| }, | |||||
| "exit": (room, state) => { | |||||
| }, | |||||
| "actions": [ | |||||
| { | |||||
| name: "Squirm", | |||||
| desc: "Rub at the walls of the fox's churning stomach", | |||||
| execute: (room, state) => { | |||||
| printRandom([ | |||||
| ["You punch and kick at the walls"], | |||||
| ["A powerful churn grabs hold of you, stifling any attempts at struggling"], | |||||
| ["Your little thumps and kicks do little to faze your captor"] | |||||
| ]); | |||||
| }, | |||||
| show: [ | |||||
| ], | |||||
| conditions: [ | |||||
| ] | |||||
| }, | }, | ||||
| delay: 7000, | |||||
| loop: false, | |||||
| classes: [ | |||||
| ] | |||||
| }, state); | |||||
| }, | |||||
| "exit": (room, state) => { | |||||
| }, | |||||
| "actions": [ | |||||
| ], | |||||
| "exits": { | |||||
| }, | |||||
| "hooks": [ | |||||
| ], | |||||
| "data": { | |||||
| "stats": { | |||||
| ], | |||||
| "exits": { | |||||
| }, | |||||
| "hooks": [ | |||||
| ], | |||||
| "data": { | |||||
| "stats": { | |||||
| } | |||||
| } | } | ||||
| } | |||||
| }, | |||||
| "stomach": { | |||||
| "id": "stomach", | |||||
| "name": "Geta's Stomach", | |||||
| "desc": "Glorp", | |||||
| "move": (room, state) => { | |||||
| }, | }, | ||||
| "enter": (room, state) => { | |||||
| startTimer({ | |||||
| id: "digest", | |||||
| func: state => { | |||||
| print(["You're digested before too long."]); | |||||
| goToRoom("digested", state); | |||||
| return true; | |||||
| "digested": { | |||||
| "id": "digested", | |||||
| "name": "Fat", | |||||
| "desc": "You're just fat now", | |||||
| "move": (room, state) => { | |||||
| }, | |||||
| "enter": (room, state) => { | |||||
| }, | |||||
| "exit": (room, state) => { | |||||
| }, | |||||
| "actions": [ | |||||
| { | |||||
| name: "Gurgle", | |||||
| desc: "Glorp", | |||||
| execute: (room, state) => { | |||||
| printRandom([ | |||||
| ["Grrrrgle"], | |||||
| ["Glorp"], | |||||
| ["Glrrrrrrnnnnnn..."], | |||||
| ["Gwoooooorgle"] | |||||
| ]); | |||||
| }, | |||||
| show: [ | |||||
| ], | |||||
| conditions: [ | |||||
| ] | |||||
| }, | }, | ||||
| delay: 10000, | |||||
| loop: false, | |||||
| classes: [ | |||||
| ] | |||||
| }, state); | |||||
| }, | |||||
| "exit": (room, state) => { | |||||
| }, | |||||
| "actions": [ | |||||
| { | |||||
| name: "Squirm", | |||||
| desc: "Rub at the walls of the fox's churning stomach", | |||||
| execute: (room, state) => { | |||||
| printRandom([ | |||||
| ["You punch and kick at the walls"], | |||||
| ["A powerful churn grabs hold of you, stifling any attempts at struggling"], | |||||
| ["Your little thumps and kicks do little to faze your captor"] | |||||
| ]); | |||||
| }, | |||||
| show: [ | |||||
| ], | |||||
| conditions: [ | |||||
| ] | |||||
| ], | |||||
| "exits": { | |||||
| }, | }, | ||||
| ], | |||||
| "exits": { | |||||
| }, | |||||
| "hooks": [ | |||||
| ], | |||||
| "data": { | |||||
| "stats": { | |||||
| "hooks": [ | |||||
| ], | |||||
| "data": { | |||||
| "stats": { | |||||
| } | |||||
| } | } | ||||
| } | |||||
| }, | |||||
| "digested": { | |||||
| "id": "digested", | |||||
| "name": "Fat", | |||||
| "desc": "You're just fat now", | |||||
| "move": (room, state) => { | |||||
| }, | |||||
| "enter": (room, state) => { | |||||
| }, | |||||
| "exit": (room, state) => { | |||||
| }, | |||||
| "actions": [ | |||||
| { | |||||
| name: "Gurgle", | |||||
| desc: "Glorp", | |||||
| execute: (room, state) => { | |||||
| printRandom([ | |||||
| ["Grrrrgle"], | |||||
| ["Glorp"], | |||||
| ["Glrrrrrrnnnnnn..."], | |||||
| ["Gwoooooorgle"] | |||||
| ]); | |||||
| }, | |||||
| show: [ | |||||
| ], | |||||
| conditions: [ | |||||
| ] | |||||
| }, | |||||
| ], | |||||
| "exits": { | |||||
| }, | }, | ||||
| "hooks": [ | |||||
| ], | |||||
| "data": { | |||||
| "stats": { | |||||
| } | |||||
| } | |||||
| }, | |||||
| } | |||||
| }); | |||||
| } | |||||
| }); | |||||
| })(); | |||||