Release Healer Man 0.1.49

This commit is contained in:
phenom committed 2026-09-17 09:13:15 -04:00
1 parent 39425f2494
commit 612170afd0
91 files changed
+2278 -263

No files matched your search

+20 -8
View File
@@ -1,5 +1,9 @@
import type { ContentCategoryId } from "../app/contentCategories";
import { standardWowDungeonCreatureHealth } from "./azerothCoreReference";
import { clampPlayerLevel } from "./progression";
import type { DungeonExpansion } from "./dungeonTypes";
const ROM_PARTY_HEALTH_SCALE = 1.15;
const COA_PARTY_HEALTH_SCALE = 1.75;
/**
* Normal campaign dungeons scale to the character instead of retaining the
@@ -11,13 +15,21 @@ export function scaledDungeonEnemyLevel(characterLevel: number, boss: boolean):
}
/**
* RoM creatures do not have packaged native health tables. Give their dungeon
* baseline enough growth for a full party's rank-scaled abilities; the old
* 72 + level * 22 solo-target fallback was overwhelmed by the opening volley.
* Authored creature and boss health multipliers are applied separately.
* Enemy durability follows the party's combat catalog, not the dungeon's
* source game. This lets a WoW party take its familiar curve into a RoM
* dungeon while stronger RoM and CoA parties retain meaningful kill times in
* every catalog. Authored creature and boss multipliers are applied separately.
*/
export function dungeonEnemyHealthBaseline(level: number, expansion: DungeonExpansion): number | undefined {
if (expansion !== "runewaker") return undefined;
export function dungeonEnemyHealthBaseline(level: number, partySource: ContentCategoryId): number {
const safeLevel = clampPlayerLevel(level);
return 1_000 + safeLevel * 100 + safeLevel * safeLevel * 8;
if (partySource === "wow") return standardWowDungeonCreatureHealth(safeLevel);
const romBaseline = 1_000 + safeLevel * 100 + safeLevel * safeLevel * 8;
if (partySource === "rom") return romBaseline;
return Math.round(romBaseline * COA_PARTY_HEALTH_SCALE / ROM_PARTY_HEALTH_SCALE);
}
/** Keeps trash and boss source calibration on the same relative power scale. */
export function dungeonPartyHealthScale(partySource: ContentCategoryId): number {
if (partySource === "wow" || partySource === "rom") return 1;
return COA_PARTY_HEALTH_SCALE / ROM_PARTY_HEALTH_SCALE;
}