Equipment¶
All · 15 min read

The equipment screen: slots, the character preview and the stat panel.
What the player sees: each character wears gear in six slots (Weapon, Head, Chest, Arms, Legs and Feet), chosen on the Equipment screen from the party's shared bag. A weapon shows on the character's back, moves to the hand when a battle starts, and goes back when it ends. Each piece adds its numbers to the character sheet, and weapons and some armour carry gems in sockets.
Equipping does not move an item out of the bag (see Items and inventory); a slot only points at it. Every number an item adds is a setting on the item itself, so a new item is pure data: no effect asset or graph of its own.
What you can change¶
- A new weapon: Add a weapon.
- New armour: Add armour.
- A gem: Add a gem.
- A new stat on equipment (for example a speed bonus): Add an equipment stat.
- What a character starts wearing and which weapon types it may wield: its equipment component (see Settings).
- How a weapon looks drawn and sheathed: its weapon type and weapon instance; see Animation.
How it fits together¶
| Piece | Class / sample asset | Job |
|---|---|---|
| Equipment component | The equipment component (class XenoCoreEquipmentComponent), in the Components panel of each character Blueprint |
Six named slots; starting gear; equip, unequip and swap; the capped gem effect |
| Item definition | Weapons/GreatSword/ID_XenoCore_JunkSword, Inventory/Armour/ID_XenoCore_* |
Slots allowed, stats, which equipment definition to use |
| Equipment definition (weapon) | Weapons/ED_XenoCore_Sword_Base › GreatSword/ED_XenoCore_JunkSword, BlueSword/ED_XenoCore_BlueSword and one per sword |
Weapon actor to spawn, instance class, ability sets to grant |
| Weapon actor | Weapons/B_XenoCore_Sword_Base › B_GreatSword, B_BlueSword… |
The mesh you see |
| Weapon type | Weapons/Types/DA_XenoCore_WeaponType_Greatsword |
The kind of weapon: its name in menus, its drawn and sheathed stances, draw and sheathe montages, auto-attack swings and reach. An item names its type; a character lists the types it may wield |
| Equipment definition (armour) | Inventory/Armour/ED_XenoCore_Armour |
Shared by every armour piece. Spawns nothing |
| Weapon ability sets | Weapons/AbilitySet_XenoCore_SwordCommon (granted by the sword base), plus a Talent set such as GreatSword/AbilitySet_XenoCore_JunkSword |
Common: GA_XenoCore_EquipmentStats and GA_XenoCore_WeaponDrawSync. Talent set: the sword's Talent Art, for example GA_XenoCore_TurnStrike |
| Armour ability set | Inventory/AbilitySet_XenoCore_EquipmentStats |
GA_XenoCore_EquipmentStats only |
| Stats ability | Inventory/GA_XenoCore_EquipmentStats |
Applies the stats effect when the item is equipped. Names no stat of its own |
| Stats effect | Inventory/GE_XenoCore_EquipmentStats |
Infinite effect; SetByCaller modifiers onto the character's stats |
| Weapon instance | Weapons/B_WeaponInstance_Base → GreatSword/B_WeaponInstance_GreatSword |
Drawn and stowed sockets, SetDrawn, animation layers |
| Draw sync | Weapons/GA_XenoCore_WeaponDrawSync |
Draws or sheathes the weapon when battle starts or ends |
| Arming | Battle/GA_XenoCore_Arm_v2, AM_GreatSword_Unsheathe / _Sheathe |
Plays the draw or sheathe montage |
| Screens | UserInterface/W_XenoCore_EquipmentScreen, W_XenoCore_ItemSwapList, W_XenoCore_EquipConfirm |
Loadout, candidate list, "take from another character" confirm |
The sample swords (Junk, Blue, Green, Red, Amber, Gold, Ivory and Violet, one folder each under
Weapons/) are all children of the two sword bases, share B_WeaponInstance_GreatSword and the
Greatsword type, and differ only in their item, mesh or material, and the Talent Art their ability
set grants. Junk, Blue, Green, Red and Gold share AbilitySet_XenoCore_JunkSword (Turn Strike);
Amber, Ivory and Violet grant their own. Weapons/IronBlade holds only a mesh and material. See
Add a weapon.
Each character wields one weapon type. An item's type is Weapon Type on its
XenoCoreFragment_EquipSlots fragment; a character's allowed types are its equipment component's
Allowed Weapon Types. A weapon of the wrong type is refused (Wrong Weapon Type) and is hidden from that character's swap list. An empty value at either end
allows anything. Every sample party member is a Greatsword user today.
Lifecycle¶
Starting gear. When a character's ability system is ready, its equipment component first adds its Starting Inventory to the party bag, then equips each Starting Equipment entry (adding the item to the bag first). A character that has been benched and redeployed comes back in what the player last put on it, picking its own items back up from the bag rather than adding copies.
Equipping. Equip Item To Slot checks the item first. Get Equip Blocker returns why it would fail:
| Blocker | Meaning |
|---|---|
| None | It would equip |
| No Item | Nothing passed |
| Not Equippable | No InventoryFragment_EquippableItem, or one with no equipment definition |
| Wrong Slot | The item's Allowed Slots does not include this slot |
| Worn In Another Slot | This character already wears it elsewhere |
| Worn By Another | Another character wears it. Pass Take From Other Character to strip it from them (the screen asks first) |
| Wrong Weapon Type | The weapon's type is not in this character's Allowed Weapon Types |
If allowed, whatever was in the slot is unequipped, the weapon actor (if any) spawns, and the
equipment definition's ability sets are granted. One of those, GA_XenoCore_EquipmentStats, copies
the item's stat numbers (its InventoryFragment_SetStats values) onto the character at once, so
the character sheet is right the moment the item goes on. Which stats it copies is the list of
Modifiers on Inventory/GE_XenoCore_EquipmentStats: one row per stat. An item stat with no row
there is ignored, with a warning in the Output Log (LogXenoCoreEquipmentStats). Screens hear
about the change through the XenoCore.Equipment.Message.SlotChanged message.
Which body holds it. A VRoid member's own mesh is an invisible Mannequin, so its weapon goes to
the visible VRoid body instead, whenever that body's skeleton has the socket being used
(XC_WeaponGrip_R in the hand, XC_WeaponStow_Back on the back). Move those sockets in the VRoid
skeleton's editor to fit the weapon to each character. A body without them keeps the weapon on the
Mannequin's own sockets.
What a weapon type changes. A weapon's type (a data asset such as
Weapons/Types/DA_XenoCore_WeaponType_Greatsword, picked on the item's Equip Slots fragment)
decides who may wield it, and can also bring its own stance, draw and sheathe montages, auto-attack
swings and reach. Any of those left empty on the type falls back to the greatsword's. A weapon's Type row in the menus shows its type's Display Name
(armour shows Light, Medium or Heavy there instead).
Unequipping. Unequip Slot takes the item's stats off the character, despawns the weapon actor and removes the granted abilities. The item stays in the bag.
Leaving the field. When a character's pawn is destroyed (benched, or killed and cleared), every slot is unequipped, so its gear sits loose in the shared bag.
Drawing the weapon. When a battle starts or ends, GA_XenoCore_Arm_v2 plays the draw or
sheathe montage, and GA_XenoCore_WeaponDrawSync moves the weapon between its back and hand
sockets as the montage plays and swaps the character's stance animations (see
Animation); the character cannot move while drawing, and neither direction can be
interrupted by a flinch.
Gems¶
A weapon or armour piece can carry gems in its sockets, XC1-style. A gem is an ordinary item
(Inventory/Gems/ID_XenoCore_Gem_<Type>_<Rank>: Strength Up, Ether Up, Agility Up, Ether Def Up,
Muscle Up and Critical Up, ranks I to III), and its exact strength is rolled when the gem is
created, within its rank's range.
- Sockets travel with the item. Socketing writes the gem onto the host item, so a weapon handed
to another character keeps its gems. A gem not listed in
Inventory/Gems/DA_XenoCore_GemRegistryis refused. - How many sockets. A weapon has its weapon type's Default Gem Slots (
2on the Greatsword); tick Override Gem Slots on the item's Equip Slots fragment to give one weapon a different count. Armour uses that fragment's Gem Slots:0on the Colony starter pieces,1on the rest. - Caps are per character. The gems a character wears are summed across every piece and capped
per gem type (Strength Up at
150, as in XC1), then added to the character's stats, refreshed on every equip, unequip and socket change. An item's own stats, and the comparison in the swap list, never include its gems. - On screen. The equipment screen shows each piece's sockets as coloured icons and names them on a line under the piece; the gem popup sockets and removes gems, and previews the change on the character sheet as you highlight a gem.
Gems come from quests and the shop, never chests; Kael starts a new game with one. See Add a gem.
Settings¶
| Setting | Where it lives | What it does |
|---|---|---|
| Starting Equipment | Character Blueprint › Components › equipment component › Details › XenoCore › Equipment | Slot and item definition pairs worn at start |
| Starting Inventory | Same | Loose items (and Count) the party starts with |
| Allowed Weapon Types | Same | Weapon types this character may wield. Empty allows any |
| Allowed Slots, Equip Type | Item › XenoCoreFragment_EquipSlots |
Which slots; Light / Medium / Heavy label |
| Stat numbers | Item › InventoryFragment_SetStats |
XenoCore.Stat.* tags and values |
| Equipment Definition | Item › InventoryFragment_EquippableItem |
Which equipment definition equips it |
| Actors To Spawn, Instance Type, Ability Sets To Grant | Equipment definition (Lyra) | What equipping spawns and grants |
| Draw and stow sockets, animation layer sets | Weapon instance Blueprint | See Animation |
Stats the shared effect carries: Strength, Ether, Agility, PhysicalDefence, EtherDefence,
BlockRate, CriticalRate, WeaponAttackMin, WeaponAttackMax and Weight, each fed by the
matching XenoCore.Stat.* tag.
Weight. Armour carries XenoCore.Stat.Weight. It is subtracted from Agility whenever
Agility is used for a hit roll: the wearer is easier to hit and misses more. The character sheet
still shows Agility and Weight as separate rows; the subtraction happens only in the roll.
On the stats ability (GA_XenoCore_EquipmentStats, Class Defaults, XenoCore › Equipment):
| Setting | Shipped | What it does |
|---|---|---|
| Equipment Stats Effect | GE_XenoCore_EquipmentStats |
The effect applied while worn. Its Set By Caller modifiers decide which stats reach which attributes |
| Percent Stat Tags | empty | Extra stats authored as whole percent (15) and applied as a fraction (0.15). Critical Rate and Block Rate are already percent in the stat list, so they need no entry |
Unequip rules. On the loadout, the unequip prompt appears only for a filled slot that is not the Weapon slot. Can Unequip Slot returns false for Weapon: every party member must carry a weapon. An empty slot's row shows the slot's name.
Fails silently: armour with no stats ability
GA_XenoCore_EquipmentStats is granted only through an ability set on the equipment definition.
Armour that points at an equipment definition without AbilitySet_XenoCore_EquipmentStats
equips, fills its slot, shows its name, and adds zero stats with nothing logged. Point every
armour piece at ED_XenoCore_Armour.
Fails silently: the armour ability set must not draw
AbilitySet_XenoCore_EquipmentStats must not include GA_XenoCore_WeaponDrawSync, or armour
tries to draw itself. The weapon's set carries both.
Fails silently: a new item created blank
A new item definition has no equipment definition, so Get Equip Blocker returns Not Equippable: the row shows, the click does nothing, nothing is logged. Duplicate a working item.
Fails silently: removing Ability Sets To Grant from a weapon
The weapon's ability set grants the draw sync as well as the stats. It is granted with the equipment instance as its source, which is the only way the draw ability finds its weapon. Removing it breaks drawing and sheathing without an error.
Fails silently: listing an item in both Starting lists
Starting Equipment adds its own copy of each item. Listing the same item in Starting Inventory as well gives the party two: one worn, one loose.
Extending it¶
- A new weapon: duplicate a sword's item, equipment definition and actor Blueprint into your own folder. See Add a weapon.
- New armour: duplicate an
ID_XenoCore_*armour item and keep Equipment Definition atED_XenoCore_Armour. See Add armour. - A new equipment stat: one modifier row on
GE_XenoCore_EquipmentStatsplus aXenoCore.Stat.*tag. No graph edit. Two parts need a programmer: a brand-new attribute, and making the menus draw the stat at all (the list of stats the menus show is in C++). See Add an equipment stat. - A new slot needs a programmer, plus a change to every screen that lays out six slots.
- Do not add a separate stats effect per item: the one shared effect is filled from each item's own numbers, so an item is pure data.
For programmers: classes and extension points
The component is UXenoCoreEquipmentComponent, a subclass of ULyraEquipmentManagerComponent.
The stats ability's C++ parent is UXenoCoreGameplayAbility_EquipmentStats: it calls Get Item
For Equipment, then fills every Set By Caller tag named by the effect's own modifiers from the
item instance's stat tags (0 where absent, percent stats divided by 100). Weapon attachment to a
VRoid body goes through Get Weapon Attach Parent; the weapon instance's SetDrawn asks it on
every draw and sheathe. Weapon types are UXenoCoreWeaponTypeDefinition; the arm ability asks
Get Weapon Arm Montage and SetDrawn asks Resolve Weapon Anim Layer. The stats the menus
draw are UXenoCoreInventoryStatics::GetStatDefinitions (XenoCoreInventoryStatics.cpp); slots
are EXenoCoreEquipSlot (XenoCoreEquipmentComponent.h).
Why it's built this way¶
For programmers
- Subclass, not a sibling component. Lyra's own code finds the equipment manager with
FindComponentByClass<ULyraEquipmentManagerComponent>, which finds ours. A second component beside Lyra's would have left those lookups finding the wrong one. - On the pawn. Equipment spawns the meshes animation depends on, so it stays with the body. Inventory is data, so it lives on the controller.
- One SetByCaller effect. One effect asset per item would be two hand-made assets per item, and
would make the comparison screen price an item by equipping it. The stats come from the item's own
InventoryFragment_SetStats, which Lyra already writes onto the instance. - Get Item For Equipment. Lyra's
EquipItemspawns the instance and grants its abilities in one call, so the stats ability runs before the slot is recorded. The component remembers the item for the length of that call, so the ability can find it immediately rather than a frame later, which once showed a new weapon's name with zero attack. - Weight in the roll only, so the sheet and the item that caused it never disagree.