Overview
WCGASStatusEffectSubsystem is a Game Instance Subsystem that serves as the global registry and rule manager for the GAS Status Effect System in the Wonderscape GAS Ally plugin. It automatically initializes at game start, loads effect classification data from Project Settings, builds runtime lookup maps for O(1) metadata queries, manages evolution rules for stack-based effect transformations, coordinates synergy rules for multi-effect interactions, and provides Synergy Chain definitions for sequential synergy combinations.
Purpose
The Status Effect Subsystem orchestrates all status effect metadata and interaction rules by providing:
- Automatic Initialization: Loads effect classification assets, evolution rules, synergy rules, and Synergy Chain definitions from Project Settings at startup
- Effect Registry: Maps GameplayEffect classes to designer-configured metadata (icons, names, buff/debuff classification, tags) for fast O(1) lookups
- Tag-Based Reverse Lookup: Maintains PrimaryEffectTag → EffectClass mapping for absorption system and tag-based effect resolution
- Evolution Rule Storage: Stores stack-threshold evolution rules that define how effects transform at specific stack counts
- Synergy Rule Storage: Stores priority-sorted synergy rules that define multi-effect interactions with conditional requirements
- Synergy Chain Storage: Stores sequential synergy combination definitions for multi-step synergy sequences
- Metadata Queries: Provides Blueprint-callable functions to retrieve effect metadata, filtered buff/debuff lists, and registered effect counts
- Evolution Queries: Returns matching evolution rules for specific effect tags when stack counts change
- Synergy Queries: Returns synergy rules filtered by trigger type or specific synergy tag lookups
- Synergy Chain Queries: Returns Synergy Chain definitions by identifier tag or starting synergy
How It Works
Initialization Flow
- Subsystem Startup: When the GameInstance initializes, this subsystem automatically loads via UE's subsystem lifecycle
- Load Plugin Settings: Retrieves configuration from
UWCGASAllySettings via GetDefault<UWCGASAllySettings>()