Mist
Description
The formula processing of a Quickening, Concurrence and Esper-Ultimate works slightly differently than with other actions.
Since an action's event animation is played after its formula is applied, it's important that both the caster and target are not yet effected by its changes. Otherwise it can cause issues in certain scenarios (e.g. if target is KO'd).
Therefore, these actions won't affect their caster and target immediately. Instead, all changes are first internally merged and then applied to both characters after all event animations are finished.
As a result, it's impossible to determine to which extent the caster and target have already been affected during a Quickening or Concurrence.
Example
Vaan, Balthier and Ashe are in the active party and in a battle with Wolf A and Wolf B. Vaan casts Red Spiral on Wolf A. Afterwards, Balthier continues the chain with Fires of War, followed by Ashe with Intercession. Finally, the Quickening chain ends which triggers the Concurrence Inferno.
On Cast
Vaan
Wolf A
Red Spiral
On Hit
Vaan
Wolf A
Red Spiral
On Cast
Balthier
Wolf A
Fires of War
On Hit
Balthier
Wolf A
Fires of War
On Cast
Ashe
Wolf A
Intercession
On Hit
Ashe
Wolf A
Intercession
On Cast
Ashe
Wolf A
Inferno
On Cast
Ashe
Wolf B
Inferno
On Hit
Ashe
Wolf A
Inferno
On Hit
Ashe
Wolf B
Inferno
On Mist End
Vaan
Vaan
Red Spiral
On Mist End
Vaan
Wolf A
Red Spiral
On Mist End
Vaan
Balthier
Fires of War
On Mist End
Vaan
Ashe
Intercession
On Mist End
Vaan
Wolf B
Inferno
After OnHit middleware functions are executed for each caster and target, their changes are internally merged and then preserved. Once the Quickening chain ends, the changes are applied via OnMistEnd middleware functions.
Merge Operations
Each property uses one of 3 operations (Add, Or, Mov) when it's merged. Based on the property, it might be preferable to either overwrite the last actions' changes or only add to them.
Assume a Quickening reduces the target's HP by 100 and randomly either applies the status effect Slow or Blind, with a duration based on the caster's vitality.
If the Quickening is executed twice, the properties would be merged as follows:
Removed HP
Add
100
100
200
Status Effect State
Or
0
1
1
Status Effect Duration
Mov
100
120
120
The removedHp
property uses the merge operation Add
. So the new value is being added on top of the currently preserved value. That way, the target's hp can be reduced by more than just 100.
The addedStatusEffects
property uses the merge operation Or
. So the new value overwrites the currently preserved value, but only if the latter is 0. That way, all of the target's status effects can be modified at once, but an action can also never remove the added status effects of the actions executed before it.
The addedStatusEffectDurations
property uses the merge operation Mov
. So the new value always overwrites the currently preserved value. That way, the formula's intent is not only preserved, but there is also an incentive to smartly chain Quickenings.
For a list of which properties use which merge operation, you can check out the mod spreadsheet in Resources.
Notes
Last updated