Fix benchmark maintained aura selection (#18)
This commit is contained in:
1 parent
89b6f4f79d
commit
72a67ac1e3
5 files changed
+205
-13
No files matched your search
@@ -11,6 +11,7 @@ import {
|
||||
import {
|
||||
abilityIsPrecombatPreparation,
|
||||
abilityHasRotationSemantics,
|
||||
abilityAuraMaintainedOnTarget,
|
||||
CLASSIC_ROTATION_PROFILES,
|
||||
COMBAT_ROTATION_VERSION,
|
||||
evaluateCombatRotation,
|
||||
@@ -764,6 +765,52 @@ describe("shared combat rotations", () => {
|
||||
.toBe(lightningBolt.id);
|
||||
});
|
||||
|
||||
it("matches maintained auras by recipient and exact effect while allowing a group override", () => {
|
||||
const auraAbility = (id: string, auraId: string, recipient: "caster" | "ability-target" = "caster") => semanticAbility(id, [{
|
||||
kind: "apply-aura",
|
||||
aura: {
|
||||
id: auraId,
|
||||
name: id,
|
||||
disposition: "buff",
|
||||
durationMs: 300_000,
|
||||
exclusiveGroup: "test:stance",
|
||||
modifiers: [{ kind: "stat", stat: "armor", operation: "flat", value: 10 }],
|
||||
},
|
||||
recipient,
|
||||
sourceEffectType: 6,
|
||||
sourceAuraType: 22,
|
||||
miscValue: 0,
|
||||
triggerSpellId: 0,
|
||||
}], { target: "self" });
|
||||
const stance = auraAbility("stance", "stance-aura");
|
||||
const replacementStance = auraAbility("replacement-stance", "replacement-aura");
|
||||
const allyAura = {
|
||||
...auraAbility("ally-aura", "ally-aura-id", "ability-target"),
|
||||
target: "friendly" as const,
|
||||
};
|
||||
const activeOnSelf = context({
|
||||
selfId: "player",
|
||||
maintainedAuras: [{ auraId: "stance-aura", targetId: "player" }],
|
||||
});
|
||||
|
||||
expect(abilityAuraMaintainedOnTarget(stance, activeOnSelf, "player")).toBe(true);
|
||||
expect(abilityAuraMaintainedOnTarget(allyAura, activeOnSelf, "ally")).toBe(false);
|
||||
expect(abilityAuraMaintainedOnTarget(stance, {
|
||||
...activeOnSelf,
|
||||
maintainedAuras: [{ auraId: "stance-aura", targetId: "ally" }],
|
||||
}, "player")).toBe(false);
|
||||
expect(abilityAuraMaintainedOnTarget(allyAura, {
|
||||
...activeOnSelf,
|
||||
maintainedAuras: [{ auraId: "ally-aura-id", targetId: "player" }],
|
||||
}, "player")).toBe(true);
|
||||
expect(abilityAuraMaintainedOnTarget(replacementStance, activeOnSelf, "player")).toBe(false);
|
||||
expect(abilityAuraMaintainedOnTarget({
|
||||
...stance,
|
||||
effects: [...stance.effects, { kind: "damage", coefficient: 1 }],
|
||||
}, activeOnSelf, "player")).toBe(false);
|
||||
expect(abilityAuraMaintainedOnTarget(stance, { ...activeOnSelf, maintainedAuras: [] }, "player")).toBe(false);
|
||||
});
|
||||
|
||||
it("maintains Earth Shield on a valid full-health ally", () => {
|
||||
const earthShield = ability("shaman", "Earth Shield");
|
||||
const shaman = context({
|
||||
|
||||
Reference in new issue
Block a user