Status-effect framework
A single pipeline for all actor interactions.
I represented all actor interactions, including even regular damage, as status effects. Any gameplay systems will always apply interactions through this shared pipeline, giving effect handling a consistent entry point.
Advantages
Builds a strong foundation of interaction and how systems interface from day 1. As the game scales and systems become more complex and more systems are added, there are less problems that occur due to confusing structure or overlapping responsibilities.
What are Status Effects?
Status effects are represented by a gameplay tag, which acts as the identifier, mapped to a struct, which contains data related to the status effect. This data differs depending on the status effect, it could contain information about the severity, duration, type of effects, or whatever it needs.
More Detail on the InteractionApplied Function
This function is called on the target actor. The function will loop through each status effect, and figure out if it wants to apply the effect, and how it should do it. It checks for resistances, weaknesses, immunity or any other cases that might affect the application of this effect. It passes out its successes or failures so the initiating actor can conduct its own logic if needed.