forked from phenom/healer-man
Update Healer Man server
This commit is contained in:
1 parent
35dfdaed61
commit
4fb7a0b9c8
161 files changed
+24618
-529
No files matched your search
@@ -350,26 +350,26 @@ describe("accepted RoM Mage/Warlock dwarf pair", () => {
|
||||
});
|
||||
|
||||
it("keeps Elemental Extraction's defense debuff on a critical-hit target", () => {
|
||||
for (const id of ["rom-mage-primary-1", "rom-mage-primary-54"]) {
|
||||
const attack = abilityById(id)!;
|
||||
expect(romMageWarlockCriticalEffects(attack, new Set())).toEqual([]);
|
||||
expect(romMageWarlockCriticalEffects(attack,
|
||||
new Set([ROM_MAGE_WARLOCK_PASSIVE_TAGS.elementalExtraction]))).toEqual([
|
||||
expect.objectContaining({
|
||||
kind: "apply-aura", recipient: "ability-target",
|
||||
aura: expect.objectContaining({
|
||||
disposition: "debuff", durationMs: 10_000,
|
||||
modifiers: expect.arrayContaining([
|
||||
expect.objectContaining({ stat: "armor", value: -0.3 }),
|
||||
expect.objectContaining({ stat: "magical-defense", value: -0.3 }),
|
||||
]),
|
||||
}),
|
||||
const passive = new Set([ROM_MAGE_WARLOCK_PASSIVE_TAGS.elementalExtraction]);
|
||||
expect(romMageWarlockCriticalEffects(abilityById("rom-mage-primary-1")!, passive)).toEqual([]);
|
||||
|
||||
const electricExplosion = abilityById("rom-mage-primary-54")!;
|
||||
expect(romMageWarlockCriticalEffects(electricExplosion, new Set())).toEqual([]);
|
||||
expect(romMageWarlockCriticalEffects(electricExplosion, passive)).toEqual([
|
||||
expect.objectContaining({
|
||||
kind: "apply-aura", recipient: "ability-target",
|
||||
aura: expect.objectContaining({
|
||||
disposition: "debuff", durationMs: 10_000,
|
||||
modifiers: expect.arrayContaining([
|
||||
expect.objectContaining({ stat: "armor", value: -0.3 }),
|
||||
expect.objectContaining({ stat: "magical-defense", value: -0.3 }),
|
||||
]),
|
||||
}),
|
||||
]);
|
||||
}
|
||||
}),
|
||||
]);
|
||||
});
|
||||
|
||||
it("triggers Elemental Extraction's target debuff on a live critical Flame hit", () => {
|
||||
it("triggers Elemental Extraction's target debuff on a live critical Electric Explosion hit", () => {
|
||||
initialize(79);
|
||||
registerTarget("critical-extraction-dummy");
|
||||
useCombatStore.setState((state) => ({
|
||||
@@ -386,7 +386,7 @@ describe("accepted RoM Mage/Warlock dwarf pair", () => {
|
||||
now: 1_000,
|
||||
}).auras,
|
||||
}));
|
||||
expect(useCombatStore.getState().castAbility("rom-mage-primary-1", undefined, 1_000))
|
||||
expect(useCombatStore.getState().castAbility("rom-mage-primary-54", undefined, 1_000))
|
||||
.toMatchObject({ ok: true });
|
||||
useCombatStore.getState().tick(0.1, 4_100);
|
||||
expect(useCombatStore.getState().auras.some((aura) => aura.targetId === "critical-extraction-dummy"
|
||||
@@ -448,19 +448,19 @@ describe("accepted RoM Mage/Warlock dwarf pair", () => {
|
||||
expect((reduced.threat - 1) / (baseline.threat - 1)).toBeCloseTo(0.9, 5);
|
||||
});
|
||||
|
||||
it("applies Elemental Extraction's defense reduction to the target's live magic mitigation", () => {
|
||||
it("applies Elemental Extraction's defense reduction to Electric Explosion's live magic mitigation", () => {
|
||||
const targetId = "extraction-defense-dummy";
|
||||
const castFlame = (useDebuff: boolean) => {
|
||||
const castElectricExplosion = (useDebuff: boolean) => {
|
||||
initialize(60);
|
||||
useCombatStore.getState().registerMob(targetId, {
|
||||
name: targetId,
|
||||
maxHealth: 100_000,
|
||||
resistances: { fire: 1_000 },
|
||||
resistances: { nature: 1_400 },
|
||||
});
|
||||
setMobPosition(targetId, [3, 0, 0]);
|
||||
useCombatStore.getState().selectMob(targetId);
|
||||
if (useDebuff) {
|
||||
const rider = romMageWarlockCriticalEffects(abilityById("rom-mage-primary-1")!,
|
||||
const rider = romMageWarlockCriticalEffects(abilityById("rom-mage-primary-54")!,
|
||||
new Set([ROM_MAGE_WARLOCK_PASSIVE_TAGS.elementalExtraction]))[0];
|
||||
expect(rider.kind).toBe("apply-aura");
|
||||
if (rider.kind !== "apply-aura") throw new Error("Elemental Extraction debuff missing");
|
||||
@@ -473,14 +473,14 @@ describe("accepted RoM Mage/Warlock dwarf pair", () => {
|
||||
}).auras,
|
||||
}));
|
||||
}
|
||||
expect(useCombatStore.getState().castAbility("rom-mage-primary-1", undefined, 1_000))
|
||||
expect(useCombatStore.getState().castAbility("rom-mage-primary-54", undefined, 1_000))
|
||||
.toMatchObject({ ok: true });
|
||||
useCombatStore.getState().tick(0.1, 4_100);
|
||||
return useCombatStore.getState().mobs[targetId]!.maxHealth
|
||||
- useCombatStore.getState().mobs[targetId]!.health;
|
||||
};
|
||||
const baselineDamage = castFlame(false);
|
||||
const reducedDefenseDamage = castFlame(true);
|
||||
const baselineDamage = castElectricExplosion(false);
|
||||
const reducedDefenseDamage = castElectricExplosion(true);
|
||||
expect(baselineDamage).toBeGreaterThan(0);
|
||||
expect(reducedDefenseDamage).toBeGreaterThan(baselineDamage);
|
||||
});
|
||||
|
||||
Reference in new issue
Block a user