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

+72
View File
@@ -0,0 +1,72 @@
import type { AuraDefinition, AttackKind } from "./combatAuras";
export const ROM_ROGUE_POISON_SKILL_ID = 490329;
export const ROM_ROGUE_POISON_COMPONENT_ID = 500715;
export const ROM_ROGUE_POISON_TRIGGER_SPELL_ID = 490357;
export const ROM_ROGUE_POISON_AURA_TAG = "rom-poisonous";
export const ROM_ROGUE_POISON_PROC_CHANCE = 0.5;
export const ROM_ROGUE_POISON_MAX_STACKS = 4;
export const ROM_ROGUE_POISON_DEBUFF_DURATION_MS = 900_000;
export interface RomRoguePoisonAttackContext {
readonly classId: string;
readonly sourceActorId: string;
readonly targetActorId: string;
readonly attackKind: AttackKind;
readonly isNormalAttack: boolean;
readonly attackLanded: boolean;
readonly poisonActive: boolean;
readonly roll: number;
}
export interface RomRoguePoisonApplication {
readonly sourceId: string;
readonly targetId: string;
readonly definition: AuraDefinition;
readonly stacks: 1;
}
/**
* RuneWaker Poison (490329/500715) has a 50% on-normal-attack trigger for
* hidden child 490357. Its local tooltip supplies the 2% damage reduction and
* four-stack cap; the child duration is absent locally, so 900 seconds uses
* only the current CoA entry's duration detail.
*/
export function romRoguePoisonApplicationForAttack(
context: RomRoguePoisonAttackContext,
): RomRoguePoisonApplication | null {
if (context.classId !== "rom-rogue"
|| !context.sourceActorId
|| !context.targetActorId
|| context.sourceActorId === context.targetActorId
|| context.attackKind === "spell"
|| !context.isNormalAttack
|| !context.attackLanded
|| !context.poisonActive
|| !Number.isFinite(context.roll)
|| context.roll < 0
|| context.roll >= ROM_ROGUE_POISON_PROC_CHANCE) return null;
return {
sourceId: context.sourceActorId,
targetId: context.targetActorId,
stacks: 1,
definition: {
id: `rom-rogue-poisoned:${ROM_ROGUE_POISON_TRIGGER_SPELL_ID}`,
name: "Poisoned",
disposition: "debuff",
durationMs: ROM_ROGUE_POISON_DEBUFF_DURATION_MS,
maxStacks: ROM_ROGUE_POISON_MAX_STACKS,
stackBehavior: "add",
uniqueBySource: true,
dispelCategory: "poison",
modifiers: [{
kind: "damage",
direction: "dealt",
operation: "percent",
value: -0.02,
perStack: true,
}],
},
};
}