Validate RoM primary five hybrid stats and pair mechanics

This commit is contained in:
phenom committed 2026-09-23 19:08:44 -04:00
1 parent 8e95480d4f
commit c8b3a3d95a
18 files changed
+2061 -48

No files matched your search

+29 -1
View File
@@ -1130,7 +1130,21 @@ function executePartyAbility(
depth = 0,
castStartAlreadyEmitted = false,
): PartyAbilityExecutionResult {
const combat = useCombatStore.getState();
let combat = useCombatStore.getState();
if (ability.source === "runewaker") {
for (const passive of abilitiesForCharacter(member.classId, member.secondaryClassId)
.filter((candidate) => candidate.passive)
.map((candidate) => learnedAbilityForBuild(candidate, member.level, member.talentRanks))
.filter((candidate): candidate is AbilityDefinition => Boolean(candidate))) {
for (const effect of passive.effects) {
if (effect.kind !== "apply-aura" || effect.recipient !== "caster") continue;
if (combat.auras.some((aura) => aura.sourceId === member.id
&& aura.targetId === member.id && aura.definition.id === effect.aura.id)) continue;
useCombatStore.getState().applyActorAura(member.id, member.id, passive, effect, now);
combat = useCombatStore.getState();
}
}
}
if (ability.name === "Enraged Regeneration" && !combat.consumeActorEnrage(member.id, now)) {
return { member, effectiveAmount: 0 };
}
@@ -1200,6 +1214,20 @@ function executePartyAbility(
specializationId: member.specializationId, role: member.role, level: member.level,
})["main-hand"]?.weaponType === "dagger",
casterMaxHealth: member.maxHealth,
passiveTags: combat.auras.filter((aura) => aura.targetId === member.id)
.flatMap((aura) => aura.definition.utilityTags ?? []).concat(
abilitiesForCharacter(member.classId, member.secondaryClassId)
.filter((candidate) => candidate.passive)
.map((candidate) => learnedAbilityForBuild(candidate, member.level, member.talentRanks))
.filter((candidate): candidate is AbilityDefinition => Boolean(candidate))
.flatMap((candidate) => candidate.effects.flatMap((effect) => effect.kind === "apply-aura"
? effect.aura.utilityTags ?? [] : [])),
),
targetTags: combat.auras.filter((aura) => aura.targetId === targetId)
.flatMap((aura) => aura.definition.utilityTags ?? []).concat(
combat.effects.filter((effect) => effect.targetId === targetId && effect.remainingTicks > 0)
.flatMap((effect) => effect.tag ? [effect.tag] : []),
),
});
for (const effect of castEffects) {
if (ability.name === "Penance" && combat.mobs[targetId]