How-To: Get the Building Blocks
Goal: get a reference to every object the rest of this wiki assumes you already have - the Ability System Component, the project settings, the augment and phase subsystems, the combo controller, and the currently-executing ability. Every other page links back here instead of repeating this.
CrimsonAbilitySystem type or an engine type. Where a task genuinely needs another plugin, that page says so and treats it as a swappable example.1. The Ability System Component
There are three ways in, in order of preference.
From an actor that owns it - if you derived from the plugin's base classes, each exposes a typed getter: Get Crimson Ability System Component on ACrimsonAbilityCharacter, ACrimsonAbilityPlayerState and ACrimsonAbilityPlayerController.
From any actor, generically - Get Ability System Component (the engine node from IAbilitySystemInterface), then Cast To CrimsonAbilitySystemComponent. Use this when you do not control the actor's class.
From inside an ability - Get Crimson Ability System Component From Actor Info.
2. Project settings
UCrimsonAbilitySystemSettings is a UDeveloperSettings, so it is a CDO you read directly - never construct one. It holds the combo master switch and every combo tuning value.
Get Default Object is not needed - use the Get Class Defaults node with CrimsonAbilitySystemSettings selected, then pull the property you want. The settings are also editable at Project Settings -> Crimson -> Crimson Ability System.
bEnableComboSystem and print it. It is false until you turn it on.3. The augment subsystem
UCrimsonAugmentSubsystem is a world subsystem. It resolves augment definitions and backs the augment slot machinery on the ASC.
Get World Subsystem with CrimsonAugmentSubsystem selected. Any Blueprint with a world context works.
4. The game phase subsystem
UCrimsonGamePhaseSubsystem is also a world subsystem, and every mutating call on it is BlueprintAuthorityOnly - it does nothing on a client.
Get World Subsystem with CrimsonGamePhaseSubsystem. The nodes you will use are Start Phase, When Phase Starts or Is Active, When Phase Ends and Is Phase Active.
false rather than erroring.5. The combo controller
UCrimsonComboController is an actor component you add to the pawn, not the PlayerState - it is tied to the thing being controlled. It only does anything when the combo master switch is on.
On the pawn: Get Component By Class with CrimsonComboController. To add it, open the pawn Blueprint and use Add Component -> Crimson Combo Controller.
false (not an error) on a fresh pawn.6. The currently-executing ability
Inside a UCrimsonGameplayAbility you already have this. These are the accessors you will use most - all of them are Blueprint nodes with the same names.
| Accessor | Returns |
|---|---|
GetCrimsonAbilitySystemComponentFromActorInfo | The owning UCrimsonAbilitySystemComponent. |
GetPawnFromActorInfo / GetCharacterFromActorInfo | The avatar. |
GetControllerFromActorInfo / GetPlayerControllerFromActorInfo | The controller. |
GetAbilitySpecHandle | This instance's FGameplayAbilitySpecHandle - the identity augments and combos key off. |
GetActivationPolicy / GetActivationGroup | How this ability activates and what it blocks. |
GetAbilitySpecHandle. It is valid from ActivateAbility onward.7. Turn on the combo system
Everything combo-related is gated behind one switch, off by default.
- Open Project Settings -> Crimson -> Crimson Ability System.
- Tick Enable Combo System.
- Restart the editor when prompted.
Combo category on gameplay abilities and the Combo dev-tools tab all read this switch once at module startup. That is why it needs a restart, and why you will not find any of them before you flip it.See also
- Quick Start - stands up the ASC these accessors return.
- Concept: Ability System Component - what the ASC adds over the engine one.
- How-To: Author a Combo - the first thing to do after enabling combos.