forked from phenom/healer-man
Update Healer Man server
This commit is contained in:
1 parent
35dfdaed61
commit
4fb7a0b9c8
161 files changed
+24618
-529
No files matched your search
@@ -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,
|
||||
};
|
||||
}
|
||||
Reference in new issue
Block a user