Update Healer Man server

This commit is contained in:
phenom committed 2026-09-20 21:50:50 -04:00
1 parent fdb6739f8d
commit f90ba7d989
41 files changed
+1671 -118

No files matched your search

+20 -1
View File
@@ -3,12 +3,13 @@ import type { ClassId } from "../app/characterCatalog";
import { classCanEquipItem, equipmentSlotForItem } from "./equipment";
import {
compareEquipmentUpgrade,
equipmentStatsForItems,
resolvedAverageItemLevel,
resolvedEquipmentItems,
resolvedEquipmentLoadout,
type HeirloomContext,
} from "./heirloomEquipment";
import { itemStatsFor } from "./itemStats";
import { EMPTY_ITEM_STATS, itemStatsFor } from "./itemStats";
import { LOOT_CATALOG, scaledLootItemLevel, type LootCatalogItem } from "./lootCatalog";
import type { InventoryItem } from "./lootTypes";
import {
@@ -17,6 +18,7 @@ import {
} from "./specializationCatalog";
import { useCombatStore } from "./combatStore";
import { normalizeInventory } from "./lootTypes";
import { deriveCharacterStats } from "./wotlkStats";
const templates = LOOT_CATALOG.bosses.flatMap((boss) => boss.items);
@@ -90,6 +92,23 @@ describe("specialization-aware heirlooms", () => {
expect(combatStats.agility).toBeGreaterThan(0);
});
it.each([
"priest:discipline",
"hunter:marksmanship",
"mage:fire",
"rogue:assassination",
])("turns %s heirloom crit and haste ratings into combat percentages", (specializationId) => {
const profile = SPECIALIZATION_DEFINITIONS.find((definition) => definition.id === specializationId)!;
const gear = equipmentStatsForItems(resolvedEquipmentItems({}, [], context(profile, 80)));
const geared = deriveCharacterStats(profile.classId, 80, gear);
const ungeared = deriveCharacterStats(profile.classId, 80, EMPTY_ITEM_STATS);
expect(gear.criticalStrikeRating).toBeGreaterThan(0);
expect(gear.hasteRating).toBeGreaterThan(0);
expect(Math.max(geared.meleeCritPercent, geared.rangedCritPercent, geared.spellCritPercent))
.toBeGreaterThan(Math.max(ungeared.meleeCritPercent, ungeared.rangedCritPercent, ungeared.spellCritPercent));
expect(Math.max(geared.meleeHastePercent, geared.rangedHastePercent, geared.spellHastePercent)).toBeGreaterThan(0);
});
it.each([1, 40, 79])("keeps compatible same-level boss items below heirlooms at level %i", (level) => {
for (const profile of SPECIALIZATION_DEFINITIONS) {
const loadout = resolvedEquipmentLoadout({}, [], context(profile, level));