Modifiers
Review draft. This source page has not completed website editorial and release-specific verification.
V1 modifiers are signed additive int32 amounts. They affect Effective value,
not Starting Value or permanent progression.
Each record has a stable FName ModifierKey, exact SkillId, amount, and
diagnostic SourceContext. Keys are unique across the entire Skill Component.
Setting an existing key on the same Skill updates that record. Reusing an
active key on a different Skill is rejected. A zero amount is rejected and
does not create an inert record. Removing a valid missing key returns
NoChange.
SourceContext is diagnostic metadata, not identity. Reasserting the same logical record with the same source returns NoChange; it does not stack. External bridges should retain stable keys so restore/reconnection can reassert idempotently.
Modifier totals use checked wide arithmetic. Overflow rejects the mutation
without a partial commit. Effective value is calculated as Base plus all active
modifiers, then clamped to the authored Effective Min/Max. The modifier query
returns deterministic key ordering. A record change emits ModifierChanged
even when clamping hides any Effective value change; in that case there is no
EffectiveSkillValueChanged event.