Buff & Status Effect Manager

v1.0.0

Component Reference

Complete reference for all BSM components and ScriptableObjects.

Overview

BSM consists of runtime components (added to GameObjects) and ScriptableObject assets (created in the Project window). This page documents all components and their properties.

Component

Runtime components

ScriptableObject

Data assets

Optional

GC2 integration

Persistence

Save/load support

StatusEffectManagerComponent

Core component placed on any character/NPC that can receive status effects. Manages the full lifecycle: apply → tick → expire/dispel.

Inspector Properties

Immunity ProfilePermanent immunity configuration (optional)
Max Active EffectsLimit total active effects (0 = unlimited)

Key API Methods

// Apply an effect
StatusEffectInstance ApplyEffect(StatusEffectDefinition definition)

// Remove effects
bool RemoveEffect(StatusEffectDefinition definition)
void RemoveAllEffects()
int DispelCategory(StatusEffectCategory category)
int DispelByTag(string tag)
int DispelByCleanseType(CleanseType cleanseType, int maxCount = 0)

// Stack management
int AddStacks(StatusEffectDefinition definition, int count)
int RemoveStacks(StatusEffectDefinition definition, int count)

// Queries
bool HasEffect(StatusEffectDefinition definition)
bool IsImmuneToEffect(StatusEffectDefinition definition)
bool IsOnCooldown(StatusEffectDefinition definition)
float GetRemainingDuration(StatusEffectDefinition definition)
float GetRemainingCooldown(StatusEffectDefinition definition)

// Immunity
void AddTemporaryImmunity(StatusEffectDefinition definition, float duration)
void AddTemporaryImmunityByCategory(StatusEffectCategory category, float duration)
void AddTemporaryImmunityByTag(string tag, float duration)

// Cooldown
void ClearCooldown(StatusEffectDefinition definition)
void ClearAllCooldowns()

Events

event Action<StatusEffectInstance> OnEffectApplied
event Action<StatusEffectInstance> OnEffectTicked
event Action<StatusEffectInstance> OnEffectExpired
event Action<StatusEffectInstance> OnEffectDispelled
event Action<StatusEffectDefinition> OnEffectBlocked
event Action<StatusEffectInstance, int> OnEffectStacksChanged

StatusEffectDefinitionScriptableObject

Defines an effect's properties, behavior, and visuals. Create via:Create → Game Creator → BSM → Effect Definition

Identity

Display NameName shown to players
DescriptionTooltip description text
CategoryParent category (optional)
TagsTags for filtering (e.g., "fire", "poison")
IconSprite for UI display

Duration & Ticking

Duration ModeTimed or Permanent
DurationSeconds (for Timed mode)
Has TickEnable periodic tick events
Tick IntervalSeconds between ticks
Tick On ApplyFire first tick immediately
Max TicksLimit total ticks (0 = unlimited)

Stacking

Stacking ModeNone, Stack, Refresh, RefreshAndStack, Extend
Max StacksMaximum stack count
Scale With StacksMultiply effects by stack count

Cooldown & Cleanse

Has CooldownPrevent rapid re-application
Cooldown DurationSeconds before can reapply
Cooldown Starts On ApplyStart cooldown on apply vs on end
Cleanse TypeWhich dispels can remove this effect

VFX & Audio

Apply VFX/SoundPrefab/clip when applied
Remove VFX/SoundPrefab/clip when removed
Tick VFX/SoundPrefab/clip on each tick
VFX LifetimeAuto-destroy delay (0 = never)

StatusEffectCategoryScriptableObject

Groups effects and provides shared configuration. Create via:Create → Game Creator → BSM → Category

Display NameCategory name for UI
Category TypeBuff, Debuff, or CrowdControl
ColorUI tint color
Max ConcurrentLimit active effects (0 = unlimited)
Replace OldestWhen at limit, replace oldest?

ImmunityProfileScriptableObject

Defines permanent immunities for a character. Create via:Create → Game Creator → BSM → Immunity Profile

Immune EffectsSpecific effects this entity is immune to
Immune CategoriesEntire categories to block
Immune TagsBlock effects with these tags
Use Case: Create a "Boss" immunity profile that blocks all crowd control effects, then assign it to boss enemies.

StatusEffectAuraComponent

Automatically applies effects to entities within a radius. Perfect for healing zones, poison clouds, or buff auras.

EffectThe effect to apply to targets
RadiusRange in world units
Target ModeAll, AlliesOnly, EnemiesOnly, SelfOnly
Target LayersPhysics layer mask
Remove On ExitRemove effect when leaving aura
Update IntervalScan frequency in seconds
Active On StartStart enabled?

API

void Activate()
void Deactivate()
void Toggle()
void ForceUpdate()
IReadOnlyCollection<StatusEffectManager> GetAffectedTargets()

StatsBridgeOptional Component

Bridges BSM effects to GC2 Stats modifiers. Add alongside StatusEffectManager on entities that use stat-modifying effects.

Requires: Game Creator 2 Stats module must be installed. Define GC2_STATS in Player Settings.

When configured, the StatsBridge automatically applies stat modifiers defined in StatusEffectDefinition when effects activate, and removes them when effects end.

StatusEffectRememberPersistence

Integrates with GC2's Save/Load system to persist active effects across game sessions. Add to any entity that should save its effect state.

Saves: Effect IDs, remaining durations, stack counts, tick progress. On load, effects are restored with their correct remaining time.