Characters and party¶
All · 10 min · No code
Problems with party members: who appears, what stats they have, what happens when they level, die or swap. For the model behind them, read Characters and Party.
A new party member never appears in the field¶
Why: only the first few members of the roster are fielded. The party component fields members
in roster order until it reaches Max Active Members (on Characters/Party/BP_XenoCore_Party,
7 in the sample), and benches everyone after that. A benched member has no body in
the world at all. A member whose definition has no Member Class never spawns either.
Fix:
- Right-click your party member definition in the Content Browser and choose Asset Actions › Validate Assets. A missing Member Class, Controller Class, Display Name or Portrait, or a pawn with no Combatant Pawn Data, is reported in red.
- Open
BP_XenoCore_Partyand check where your member sits in Starting Roster. Move it higher, or raise Max Active Members (Characters/Party/BP_XenoCore_Party). - Or swap the member in from the Party screen in play.
Avoid it next time: Set the starting party.
A character can't attack, can't use Arts, and can't die¶
Why: the character's abilities, including death, come from the ability sets in its pawn data.
With Combatant Pawn Data empty, the character spawns with no abilities and no stats. This
error is logged: <name> has no CombatantPawnData. It will have no stats, no abilities and cannot
die.
Fix: open the character's pawn Blueprint, Class Defaults, and set Combatant Pawn Data. Duplicate an existing party member's pawn data rather than starting an empty one.
Avoid it next time: Add a party member.
Stats don't change when a character levels up, or every character has the same stats¶
Why: a character's stats come from its own Stats Effect, re-applied at its new level on every level-up and every spawn. Two mistakes break this:
- Several characters share one Stats Effect. They then have identical stats. Each character needs its own statline effect.
- The statline is granted by an ability set. An ability set applies its effects at one fixed Effect Level that never changes, so the stats freeze at that level forever while the level badge keeps rising.
A character with no Stats Effect logs <name> has no StatsEffect. It will run on attribute
defaults, not its statline. If you see that error every run, your numbers come from somewhere
else, and they will not scale.
Fix:
- Set Stats Effect on the character's pawn Blueprint (Class Defaults).
- Remove any statline effect from the character's ability sets.
- Give each character its own duplicate of a statline effect, reading its own curve rows (the
sample characters read
<Name>.*rows ofBattle/Attributes/CT_XenoCore_PartyStatlines).
Avoid it next time: Author a character statline.
Level-up heals because of the statline
Levelling up restores full health. No code does this: it happens because every statline effect sets Health as well as Max Health with an Override modifier. If you remove the Health modifier, or change it to Add, level-ups stop healing and nothing tells you. For the same reason, never re-apply a statline for any reason other than a level or a spawn: every application is a free full heal.
After making someone else the leader and swapping back, the controls do nothing¶
Why: when you hand a body back to its AI, Unreal throws away that body's input bindings, and
Lyra only binds input the first time a body is possessed. XenoCore's own hero component binds it
again on every later possession. A pawn whose Components panel has Lyra's stock hero component
(class LyraHeroComponent) instead of XenoCore's (class XenoCoreHeroComponent) loses that. Nothing is logged. The camera may
also look fine; only input is dead.
Fix: build party pawns as children of Characters/VRoid/B_XenoCore_Party_VRoid_Base or
Characters/Party/B_XenoCore_PartyMember_Base, which carry the right component. On a pawn of your
own, replace the hero component with XenoCoreHeroComponent.
For programmers
The rebind runs from AXenoCoreCombatantCharacter::SetupPlayerInputComponent through
UXenoCoreHeroComponent::RebindPlayerInputOnRepossession. A C++ pawn that overrides
SetupPlayerInputComponent must call Super first.
Avoid it next time: Add a party member.
A character turns invisible after I give it a cosmetic part¶
Why: when cosmetic parts change, Lyra's character-parts component always sets the body mesh from Body Meshes, chosen by the parts' tags. If no rule matches the tags (the part carries a tag with no rule, or has no Part Class and so no tag), it uses Body Meshes › Default Mesh. With no default mesh either, the body mesh is set to nothing.
Every shipped pawn has a Default Mesh, and a character derived from XenoCore's combatant class (every party pawn and the player) has a runtime safety net: if its Default Mesh is empty at Begin Play, it uses the mesh it spawned with and logs a warning once per class (see the next entry). So on those characters an unmatched tag gives the wrong body rather than none. A pawn that is not a XenoCore combatant, for example a plain Lyra character, has no safety net and still turns invisible, with nothing logged.
Fix:
- On the pawn's character-parts component, make sure Body Meshes has a rule for every
Cosmetic.AnimationStyle.*tag you use, and a Default Mesh. - In the pawn's graph, only add a part when its class is valid. The sample pawns check Is Valid Class before Add Character Part; keep that check.
- Save the pawn Blueprint and read its validation messages. The editor flags a missing Default Mesh, a rule with no mesh, and a Cosmetic Part whose tags match no rule; on a pawn with no safety net, that last one is an error.
Avoid it next time: Choose an animation style.
The log warns that Body Meshes has no Default Mesh¶
Why: a XenoCore character's Body Meshes has no Default Mesh, so a cosmetic part whose
tags match no rule would make it invisible. The character is protected for this session: it uses
the mesh it spawned with. The warning (LogXenoCosmetics) names the class and that mesh: "...
CharacterParts BodyMeshes has no DefaultMesh ... Falling back to the mesh it spawned with ...". It is
logged once per class.
Fix: open the named Blueprint, select its character-parts component, and set Body Meshes › Default Mesh to the mesh the character normally uses (for a VRoid member, its invisible Mannequin mesh). The warning then stops.
A party member at 0 HP ragdolls instead of kneeling, and can't be revived¶
Fails silently
The body falls and the weapon disappears as if it were an enemy; no revive prompt appears, and nothing is logged.
Why: a party member at 0 HP is downed by GA_XenoCore_Downed, which the party's ability
sets grant in place of Lyra's GA_Hero_Death. A pawn whose ability sets grant GA_Hero_Death
instead (for example a pawn data copied from Lyra's heroes) runs a real death: montage, ragdoll,
weapon hidden, body gone. A party pawn that is not a child of B_XenoCore_PartyMember_Base or
B_XenoCore_Party_VRoid_Base cannot kneel either.
Fix: grant Battle/GA_XenoCore_Downed, not GA_Hero_Death, in every party member's ability
sets (AbilitySet_XenoCore_PartyMember already does), and build party pawns as children of
Characters/VRoid/B_XenoCore_Party_VRoid_Base or B_XenoCore_PartyMember_Base.
Avoid it next time: Party Gauge, downed and revive.
Pressing A over a downed ally doesn't revive them¶
Why: a revive costs one full bar of the Party Gauge (Revive Bar Cost on BP_XenoCore_Party).
Without a full bar the press is refused on purpose: "Party Gauge not full" appears over the ally and
the gauge shakes. You also have to stand within Revive Range (110 cm), on top of the ally. A
downed member also gets up by itself, at 1 HP, once no enemy has been engaged for Battle Over
Grace.
Fix: fill the gauge (critical hits and art bonus effects), or set Revive Bar Cost to 0 for free revives.
Avoid it next time: Tune revive and defeat.
A recruit joins at level 1, or benched members never level¶
Why: benched members earn EXP at Reserve Experience Rate on Game/BP_XenoCore_Progression,
which the sample sets to 0 (XC1 uses 90%, the C++ default). A recruit only catches up if it is
recruited with Join At Party Level ticked, on the recruit trigger, the NPC, or the Add To
Roster node; the node's default is off.
Fix: tick Join At Party Level where the member is recruited, or raise Reserve Experience Rate.
Avoid it next time: Recruit a party member by talking to them.
After a party wipe, the party reappears stuck in the floor or falls through it¶
Fails silently
The wipe completes and logs where the party stands again; nothing says the point was wrong.
Why: the respawn point is a capsule centre, like a player start, and the leader is placed
exactly there with no collision adjustment. A Get Wipe Respawn Transform override on your
BP_XenoCore_Party, or a Set Party Respawn Point call, that passes a point on the ground puts
the party half into it. A save point with Respawn Offset lowered, or a pad whose origin sits
below its surface, does the same.
Fix: raise the point by the character's capsule half-height (about 100 units). On a save point, set Respawn Offset so its Z clears the pad's surface by that much.
Avoid it next time: Party, under Party wipe.
Companions zig-zag or wobble while following the leader¶
Fails silently
Nothing collides and nothing is logged; the party just never walks in a straight line.
Why: Detour Crowd avoidance is on while travelling. Each companion re-steers round the others
every frame, and each body turns to face its new heading, so the whole party wobbles. It happens at
every Crowd Avoidance Quality, and the higher qualities make it worse. XenoCore turns avoidance
off out of battle for exactly this reason; it is back on only if Crowd Avoidance While
Travelling is ticked, or if your companion's AI controller is not a child of
Characters/Party/BP_AIC_XenoCore_PartyMember, which is what switches it.
Fix: open your party controller Blueprint and untick XenoCore › AI › Crowd › Crowd Avoidance
While Travelling. If you made your own controller, make it a child of
Characters/Party/BP_AIC_XenoCore_PartyMember.
Avoid it next time: Tune companion AI, step 5.
Companions walk, sprint to catch up, then drop back to a walk¶
Why: catch-up speed is capped relative to the leader: the leader's speed × Catch Up Ratio
plus Catch Up Margin, eased by Pace Smoothing, all on XenoCore Party Follow Leader in
ST_XenoCore_PartyMember. Raised too far, or with Pace Smoothing high, a companion behind a
walking leader runs to close the gap and then brakes.
Fix: restore Catch Up Ratio 1.5, Catch Up Margin 120 and Pace Smoothing 3 in your copy of the tree.
Avoid it next time: Companion AI.
Companions stare straight ahead and never look around¶
Why: the head turn needs three things: the XenoCore Party Gaze task on the party StateTree's
Active state, an AI controller that is a child of BP_AIC_XenoCore_PartyMember, and the
ABP_XenoCore_Base Animation Blueprint (which turns the neck and head). A copy of the tree made
before the gaze task existed, or a custom controller or anim Blueprint, loses it without a word. A
player-controlled body never has a gaze, by design. The head also faces forward while the
character is downed, celebrating, toppled or dazed (Look Blocked By Tags).
Fix: add XenoCore Party Gaze to the Active state of your tree, or start again from a copy of
Characters/Party/AI/ST_XenoCore_PartyMember.
Avoid it next time: Companion AI.
Companions stand still between fights and never chat or wander¶
Why: the rest activities run in XenoCore Party Hold, and none starts while the leader moves faster than Leader Moving Speed (60 cm/s). If you never stop for more than a few seconds, they never begin. With Stroll Chance, Social Chance and Solo Chance all 0 they never begin at all.
Fix: stand still for ten seconds and watch. If nothing happens, check those chances on XenoCore Party Hold in the tree your controller actually uses.
Avoid it next time: Tune companion AI, step 5.
A skill is learnt but nothing changes¶
Fails silently
The skill shows as learnt on the Skills screen, "Skill Learnt" floated over the character, and no stat moves.
Why: one of these, most common first:
- The skill is a stand-in: it works, but does something simpler than its name suggests. Check what it actually does in that table.
- Your own skill has no effect. A skill with no Stats, Bonus or Ability is only reported as a Data Validation warning.
- Its Timing is In Battle Party and its owner is benched.
- Its Condition is not met (for example, HP is above the threshold, or the character wears armour).
- It is a Scale skill on a stat that is 0, such as a party member's defence with no armour equipped.
- It is a Bonus skill. It changes nothing on the stat sheet; it only matters when the system that asks for that bonus runs (a heal, a quest turn-in, a hit).
- Its Scope is Self and you are looking at another character.
A Stats entry naming a stat that GE_XenoCore_SkillStats has no channel for is the one case that
is logged: a LogXenoSkills warning naming the skill.
Fix: give the skill an effect, or check the conditions above. Run Validate Assets on the tree table to list every skill that does nothing.
Avoid it next time: Add a skill or a skill tree.
Skill points stop filling the Skills screen¶
Fails silently
Kills pay SP (the HUD plate shows it) but no icon fills, or XenoGiveSP changes nothing.
Why: SP only ever flows into the selected branch, and once all five of its skills are learnt,
further SP is thrown away. The branch header reads ---- / ----. Two other causes: XenoGiveSP
always pays the leader, so another character's tree does not move; and if
Skill Point Reward Table on BP_XenoCore_Progression is empty, kills pay no SP at all and nothing
is logged.
Fix: on the Skills screen, focus another branch and choose Change Trait. For the cheat, make the character you are testing the leader. Check Skill Point Reward Table is set.
Avoid it next time: Skills.
A character lost their skill progress after I edited their tree¶
Fails silently
After loading a save, a branch is back at the start, or the wrong skills show as learnt.
Why: a save stores each branch by its row name and only a count of learnt skills. Renaming a row makes the old progress unreachable and seeds the renamed row fresh. Reordering skills inside a branch keeps the count but changes which skills it covers. Neither is logged.
Fix: put the old row name back to recover the progress. Rename branches with Display Name only, and reorder skills only before release.
Avoid it next time: Add a skill or a skill tree.
The Skills screen says "No skill tree"¶
Fails silently
The screen opens for the character but draws no branches.
Why: Skill Tree (XenoCore › Skills) is empty on the Blueprint the character spawns as,
which is the member definition's Member Class. If the table is set but was made with the wrong
row structure, LogXenoSkills logs an error instead. A tree whose branches are all locked also draws
no columns.
Fix: set Skill Tree on the member's pawn class to a Data Table whose row structure is
XenoCoreSkillBranchRow (duplicate a sample tree), with at least one row that has Unlocked At
Start ticked.
Avoid it next time: Add a skill or a skill tree.