Propagation Maps
Propagation Maps are used in Alacrity to define how a buff will be propagated to other entities. When a buff is applied to an entity, it may need to be propagated to other entities in the game. Propagation Maps define the rules for how this propagation should occur.
Propagation Maps are immutable, meaning that they should not be changed after they are created. The Propagation struct includes several fields that define how the propagation should occur. These fields include the type of propagation (recursive, direct, or none), the tags to which the buff will be propagated, the tags that the propagation can traverse through (if any), and any conditions that must be met for the buff to be propagated.
Propagation Maps can be defined using the Rust programming language, and they can also be used in Lua scripts. They are a powerful tool for defining complex propagation rules that can be used to create dynamic and interesting gameplay mechanics.