Parcourir la source

Add a basic struggle minigame in Geta's maw

You have to struggle forward to avoid being swallowed, but also can't go too far forward,
or else you'll be chewed.
geta
Fen Dweller il y a 6 ans
Parent
révision
78002bc6ac
1 fichiers modifiés avec 78 ajouts et 23 suppressions
  1. +78
    -23
      stories/geta-unaware.js

+ 78
- 23
stories/geta-unaware.js Voir le fichier

@@ -28,7 +28,7 @@
"intro": {
"start": "pepper-grinder",
"setup": state => {
state.info.awareness = {
id: "awareness",
name: "Geta's Awareness",
@@ -45,8 +45,11 @@
}
}

state.geta = {};

state.player.stats.health = { name: "Health", type: "meter", value: 100, min: 0, max: 100, color: "rgb(255,55,55)" };
state.player.stats.suspicion = { name: "Suspicion", type: "meter", value: 0, min: 0, max: 100, color: "rgb(100,100,100)" };
state.player.stats.mawPos = { "name": "Struggle", "type": "meter", "value": 0.5, "min": 0, "max": 1, "color": "rgb(0,255,0)", hidden: true }
state.info.time.value = 60 * 60 * 7 + 60 * 17;

startTimer({
@@ -456,45 +459,94 @@
},
"enter": (room, state) => {
stopClassTimers("free", state);
startTimer({
id: "swallow",
func: state => {
print(["It's too late to escape. You're swallowed down."]);
stopTimer("maw-tease", state);
goToRoom("throat", state);
return true;
},
delay: Math.random() * 5000 + 6000,
loop: false,
classes: [

]
}, state);
state.player.stats.mawPos.hidden = false;

startTimer({
id: "maw-tease",
id: "maw-struggle",
func: state => {
printRandom([
["Your captor teases you with a sharp, sloppy swallow, barely holding you back from plunging down that slick gullet."],
["You're sloshed to and fro, battered against the fox's gums by his undulating tongue."],
["Slobber drenches your body as you're smothered beneath Geta's hot tongue."]
]);
return Math.random() * 2000 + 3000;
const choice = Math.random();

if (getStat("mawPos", state) <= 0) {
print(["Swallowed!"]);
goToRoom("throat", state);
return false;
} else if (getStat("mawPos", state) >= 1) {
print(["Chewed!"]);
changeStat("health", -90, state);
goToRoom("stomach", state);
return false;
}

if (choice < 0.3) {
if (getStat("mawPos", state) < 0.3) {
print(["Swallowed!"]);
goToRoom("throat", state);
return false;
} else {
print(["Swallows"]);
changeStat("mawPos", -0.25, state);
return Math.random() * 1500 + 2500;
}

} else if (choice < 0.7) {
changeStat("mawPos", -0.1, state);
print(["Slurps"]);
return Math.random() * 1000 + 1500;
} else {
if (getStat("mawPos", state) > 0.7) {
print(["Chewed!"]);
changeStat("health", -90, state);
goToRoom("stomach", state);
return false;
} else {
print(["Chews"]);
return Math.random() * 500 + 1000;
}

}
},
delay: 3000,
delay: 0,
loop: true,
classes: [

]
}, state);


},
"exit": (room, state) => {

},
"actions": [
{
name: "Struggle",
desc: "Pull yourself away from the fox's throat! Just don't go too far forward...",
execute: (room, state) => {
print(["You drag yourself forward"]);
changeStat("mawPos", Math.random() * 0.1 + 0.15, state);
},
show: [

],
conditions: [

]
},
{
name: "Slip Back",
desc: "Slide back towards Geta's gullet",
execute: (room, state) => {
print(["You let yourself slip back"]);
changeStat("mawPos", -Math.random() / 5 - 0.2, state);
},
show: [
],
conditions: [
]
},
],
"exits": {

@@ -516,6 +568,9 @@

},
"enter": (room, state) => {

state.player.stats.mawPos.hidden = true;

startTimer({
id: "throat-swallow",
func: state => {


Chargement…
Annuler
Enregistrer