This adds a new fitment, rangered, which reduces the range of enemies in an AoE. Range reduction works by applying the effect in the block after targeting someone. So at the end of block N, Alice may target Bob with her range reducer, which is then shown as "disrupting" Bob's systems in the frontend while waiting for block N+1. Then at the beginning of block N+1, Bob's range gets actually reduced by Alice's attack, although Bob's attacks are still done normally. But when targeting happens at the end of block N+1 (and then while dealing damage at block N+2), Bob's range is reduced accordingly.
To make this work, we change the way effects are computed and updated: Instead of applying them during damaging directly and then clearing them at the end of the block, we compute a set of "new" effects during damaging, and then atomically replace all effects with the new effects between damaging and regeneration. This ensures that even effects that affect attacks themselves (like the range reduction) are processed in a way that has no weird order dependencies.
For now, only the lf variant of the range reducer is defined as fitment. Other variants will be added with a general data update as per #142.
This adds a new fitment,
rangered
, which reduces the range of enemies in an AoE. Range reduction works by applying the effect in the block after targeting someone. So at the end of block N, Alice may target Bob with her range reducer, which is then shown as "disrupting" Bob's systems in the frontend while waiting for block N+1. Then at the beginning of block N+1, Bob's range gets actually reduced by Alice's attack, although Bob's attacks are still done normally. But when targeting happens at the end of block N+1 (and then while dealing damage at block N+2), Bob's range is reduced accordingly.To make this work, we change the way effects are computed and updated: Instead of applying them during damaging directly and then clearing them at the end of the block, we compute a set of "new" effects during damaging, and then atomically replace all effects with the new effects between damaging and regeneration. This ensures that even effects that affect attacks themselves (like the range reduction) are processed in a way that has no weird order dependencies.
For now, only the
lf
variant of the range reducer is defined as fitment. Other variants will be added with a general data update as per #142.