forked from phenom/healer-man
Release Healer Man 0.1.44
This commit is contained in:
1 parent
ccc01396cd
commit
756ee4f64a
24 files changed
+575
-46
No files matched your search
@@ -6,6 +6,10 @@ import { useGameStore } from "./store";
|
||||
import { useCombatStore } from "./combatStore";
|
||||
import { bossTestIsDefeated } from "./BossTestingBridge";
|
||||
import type { DungeonDefinition } from "./dungeonTypes";
|
||||
import { dungeonEnemyScaling } from "./dungeonBossScaling";
|
||||
import { creatureRuntimeBaseStats } from "./azerothCoreReference";
|
||||
import { bossDifficultyMultipliers } from "./dungeonDifficulty";
|
||||
import { finalDungeonBoss } from "./dungeonRunStore";
|
||||
|
||||
afterEach(() => {
|
||||
useGameStore.getState().activateDungeon("wailing-caverns");
|
||||
@@ -56,6 +60,39 @@ describe("Boss Testing", () => {
|
||||
expect(useGameStore.getState()).toMatchObject({ gmTestMode: true, bossTest: room.session, overlay: null });
|
||||
});
|
||||
|
||||
it("uses Celebras's native health at the player's scaled level without campaign health floors", () => {
|
||||
const celebras = BOSS_TESTING_CATALOG.find((entry) => entry.name === "Celebras the Cursed")!;
|
||||
const maraudon = requireDungeonDefinition(celebras.dungeonId);
|
||||
const room = createBossTestingRoom(maraudon, celebras);
|
||||
const entity = room.definition.entities[celebras.entityId];
|
||||
const scale = (level: number, difficulty = 1) => dungeonEnemyScaling(room.definition, entity,
|
||||
celebras.spawn.id, level, room.definition.defaultDifficultyId, difficulty);
|
||||
const nativeHealth = creatureRuntimeBaseStats(entity.combat!.serverEntry!, 2)!.health
|
||||
* entity.combat!.healthMultiplier!;
|
||||
expect(scale(1)).toMatchObject({ level: 2, maxHealth: nativeHealth });
|
||||
expect(Math.round(scale(1).maxHealth)).toBe(575);
|
||||
expect(scale(8).maxHealth).toBeGreaterThan(scale(1).maxHealth);
|
||||
expect(scale(20).maxHealth).toBeGreaterThan(scale(8).maxHealth);
|
||||
expect(scale(1, 10).maxHealth).toBe(nativeHealth * bossDifficultyMultipliers(10).health);
|
||||
const campaign = dungeonEnemyScaling(maraudon, maraudon.entities[celebras.entityId], celebras.spawn.id,
|
||||
1, maraudon.defaultDifficultyId, 1);
|
||||
expect(campaign.maxHealth).toBe(900);
|
||||
expect(scale(1).damageMultiplier).toBe(campaign.damageMultiplier);
|
||||
expect(entity.combat?.attacks).toEqual(maraudon.entities[celebras.entityId].combat?.attacks);
|
||||
});
|
||||
|
||||
it("omits the campaign finale bonus even when testing the source dungeon's final boss", () => {
|
||||
const final = finalDungeonBoss(source)!;
|
||||
const finalBoss = BOSS_TESTING_CATALOG.find((entry) => entry.dungeonId === source.id && entry.spawn.id === final.id)!;
|
||||
const room = createBossTestingRoom(source, finalBoss);
|
||||
const entity = room.definition.entities[finalBoss.entityId];
|
||||
const testing = dungeonEnemyScaling(room.definition, entity, finalBoss.spawn.id, 1, source.defaultDifficultyId, 1);
|
||||
const campaign = dungeonEnemyScaling(source, entity, finalBoss.spawn.id, 1, source.defaultDifficultyId, 1);
|
||||
expect(testing.maxHealth).toBe(creatureRuntimeBaseStats(entity.combat!.serverEntry!, 2)!.health
|
||||
* (entity.combat?.healthMultiplier ?? 1));
|
||||
expect(campaign.maxHealth).toBe(Math.max(testing.maxHealth, 900 * 1.8));
|
||||
});
|
||||
|
||||
it("recognizes actual boss deaths and awards no progression or collectible rewards", () => {
|
||||
const room = createBossTestingRoom(source, boss);
|
||||
registerBossTestingDungeon(room.definition, source.id);
|
||||
|
||||
Reference in new issue
Block a user