Update class mechanics, stat rulesets, and CoA reference catalogs
This commit is contained in:
1 parent
b16821e92e
commit
39458d5de6
221 files changed
+2584962
-568
No files matched your search
@@ -1,4 +1,5 @@
|
||||
import type { AbilityDefinition, AbilityEffect } from "./abilityCatalog";
|
||||
import type { ProcTrigger } from "./combatAuras";
|
||||
|
||||
export const ROM_PRIEST_WARRIOR_CONDENSED_RAGE_PHYSICAL_DAMAGE_BONUS = 0.22;
|
||||
export const ROM_PRIEST_CHAMPION_RAGE_CONTROL_PER_COMPLETED_CHANNEL_SECOND = 20;
|
||||
@@ -46,6 +47,10 @@ export function romPriestChampionRageControlGain(
|
||||
export const ROM_PRIEST_CHAMPION_REGENERATE_PROC_ID = "rom-priest-protection-rune-seal-reset";
|
||||
export const ROM_PRIEST_CHAMPION_REGENERATE_PROC_ACTION_ID = "rom-priest-protection-rune-seal-reset-heart-rune";
|
||||
export const ROM_PRIEST_CHAMPION_REGENERATE_PROC_AURA_ID = "rom-priest-protection-rune-seal-regenerate";
|
||||
export const ROM_PRIEST_CHAMPION_PROTECTION_RUNE_SEAL_SPELL_ID = 498_613;
|
||||
export const ROM_PRIEST_CHAMPION_REGENERATE_SPELL_ID = 490_269;
|
||||
export const ROM_PRIEST_CHAMPION_HEART_RUNE_ENERGY_SPELL_ID = 498_612;
|
||||
/** RuneWaker's exact passive tooltip supplies 8%; current CoA says only "slight chance." */
|
||||
export const ROM_PRIEST_CHAMPION_REGENERATE_PROC_CHANCE = 0.08;
|
||||
|
||||
const ROM_PRIEST_REGENERATE_ABILITY_ID = "rom-priest-general-2";
|
||||
@@ -66,6 +71,32 @@ const PROTECTION_RUNE_SEAL_REGENERATE_PROC_AURA = {
|
||||
}],
|
||||
};
|
||||
|
||||
export interface RomPriestChampionProtectionRuneSealProcContext {
|
||||
readonly primaryClassId: string | null;
|
||||
readonly secondaryClassId?: string | null;
|
||||
readonly learnedPassiveSpellIds: readonly number[];
|
||||
readonly trigger: ProcTrigger;
|
||||
readonly triggeringAbilitySpellId?: number;
|
||||
readonly healingAmount?: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* Protection Rune Seal resets Heart Rune Energy only for a learned exact pair
|
||||
* and a positive periodic heal from Regenerate. The chance roll is owned by
|
||||
* the aura proc definition above.
|
||||
*/
|
||||
export function romPriestChampionProtectionRuneSealProcIsEligible(
|
||||
context: RomPriestChampionProtectionRuneSealProcContext,
|
||||
): boolean {
|
||||
return context.primaryClassId === "rom-priest"
|
||||
&& context.secondaryClassId === "rom-champion"
|
||||
&& context.learnedPassiveSpellIds.includes(ROM_PRIEST_CHAMPION_PROTECTION_RUNE_SEAL_SPELL_ID)
|
||||
&& context.trigger === "periodic"
|
||||
&& context.triggeringAbilitySpellId === ROM_PRIEST_CHAMPION_REGENERATE_SPELL_ID
|
||||
&& Number.isFinite(context.healingAmount)
|
||||
&& (context.healingAmount ?? 0) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* The local Infused Light Chain cooldown rider is not present in current CoA:
|
||||
* ID 498610 is now Rage Control, so it no longer overrides Chain of Light.
|
||||
@@ -86,7 +117,7 @@ export function romPriestChampionCastEffects(
|
||||
if (ability.source === "runewaker"
|
||||
&& ability.classId === "rom-priest"
|
||||
&& ability.dbcSpellId === 490269
|
||||
&& learnedPassiveSpellIds.includes(498613)) {
|
||||
&& learnedPassiveSpellIds.includes(ROM_PRIEST_CHAMPION_PROTECTION_RUNE_SEAL_SPELL_ID)) {
|
||||
return [{
|
||||
kind: "apply-aura",
|
||||
aura: PROTECTION_RUNE_SEAL_REGENERATE_PROC_AURA,
|
||||
|
||||
Reference in new issue
Block a user