forked from phenom/healer-man
Release Healer Man 0.1.8
This commit is contained in:
1 parent
eca6b5db9b
commit
c245a199b6
90 files changed
+8249
-232
No files matched your search
@@ -5,6 +5,61 @@ import generated from "./generated/dungeonCampaignCatalog.json";
|
||||
import manastormPackages from "./generated/manastormAssetPackages.json";
|
||||
import { DUNGEON_DEFINITIONS, requireDungeonDefinition } from "./dungeonRegistry";
|
||||
|
||||
const SOURCE_NATIVE_DUNGEON_IDS = [
|
||||
"ahnkahet-old-kingdom",
|
||||
"arcatraz",
|
||||
"auchenai-crypts",
|
||||
"azjol-nerub",
|
||||
"black-morass",
|
||||
"blackfathom-deeps",
|
||||
"blackrock-depths",
|
||||
"blackrock-spire",
|
||||
"blood-furnace",
|
||||
"botanica",
|
||||
"culling-of-stratholme",
|
||||
"draktharon-keep",
|
||||
"escape-from-durnholde",
|
||||
"forge-of-souls",
|
||||
"gnomeregan",
|
||||
"gundrak",
|
||||
"halls-of-lightning",
|
||||
"halls-of-reflection",
|
||||
"halls-of-stone",
|
||||
"magisters-terrace",
|
||||
"mana-tombs",
|
||||
"maraudon",
|
||||
"mechanar",
|
||||
"pit-of-saron",
|
||||
"ragefire-chasm",
|
||||
"scarlet-monastery",
|
||||
"sethekk-halls",
|
||||
"shadow-labyrinth",
|
||||
"shadowfang-keep",
|
||||
"shattered-halls",
|
||||
"slave-pens",
|
||||
"steamvault",
|
||||
"stormwind-stockade",
|
||||
"sunken-temple",
|
||||
"the-nexus",
|
||||
"the-oculus",
|
||||
"trial-of-the-champion",
|
||||
"uldaman",
|
||||
"underbog",
|
||||
"utgarde-keep",
|
||||
"utgarde-pinnacle",
|
||||
"violet-hold",
|
||||
"zulfarrak",
|
||||
] as const;
|
||||
|
||||
const WDT_PLACEMENT_DUNGEON_IDS = [
|
||||
"dire-maul",
|
||||
"hellfire-ramparts",
|
||||
"razorfen-downs",
|
||||
"razorfen-kraul",
|
||||
"scholomance",
|
||||
"stratholme",
|
||||
] as const;
|
||||
|
||||
describe("generated dungeon campaign catalog", () => {
|
||||
it("covers only reviewed five-player instances with loadable assets and combat content", () => {
|
||||
expect(generated.definitions).toHaveLength(54);
|
||||
@@ -240,17 +295,124 @@ describe("generated dungeon campaign catalog", () => {
|
||||
expect(targorr?.position).toEqual([-159.582, -25.6062, 1.2531]);
|
||||
});
|
||||
|
||||
it("starts Ragefire Chasm in the dungeon instead of the Orgrimmar portal annex", () => {
|
||||
const ragefire = requireDungeonDefinition("ragefire-chasm");
|
||||
const firstSpawn = ragefire.staticSpawns.find(
|
||||
(spawn) => spawn.id === "creature-38041",
|
||||
);
|
||||
const jergosh = ragefire.staticSpawns.find(
|
||||
(spawn) => spawn.id === "creature-48740",
|
||||
);
|
||||
|
||||
expect(ragefire.environmentMode).toBe("global-wmo");
|
||||
expect(ragefire.provenance.coordinateTransform)
|
||||
.toBe("three(x,y,z)=draft(x,y,z)");
|
||||
expect(ragefire.entrance.footPosition).toEqual([-3.81, -17.84, -14.82]);
|
||||
expect(firstSpawn?.position).toEqual([45.0298, -21.2917, -27.7645]);
|
||||
expect(jergosh?.position).toEqual([376.811, -21.801, 209.224]);
|
||||
});
|
||||
|
||||
it("keeps every navigation-audited dungeon in its native source coordinates", () => {
|
||||
const sourceAligned = generated.definitions
|
||||
.filter((dungeon) => dungeon.provenance.coordinateAlignment === "source")
|
||||
.map((dungeon) => dungeon.id)
|
||||
.sort();
|
||||
|
||||
expect(sourceAligned).toEqual([...SOURCE_NATIVE_DUNGEON_IDS].sort());
|
||||
for (const dungeonId of SOURCE_NATIVE_DUNGEON_IDS) {
|
||||
const dungeon = requireDungeonDefinition(dungeonId);
|
||||
expect(dungeon.provenance.coordinateAlignment, dungeonId).toBe("source");
|
||||
expect(dungeon.provenance.coordinateTransform, dungeonId)
|
||||
.not.toContain("package-anchor-translation");
|
||||
expect(
|
||||
dungeon.validation.warnings.some((warning) => (
|
||||
warning.includes("native world coordinates")
|
||||
)),
|
||||
dungeonId,
|
||||
).toBe(true);
|
||||
}
|
||||
});
|
||||
|
||||
it("pins representative global-WMO and ADT entrances to their source basis", () => {
|
||||
const expectedEntrances = {
|
||||
"blackfathom-deeps": [151.89, -39.87, 106.96],
|
||||
"blackrock-depths": [-456.929, -68.0896, 34.0923],
|
||||
"blood-furnace": [3.9967, -44.8009, 14.6363],
|
||||
"the-nexus": [-145.87, -16.636, -10.554],
|
||||
"violet-hold": [803.93, 44.364, 1808.82],
|
||||
"black-morass": [7034.7, 32.5619, -1496.24],
|
||||
"culling-of-stratholme": [556.92, 36.69, 1431.1],
|
||||
} as const;
|
||||
|
||||
for (const [dungeonId, expected] of Object.entries(expectedEntrances)) {
|
||||
expect(requireDungeonDefinition(dungeonId).entrance.footPosition, dungeonId)
|
||||
.toEqual(expected);
|
||||
}
|
||||
});
|
||||
|
||||
it("keeps scripted Trial of the Champion objectives on the native arena floor", () => {
|
||||
const trial = requireDungeonDefinition("trial-of-the-champion");
|
||||
const [entranceX, , entranceZ] = trial.entrance.footPosition;
|
||||
|
||||
expect(trial.objectiveOrder).toHaveLength(5);
|
||||
for (const objective of trial.objectiveOrder) {
|
||||
expect(objective.position[1], objective.name).toBeGreaterThanOrEqual(411);
|
||||
expect(objective.position[1], objective.name).toBeLessThanOrEqual(413);
|
||||
expect(
|
||||
Math.hypot(objective.position[0] - entranceX, objective.position[2] - entranceZ),
|
||||
objective.name,
|
||||
).toBeLessThan(150);
|
||||
}
|
||||
});
|
||||
|
||||
it("uses client WDT placement records for rotated or translated root WMOs", () => {
|
||||
for (const dungeonId of WDT_PLACEMENT_DUNGEON_IDS) {
|
||||
expect(
|
||||
requireDungeonDefinition(dungeonId).provenance.coordinateAlignment,
|
||||
dungeonId,
|
||||
).toBe("source-transform");
|
||||
expect(
|
||||
requireDungeonDefinition(dungeonId).provenance.coordinateTransform,
|
||||
dungeonId,
|
||||
).toContain("rotate-y");
|
||||
expect(
|
||||
requireDungeonDefinition(dungeonId).provenance.coordinateTransform,
|
||||
dungeonId,
|
||||
).not.toContain("package-anchor-translation");
|
||||
}
|
||||
});
|
||||
|
||||
it("pins every map found by the portal-map coordinate audit to its dungeon entrance", () => {
|
||||
const expectedEntrances = {
|
||||
arcatraz: [1.2316, -0.2043, 0.0143],
|
||||
"dire-maul": [44.4499, -2.712, 154.822],
|
||||
"hellfire-ramparts": [5.7204, 129.1393, -94.4661],
|
||||
"razorfen-downs": [-190.2691, -10.71, -100.8219],
|
||||
"razorfen-kraul": [-37.901, -5.684, 22.7908],
|
||||
"scarlet-monastery": [1053.48, 18.6775, 1688.99],
|
||||
scholomance: [-55.0407, -13.1583, 20.4141],
|
||||
"shadowfang-keep": [2109.18, 76.8898, -229.135],
|
||||
stratholme: [-143.4892, -5.8848, -266.8634],
|
||||
zulfarrak: [841.59, 8.93, 1213.52],
|
||||
} as const;
|
||||
|
||||
for (const [dungeonId, expected] of Object.entries(expectedEntrances)) {
|
||||
expect(requireDungeonDefinition(dungeonId).entrance.footPosition, dungeonId)
|
||||
.toEqual(expected);
|
||||
}
|
||||
});
|
||||
|
||||
it("starts Razorfen Kraul inside the portal and maps its first pack into the WMO", () => {
|
||||
const razorfenKraul = requireDungeonDefinition("razorfen-kraul");
|
||||
const firstPackSpawn = razorfenKraul.staticSpawns.find(
|
||||
(spawn) => spawn.id === "creature-87284",
|
||||
);
|
||||
|
||||
expect(razorfenKraul.entrance.footPosition).toEqual([-33.81, -5.2481, 21.522]);
|
||||
expect(razorfenKraul.entrance.footPosition).toEqual([-37.901, -5.684, 22.7908]);
|
||||
expect(firstPackSpawn).toBeTruthy();
|
||||
expect(firstPackSpawn!.position[0]).toBeGreaterThan(razorfenKraul.entrance.footPosition[0]);
|
||||
expect(firstPackSpawn!.position[0]).toBeLessThan(100);
|
||||
expect(razorfenKraul.provenance.coordinateTransform)
|
||||
.toBe("three(x,y,z)=(-draft.x,draft.y,draft.z)+package-anchor-translation");
|
||||
.toBe("three(x,y,z)=rotate-y(draft(x,y,z)-[-1952.1803,87.684,1587.8923],-133deg)");
|
||||
});
|
||||
});
|
||||
@@ -191,6 +191,7 @@ export interface DungeonPresentation {
|
||||
|
||||
export interface DungeonSourceProvenance {
|
||||
readonly clientBuild: string;
|
||||
readonly coordinateAlignment?: "player-anchor" | "source" | "source-transform";
|
||||
readonly clientArchiveHashes: Readonly<Record<string, string>>;
|
||||
readonly databaseAdapter: string;
|
||||
readonly databaseRevision?: string;
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
// Generated by npm run dungeon:catalog. Do not edit.
|
||||
export default "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
Line truncated
|
||||
export default "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 truncated
|
||||
@@ -1 +1 @@
|
||||
{"schemaVersion":1,"source":{"campaignManifest":"dungeon-pipeline/dungeon-campaign.json","environmentPackages":["src/game/generated/fivePlayerDungeonImports.json","src/game/generated/manastormAssetPackages.json (temporary fallback)"],"encounterCatalog":"src/game/generated/manastormRuntimeCatalog.json","azerothCoreCommit":"4d9d1d4b5723e819c5c390f6ca1177283dbfb8e3","azerothCoreSourceLock":"src/game/generated/azerothCoreSourceLock.json","spellCatalog":{"ascension":"../LadiksMPQEditor/client-current/area-52/patch-D/DBFilesClient/Spell.dbc","epoch":"../HealerMan-Storage/pipeline-work/dungeons/epoch-client/DBFilesClient/Spell.dbc"}},"coverage":[{"dungeonId":"shadowfang-keep","mapId":33,"encounters":7,"entities":31,"staticSpawns":109,"roamingPacks":24,"source":"azerothcore"},{"dungeonId":"stormwind-stockade","mapId":34,"encounters":5,"entities":11,"staticSpawns":93,"roamingPacks":0,"source":"azerothcore"},{"dungeonId":"deadmines","mapId":36,"encounters":7,"entities":22,"staticSpawns":179,"roamingPacks":23,"source":"azerothcore"},{"dungeonId":"wailing-caverns","mapId":43,"encounters":8,"entities":20,"staticSpawns":252,"roamingPacks":7,"source":"azerothcore"},{"dungeonId":"razorfen-kraul","mapId":47,"encounters":7,"entities":38,"staticSpawns":179,"roamingPacks":12,"source":"azerothcore"},{"dungeonId":"blackfathom-deeps","mapId":48,"encounters":6,"entities":27,"staticSpawns":201,"roamingPacks":10,"source":"azerothcore"},{"dungeonId":"uldaman","mapId":70,"encounters":7,"entities":38,"staticSpawns":302,"roamingPacks":12,"source":"azerothcore"},{"dungeonId":"gnomeregan","mapId":90,"encounters":4,"entities":31,"staticSpawns":371,"roamingPacks":31,"source":"azerothcore"},{"dungeonId":"sunken-temple","mapId":109,"encounters":4,"entities":33,"staticSpawns":245,"roamingPacks":4,"source":"azerothcore"},{"dungeonId":"razorfen-downs","mapId":129,"encounters":6,"entities":25,"staticSpawns":194,"roamingPacks":13,"source":"azerothcore"},{"dungeonId":"scarlet-monastery","mapId":189,"encounters":5,"entities":37,"staticSpawns":310,"roamingPacks":16,"source":"azerothcore"},{"dungeonId":"zulfarrak","mapId":209,"encounters":5,"entities":21,"staticSpawns":252,"roamingPacks":14,"source":"azerothcore"},{"dungeonId":"blackrock-spire","mapId":229,"encounters":15,"entities":78,"staticSpawns":566,"roamingPacks":22,"source":"azerothcore"},{"dungeonId":"blackrock-depths","mapId":230,"encounters":13,"entities":61,"staticSpawns":1040,"roamingPacks":15,"source":"azerothcore"},{"dungeonId":"scholomance","mapId":289,"encounters":8,"entities":38,"staticSpawns":326,"roamingPacks":16,"source":"azerothcore"},{"dungeonId":"stratholme","mapId":329,"encounters":9,"entities":50,"staticSpawns":431,"roamingPacks":29,"source":"azerothcore"},{"dungeonId":"maraudon","mapId":349,"encounters":8,"entities":33,"staticSpawns":525,"roamingPacks":20,"source":"azerothcore"},{"dungeonId":"ragefire-chasm","mapId":389,"encounters":4,"entities":11,"staticSpawns":127,"roamingPacks":4,"source":"azerothcore"},{"dungeonId":"dire-maul","mapId":429,"encounters":12,"entities":75,"staticSpawns":756,"roamingPacks":59,"source":"azerothcore"},{"dungeonId":"shattered-halls","mapId":540,"encounters":3,"entities":32,"staticSpawns":198,"roamingPacks":13,"source":"azerothcore"},{"dungeonId":"blood-furnace","mapId":542,"encounters":3,"entities":17,"staticSpawns":139,"roamingPacks":13,"source":"azerothcore"},{"dungeonId":"hellfire-ramparts","mapId":543,"encounters":2,"entities":12,"staticSpawns":85,"roamingPacks":12,"source":"azerothcore"},{"dungeonId":"steamvault","mapId":545,"encounters":3,"entities":17,"staticSpawns":127,"roamingPacks":17,"source":"azerothcore"},{"dungeonId":"underbog","mapId":546,"encounters":4,"entities":22,"staticSpawns":161,"roamingPacks":23,"source":"azerothcore"},{"dungeonId":"slave-pens","mapId":547,"encounters":3,"entities":21,"staticSpawns":122,"roamingPacks":32,"source":"azerothcore"},{"dungeonId":"arcatraz","mapId":552,"encounters":4,"entities":29,"staticSpawns":85,"roamingPacks":9,"source":"azerothcore"},{"dungeonId":"botanica","mapId":553,"encounters":5,"entities":29,"staticSpawns":169,"roamingPacks":15,"source":"azerothcore"},{"dungeonId":"mechanar","mapId":554,"encounters":3,"entities":17,"staticSpawns":84,"roamingPacks":14,"source":"azerothcore"},{"dungeonId":"shadow-labyrinth","mapId":555,"encounters":4,"entities":22,"staticSpawns":189,"roamingPacks":13,"source":"azerothcore"},{"dungeonId":"sethekk-halls","mapId":556,"encounters":2,"entities":16,"staticSpawns":104,"roamingPacks":24,"source":"azerothcore"},{"dungeonId":"mana-tombs","mapId":557,"encounters":3,"entities":14,"staticSpawns":119,"roamingPacks":15,"source":"azerothcore"},{"dungeonId":"auchenai-crypts","mapId":558,"encounters":2,"entities":14,"staticSpawns":93,"roamingPacks":37,"source":"azerothcore"},{"dungeonId":"magisters-terrace","mapId":585,"encounters":3,"entities":18,"staticSpawns":145,"roamingPacks":8,"source":"azerothcore"},{"dungeonId":"black-morass","mapId":269,"encounters":3,"entitiesLine truncated
|
||||
{"schemaVersion":1,"source":{"campaignManifest":"dungeon-pipeline/dungeon-campaign.json","environmentPackages":["src/game/generated/fivePlayerDungeonImports.json","src/game/generated/manastormAssetPackages.json (temporary fallback)"],"encounterCatalog":"src/game/generated/manastormRuntimeCatalog.json","azerothCoreCommit":"4d9d1d4b5723e819c5c390f6ca1177283dbfb8e3","azerothCoreSourceLock":"src/game/generated/azerothCoreSourceLock.json","spellCatalog":{"ascension":"../LadiksMPQEditor/client-current/area-52/patch-D/DBFilesClient/Spell.dbc","epoch":"../HealerMan-Storage/pipeline-work/dungeons/epoch-client/DBFilesClient/Spell.dbc"}},"coverage":[{"dungeonId":"shadowfang-keep","mapId":33,"encounters":7,"entities":31,"staticSpawns":109,"roamingPacks":24,"source":"azerothcore"},{"dungeonId":"stormwind-stockade","mapId":34,"encounters":5,"entities":11,"staticSpawns":93,"roamingPacks":0,"source":"azerothcore"},{"dungeonId":"deadmines","mapId":36,"encounters":7,"entities":22,"staticSpawns":179,"roamingPacks":23,"source":"azerothcore"},{"dungeonId":"wailing-caverns","mapId":43,"encounters":8,"entities":20,"staticSpawns":252,"roamingPacks":7,"source":"azerothcore"},{"dungeonId":"razorfen-kraul","mapId":47,"encounters":7,"entities":38,"staticSpawns":179,"roamingPacks":12,"source":"azerothcore"},{"dungeonId":"blackfathom-deeps","mapId":48,"encounters":6,"entities":27,"staticSpawns":201,"roamingPacks":10,"source":"azerothcore"},{"dungeonId":"uldaman","mapId":70,"encounters":7,"entities":38,"staticSpawns":302,"roamingPacks":12,"source":"azerothcore"},{"dungeonId":"gnomeregan","mapId":90,"encounters":4,"entities":31,"staticSpawns":371,"roamingPacks":31,"source":"azerothcore"},{"dungeonId":"sunken-temple","mapId":109,"encounters":4,"entities":33,"staticSpawns":245,"roamingPacks":4,"source":"azerothcore"},{"dungeonId":"razorfen-downs","mapId":129,"encounters":6,"entities":25,"staticSpawns":194,"roamingPacks":13,"source":"azerothcore"},{"dungeonId":"scarlet-monastery","mapId":189,"encounters":5,"entities":37,"staticSpawns":310,"roamingPacks":16,"source":"azerothcore"},{"dungeonId":"zulfarrak","mapId":209,"encounters":5,"entities":21,"staticSpawns":252,"roamingPacks":14,"source":"azerothcore"},{"dungeonId":"blackrock-spire","mapId":229,"encounters":15,"entities":78,"staticSpawns":566,"roamingPacks":22,"source":"azerothcore"},{"dungeonId":"blackrock-depths","mapId":230,"encounters":13,"entities":61,"staticSpawns":1040,"roamingPacks":15,"source":"azerothcore"},{"dungeonId":"scholomance","mapId":289,"encounters":8,"entities":38,"staticSpawns":326,"roamingPacks":16,"source":"azerothcore"},{"dungeonId":"stratholme","mapId":329,"encounters":9,"entities":50,"staticSpawns":431,"roamingPacks":29,"source":"azerothcore"},{"dungeonId":"maraudon","mapId":349,"encounters":8,"entities":33,"staticSpawns":525,"roamingPacks":20,"source":"azerothcore"},{"dungeonId":"ragefire-chasm","mapId":389,"encounters":4,"entities":11,"staticSpawns":127,"roamingPacks":4,"source":"azerothcore"},{"dungeonId":"dire-maul","mapId":429,"encounters":12,"entities":75,"staticSpawns":756,"roamingPacks":59,"source":"azerothcore"},{"dungeonId":"shattered-halls","mapId":540,"encounters":3,"entities":32,"staticSpawns":198,"roamingPacks":13,"source":"azerothcore"},{"dungeonId":"blood-furnace","mapId":542,"encounters":3,"entities":17,"staticSpawns":139,"roamingPacks":13,"source":"azerothcore"},{"dungeonId":"hellfire-ramparts","mapId":543,"encounters":2,"entities":12,"staticSpawns":85,"roamingPacks":12,"source":"azerothcore"},{"dungeonId":"steamvault","mapId":545,"encounters":3,"entities":17,"staticSpawns":127,"roamingPacks":17,"source":"azerothcore"},{"dungeonId":"underbog","mapId":546,"encounters":4,"entities":22,"staticSpawns":161,"roamingPacks":23,"source":"azerothcore"},{"dungeonId":"slave-pens","mapId":547,"encounters":3,"entities":21,"staticSpawns":122,"roamingPacks":32,"source":"azerothcore"},{"dungeonId":"arcatraz","mapId":552,"encounters":4,"entities":29,"staticSpawns":85,"roamingPacks":9,"source":"azerothcore"},{"dungeonId":"botanica","mapId":553,"encounters":5,"entities":29,"staticSpawns":169,"roamingPacks":15,"source":"azerothcore"},{"dungeonId":"mechanar","mapId":554,"encounters":3,"entities":17,"staticSpawns":84,"roamingPacks":14,"source":"azerothcore"},{"dungeonId":"shadow-labyrinth","mapId":555,"encounters":4,"entities":22,"staticSpawns":189,"roamingPacks":13,"source":"azerothcore"},{"dungeonId":"sethekk-halls","mapId":556,"encounters":2,"entities":16,"staticSpawns":104,"roamingPacks":24,"source":"azerothcore"},{"dungeonId":"mana-tombs","mapId":557,"encounters":3,"entities":14,"staticSpawns":119,"roamingPacks":15,"source":"azerothcore"},{"dungeonId":"auchenai-crypts","mapId":558,"encounters":2,"entities":14,"staticSpawns":93,"roamingPacks":37,"source":"azerothcore"},{"dungeonId":"magisters-terrace","mapId":585,"encounters":3,"entities":18,"staticSpawns":145,"roamingPacks":8,"source":"azerothcore"},{"dungeonId":"black-morass","mapId":269,"encounters":3,"entitiesLine truncated
|
||||
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
Reference in new issue
Block a user