Checks / web (push) Canceled after 0s
Port forced movement (turn delays, bumps, ice, currents, pits), dynamic return warps, elevators, Surf, Cut, Strength and cycling rules, working map blocks with changeblock/changemapblocks, and the remaining NPC movement types and movement commands. Add tileset animation from the ROM's command tables, grass sprite priority and special map palettes; room decorations with ownership, the bedroom PC and save migration; and Key Items access to the Bicycle. Fourteen original-engine traces compare positions, facing, actors, event flags and scripted poses. Tile animation matches original VRAM for four tilesets, and LoadMapPals matches 192 palette cases. skyfall_top now keeps the $60 sprite offset its step function leaves behind. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
27 lines
680 B
TypeScript
27 lines
680 B
TypeScript
import { CrystalAssets } from "../src/game/rom/assets";
|
|
import { GameWorld } from "../src/game/world/world";
|
|
import { OW } from "../src/game/world/constants";
|
|
|
|
export function foundationFixture(
|
|
assets: CrystalAssets,
|
|
room: boolean | "poster",
|
|
) {
|
|
const world = new GameWorld(
|
|
assets,
|
|
() => new Date("2026-09-22T12:00:00"),
|
|
() => 0,
|
|
);
|
|
world.state.scenes["24:4"] = 1;
|
|
world.state.bag.keyItems.push(OW.BICYCLE);
|
|
const save = world.save();
|
|
world.restore({
|
|
...save,
|
|
map: room ? "24:7" : "24:4",
|
|
x: room === "poster" ? 6 : room ? 2 : 9,
|
|
y: room === "poster" ? 1 : room ? 2 : 6,
|
|
direction: "up",
|
|
objects: [],
|
|
});
|
|
return world;
|
|
}
|