Browse Source

Significantly improved the fen-snakck story

tags/v0.1.0
Fen Dweller 6 years ago
parent
commit
9715a6c272
2 changed files with 171 additions and 18 deletions
  1. +3
    -0
      satiate.js
  2. +168
    -18
      stories/fen-snack.js

+ 3
- 0
satiate.js View File

@@ -73,6 +73,9 @@ function init(story) {
},
rooms: {

},
flags: {
}
},
};


+ 168
- 18
stories/fen-snack.js View File

@@ -16,10 +16,38 @@ stories.push({
startTimer({
id: "digestion",
func: state => {
state.player.stats.health.value -= 1;
const location = state.player.location;

let bonus = state.player.flags.submission ? 10 : 1;

if (location.startsWith("stomach")) {
state.player.stats.health.value -= 1 * bonus;
}

if (location.startsWith("intestines")) {
state.player.stats.health.value -= 0.75 * bonus;
}

if (location.startsWith("bowels")) {
state.player.stats.health.value -= 0.5 * bonus;
}


if (state.player.stats.health.value <= 0) {
goToRoom("digested", state);
state.player.stats.health.value = 0;

if (location.startsWith("stomach")) {
goToRoom("digested-stomach", state);
}

if (location.startsWith("intestines")) {
goToRoom("digested-intestines", state);
}

if (location.startsWith("bowels")) {
goToRoom("digested-bowels", state);
}

return false;
}
return true;
@@ -30,6 +58,24 @@ stories.push({
"alive"
]
}, state);

startTimer({
id: "stamina-regen",
func: state => {
state.player.stats.stamina.value += 1;

if (state.player.stats.stamina.value > 100) {
state.player.stats.stamina.value = 100;
}

return true;
},
delay: 500,
loop: true,
classes: [
"alive"
]
}, state);
}
},
refresh: state => {
@@ -57,16 +103,24 @@ stories.push({
name: "Rub",
desc: "Knead on the muscular folds that surround your tasty little body",
execute: (room, state) => {
print(["You rub all over your prison's walls. Fen's stomach doesn't respond."]);
state.player.stats.stamina.value -= 15;
state.player.stats.stamina.value = Math.max(0, state.player.stats.stamina.value);
print(["You rub all over your prison's walls. Fen's stomach gurgles in response."]);
}
},
{
name: "Submit",
desc: "Let Fen digest you",
execute: (room, state) => {
state.player.stats.health.value = 0;
goToRoom("digested", state);
}
state.player.flags.submission = true;
print(["You slump back in the crux's stomach, allowing its powerful fluids to break you down..."]);
},
show: [
(room, state) => {
return !state.player.flags.submission;
}
]

}
],
exits: {
@@ -78,12 +132,24 @@ stories.push({
},
hooks: [
(room, exit, state) => {
if (Math.random() < 0.5) {
let stamina = state.player.stats.stamina.value;
let escape;
if (Math.random() > stamina/100) {
stamina -= 50;
print(["Fen's stomach clenches and ripples, smothering your face in wet flesh and keeping you nice and trapped."]);
return false;
escape = false;
} else {
return true;
stamina -= 25;
escape = true;
}
stamina = Math.max(stamina, 0)
state.player.stats.stamina.value = stamina;
return escape;
}
],
conditions: [
(room, state) => {
return !state.player.flags.submission;
}
]
}
@@ -105,15 +171,50 @@ stories.push({
exits: {
"up": {
target: "stomach",
desc: "Writhe back into Fen's roiling stomach"
desc: "Writhe back into Fen's roiling stomach",
conditions: [
(room, state) => {
return !state.player.flags.submission;
}
]
},
"down": {
target: "bowels",
desc: "Push yourself even deeper into your predator's body"
desc: "Push yourself even deeper into your predator's body",
conditions: [
(room, state) => {
return !state.player.flags.submission;
}
]
}
},
hooks: [

],
actions: [
{
name: "Rub",
desc: "Knead on the muscular folds that surround your tasty little body",
execute: (room, state) => {
state.player.stats.stamina.value -= 20;
state.player.stats.stamina.value = Math.max(0, state.player.stats.stamina.value);
print(["You rub all over your prison's walls. Fen's guts barely move."]);
}
},
{
name: "Submit",
desc: "Let Fen digest you",
execute: (room, state) => {
state.player.flags.submission = true;
print(["You slump back in the crux's intestines, letting the winding, worryingly-tight guts take you in..."]);
},
show: [
(room, state) => {
return !state.player.flags.submission;
}
]

}
]
},
bowels: {
@@ -132,15 +233,45 @@ stories.push({
exits: {
"up": {
target: "intestines",
desc: "Squirm up higher"
desc: "Squirm up higher",
conditions: [
(room, state) => {
return !state.player.flags.submission;
}
]
}
},
hooks: [

],
actions: [
{
name: "Rub",
desc: "Knead on the muscular folds that surround your tasty little body",
execute: (room, state) => {
state.player.stats.stamina.value -= 50;
state.player.stats.stamina.value = Math.max(0, state.player.stats.stamina.value);
print(["You rub all over your prison's walls. Fen's bowels clench in on you as he rurrs with pleasure."]);
}
},
{
name: "Submit",
desc: "Let Fen digest you",
execute: (room, state) => {
state.player.flags.submission = true;
print(["You slump back in the crux's bowels, yielding to their immense pressure..."]);
},
show: [
(room, state) => {
return !state.player.flags.submission;
}
]

}
]
},
digested: {
id: "digested",
"digested-stomach": {
id: "digested-stomach",
name: "Fen's Hips",
desc: "You look good on him, at least~",
enter: (room, state) => {
@@ -148,10 +279,29 @@ stories.push({
playSfx("sfx/digested-test.ogg");
stopClassTimers("alive", state);
print(["You slump down in the acidic pit, curling up as it begins to churn you down to chyme. Fen's stomach snarls and bubbles for the next few minutes...and then you're gone~",newline,"Nothing's left but a bit of padding on your predator's hips..."]);
},
exit: (room, state) => {
stopLoop("loop/fen-intestines.ogg");
},
}
},
"digested-intestines": {
id: "digested-intestines",
name: "Fen's Belly",
desc: "Just a little addition to the crux's belly - one that won't last for long.",
enter: (room, state) => {
playLoop("loop/fen-intestines.ogg");
playSfx("sfx/digested-test.ogg");
stopClassTimers("alive", state);
print(["Fen's intestines clench and squeeze, melting you down into slop and soaking you up like a sponge.",newline,"Nothing's left but a bit of padding on your predator's hips..."]);
}
},
"digested-bowels": {
id: "digested-bowels",
name: "Fen's Ass",
desc: "A little extra heft on the predator's posterior.",
enter: (room, state) => {
playLoop("loop/fen-intestines.ogg");
playSfx("sfx/digested-test.ogg");
stopClassTimers("alive", state);
print(["A powerful ripple of muscle pins you in a vice-grip of flesh - and within seconds, you're part of Fen's bowels.",newline,"Nothing's left but a bit of padding on your predator's hips..."]);
}
}
}
});

Loading…
Cancel
Save