Update Healer Man server
This commit is contained in:
1 parent
4c768fbec6
commit
b16821e92e
330 files changed
+35406
-1760
No files matched your search
@@ -1,5 +1,48 @@
|
||||
import type { AbilityDefinition, AbilityEffect } from "./abilityCatalog";
|
||||
|
||||
export const ROM_PRIEST_WARRIOR_CONDENSED_RAGE_PHYSICAL_DAMAGE_BONUS = 0.22;
|
||||
export const ROM_PRIEST_CHAMPION_RAGE_CONTROL_PER_COMPLETED_CHANNEL_SECOND = 20;
|
||||
export const ROM_PRIEST_CHAMPION_RAGE_CONTROL_CHANNEL_SECOND_MS = 1_000;
|
||||
export const ROM_PRIEST_VOW_OF_SILENCE_NPC_DURATION_MS = 8_400;
|
||||
export const ROM_PRIEST_VOW_OF_SILENCE_CHARACTER_DURATION_MS = 4_200;
|
||||
|
||||
/** Current CoA Vow of Silence is 8.4s on NPCs and 4.2s on player targets. */
|
||||
export function romPriestVowOfSilenceDurationMs(characterDefender: boolean): number {
|
||||
return characterDefender
|
||||
? ROM_PRIEST_VOW_OF_SILENCE_CHARACTER_DURATION_MS
|
||||
: ROM_PRIEST_VOW_OF_SILENCE_NPC_DURATION_MS;
|
||||
}
|
||||
|
||||
/** Current CoA Condensed Rage (493038) passively increases Physical Damage by 22%. */
|
||||
export function romPriestWarriorCondensedRagePhysicalDamageMultiplier(
|
||||
hasCondensedRage: boolean,
|
||||
): number {
|
||||
return hasCondensedRage
|
||||
? 1 + ROM_PRIEST_WARRIOR_CONDENSED_RAGE_PHYSICAL_DAMAGE_BONUS
|
||||
: 1;
|
||||
}
|
||||
|
||||
export type RomPriestChampionRageControlProgress =
|
||||
| { kind: "channel"; durationMs: number }
|
||||
| { kind: "ordinary-cast"; durationMs: number };
|
||||
|
||||
/**
|
||||
* Current CoA Rage Control (498610) grants 20 Rage per second of channeling.
|
||||
* Only whole completed channel-seconds pay out; an ordinary cast never counts.
|
||||
*/
|
||||
export function romPriestChampionRageControlGain(
|
||||
learnedRageControl: boolean,
|
||||
progress: RomPriestChampionRageControlProgress,
|
||||
): number {
|
||||
if (!learnedRageControl || progress.kind !== "channel"
|
||||
|| !Number.isFinite(progress.durationMs) || progress.durationMs <= 0) return 0;
|
||||
|
||||
const completedSeconds = Math.floor(
|
||||
progress.durationMs / ROM_PRIEST_CHAMPION_RAGE_CONTROL_CHANNEL_SECOND_MS,
|
||||
);
|
||||
return completedSeconds * ROM_PRIEST_CHAMPION_RAGE_CONTROL_PER_COMPLETED_CHANNEL_SECOND;
|
||||
}
|
||||
|
||||
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";
|
||||
@@ -23,16 +66,15 @@ const PROTECTION_RUNE_SEAL_REGENERATE_PROC_AURA = {
|
||||
}],
|
||||
};
|
||||
|
||||
/** Infused Light Chain removes Chain of Light's base cooldown for Priest/Champion. */
|
||||
/**
|
||||
* 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.
|
||||
*/
|
||||
export function romPriestChampionCooldownOverride(
|
||||
ability: AbilityDefinition,
|
||||
learnedPassiveSourceIds: readonly number[],
|
||||
_ability: AbilityDefinition,
|
||||
_learnedPassiveSourceIds: readonly number[],
|
||||
): number | null {
|
||||
if (ability.source !== "runewaker"
|
||||
|| ability.classId !== "rom-priest"
|
||||
|| ability.dbcSpellId !== 491164
|
||||
|| !learnedPassiveSourceIds.includes(498610)) return null;
|
||||
return 0;
|
||||
return null;
|
||||
}
|
||||
|
||||
/** Righteous Explosion removes every modeled harmful effect from the party. */
|
||||
|
||||
Reference in new issue
Block a user