Update Healer Man server
This commit is contained in:
1 parent
39458d5de6
commit
6cc1b9217f
203 files changed
+133929
-31271
No files matched your search
@@ -0,0 +1,42 @@
|
||||
import { existsSync, readFileSync } from "node:fs";
|
||||
import { resolve } from "node:path";
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { CLASSES } from "../app/characterCatalog";
|
||||
import type { InventoryItem } from "../game/lootTypes";
|
||||
import { resolveRunewakerEquipment } from "./runewakerEquipment";
|
||||
|
||||
describe("original RoM equipment", () => {
|
||||
it("equips every RoM class with source-client props in its native socket frame", () => {
|
||||
for (const characterClass of CLASSES.filter((entry) => entry.id.startsWith("rom-"))) {
|
||||
const resolved = resolveRunewakerEquipment(characterClass.id, []);
|
||||
expect(resolved.models.length).toBeGreaterThan(0);
|
||||
expect(resolved.bodyLayers).toEqual([]);
|
||||
for (const model of resolved.models) {
|
||||
expect(model.sourceFrame).toBe("runewaker");
|
||||
expect(model.url).toContain("/equipment/runewaker-v1/");
|
||||
expect(existsSync(resolve("public", model.url.slice(1)))).toBe(true);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
it("shows the equipped weapon type and avoids applying WoW armor to native RoM UVs", () => {
|
||||
const resolved = resolveRunewakerEquipment("rom-priest", [
|
||||
{ itemId: 123, inventorySlot: "main-hand", weaponType: "mace" } as InventoryItem,
|
||||
{ itemId: 6465, inventorySlot: "chest", armorType: "cloth" } as InventoryItem,
|
||||
]);
|
||||
expect(resolved.models).toEqual([expect.objectContaining({
|
||||
itemId: 123, url: expect.stringContaining("starter-mace.glb"), attachment: "handRight",
|
||||
})]);
|
||||
expect(resolved.bodyLayers).toEqual([]);
|
||||
});
|
||||
|
||||
it("preserves original ROS provenance for all six packaged weapon kinds", () => {
|
||||
const imported = JSON.parse(readFileSync("public/assets/equipment/runewaker-v1/import-manifest.json", "utf8"));
|
||||
expect(imported.assets).toHaveLength(6);
|
||||
expect(imported.proceduralFallbacks).toEqual([]);
|
||||
for (const asset of imported.assets) {
|
||||
expect(asset.sourceModel).toMatch(/^model\/item\/weapon\/.+\.ros$/);
|
||||
expect(asset.sourceModelSha256).toMatch(/^[a-f0-9]{64}$/);
|
||||
}
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user