Update Healer Man server

This commit is contained in:
phenom committed 2026-09-30 09:57:13 -04:00
1 parent 35dfdaed61
commit 4fb7a0b9c8
161 files changed
+24618 -529

No files matched your search

+66
View File
@@ -0,0 +1,66 @@
import type { AbilityDefinition } from "./abilityCatalog";
import type { AuraDefinition, AuraModifier } from "./combatAuras";
/** RuneWaker's local payload for Scout/Priest passive 493010. */
export const ROM_SCOUT_PRIEST_DRUMS_OF_WAR = Object.freeze({
passiveSpellId: 493010,
triggerSpellId: 490423,
internalCooldownMs: 15_000,
durationMs: 8_000,
radius: 50,
modifiers: [
{ kind: "stat", stat: "physical-critical-strike", operation: "flat", value: 20 },
{ kind: "stat", stat: "magical-critical-strike", operation: "flat", value: 20 },
] satisfies readonly AuraModifier[],
cooldownKey: "rom-scout-priest:drums-of-war",
});
export const ROM_SCOUT_PRIEST_DRUMS_OF_WAR_AURA: AuraDefinition = Object.freeze({
id: "rom-scout-priest:drums-of-war",
name: "Drums of War",
description: "Increases physical and magical critical strike by 20 for 8 seconds.",
disposition: "buff",
durationMs: ROM_SCOUT_PRIEST_DRUMS_OF_WAR.durationMs,
stackBehavior: "replace",
uniqueBySource: true,
modifiers: ROM_SCOUT_PRIEST_DRUMS_OF_WAR.modifiers,
});
export interface RomScoutPriestDrumsOfWarProc {
readonly internalCooldownMs: number;
readonly durationMs: number;
/** The RuneWaker tooltip says nearby party; 50 is from the CoA range field. */
readonly radius: number;
readonly scope: "party";
readonly modifiers: readonly AuraModifier[];
}
/** Select Drums of War's exact sourced payload after a landed Shot when its ICD is ready. */
export function romScoutPriestDrumsOfWarProc(
characterClassId: string,
secondaryClassId: string | null | undefined,
ability: Pick<AbilityDefinition, "source" | "classId" | "dbcSpellId">,
learnedPassiveSpellIds: readonly number[],
landed: boolean,
now: number,
readyAt: number,
attackKind: "melee" | "ranged" | "spell" = "ranged",
): RomScoutPriestDrumsOfWarProc | null {
if (characterClassId !== "rom-scout"
|| secondaryClassId !== "rom-priest"
|| ability.source !== "runewaker"
|| ability.classId !== "rom-scout"
|| ability.dbcSpellId !== ROM_SCOUT_PRIEST_DRUMS_OF_WAR.triggerSpellId
|| attackKind !== "ranged"
|| !learnedPassiveSpellIds.includes(ROM_SCOUT_PRIEST_DRUMS_OF_WAR.passiveSpellId)
|| !landed
|| now < readyAt) return null;
return {
internalCooldownMs: ROM_SCOUT_PRIEST_DRUMS_OF_WAR.internalCooldownMs,
durationMs: ROM_SCOUT_PRIEST_DRUMS_OF_WAR.durationMs,
radius: ROM_SCOUT_PRIEST_DRUMS_OF_WAR.radius,
scope: "party",
modifiers: ROM_SCOUT_PRIEST_DRUMS_OF_WAR.modifiers,
};
}