Update Healer Man server

This commit is contained in:
phenom committed 2026-09-20 19:27:37 -04:00
1 parent 97ee0c13f9
commit f864b5aea7
20 files changed
+468 -211

No files matched your search

+38 -7
View File
@@ -26,7 +26,9 @@ test("gives randomized bite-sized its base location dependency closure", () => {
test("assigns stable player-facing packs from logical asset paths", () => {
assert.equal(contentPackForPath("assets/game/dungeons/wailing-caverns/visual.glb"), "dungeon:wailing-caverns");
assert.equal(contentPackForPath("assets/creatures/wailing-caverns/mutanus.glb"), "dungeon:wailing-caverns");
assert.equal(contentPackForPath("assets/creatures/wailing-caverns/mutanus.glb"), "creatures:wailing-caverns");
assert.equal(contentPackForPath("assets/game/creatures/deadmines/mine-rat.glb"), "creatures:deadmines");
assert.equal(contentPackForPath("assets/game/dungeons/deadmines/creatures/mr-smite.glb"), "creatures:deadmines");
assert.equal(contentPackForPath("assets/characters/wow335a-v1/manifest.json"), "core:character-basic");
assert.equal(contentPackForPath("assets/characters/wow335a-v1/human/male/rig.glb"), "core:character-basic");
assert.equal(contentPackForPath("assets/characters/wow335a-v1/textures/character/human/male/humanmaleskin00_00.webp"), "core:character-basic");
@@ -44,6 +46,27 @@ test("assigns stable player-facing packs from logical asset paths", () => {
assert.equal(contentPackForPath("basis/basis_transcoder.wasm"), "core:runtime");
});
test("keeps RuneWaker environments and creatures in independently installable packs", () => {
const files = [
"assets/game/dungeons/forsaken-abbey/visual.glb",
"assets/creatures/forsaken-abbey/ancalon.glb",
].map((logicalPath, index) => ({
logicalPath,
sourcePath: logicalPath,
sha256: String(index + 1).repeat(64),
bytes: 100,
extension: ".glb",
packId: contentPackForPath(logicalPath),
}));
const manifest = createContentManifest(files, { version: "runewaker-creature-split" });
const packs = new Map(manifest.packs.map((pack) => [pack.id, pack]));
assert.deepEqual(packs.get("dungeon:forsaken-abbey")?.dependencies, ["creatures:forsaken-abbey"]);
assert.equal(packs.get("dungeon:forsaken-abbey")?.fileCount, 1);
assert.equal(packs.get("creatures:forsaken-abbey")?.fileCount, 1);
assert.equal(manifest.files["/assets/creatures/forsaken-abbey/ancalon.glb"].packId, "creatures:forsaken-abbey");
});
test("gives every WoW campaign dungeon an exact install dependency closure", async () => {
const campaign = JSON.parse(await readFile(path.join(
PROJECT_ROOT,
@@ -113,6 +136,7 @@ test("gives every WoW campaign dungeon an exact install dependency closure", asy
packId: contentPackForPath(logicalPath),
});
addFile("assets/game/dungeons/wailing-caverns/visual.glb");
for (const creature of wailingCreatureManifest.creatures) addFile(creature.url.slice(1));
for (const dungeon of campaign.definitions) {
for (const asset of [
...dungeon.assets.visual,
@@ -134,20 +158,27 @@ test("gives every WoW campaign dungeon an exact install dependency closure", asy
const pack = packs.get(`dungeon:${dungeon.id}`);
assert.ok(pack, dungeon.id);
if (dungeon.id === "wailing-caverns") {
const creaturePacks = [...new Set([
"creatures:wailing-caverns",
...Object.values(dungeon.entities).flatMap((entity) => (
entity.visual?.model?.url ? [contentPackForPath(entity.visual.model.url.slice(1))] : []
)),
])];
assert.equal(pack.bundledOnAndroid, true);
assert.deepEqual(pack.dependencies, []);
assert.deepEqual(pack.dependencies, creaturePacks);
continue;
}
const environmentPack = contentPackForPath(dungeon.assets.visual[0].url.slice(1));
const needsSharedCreatures = Object.values(dungeon.entities).some((entity) => (
entity.visual?.model?.url?.startsWith("/assets/game/creatures/shared/")
));
const creaturePacks = [...new Set(Object.values(dungeon.entities).flatMap((entity) => (
entity.visual?.model?.url ? [contentPackForPath(entity.visual.model.url.slice(1))] : []
)))];
assert.deepEqual(
pack.dependencies,
[environmentPack, ...(needsSharedCreatures ? ["shared:creatures"] : [])],
[...(environmentPack === pack.id ? [] : [environmentPack]), ...creaturePacks],
dungeon.id,
);
assert.deepEqual(packs.get(environmentPack)?.dependencies, [], dungeon.id);
assert.equal(pack.bundledOnAndroid, dungeon.id === "wailing-caverns");
if (environmentPack !== pack.id) assert.deepEqual(packs.get(environmentPack)?.dependencies, [], dungeon.id);
}
for (const [dungeonId, environmentPack] of [