Concept: Ability Contract
A contract is the ability's public API, declared as data. It lists which property tags the ability reads, so tooling can validate against it instead of trusting free text.
The problem it solves
Augment mutations target properties by tag. Without a declaration, nothing verifies the tag exists or that the ability reads it - the mutation compiles, ships, and does nothing. With a contract, the augment editor offers a dropdown of exactly the properties that ability honors.
The flow
UCrimsonAbilityContract declares Ability.Property.Damage (float)-> ability reads it via GetConfigurableValue(Ability.Property.Damage, Default)-> augment mutation targets it, chosen from a validated dropdown-> at read time the base value is resolved, then mutations for THIS spec applied
The plugin ships Ability.Property.Cooldown and Ability.Property.PrimaryTargetCount; the rest are yours.
See also
- How-To: Declare an Ability Contract
- Concept: Augment System