CrimsonEquipment

Server-authoritative, and it ships no client routing
Every mutation - Equip Item, Unequip Item, Swap Equipped Items, Move Equipped Item To Slot, Gather Save Data, Restore From Save Data - is BlueprintAuthorityOnly and refuses to run without authority. This plugin contains no RPCs at all: nothing carries a client's intent to the server for you. A click in your equipment UI must reach the server through a Server_ RPC your project owns (usually on the PlayerController), and that RPC calls the manager. Without it, nothing a player does reaches the equipment system. How-To: Get the Building Blocks shows the routing shape.

CrimsonEquipment is a slot-based equipment system. A slot layout on the pawn declares which slots exist and how many of each; an equipment definition declares which slot it fills, which abilities, effects and attribute sets it grants, and which actors it attaches. Equipping creates one runtime instance, grants them to the pawn's Ability System Component, spawns the visual actors on every machine, and replicates through a FastArray so late joiners see the same gear.

It knows nothing about items. The object that caused an equip is stored as an opaque UObject* the plugin never inspects, and the only surface an item system talks to is ICrimsonEquipmentHost, which this plugin owns. It also ships no assets and no widgets - you bring the slot tags, the definitions, the meshes and the UI.

What's included

SystemKey typesPurpose
Manager componentUCrimsonEquipmentManagerComponent, FCrimsonEquipmentList, FCrimsonAppliedEquipmentEntryThe equipment: a replicated FastArray of entries, ability grants, actor spawning, save data. Implements ICrimsonEquipmentHost.
Slot layoutUCrimsonEquipmentSlotsComponent, FCrimsonEquipmentSlotDefinitionDeclares which slot tags exist on this pawn and how many indices each has. Not replicated - both machines author the same layout.
DefinitionsUCrimsonEquipmentDefinition, FCrimsonEquipmentActorToSpawn, ECrimsonEquipmentActorSpawnRuleOne Blueprint class per piece of gear: slot tag, instance class, granted abilities / effects / attribute sets, actors to attach.
Runtime instanceUCrimsonEquipmentInstanceOne replicated object per equipped item. Owns this machine's spawned actors and fires OnEquipped / OnUnequipped. Subclass it for per-item logic.
VisualsACrimsonEquipmentDisplayActorA ready-made cosmetic actor for mesh-only entries - static plus skeletal mesh component, no collision, optional leader pose. You need no actor Blueprint for ordinary gear.
AbilitiesUCrimsonGameplayAbility_FromEquipmentAbility base that can navigate back to the equipment instance that granted it, via the spec's SourceObject.
MessagesFCrimsonEquipmentChangedMessageFired on every equip and unequip (On Equipment Changed Message) alongside the source-changed and look-changed events.
Slot provisioningUCrimsonGameFeatureAction_AddEquipmentSlots, FCrimsonAddEquipmentSlotsRequestAdds the slots component (and optionally the manager) to a matched actor class from a Game Feature, and announces readiness.
Save dataFCrimsonEquipmentSaveData, FCrimsonEquipmentSaveEntryA plain SaveGame-flagged snapshot plus gather / restore / deferred-flush calls. The plugin depends on no save system.
SettingsUCrimsonEquipmentSettingsProject Settings -> Crimson -> Crimson Equipment: the display actor class and verbose logging.

Plugin dependencies

Module or pluginGroupWhy
Crimson pluginsCrimson pluginNone. The plugin is fully standalone: it owns ICrimsonEquipmentHost and its structs, its grant types, its events and its readiness feature state.
GameplayAbilitiesEngine moduleUGameplayAbility, UAbilitySystemComponent, and UAbilitySystemGlobals for ASC discovery.
GameplayTagsEngine moduleSlot tags and message channel tags.
NetCoreEngine moduleFFastArraySerializer behind FCrimsonEquipmentList.
ModularGameplayEngine moduleUPawnComponent (the manager's base) and the component manager the Game Feature action extends actors through.
GameFeaturesEngine moduleUGameFeatureAction behind Add Equipment Slots.
DeveloperSettingsEngine moduleUCrimsonEquipmentSettings.
Core, CoreUObject, EngineEngine modulesBase types.
IrisCoreEngine module (private)Iris replication fragments on UCrimsonEquipmentInstance.
Attribution
This plugin defines its own gameplay tags in CrimsonEquipmentTags.h: Crimson.Equipment.Message.Changed, Crimson.SystemReady.Equipment, Message.Equipment.SourceChanged, Message.Character.LookChanged. It defines no slot tags - Equipment.Slot.Weapon and friends are yours to author. ICrimsonEquipmentHost, FCrimsonEquipRequest, FCrimsonEquipResult, FCrimsonEquipmentSlotInfo, FCrimsonEquipmentSourceChangedMessage and FCrimsonCharacterLookChangedMessage ship with this plugin (it also defines Message.Equipment.SourceChanged and Message.Character.LookChanged). The ASC is found with Epic's UAbilitySystemGlobals::GetAbilitySystemComponentFromActor, so any IAbilitySystemInterface implementation works.
Where the classes live
The plugin ships no content, so there is nothing to unhide in the Content Browser. Its Blueprint bases are one right-click away: Content Browser -> Add -> Crimson Plugins -> Equipment offers Equipment Definition, Equipment Instance, Equipment Manager Component, Equipment Slots Component and Ability From Equipment.
Which path do I choose?
New to the plugin: Quick Start puts a sword in a character's hand from nothing. Need one feature: each How-To is self-contained and links back to How-To: Get the Building Blocks. Want the model: read Concept: Definitions, Instances and Entries, then Concept: Slots and Displacement. Shipping multiplayer: Concept: Multiplayer is not optional here. Already have all Crimson plugins: CrimsonCore -> Inventory UI ships a paper-doll equipment panel on top of this plugin (CrimsonCore - requires all Crimson plugins).
Using with other Crimson plugins
CrimsonEquipment works alone. When you own other Crimson plugins, CrimsonCore contains the full-suite wiring for it in Source/CrimsonCore/{Public,Private}/Integration/Equipment/ and .../Integration/Inventory/: UCrimsonCoreEquipmentAbilitySetSubsystem grants each definition's AbilitySetsToGrant through OnEquipmentGrantsChanged, and UCrimsonInventoryEquipmentStatics / UCrimsonInventoryIntegrationSubsystem equip inventory items. To wire it yourself, read CrimsonCommon -> Concept: Connecting Crimson Plugins; for everything CrimsonCore installs, read CrimsonCore -> Concept: The Integration Layer.