# Quick Start Guide

UE 5.7+ Version 1.0

Get up and running with AP StatusFX Suite in under 5 minutes.

Support: discord.gg/n5HxmrkpC4


# 1. Installation

  1. Copy the AfterPrimeStatusFXSuite/ folder into your project's Plugins/ directory.
  2. Open your .uproject — Unreal will detect the new plugin and compile it automatically. If prompted about missing modules, click Yes to build.
  3. Open the editor — confirm the plugin is enabled under Edit → Plugins → AfterPrime.

# 2. Add the Component

The StatusFX Suite is a single component you add to any replicated actor.

  1. Open your Character or Pawn Blueprint.
  2. Click Add Component → search for "AP StatusFX Suite" → add it.
  3. The component handles all replication automatically — no additional setup required.

# 3. Implement the Interface (Optional but Recommended)

The IAP_StatusFXSuiteTarget interface lets other systems find the component on your actor without hard references.

  1. Open your actor Blueprint → Class Settings.
  2. Under Interfaces → Add → search for "StatusFX Suite Target".
  3. Compile the Blueprint.
  4. In My Blueprint → Interfaces, double-click GetStatusEffectComponent.
  5. Drag your AP_StatusFXSuite component from the Components panel → connect it to the Return Value pin.
  6. Compile.

# 4. Create an Effect Definition

Status effects are defined as Data Assets — no code required.

  1. In the Content Browser: Right-click → Miscellaneous → Data Asset.
  2. Select AP_StatusEffectDefinition as the class.
  3. Name it with the SFX_Def_ prefix (e.g., SFX_Def_Poison).

# Configuration Properties

Property Description
Effect Tag A Gameplay Tag identifying this effect (e.g., Effect.Debuff.Poison). Must be unique per effect type.
Display Name Human-readable name for UI display.
Duration Type Timed (expires), Infinite (until removed), or Instant (fires once).
Base Duration How long the effect lasts in seconds (Timed only).
Tick Interval How often OnEffectTick fires in seconds. 0 = no ticking.
Stacking Policy How reapplication is handled. See Section 8.
Max Stacks Maximum stack count for stackable policies. 0 = unlimited.

# Example: A Simple Poison DoT

Property Value
Effect Tag Effect.Debuff.Poison
Display Name Poison
Duration Type Timed
Base Duration 10.0
Tick Interval 1.0
Stacking Policy Stack Intensity
Max Stacks 5

# 5. Apply an Effect

In any Blueprint graph, search for "Apply Effect to Actor" (under AP > StatusFX > Helpers):

Pin Description
Target Actor The actor to apply the effect to (defaults to Self).
Definition Your StatusEffectDefinition asset (e.g., SFX_Def_Poison).
Instigator The actor that caused the effect (optional, for tracking).
Duration Override Set to -1.0 to use the definition's default duration.

If you have a direct reference to the component:

  1. Get the AP_StatusFXSuite component reference.
  2. Call Apply Effect.
  3. Pass the Definition, Instigator, Duration Override, and Initial Stacks.

# 6. Listen for Events

The component provides 6 delegates you can bind in Blueprint:

Delegate Fires When Parameters
OnEffectApplied A new effect is applied EffectTag, Snapshot
OnEffectRemoved An effect is removed (any reason) EffectTag, RemovalReason
OnEffectRefreshed An effect's duration is refreshed EffectTag
OnEffectStackChanged An effect's stack count changes EffectTag
OnEffectTick A ticking effect fires a tick EffectTag, Snapshot
OnEffectExpired A timed effect reaches zero duration EffectTag

# Binding in Blueprint

  1. Get your AP_StatusFXSuite component reference.
  2. Drag off it → type "Assign On Effect Applied".
  3. This creates a bound event node — add your logic (Print String, UI update, gameplay response, etc.).

# The Snapshot

Most delegates provide an FAP_StatusEffectSnapshot with:

Field Description
EffectTag The Gameplay Tag identifying the effect.
InstanceId Unique ID for this effect instance.
DefinitionPath Soft path to the definition asset.
StackCount Current number of stacks.
RemainingDuration Seconds remaining (-1.0 for infinite).
TotalDuration Original duration from the definition.
ServerTimeApplied Server timestamp of application.
Instigator The actor that applied the effect.
bIsTimed Whether this effect has a duration.
bIsTicking Whether this effect has periodic ticks.

# 7. Query Active Effects

All query methods work on both server and client (they read replicated state).

Method Returns Use Case
HasEffect(Tag) bool Check if an effect is active
GetStackCount(Tag) int32 Read current stacks
GetRemainingDuration(Tag) float Countdown display
GetEffectSnapshot(Tag) Snapshot Full effect state for UI
GetAllActiveEffectSnapshots() Array of Snapshots Buff bar population
GetActiveEffectTags() Tag Container Batch queries
IsImmuneToEffect(Tag) bool Pre-check before applying

# 8. Stacking Policies

Each definition specifies how reapplication behaves:

Policy Behavior Example Use
None (Refresh) Reapplication resets the duration timer. Stack count stays at 1. Speed boost, shield buff
Stack Duration Each application adds its duration to the remaining time. HoT that extends with recast
Stack Intensity Adds a stack (up to MaxStacks). Duration is shared. Poison (more stacks = more damage)
Independent Instances Each application creates a separate tracked instance. Multiple shield layers
Custom Resolver Delegates stacking logic to a UAP_StackingResolver subclass. Complex custom rules

# 9. Interaction Rules

Effects can interact with each other in two ways:

# Per-Definition (on the Data Asset)

Setting Behavior
Removes Effects with Tags When this effect is applied, remove any active effects matching these tags. Example: Applying Frozen removes Burning.
Blocked by Effects with Tags This effect cannot be applied while any of these effects are active. Example: Fortify is blocked while ShieldBreak is active.

# DataTable Rules (Project Settings)

For complex interactions with immunity grants:

  1. Create a DataTable using FAP_EffectInteractionRule as the row struct.
  2. Each row defines: SourceTag, TargetTagsToRemove, bGrantImmunityToRemoved, ImmunityDuration.
  3. Assign the DataTable in Project Settings → Plugins → AP StatusFX Suite → Interaction Rules DataTable.

# 10. Immunity System

Method Description
bGrantImmunityOnExpire (on Definition) When the effect expires naturally, the target becomes immune for ImmunityDuration seconds.
Interaction Rule Immunity DataTable rules can grant immunity to the removed effect tag (e.g., after Burning is removed by Frozen, immune to Burning for 3s).
Manual GrantImmunity(Tag, Duration) Call directly on the component for custom immunity logic.

# 11. Project Settings

Project Settings → Plugins → AP StatusFX Suite

Setting Default Description
Interaction Rules DataTable None Optional DataTable for complex interaction rules with immunity.
Global Max Independent Stacks 50 Safety cap for Independent stacking across all effect types. 0 = per-definition only.
Enable Replication Logging false Verbose logging of client replication events. Development builds only.

# 12. Multiplayer Notes


# 13. Demo Content

The plugin ships with a complete demo in Content/Demo/:

Item Details
Effect Definitions 31 definitions — buffs, debuffs, DoTs, CCs, cleanses, and interactions
Demo Blueprints DemoCharacter (keyboard input + buff bar), EffectTrigger (overlap volumes), EffectDispenser (interactable shrines)
UI Widgets BuffBar and EffectIcon with countdown timers and icon support
Demo Map Interactive showcase of all features with labeled zones
DataTable Example interaction rules (Frozen/Burning mutual cancellation with immunity)

To test: Open MAP_StatusFX_Demo, set players to 2 (Listen Server), and press Play. Use keys 1–6 to apply effects, 0 to remove all.


# Next Steps

  • API Reference — complete list of methods, delegates, and types
  • FAQ — common questions answered
  • Changelog — version history and planned features

AfterPrime Systems — Building the Gameplay Foundation