The purpose is to define algorithms for targeting nodes and affecting nodes compositionally.
The classes (which all extend Node) are structured as such:
SkillUser
Skill
Targeter
Effect
Targeters locate target SkillUsers when requested or signal the parent Skill when a target has been found. Targeters automatically consolidate child Targeters recursively.
Effects apply some effect from a source SkillUser to a target SkillUser. Effects automatically apply child Effects first, recursively.
Skills act as a binding agent between Targeters and Effects. You can toggle them on and off. When activated, they connect to the "target_found" signals of their Targeter children, fetch their targets, and, in either case, apply their Effects to the fetched/found targets.