Global System & Game Phases
UCrimsonGlobalAbilitySystem
A UWorldSubsystem tracking all registered UCrimsonAbilitySystemComponent instances. Apply abilities or effects to every ASC at once - global buffs, weather, round-start grants:
auto* Gas = GetWorld()->GetSubsystem<UCrimsonGlobalAbilitySystem>();Gas->ApplyEffectToAll(UGE_GlobalSlowDebuff::StaticClass());Gas->RemoveEffectFromAll(UGE_GlobalSlowDebuff::StaticClass());
The ASC registers itself in InitAbilityActorInfo and unregisters in EndPlay - no manual registration needed.
UCrimsonGamePhaseSubsystem
A server-authoritative UWorldSubsystem managing game-phase flow using GAS abilities as phase tokens. Each active UCrimsonGamePhaseAbility is a running phase; starting a new phase in the same tag hierarchy ends the previous one.
auto* Phases = GetWorld()->GetSubsystem<UCrimsonGamePhaseSubsystem>();Phases->StartPhase(UCrimsonGamePhaseAbility_WarmUp::StaticClass(),FCrimsonGamePhaseDelegate::CreateUObject(this, &AGameMode::OnWarmUpEnded));Phases->WhenPhaseStartsOrIsActive(TAG_Phase_InProgress,EPhaseTagMatchType::PartialMatch,FCrimsonGamePhaseTagDelegate::CreateUObject(this, &AGameMode::OnPhaseInProgress));bool bInProgress = Phases->IsPhaseActive(TAG_Phase_InProgress);
Server-authoritative
UCrimsonGamePhaseSubsystem exists in Game / PIE worlds; every phase-changing operation is server-authority (BlueprintAuthorityOnly), and phase transitions replicate through normal GAS ability replication.