How-To: Declare an Ability Contract

Goal: turn augment authoring from typing tag strings into picking from a dropdown, by declaring which properties an ability actually exposes.

Prerequisites
How-To: Create and Equip an Augment.

Why bother

Without a contract, an augment that says "scale Ability.Property.Damage by 1.5" is free text: nothing checks the tag exists, nothing checks the ability reads it, and a typo fails silently at runtime. A UCrimsonAbilityContract declares the properties up front so the augment editor can offer them as a validated list.

1. Create the contract

Content Browser -> right-click -> Crimson -> Ability System -> Ability Contract. Add one entry per property the ability exposes, each with its property tag and value type.

2. Point the ability at it

Assign the contract on the ability. Its property tags then appear as dropdown options wherever an augment mutation targets that ability.

Verify
Open an augment mutation. The property picker lists your declared tags instead of a free text field.

3. Read a contract value at runtime

The ability reads its own configurable values through the contract API, so an augment mutation and the ability's default agree on one lookup path.

Inside the ability use Get Configurable Value, Get Configurable Vector, Get Configurable Bool or Get Configurable Int, passing the property tag.

Mutations apply on read
The augment does not rewrite the ability asset. GetConfigurableValue resolves the base value and then applies whatever mutations are equipped on THIS spec - so two characters running the same ability with different augments get different numbers.
Verify
Equip a stat mutation and print the configurable value. It reflects the mutation only for the augmented spec.

See also

  • Concept: Ability Contract
  • How-To: Create and Equip an Augment