updating buff and debuff icons. separated COA classes from WoW classes on the character creation screen
This commit is contained in:
+19
-8
@@ -83,6 +83,7 @@ import {
|
||||
resolveResourceValue as resolveAuraResourceValue,
|
||||
resolveStatValue as resolveAuraStatValue,
|
||||
type ActiveAura,
|
||||
type AuraDefinition,
|
||||
type ProcEvent,
|
||||
type TriggeredAuraProc,
|
||||
} from "./combatAuras";
|
||||
@@ -1464,6 +1465,18 @@ function aurasForEntity(auras: readonly ActiveAura[], entityId: string): ActiveA
|
||||
return auras.filter((aura) => aura.targetId === entityId);
|
||||
}
|
||||
|
||||
function auraDefinitionForAbility(
|
||||
definition: AuraDefinition,
|
||||
ability: AbilityDefinition,
|
||||
durationMs = definition.durationMs,
|
||||
): AuraDefinition {
|
||||
return {
|
||||
...definition,
|
||||
icon: definition.icon ?? ability.icon,
|
||||
durationMs,
|
||||
};
|
||||
}
|
||||
|
||||
function applyAuraStats(base: CharacterStats, auras: readonly ActiveAura[]): CharacterStats {
|
||||
const stat = (value: number, ...names: string[]) => names.reduce(
|
||||
(current, name) => resolveAuraStatValue(current, auras, name),
|
||||
@@ -1534,7 +1547,7 @@ function syncPassiveAuras(
|
||||
const ability = abilityAtLevel(catalogAbility, level, learnedRank);
|
||||
return ability.effects
|
||||
.filter((effect): effect is Extract<AbilityEffect, { kind: "apply-aura" }> => effect.kind === "apply-aura")
|
||||
.map((effect) => effect.aura);
|
||||
.map((effect) => auraDefinitionForAbility(effect.aura, ability));
|
||||
});
|
||||
const passiveIds = new Set(definitions.map((definition) => definition.id));
|
||||
let next = current.filter((aura) => (
|
||||
@@ -2125,7 +2138,7 @@ function executeTriggeredSpellInWork(
|
||||
? sourceId
|
||||
: targetId ?? sourceId;
|
||||
work.auras = [...applyCombatAura(work.auras, {
|
||||
definition: effect.aura,
|
||||
definition: auraDefinitionForAbility(effect.aura, ability),
|
||||
sourceId,
|
||||
targetId: recipient,
|
||||
now,
|
||||
@@ -3156,12 +3169,10 @@ export const useCombatStore = create<CombatState>((set, get) => ({
|
||||
}, ability.id, now);
|
||||
}
|
||||
} else if (effect.kind === "apply-aura") {
|
||||
const auraDefinition = effect.aura.durationMs === null
|
||||
? effect.aura
|
||||
: {
|
||||
...effect.aura,
|
||||
durationMs: talentAdjustedDuration(effect.aura.durationMs, ability, modifiers),
|
||||
};
|
||||
const durationMs = effect.aura.durationMs === null
|
||||
? null
|
||||
: talentAdjustedDuration(effect.aura.durationMs, ability, modifiers);
|
||||
const auraDefinition = auraDefinitionForAbility(effect.aura, ability, durationMs);
|
||||
const recipients = effect.recipient === "caster"
|
||||
? [PLAYER_AURA_ENTITY_ID]
|
||||
: ability.target === "hostile"
|
||||
|
||||
Reference in New Issue
Block a user