UCrimsonAbilityContract

A UPrimaryDataAsset that publishes an ability's schema - every property, event, asset slot, and augment slot it exposes. Augments are authored against a contract, so the editor can populate mutation dropdowns from the contract instead of free-text tag pickers.

Replaces UCrimsonAbilityDefinition
UCrimsonAbilityContract supersedes the old UCrimsonAbilityDefinition (deprecated, scheduled for removal). New abilities should use a contract via the ability's AbilityContract property.

What a contract publishes

SectionTypeExample
IdentityTagsFGameplayTagContainerCategorize the ability for ContractFamily augment queries / UI grouping
PropertiesFCrimsonContractProperty[]Cooldown, range, damage, projectile count
EventsFCrimsonContractEvent[]OnHit, OnCrit, OnEnd channels the ability broadcasts
ClassSlotsFCrimsonContractClassSlot[]Projectile actor class, spawned-actor template
ObjectSlotsFCrimsonContractObjectSlot[]Sound cue, particle system, icon
AugmentSlotsFCrimsonContractAugmentSlot[]Augment slot categories + capacity the ability accepts

Runtime lookups resolve through UCrimsonGameplayAbility::GetConfigurableValue / Int / Bool / Vector, GetConfigurableClass<T>, GetConfigurableObject<T>, and GetConfigurableStruct<T> - all backed by the ability's PropertyCache.

Why a contract

  • No silent footguns - an augment can't target a property/slot the contract doesn't publish; mutation dropdowns are constrained to the contract's schema.
  • Save-time validation - IsDataValid fails a broken augment in the editor, not at PIE time.
  • Self-documenting - the contract is the single place to see everything an ability exposes.