Files
max bittkerandClaude Opus 4.6 392487b6e0 Upgrade LostCity from revision 245.2 to 254
Updates all three upstream repos (Engine-TS, Content, Client-TS) to the
September 7, 2004 game snapshot with all rs-sdk modifications re-applied.

## New Game Content (254)
- Duel Arena — full PvP dueling with configurable rule sets
- Death Plateau quest — find a safe route past trolls in Burthorpe
- Troll Stronghold quest — infiltrate the stronghold to rescue Godric
- Quest journals — proper progress tracking for all quests
- Mime random event — emote-copying theater event
- Maze random event — navigate a maze to the center
- Varbit support — engine-level variable bit support
- Combat formula fixes and improvements
- New map areas around Burthorpe/Trollheim

## SDK & Engine Changes
- Regenerated collision data (+51k new tiles for 254 map areas)
- Fixed playerpositions API (World.playerLoop.all() for 254 HashTable)
- Updated StateCollector for 254 field renames (scene→world, varps→var,
  skillLevel→statEffectiveLevel, etc.)
- Re-applied all bot framework, auth, session, and hiscore modifications
- MapView: restored unified underground map, player tracking, wheel/touch
  zoom, trails, and teleport markers on 254 webclient API
- MapView: tighter region packing (underground overlaps overworld edge)
- Generated worldmap.jag for mapview

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-14 16:08:16 -04:00

76 lines
2.6 KiB
Plaintext

<HTML>
<STYLE>
BODY {
margin: 0px;
overflow: auto;
}
</STYLE>
<BODY topmargin=0 leftmargin=0 bgcolor=black onload=startloop();>
<center>
<applet name=app width=765 height=503 archive=loader.jar code=loader.class MAYSCRIPT>
<param name=portoff value=<%= portoff %>>
<param name=nodeid value=<%= nodeid %>>
<param name=free value=<%= members %>>
<param name=lowmem value=<%= lowmem %>>
<%= lowmem %>
</applet><br>
<br>
<bgsound id=midibox loop=0 volume=0 autostart=yes>
<bgsound id=wavebox loop=0 volume=0 autostart=yes>
<script language="javascript">
var fadestop = null;
var fade = 50;
var fademidi;
var fadevol = 0;
function dofade() {
fade = fade + 1;
midibox.volume = -(fade * 100);
if (fade >= 36) {
clearInterval(fadestop);
clearInterval(fadestop);
midibox.src = fademidi; midibox.volume = fadevol; fade = -(fadevol / 100);
clearInterval(fadestop);
clearInterval(fadestop);
}
}
function givetrue() { return true; }
function musicloop() {
var midi = document.app.getmidi();
if (midi != "none") {
if (fadestop != null) clearInterval(fadestop);
var midivol = document.app.getmidivol();
var midifade = document.app.getmidifade();
if (midi == "stop") { midibox.src = "c:\silence.mid"; fade = 50; return; }
if (midi == "voladjust") { midibox.volume = midivol; if (midifade == 1) fade = -(midivol / 100); else fade = 50; return; }
if (midifade == 1) {
fademidi = midi; fadevol = midivol;
if (fadestop != null) clearInterval(fadestop);
fadestop = setInterval("dofade()", 200);
} else {
midibox.src = midi; midibox.volume = midivol; fade = 50;
}
}
var wave = document.app.getwave();
if (wave != "none") {
var wavevol = document.app.getwavevol();
wavebox.src = wave; wavebox.volume = wavevol;
}
}
function startloop() {
onerror = givetrue;
setInterval("musicloop()", 50);
}
</script>
</center>
</body>
</html>