README.md
rs-speedruns
Scripted quest speedruns for rs-sdk, the bot SDK for the LostCity 2004-era RuneScape server (rev 289). Every quest here has a recorded, successful bot run: see LEADERBOARD.md.
What's inside
scripts/quests/<quest>-speedrun/: everything for one questQUEST.md: the full guide, generated from the game's own quest code. Start here. It has:- the progress variable (varp) and every stage value, with the quest journal text the game shows at that stage
- a one-line-per-stage walkthrough: what to talk to / operate / use, the tile (x, z, level) and the items you must be holding
- every trigger that moves the quest forward, with the stage it fires from, the dialog lines and menu choices on the way, the items it checks and uses up, the game messages it can print (usually why it refused), and the server source file and line
- skill and other-quest requirements the code checks, and rewards (base XP and at the server's 25x)
steps.json: the same data, machine-readable, for agents and scriptsfinish.route.ts: the waypoint route, from a recorded runprep.generated.ts: kit and bank prep*.notes.md: step-by-step notes, kit, prerequisites and pitfallsfinish.summary.json: the run record (time, result, certified flag)
scripts/quests/<quest>/: runnable quest scripts where they exist (Waterfall, Lost City, Temple of Ikov, ...)scripts/quests/shared/: quest runtime, checkpoints and guide sources shared by the runners
For agents (and people)
Read the quest's progress variable, find that value in the stage table in QUEST.md, and do the step that moves
it to the next value. Recorded routes and notes are hints; the stage table and triggers are ground truth because
they come straight from the server scripts. Tiles come from the map files: walk there with a pathfinder, don't
replay waypoints blindly. If a step refuses, its "game messages" list usually says why.
Regenerate the guides against your own server checkout:
| 1 | python3 tools/gen_quest_steps.py <rs-sdk>/server/content --out scripts/quests |
Use
- Clone rs-sdk and set up a server (yours or a local LostCity server; see rs-sdk's README).
- Copy
scripts/quests/from this repo into the rs-sdk checkout (same path). - Run a quest:
bun scripts/quests/<quest>/script.ts <your-bot>.
The route and notes files stand alone. Some runnable scripts import rs-sdk's sdk/ runner and, for the
Playwright path, helpers from a fork's scripts/executive/ client; where that's missing, follow the
notes and the route file.
Honesty
- "Certified" means the route was re-run and verified; everything else succeeded at least once.
- Fight Arena and Dwarf Cannon are routes only, without a runnable script yet.
- Runner names are anonymised (RunnerA, RunnerB, ...).
QUEST.mdlists every place the code changes a stage, so some quests show side triggers and alternative paths next to the main one; the walkthrough picks the first trigger found per stage. Stage values written as<varp>_value_Nare quests whose code uses bare numbers instead of named constants.
License
MIT. Built on rs-sdk and LostCity (both MIT); see LICENSE.