CrimsonEquipment

CrimsonEquipment is a slot-based equipment system. Equipping a piece of gear grants ability sets to the pawn's ASC, spawns visual actors attached to sockets, and fires lifecycle hooks on the instance. Unequipping reverses all of that in the correct order.

No CrimsonAbilitySystem or CrimsonInventory Dependency
CrimsonEquipment discovers the ASC via the engine accessor UAbilitySystemGlobals::GetAbilitySystemComponentFromActor (which honors IAbilitySystemInterface) and grants UCrimsonAbilitySets to it directly. It knows nothing about inventory items - the source object bridge passes any UObject* opaquely and lets the caller cast it to their type.

Two-Component Pattern

Every equipped pawn needs exactly two components:

ComponentResponsibility
UCrimsonEquipmentSlotsComponentDeclares the slot layout - which slot types exist and how many of each (e.g. 1 weapon, 2 rings). Read by the manager during EquipItem to validate availability.
UCrimsonEquipmentManagerComponentRuntime manager - owns the replicated equipment list, grants/revokes ability sets, spawns/destroys visual actors, handles save/restore.

Crimson Plugin Dependencies

PluginWhy
CrimsonCommonLogging macros; the UCrimsonAbilitySet data asset + FCrimsonAbilitySet_GrantedHandles used to grant/revoke ability sets

Engine Module Dependencies

ModuleVisibilityPurpose
Core / CoreUObject / EnginePublicBase UE types
GameplayTagsPublicFGameplayTag for slot identification
GameplayAbilitiesPublicUAbilitySystemComponent, UCrimsonAbilitySet grant, UGameplayAbility base for FromEquipment
ModularGameplayPublicUPawnComponent base for UCrimsonEquipmentManagerComponent
NetCorePublicFFastArraySerializer for replicated equipment list
DeveloperSettingsPublicUCrimsonEquipmentSettings project settings
IrisCorePrivateIris replication support