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

TypeDescription
ICrimsonTeamAgentInterface (CrimsonCommon)Extends IGenericTeamAgentInterface; GetTeamTags, GetHostileToTags, GetOnTeamTagsChangedDelegate, static BroadcastTeamChange
UCrimsonTeamAgentComponentMutators (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

MemberDescription
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 / TeamHasTagFaction-wide tag stacks
RegisterTeamAgent / UnregisterTeamAgentCalled 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

FunctionDescription
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 / GetHostileTagsFromObjectDecompose an agent to tags + display asset
GetTeamDisplayAssetForAgent + GetTeam{Scalar,Color,Texture}WithFallbackDisplay-asset read helpers
ECrimsonTargetFilterHostileAndNeutral / HostileOnly / FriendlyAndNeutral / FriendlyOnly / All

Declared teams & cosmetics

TypeDescription
UCrimsonTeamCreationComponentGame State component; TeamsToCreate, PublicTeamInfoClass / PrivateTeamInfoClass, ServerChooseTeamForPlayer (BlueprintNativeEvent), AddTeams / RemoveTeams
ACrimsonTeamInfoBase / ACrimsonTeamPublicInfo / ACrimsonTeamPrivateInfoGetTeamTag, faction TeamTags stack; public adds GetTeamDisplayAsset
UCrimsonTeamDisplayAssetScalarParameters / 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

TypeDescription
UAsyncAction_ObserveTeamObserveTeam(agent) -> OnTeamChanged(bIsPartOfTeam, Tags)
UAsyncAction_ObserveTeamColorsObserveTeamColors(agent) -> OnTeamChanged(bIsPartOfTeam, Tags, DisplayAsset)
UCrimsonTeamCheatsCycleTeam / SetTeam <index> (authority) / ListTeams
Dev Tools windowConsole 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.

ToolKindDescription
ListTeamsreadEvery team registered with UCrimsonTeamSubsystem (tag, short name, display asset).
ListTeamAgentsreadEvery actor with a UCrimsonTeamAgentComponent (team tags, hostile tags, authority).
GetTeamAgentreadOne actor's team tags, hostile-to tags, and resolved display asset.
GetAttitudeBetweenreadAttitude (Friendly/Neutral/Hostile) between two actors + CanCauseDamage both directions.
SetAgentTeamTagsactReplace an agent's team tags with a comma-separated list.
SetAgentHostileTagsactReplace an agent's hostile-to tags with a comma-separated list.
JoinTeamactAdd a single team tag to an agent.
LeaveTeamactRemove a single team tag from an agent.