tibo.dog Wiki Game v75 Play tibo.dog

Story mode

Story mode is the short first game. Verified: the script below is the story configuration in sim-BkfBhQfw.js.

Start

A starting chest sits next to Tibo. It contains Peeler level 4, Tot Toss level 3 and Thick Skin level 2. If you do not open it, nudges appear after 8 s, 16 s, 24 s, and after 32 s you are held next to it.

Verified: the tutorial gives a fully typed line at least 1.2 s on screen before replacing it with a pending nudge or the gear-chest lesson. Opening the kit holds its offer until that reading time is satisfied.[1]

Rushes and boss

Times below count from the moment you open the starting chest, which starts the first rush.[2]

  1. First rush from tick 180: alive pests grow from 10 to 200. Story pests have ×3 HP in the first rush.
  2. Boss: amusing lands at tick 1800 (30 s at 60 ticks/s, Inference on tick rate), or earlier if Tibo drops to 20% HP or less during the first rush.[3] Story boss multipliers: HP ×2.2, damage ×1.6, speed ×2.4.
  3. Second rush: alive pests from 220 to 400.
  4. Story waves use Reset Zombie.

Verified story rules: Tibo's first hit on a non-elite always kills and the first kill grants level 2; HP cannot drop below 1 during the first rush (and during the second rush once poteto's visit is due); in other phases a knock-out is revived by the story with a growing boost. Second-rush pests have ×0.3 HP and give no XP. After the story the Grok Bot panel shows “Now play the real game.” with a “Play Easy” button.

Ending

The ending is scripted: poteto visits, speaks a series of lines and knocks Tibo out (knockOut), with Alex appearing. The final line key is realDifficulty.

Verified: the game counts the ending as reached when a Story run is over and poteto's bonk hit Tibo.[4] The run then goes to the Grok Bot panel: “Now play the real game.”, a Play Easy button, an Easy–Nightmare picker and Try Grok Bot. Story runs never open the stats screen, so they get no shared run link. A Story run that ends any other way (for example Reset in the pause menu) returns to the title screen.[5]

Measured in headless runs (build main-BnCKpQy_.js, mode story, the harness's default difficulty normal, seeds wiki, s1 and s2; no give, warp or --god; Tibo stood still and the harness took the first option of every choice, which opens the starting chest at 0:00). In all three runs Tibo fell to the rescue threshold, so amusing arrived early, at 17.6–19.0 s instead of 30 s. It died at 42.9–43.7 s, poteto arrived at 57.9–58.7 s, and the bonk ended the run at 60.6–61.4 s. In a browser run on the live game (2026-11-05), amusing was on screen at 0:17 and poteto's last lines played at about 1:03.

Replaying Story

Verified: Story can be replayed from the title screen. Select Story under the RESET button, then press RESET. The title screen's picker always lists Story, Easy, Normal, Hard and Nightmare, with Story as the large button.[6][7] Before you reach the Story ending, Story is selected there. After the ending, your last level (or Easy) is selected instead, but Story stays on the title screen.

What the ending changes is the pickers on the end screens:

  • The Grok Bot panel after the Story ending lists only Easy to Nightmare.[8]
  • The stats screen after a level run lists Story too, but only until you have reached the Story ending (storyOnStats).[9]

The game remembers the ending in browser storage (picker.storyDone; see Unlocks). A ?story=1 link parameter exists, but only debug builds read it.[10][11]

Played in the browser on the live game, build main-BnCKpQy_.js (2026-11-05; its picker code is unchanged from main-CSuyb4iv.js), in a fresh browser profile: Story was selected on the title screen. After the ending, browser storage held picker: {storyDone: true, lastPick: "easy"}. The ending panel offered Play Easy and Easy to Nightmare. After a reload, the title screen still showed Story, with Easy selected. Selecting Story and pressing RESET started a new Story run: intro, STORY badge, 0:00 and the starting chest. A Nightmare run ended from the pause menu then showed a stats-screen picker of Easy to Nightmare only.

Story-only settings

{"spawns":{"earlyCeiling":[]},"levelUp":{"catalystGuaranteeLevel":6},"poteto":{"visitChance":0},"world":{"landmarkEvents":false,"poiTaperPerMinute":0,"onlyPois":["crops","taterMagnet","spudFreezer","frenzyFryer","botDock","taterLantern","seedVault"],"outOfFirstView":["paidChest","seedVault"]},"alex":{"chance":1}}

In Story mode Alex always appears (alex.chance: 1), poteto's random visit is off, and the randomly placed POIs are limited to: Crop Patch, Tater Magnet, Spud Freezer, Frenzy Fryer, Bot Dock, Tater Lantern, Seed Vault. The first stray dog is placed separately and still appears.

Sources

Game version 75: main-CSuyb4iv.js / boot-CPW8VVmR.js / sim-BkfBhQfw.js from https://tibo.dog/, researched 2026-11-05. See Versions & updates.

  • Story configuration in sim-BkfBhQfw.js

Code references

  1. story-lessons-DaJxS21v.js return e===null||t.speech!==e||t.shownSec(e)>=o.tutorial.lineReadSec
  2. sim-BkfBhQfw.js e.tick-e.story.since>=to.landTicks
  3. sim-BkfBhQfw.js <=e.loadout.stats.maxHp*e.cfg.story.rescueHp
  4. sim-BkfBhQfw.js return t>=0&&e.visitor.hit[t]===1
  5. boot-CPW8VVmR.js return t.levels===void 0?{kind:`splash`,onReset:t.backToSplash
  6. main-CSuyb4iv.js splash=new ee(this,{view:()=>m(this.pick)
  7. boot-CPW8VVmR.js function Od(e){return{picks:cl,selected:e,featured:Ed}}
  8. boot-CPW8VVmR.js if(t.mode===`story`&&t.reachedEnding&&!t.storyParam&&e.storyDone)return Dd(e)
  9. boot-CPW8VVmR.js r=n.storyOnStats?Dd(e,n).picks:al;return{picks:r.includes(t.pick)?r:cl
  10. boot-CPW8VVmR.js story:t.get(`story`)===`1`
  11. boot-CPW8VVmR.js e.debugBuild?r:function(e)