diff --git a/stories/geta-unaware.js b/stories/geta-unaware.js index 9fbe80f..ce3f8d7 100644 --- a/stories/geta-unaware.js +++ b/stories/geta-unaware.js @@ -127,6 +127,7 @@ state.player.stats.mawPos = { "name": "Struggle", "type": "meter", "value": 0.5, "min": 0, "max": 1, get color() { return (this.value <= 0.15 || this.value >= 0.85) ? "rgb(255,100,0)" : "rgb(0,255,0)"}, hidden: true } state.player.stats.throatPos = { "name": "Descent", "type": "meter", "value": 0.25, "min": 0, "max": 1, get color() { return "rgb(" + (100+155*this.value) + ",0,0)"}, hidden: true } + state.player.stats.absorption = { "name": "Absorption", "type": "meter", "value": 0, "min": 0, "max": 1, get color() { return "rgb(" + (100+155*this.value) + ",0,0)"}, hidden: true } state.info.time.value = 60 * 60 * 7 + 60 * 17; @@ -1290,27 +1291,69 @@ stopClassTimers("digestion"); stopTimer("clock"); - state.player.flags.digestTime = state.info.time.value; + state.player.stats.health.hidden = true; + state.player.stats.absorption.hidden = false; startTimer({ - id: "absorb-clock", + id: "clock", func: () => { - state.info.time.value += 1; + state.info.time.value += 2; state.info.time.value %= 86000; - - if (state.info.time.value - state.player.flags.digestTime > 5 * 60) { - print(["Your molten remains drain into the fox's depths..."]); - goToRoom("absorbed"); - return false; - } return true; }, - delay: 1000 / 15, + delay: 1000/60, loop: true, classes: [ - + ] }); + + startTimer({ + id: "passive-absorb", + func: () => { + changeStat("absorption", 0.0004); + + if (getStat("absorption") >= 1) { + goToRoom("absorbed"); + return false; + } + return true; + }, + delay: 1000/60, + loop: true, + classes: [ + "absorption" + ] + }); + + startTimer({ + id: "absorbption-random", + func: () => { + const result = pickRandom([ + () => { + print(["The fox kneads on his flattening belly"]); + statLerp("absorption", 0.1, 1000); + }, + () => { + print(["A crass belch pours from Geta's maw"]); + statLerp("absorption", 0.05, 1000); + }, + () => { + print(["Geta's guts writhe and squeeze, soaking up your digested body and crushing your acid-pitted bones"]); + statLerp("absorption", 0.2, 1000); + } + ])(); + + return result ? result : Math.random() * 3000 + 4000; + }, + delay: 2000, + loop: true, + classes: [ + "absorption" + ] + }); + + playSfx("sfx/digest.ogg"); }, @@ -1358,6 +1401,10 @@ }, "enter": (room) => { playSfx("sfx/absorb.ogg"); + stopTimer("clock"); + stopClassTimers("absorption"); + state.player.stats.absorption.hidden = true; + print(["Your erasure is completed with a dull, slimy gurgle. Geta has destroyed you."]); }, "exit": (room) => {