API Reference
Public types grouped by area. The contract interface (ICrimsonTeamAgentInterface) lives in CrimsonCommon and UGFA_AddTeams lives in CrimsonCore (requires all Crimson plugins); everything else is in the CrimsonTeams runtime module.
Membership
| Type | Description |
|---|
ICrimsonTeamAgentInterface (CrimsonCommon) | Extends IGenericTeamAgentInterface; GetTeamTags, GetHostileToTags, GetOnTeamTagsChangedDelegate, static BroadcastTeamChange |
UCrimsonTeamAgentComponent | Mutators (authority-only): JoinTeam / LeaveTeam, AddTeamTags / RemoveTeamTags / SetTeamTags, AddHostileTags / RemoveHostileTags / SetHostileTags. Overrides GetTeamAttitudeTowards (tag-based). Delegates OnTeamTagsChanged / OnHostileTagsChanged. Replicated TeamTags / HostileToTags |
FOnCrimsonTeamTagsChangedDelegate | (UObject* ChangedActor, const FGameplayTagContainer& Old, const FGameplayTagContainer& New) |
Subsystem
| Member | Description |
|---|
CanCauseDamage(Inst, Target, bAllowSelf) | Tag-based friendly-fire gate |
FindTeamAgentComponent(Object) | Resolves actor / pawn / controller / player state to its team component |
FindPlayerStateFromActor(Actor) | Resolves a pawn/controller/player-state actor to its APlayerState |
GetTeamTags(Out) / DoesTeamExist(tag) | Registry queries |
GetDisplayAssetForTeam(tag) / GetDisplayAssetForAgent(obj) | Display-asset lookup; GetTeamDisplayAssetChangedDelegate(tag) to subscribe |
AddTeamTagStack / RemoveTeamTagStack / GetTeamTagStackCount / TeamHasTag | Faction-wide tag stacks |
RegisterTeamAgent / UnregisterTeamAgent | Called automatically by the component (BeginPlay/EndPlay) to drive the dynamic-attitude refresh |
OnTeamAttitudeChanged (BlueprintAssignable) | (AActor* ChangedActor) - fires after a change has refreshed perception |
Statics & filtering
| Function | Description |
|---|
GetTeamAttitudeBetween(Source, Target) | The source of truth: Hostile / Friendly / Neutral |
ShouldCauseDamageToTarget(Source, Target) | True unless the two are Friendly |
MakeFilteredTargetDataFromActors(Owner, Actors, Filter) | Attitude-filtered GAS target data (self/null excluded) |
GetTeamTagsFromObject / GetHostileTagsFromObject | Decompose an agent to tags + display asset |
GetTeamDisplayAssetForAgent + GetTeam{Scalar,Color,Texture}WithFallback | Display-asset read helpers |
ECrimsonTargetFilter | HostileAndNeutral / HostileOnly / FriendlyAndNeutral / FriendlyOnly / All |
Declared teams & cosmetics
| Type | Description |
|---|
UCrimsonTeamCreationComponent | Game State component; TeamsToCreate, PublicTeamInfoClass / PrivateTeamInfoClass, ServerChooseTeamForPlayer (BlueprintNativeEvent), AddTeams / RemoveTeams |
ACrimsonTeamInfoBase / ACrimsonTeamPublicInfo / ACrimsonTeamPrivateInfo | GetTeamTag, faction TeamTags stack; public adds GetTeamDisplayAsset |
UCrimsonTeamDisplayAsset | ScalarParameters / ColorParameters / TextureParameters / TeamShortName; ApplyToMaterial / ApplyToMeshComponent / ApplyToNiagaraComponent / ApplyToActor |
UGFA_AddTeams (CrimsonCore - requires all Crimson plugins) | Game Feature Action: adds the agent component + tags to actor classes (find-or-configures pre-existing components). Defined in CrimsonCore, not CrimsonTeams - standalone projects use a default subobject or Add Component |
Observers, cheats & tooling
| Type | Description |
|---|
UAsyncAction_ObserveTeam | ObserveTeam(agent) -> OnTeamChanged(bIsPartOfTeam, Tags) |
UAsyncAction_ObserveTeamColors | ObserveTeamColors(agent) -> OnTeamChanged(bIsPartOfTeam, Tags, DisplayAsset) |
UCrimsonTeamCheats | CycleTeam / SetTeam <index> (authority) / ListTeams |
| Dev Tools window | Console Crimson.Teams.DevTools or Tools -> Crimson Teams -> Teams Dev Tools (editor-only, PIE) |
MCP tools (AI agents)
One UToolsetDefinition toolset (module CrimsonTeamsEditor) lets an AI agent read and drive the team system in a running PIE session over MCP. It registers only when Crimson MCP is enabled (Project Settings -> Crimson -> Crimson MCP; requires an editor restart - see CrimsonEditorUtilities -> Quick Start). Team state is server-authoritative (replicates down, never RPC'd up; the agent mutators no-op off authority), so every tool operates on the authoritative (server / standalone) PIE world, and the act tools require it. Actors are resolved by outliner label (empty = the first player pawn in that world). Errors surface to the agent as a script error.
| Tool | Kind | Description |
|---|
ListTeams | read | Every team registered with UCrimsonTeamSubsystem (tag, short name, display asset). |
ListTeamAgents | read | Every actor with a UCrimsonTeamAgentComponent (team tags, hostile tags, authority). |
GetTeamAgent | read | One actor's team tags, hostile-to tags, and resolved display asset. |
GetAttitudeBetween | read | Attitude (Friendly/Neutral/Hostile) between two actors + CanCauseDamage both directions. |
SetAgentTeamTags | act | Replace an agent's team tags with a comma-separated list. |
SetAgentHostileTags | act | Replace an agent's hostile-to tags with a comma-separated list. |
JoinTeam | act | Add a single team tag to an agent. |
LeaveTeam | act | Remove a single team tag from an agent. |