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 quest
    • QUEST.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 scripts
    • finish.route.ts: the waypoint route, from a recorded run
    • prep.generated.ts: kit and bank prep
    • *.notes.md: step-by-step notes, kit, prerequisites and pitfalls
    • finish.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:

1python3 tools/gen_quest_steps.py <rs-sdk>/server/content --out scripts/quests

Use

  1. Clone rs-sdk and set up a server (yours or a local LostCity server; see rs-sdk's README).
  2. Copy scripts/quests/ from this repo into the rs-sdk checkout (same path).
  3. 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.md lists 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_N are quests whose code uses bare numbers instead of named constants.

License

MIT. Built on rs-sdk and LostCity (both MIT); see LICENSE.