# Quick Start Guide

Get up and running with AP Cooldown Suite in minutes.

Support: discord.gg/n5HxmrkpC4


# 1. Installation

  1. Copy the AfterPrimeCooldownSuite/ folder into your project's Plugins/ directory.
  2. Open your project in UE5.
  3. Go to Edit → Plugins, search for CooldownSuite, and enable it under the Gameplay category.
  4. Restart the editor when prompted.
  5. Recompile if prompted after restart.

# 2. Add the Component

  1. Open your Character Blueprint in the Blueprint editor.
  2. Click Add Component in the Components panel.
  3. Search for AP_CooldownSuite and select UAP_CooldownSuiteComponent.
  4. The component appears as AP_CooldownSuite in the hierarchy.

# 3. Set Up the Player Controller

The plugin ships with BP_AP_PlayerController — a ready-to-use Player Controller that handles HUD initialization and UI mode toggling.

  1. Open your map's World Settings.
  2. Set Player Controller ClassBP_AP_PlayerController.
  3. Set HUD ClassBP_AP_CooldownHUD.

# 4. Create a Cooldown Definition Data Asset

Cooldowns are defined as Data Assets — no code required.

  1. In the Content Browser, right-click in your desired folder.
  2. Choose Miscellaneous → Data Asset.
  3. Select AP_CooldownDefinition as the class.
  4. Name it with the CDA_ prefix (e.g., CDA_Fireball).
  5. Open it and configure:
Property Description
CooldownTag Gameplay Tag identifying this cooldown (e.g., Cooldown.Ability.Fireball)
BaseDuration Base cooldown time in seconds before modifiers. Minimum 0.1.
MaxStacks Number of charges. 1 = single use, 3 = three charges.
StackReplenishMode Sequential — one charge per interval, or AllAtOnce — all charges return together
DefaultModifiers Optional modifiers applied automatically when this cooldown starts
ButtonIcon Texture displayed on the cooldown button
InputKeyText Key label displayed on the button (e.g., Q, E, 1)

# 5. Build Your HUD — No Graph Setup Required

AP Cooldown Suite is designed so you never need to touch the Blueprint graph. Everything is configured in the Widget Designer.

# Step 1 — Open WBP_HUDRoot

Navigate to Plugins/APCooldownSuite/UI/ and open WBP_HUDRoot.

# Step 2 — Add Cooldown Bars

  1. In the Hierarchy panel you will see a Canvas Panel as the root.
  2. From the Content Browser, drag BP_CooldownBar onto the Canvas Panel in the hierarchy.
  3. Position it visually in the Designer canvas.
  4. Repeat for as many bars as you need.

# Step 3 — Add Cooldown Buttons to Each Bar

  1. Expand your BP_CooldownBar instance in the hierarchy.
  2. Expand ButtonSlot (ButtonContainer).
  3. Drag a Horizontal Box (or Vertical Box for a vertical layout) into the ButtonSlot.
  4. Drag BP_CooldownButton instances from the Content Browser into the Horizontal/Vertical Box.
  5. For each button, set its Cooldown Definition in the Details panel to your CDA_ Data Asset.

# Step 4 — Play

Hit Play. Your cooldown bars appear at the positions you set in the Designer. Trigger your abilities — the bars update automatically.


# 6. Horizontal vs Vertical Bars

Horizontal bar — standard ability bar layout:

  • Add a Horizontal Box into the ButtonSlot
  • Drag buttons in left to right

Vertical bar — side panel / utility bar layout:

  • Add a Vertical Box into the ButtonSlot instead
  • Drag buttons in top to bottom

Both layouts work identically at runtime. Mix and match in the same HUD.


# 7. Runtime Bar Repositioning

Players can reposition cooldown bars at runtime:

  1. Press Tab to enter UI edit mode (cursor appears).
  2. Click and drag any cooldown bar to a new position.
  3. Release to drop — the position saves automatically.
  4. Press Tab again to return to game input.

Bar positions persist between sessions via the built-in save system. Positions are stored per bar name in a Save Game slot (CooldownLayout).


# 8. Start a Cooldown

  1. Drag off your component reference in the Event Graph.
  2. Search for Start Cooldown From Definition.
  3. Connect your UAP_CooldownDefinition Data Asset reference.
  4. Returns true on success, false if the definition is null or all stacks are consumed.
  1. Drag off your component reference.
  2. Search for Start Cooldown.
  3. Connect a Gameplay Tag and a float duration.
  4. Returns true if the cooldown started, false if all stacks are already consumed.

# 9. Cancel a Cooldown

Call Cancel Cooldown on the component with the tag to cancel. Fires OnCooldownCancelled with the remaining time. Requires server authority — use ServerCancelCooldown from clients.


# 10. Query Cooldown State

All query functions are BlueprintPure — no execution pin, safe to call on any machine.

Function Returns Use Case
IsOnCooldown(Tag) bool Check if all stacks are consumed
GetRemainingTime(Tag) float Countdown display
GetProgress(Tag) float 0.0–1.0 Drive a progress bar
GetCurrentStacks(Tag) int32 Available charge count
GetMaxStacks(Tag) int32 Maximum charge count
GetTotalDuration(Tag) float Effective duration after modifiers
GetAllActiveCooldownTags() Tag Array All tracked cooldowns

# 11. Bind Delegates

The component provides 4 delegates to bind in Blueprint:

Delegate Fires When Parameters
OnCooldownStarted All stacks consumed, cooldown begins Tag, Duration, CurrentStacks, MaxStacks
OnCooldownFinished Cooldown expires naturally Tag, Duration
OnCooldownCancelled Cooldown cancelled early Tag, RemainingTime
OnCooldownStackChanged Stack consumed or replenished Tag, NewStackCount, MaxStacks

# Binding in Blueprint

  1. Select the AP_CooldownSuite component in the Components panel.
  2. In the Details panel scroll to the Events section.
  3. Click + next to any delegate to create a bound event node.

Right-click in the Event Graph and search Assign On Cooldown Started — the binding node is created automatically.


# 12. Modifier System

Modifiers reduce or increase cooldown durations at start time. They are server-only and do not retroactively affect running cooldowns.

# Adding a Modifier

Call Add Modifier on the component with an FAP_CooldownModifier:

Field Description
ModifierTag Unique identifier — used to remove this modifier later
TargetCooldownTag Leave empty for global (all cooldowns), or set a specific tag
ModifierType Multiplier or FlatOffset
Value 0.8 = 20% reduction (Multiplier) · -2.0 = 2s shorter (FlatOffset)

# Duration Formula

EffectiveDuration = (BaseDuration × all Multipliers) + sum of FlatOffsets
EffectiveDuration = max(EffectiveDuration, MinimumCooldownDuration)

# Removing a Modifier

Call Remove Modifier with the ModifierTag you used when adding it. Call Clear All Modifiers to remove everything at once.


# 13. Gameplay Tag Setup

The plugin ships with demo tags registered automatically at startup:

Tag Use
Cooldown.Ability.Antidote Healer — cleanse ability
Cooldown.Ability.ArcaneIntellect Mage — intellect buff
Cooldown.Ability.Burning Mage — fire DoT
Cooldown.Ability.Confusion Mage — crowd control
Cooldown.Ability.Dash Warrior — movement ability
Cooldown.Ability.Fear Utility — crowd control
Cooldown.Ability.Fireball Mage — damage ability
Cooldown.Ability.Fortify Utility — defense buff
Cooldown.Ability.Frozen Mage — crowd control
Cooldown.Ability.Innervate Healer — mana restore
Cooldown.Ability.Poison Rogue — DoT ability
Cooldown.Ability.Regen Healer — health regen
Cooldown.Ability.Renew Healer — HoT ability
Cooldown.Ability.Reveal Rogue — detection ability
Cooldown.Ability.Shield Warrior — defensive ability
Cooldown.Ability.Silence Utility — interrupt
Cooldown.Ability.Sleep Utility — crowd control
Cooldown.Ability.Slow Utility — movement debuff
Cooldown.Ability.Speed Rogue — movement buff
Cooldown.Ability.Stealth Rogue — stealth ability
Cooldown.Ability.Strength Warrior — damage buff
Cooldown.Ability.Stun Warrior — crowd control
Cooldown.Ability.Thorns Warrior — reflect damage
Cooldown.Item.HealthPotion Demo item cooldown
Modifier.Haste Demo global modifier
Modifier.Talent.FireballCDR Demo targeted modifier

# 14. Multiplayer Checklist

  • Configure PIE: Edit → Editor Preferences → Level Editor → Play → set Number of Players to 2, enable Run Dedicated Server
  • Client-initiated cooldowns use ServerStartCooldown or ServerStartCooldownFromDefinition — not the direct functions
  • Cooldown state replicates automatically server → clients via FastArray
  • Delegates are bound on both server and client — not gated behind HasAuthority
  • GetRemainingTime and GetProgress are called freely on clients — snapshot pattern handles accuracy

# Next Steps

  • API Reference — complete class, function, delegate, enum, and struct documentation
  • Changelog — version history

AfterPrime Systems — Building the Gameplay Foundation