Update Healer Man server

This commit is contained in:
phenom committed 2026-09-23 16:14:19 -04:00
1 parent f90ba7d989
commit 189b94d6b7
51 files changed
+3448 -154

No files matched your search

+10 -1
View File
@@ -142,6 +142,8 @@ export interface AuraDefinition {
/** Null means the aura persists until explicitly removed. */
readonly durationMs: number | null;
readonly maxStacks?: number;
/** Initial stack count for charged buffs such as Inner Fire. */
readonly initialStacks?: number;
readonly stackBehavior?: AuraStackBehavior;
/** Defaults to true. False makes applications from all sources share one aura. */
readonly uniqueBySource?: boolean;
@@ -172,6 +174,8 @@ export interface ActiveAura {
readonly stacks: number;
readonly absorbs: readonly AuraAbsorbState[];
readonly procStates: readonly AuraProcState[];
/** Number of Fire critical hits landed during the current Combustion buff. */
readonly combustionCriticalHits?: number;
}
export interface ApplyAuraRequest {
@@ -319,13 +323,18 @@ export function applyAura(
): AuraApplicationResult {
const { definition } = request;
const maxStacks = boundedPositiveInteger(definition.maxStacks, 1);
const requestedStacks = Math.min(maxStacks, boundedPositiveInteger(request.stacks, 1));
const requestedStacks = Math.min(maxStacks, boundedPositiveInteger(request.stacks ?? definition.initialStacks, 1));
const instanceId = auraIdentity(definition, request.sourceId, request.targetId);
// Mage armors have several DBC effects that coexist until another armor
// replaces them. Other exclusive groups retain their single-aura behavior.
const exclusiveSpellName = definition.name.replace(/, Aura \d+\)$/, ")");
const exclusive = definition.exclusiveGroup
? current.filter((aura) => (
aura.targetId === request.targetId
&& aura.definition.exclusiveGroup === definition.exclusiveGroup
&& aura.instanceId !== instanceId
&& (definition.exclusiveGroup !== "mage:armor"
|| aura.definition.name.replace(/, Aura \d+\)$/, ")") !== exclusiveSpellName)
))
: [];
const exclusiveIds = new Set(exclusive.map((aura) => aura.instanceId));