Files
max bittkerandClaude Opus 5.5 8601955cfb Upgrade LostCity from revision 274 to 289
Rebases the vendored engine, content and webclient onto upstream's 289
branches (34 engine, 165 content, 9 webclient commits past our 274 base).
Each vendor-289 branch in ../repos is upstream 289 plus one squashed
"rs-sdk local mods" commit, refreshed from this tree first.

289 adaptations:
- Protocol: 289 reshuffles every opcode. Custom MESSAGE_PUBLIC (server 255)
  and MARKET_SEARCH (client 243) are still free and kept.
- Lite client: CLIENT_VERSION 289, UPDATE_INV_FULL size g1->g2 and
  UPDATE_INV_PARTIAL slot g1->gsmart, mirroring Client.ts.
- Content ids: upstream appended configs where ours lived. GE interface
  moves 10984->11942 (through 12437), grand_exchange_booth 4671->5116,
  grand_exchange_teller 1359->1596 (m49_53.jm2 updated), pvp_death_mark
  varp 358->394. PlayerLoading moves a saved varp 358 value to
  pvp_death_mark (289's varp 358 is temp-scoped, so only pre-289 saves
  carry it).
- GE loc/npc configs use 289's renamed model debugnames.
- Engine: keep our Bun web split over upstream's new Fastify web.ts (no
  fastify/tsx deps), add OnDemand.onClientClosed to our WS close handler,
  keep our WSClientSocket API/batching and the 1s delayed close (TCP too).
  Adopt upstream's HashTable iterator fix, IPv6 player-loop key (with our
  NaN guard), chat effects 0-5, pointer-check removal.
- Razmire building store keeps our 650 sell price with upstream's 4% haggle.
- Tests: opcode assertions use ClientProt enums; hand-built inv packets
  use the 289 layout.

PATCHES.md documents the new per-upgrade steps (custom id renumbering,
lite decoder parity, opcode collision check).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 00:53:05 -04:00

75 lines
2.1 KiB
JSON

{
"name": "engine-ts",
"version": "1.0.0",
"type": "module",
"engines": {
"node": ">=24"
},
"imports": {
"#3rdparty/*": "./src/3rdparty/*",
"#/*": "./src/*",
"#tools/*": "./tools/*"
},
"scripts": {
"build": "bun run tools/pack/Build.ts",
"clean": "bun run tools/pack/Clean.ts",
"db:migrate": "bun run tools/server/prisma-multi.ts migrate deploy",
"db:reset": "bun run tools/server/prisma-multi.ts migrate reset --force",
"db:schema": "bun run tools/server/prisma-multi.ts migrate dev",
"dev": "bun run --watch src/app.ts",
"friend": "bun run src/friend.ts",
"hiscores": "bun run src/hiscores.ts",
"lint": "eslint --no-warn-ignored src tools",
"logger": "bun run src/logger.ts",
"login": "bun run src/login.ts",
"prepare": "husky",
"quickstart": "bun run src/app.ts",
"setup": "bun i && bun run src/setup.ts",
"sqlite:migrate": "prisma migrate deploy --schema prisma/singleworld/schema.prisma",
"sqlite:reset": "prisma migrate reset --force --schema prisma/singleworld/schema.prisma",
"sqlite:schema": "prisma migrate dev --schema prisma/singleworld/schema.prisma",
"start": "bun install && bun run src/app.ts"
},
"lint-staged": {
"*.{js,ts}": [
"prettier --write",
"eslint --no-warn-ignored"
]
},
"dependencies": {
"@isaacs/ttlcache": "2.1.5",
"@jimp/js-png": "1.6.1",
"@jimp/plugin-quantize": "1.6.1",
"@lostcityrs/runescript": "0.9.7",
"bcrypt-ts": "9.0.2",
"ejs": "6.0.1",
"fflate": "0.8.3",
"jimp": "1.6.1",
"kleur": "4.1.5",
"kysely": "0.29.5",
"mysql2": "3.23.3",
"node-forge": "1.4.0",
"prom-client": "15.1.3",
"ws": "8.21.3"
},
"devDependencies": {
"@eslint/js": "10.0.1",
"@types/bun": "latest",
"@types/ejs": "3.1.5",
"@types/node": "^24",
"@types/node-forge": "1.3.14",
"@types/ws": "8.18.1",
"eslint": "10.8.1",
"globals": "17.10.0",
"husky": "9.1.7",
"lint-staged": "17.3.0",
"prettier": "3.9.6",
"prisma": "6.19.3",
"prisma-kysely": "2.3.0",
"typescript-eslint": "8.67.0"
},
"peerDependencies": {
"typescript": "^5"
}
}