Update Healer Man server

This commit is contained in:
phenom committed 2026-09-26 19:55:08 -04:00
1 parent 83eac6d476
commit 4957b69e86
21 files changed
+170 -40

No files matched your search

+14 -12
View File
@@ -19,7 +19,6 @@ import {
BITE_SIZED_WAILING_CAVERNS_DUNGEON_ID,
} from "../dungeonContentSource";
const DEADMINES_ROUTE_WIDTH = 34;
const SKADI_ROUTE_WIDTH = 32;
function normalizedName(value: string): string {
return value.toLowerCase().replace(/[^a-z0-9]+/g, "");
@@ -331,14 +330,17 @@ export function createBiteSizedUtgardePinnacleDefinition(source: DungeonDefiniti
const skadi = source.objectiveOrder.find((objective) => normalizedName(objective.name) === "skaditheruthless");
const sourceSkadiGroup = source.encounterSpawnGroups?.find((group) => group.id === "utgarde-pinnacle:skadi-ground");
const firstWave = source.encounterSpawnGroups?.find((group) => group.id === "utgarde-pinnacle:skadi-first-wave");
const skadiStart = source.serverGameObjects.find((object) => object.id === "utgarde-pinnacle:skadi-start");
if (!skadi || !sourceSkadiGroup?.spawns[0] || !firstWave?.spawns[0] || !skadiStart) {
if (!skadi || !sourceSkadiGroup?.spawns[0] || !firstWave?.spawns[7]) {
throw new Error("Utgarde Pinnacle is missing the Skadi room content.");
}
// The source start object is across a collision gap from the Skadi corridor.
const startPosition: Vector3Tuple = [-511, 104.8, 370];
const bossPosition = firstWave.spawns[0].position;
const route: readonly Vector3Tuple[] = [skadiStart.position, bossPosition];
const staticSpawns = routeSpawns(source, route, SKADI_ROUTE_WIDTH);
if (staticSpawns.length === 0) throw new Error("Skadi's approach has no room mobs.");
const staticSpawns: readonly StaticMobSpawnDefinition[] = [
firstWave.spawns[7],
firstWave.spawns[6],
firstWave.spawns[5],
];
const skadiSpawn: StaticMobSpawnDefinition = {
...sourceSkadiGroup.spawns[0],
id: skadi.id,
@@ -358,10 +360,10 @@ export function createBiteSizedUtgardePinnacleDefinition(source: DungeonDefiniti
fidelity: "healer-man-authored",
scope: "boss-progression",
files: ["src/game/dungeons/biteSizedWoWDungeons.ts", "src/game/wowWrathEncounterBatchTwoCatalog.ts"],
reviewedBehavior: "Clear the three imported mobs near Eagle's Eye, then confront Skadi on the same walkable approach.",
reviewedBehavior: "Clear three source wave guards along the walkable Skadi corridor, then confront Skadi at its end.",
adaptations: [
"The start interaction, flying phase, harpoons, and long wave sequence are omitted from this short run.",
"Skadi uses the source boss combat data and objective ID at a floor-snapped source wave position near the entrance.",
"Skadi uses the source boss combat data and objective ID at a floor-snapped source wave position at the corridor's end.",
],
remainingGaps: ["The shortened encounter still needs an in-game combat and completion pass."],
},
@@ -393,9 +395,9 @@ export function createBiteSizedUtgardePinnacleDefinition(source: DungeonDefiniti
entrance: {
...source.entrance,
name: "Eagle’s Eye Gauntlet",
footPosition: skadiStart.position,
forward: [-0.167, 0, -0.986],
yaw: -2.974,
footPosition: startPosition,
forward: [0, 0, 1],
yaw: 0,
},
presentation: {
...source.presentation,
@@ -406,7 +408,7 @@ export function createBiteSizedUtgardePinnacleDefinition(source: DungeonDefiniti
unchartedAreaName: "Eagle’s Eye",
},
areas: [
routeArea("entrance", "Eagle’s Eye Gauntlet", skadiStart.position, 30),
routeArea("entrance", "Eagle’s Eye Gauntlet", startPosition, 30),
routeArea("skadi", "Skadi’s Arena", bossPosition, 34),
],
entities: entitiesFor(source, staticSpawns, [], [skadiGroup]),