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,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,
|
||||
}],
|
||||
},
|
||||
};
|
||||
}
|
||||
Reference in new issue
Block a user