Reactions and statuses¶
All · 15 min read · No code
A reaction is one step of the Break → Topple → Daze chain. A status is a timed buff or debuff such as Slow or Strength Up. Both are plain Gameplay Effects applied to the target's Ability System Component (ASC), and both are represented on that ASC by a gameplay tag. Nothing tracks "this enemy is Toppled" anywhere else: every system that cares, from the damage formula to the popups to the player's knock-down animation, asks the target's ASC whether it holds the tag. The chain rule (Topple only works on a Broken target, Daze only on a Toppled one) is enforced by the effects themselves, not by the Arts that apply them.
At a glance
In play: BREAK, TOPPLE and DAZE pop up over an enemy as the chain lands; a Toppled or Dazed character falls and cannot act. Buffs and debuffs pop up by name and show as icons on the party rows.
What you can change, no code:
- Which Arts Break, Topple or Daze: Make an art inflict reactions
- A new buff or debuff: Add a status effect
- The knock-down and flinch clips for one character: Give a character its own combat animations
- How long each reaction lasts: the Duration of
Battle/Reactions/GE_XenoCore_Reaction_* - Every setting: What you can change
See the Glossary for Break, Topple, Daze and Status effect.
How it fits together¶
| Piece | Asset / class | Job |
|---|---|---|
| Reaction effects | Battle/Reactions/GE_XenoCore_Reaction_Break, _Topple, _Daze |
Grant Status.XenoCore.Reaction.Break / .Topple / .Daze for their own duration |
| Status effects | Battle/Status/GE_XenoCore_Status_* (19 shipped: Slow, Haste, Poison, Bleed, Blaze, Chill, Bind, Regenerate, Max HP Up, and Up/Down for Strength, Ether, Agility, Physical Def and Ether Def) |
Modify an attribute or grant a tag, for a duration |
| Status base class | UXenoCoreStatusEffect |
A Gameplay Effect that also knows its name, colour, abbreviation and icon |
| Status icons | UserInterface/Status/Icons/T_XenoCore_Status_* |
Optional icon textures |
| Who applies them | An Art definition's Effects list; the minion's Arts DA_XenoCore_Minion_Rend (Break) and DA_XenoCore_Minion_Sweep (Topple) |
Apply the effect to the target |
| Popups | UXenoCoreBattleNotifySubsystem · UserInterface/HUD/W_XenoCore_BattleNotify |
BREAK / TOPPLE / DAZE and status names over the affected character |
| HUD icons | UXenoCorePartyMemberPlateBase · W_XenoCore_PartyMemberPlate |
One icon per active status on a party member's plate |
| Player reactions | Battle/GA_XenoCore_Player_Topple, GA_XenoCore_Player_Daze (UXenoCoreGameplayAbility_ToppleReact, _DazeReact) |
Knock-down animation and movement lock when the player's side is Toppled or Dazed |
| Enemy reactions | Characters/Enemies/Minion/GA_XenoCore_Minion_Topple, GA_XenoCore_Minion_Daze (same classes), granted by AbilitySet_XenoCore_Minion_Melee |
The minion's knock-down (AM_XenoCore_Minion_Topple, AM_XenoCore_Minion_Daze), held for as long as the reaction lasts |
| Incapacitation | UXenoCoreGameplayAbility_AutoAttack › Incapacitated Tags |
A Toppled or Dazed attacker does not swing or use its Arts |
| Flinch | UXenoCoreGameplayAbility_HitReact · GA_XenoCore_Player_HitReact, GA_XenoCore_Minion_HitReact |
Directional hit reaction |
How the chain is enforced, as read from the effects' components:
| Effect | Requires the target to have | Grants |
|---|---|---|
GE_XenoCore_Reaction_Break |
nothing | Status.XenoCore.Reaction.Break |
GE_XenoCore_Reaction_Topple |
Status.XenoCore.Reaction.Break |
Status.XenoCore.Reaction.Topple |
GE_XenoCore_Reaction_Daze |
Status.XenoCore.Reaction.Topple |
Status.XenoCore.Reaction.Daze |
The requirement is the effect's Require Tags to Apply/Continue This Effect component (Application Tag Requirements › Must Have Tags), so a Topple on a target that is not Broken is refused and nothing is logged. Break lasts 10 s (a number of ours; XC1's is not documented), Topple 3.5 s and Daze 2.0 s.
Lifecycle¶
Applying. An Art's Effects entry picks the effect, rolls its Chance, and applies it to
each recipient. For a status, the entry's Duration and Magnitude are sent into the effect as
SetByCaller values on XenoCore.Status.Duration and XenoCore.Status.Magnitude, so one status asset
serves every Art that applies it, each with its own numbers. Reactions carry their own timings, so
their entries leave Duration at 0.
A Topple or Daze applied to a target that is not in the right state is refused by the effect. The Art still plays, still deals damage and still goes on cooldown; the reaction simply does not land.
While active. The tag is on the target's ASC for the effect's duration. What reads it:
- The damage formula: a Dazed target cannot be missed, Ether Arts always crit a Dazed target, and a critical hit on a Toppled or Dazed target uses the larger critical multiplier.
- Art Effects conditions (Target is Broken / Toppled / Dazed).
- The enemy AI, which chooses its next Art by the target's reaction state (see Enemies and AI).
- The popup subsystem, which shows BREAK (pink), TOPPLE (green) or DAZE (yellow) the moment the tag first appears.
- A VRoid character's face, which changes expression on each reaction.
- On the player's side:
GA_XenoCore_Player_ToppleandGA_XenoCore_Player_Dazetrigger when the tag is added to their own ASC (trigger source: owned tag added). They play the knock-down montage (Topple follows it with a get-up), hold the ability open until the montage ends, and carryGameplay.MovementStoppedso the character cannot move meanwhile. The trigger, the hold and the movement lock come from the C++ classes, so a Blueprint copy only chooses clips. - A knock-down does not start while the character holds
Status.XenoCore.ArtExecutingorStatus.XenoCore.Arming. So a player Toppled in the middle of an Art or a weapon draw carries the Topple (TOPPLE shows, and the auto-attack pauses) but does not fall. Enemies are never affected: their Arts and draws hold neither tag. - On the enemy side:
GA_XenoCore_Minion_ToppleandGA_XenoCore_Minion_Dazetrigger the same way and play the minion's knock-down. They have Hold While Trigger Tag Present on, so the minion stays down for exactly as long as the reaction tag lasts: a clip shorter than the reaction holds its last pose, a longer one is cut when the tag goes. The minion has no get-up clip, so it simply blends back to its idle. - Any attacker built on the auto-attack base (the auto-attack itself and the minion's Arts) checks Incapacitated Tags (Topple and Daze by default). While the attacker carries one, its auto-attack loop pauses, its Arts refuse to start (so the enemy AI sees them as not ready and no cooldown is spent), and a swing already in flight does not connect. The enemy's chase also stops, so a toppled minion does not turn to follow you.
Ending. When the effect expires GAS removes the tag. Nothing else has to clean up.
Statuses. When a UXenoCoreStatusEffect is newly applied, its Display Name pops up over the
character in its Colour, in upper case, smaller than a reaction. Refreshing a status that is
already on does not pop up again. Party member plates re-read their character's active statuses
every Status Refresh Interval (default 0.2 s) and draw one icon per status: the Icon
texture if set, otherwise the Colour with the Abbreviation written on it. Debuffs sort before
buffs.
Hit reactions. Each landed hit sends XenoCore.Event.HitReact to the victim. The victim's
hit-react ability decides whether to flinch and picks front, back, left or right from its own
facing. It does not activate while the victim holds Status.XenoCore.ArtExecuting (mid-Art) or
Status.XenoCore.Arming (drawing a weapon). A flinch also does not play while the victim holds one of
its Flinch Suppressed By Tags (Topple and Daze by default), so a knock-down is never replaced by
a flinch. Damage still lands in every case; only the
animation is suppressed.
A hit never interrupts. As in XC1, a landed hit does not stop a swing or an Art; only a
reaction (Topple, Daze) does. The shipped flinches are additive clips on their own
AdditiveHitReact slot, so the jolt layers over whatever the body is doing. The hit-react ability's
Flinch On Hit plays it; both shipped hit reacts turn it on (the C++ default is off).
Knockback. A flinch also knocks the victim back, straight away from the attacker: its hit-react ability's Push Distance (60 cm) x the hit's Force Multiplier, over Push Time (0.12 s), and then it stops dead. Auto-attacks ship at Force Multiplier 1 and the shipped damage Arts at 2. Whatever stops the flinch stops the push too, so a guard, an Art in progress, a weapon draw or a knock-down is never shoved. The flinch itself plays additively, so the body leans with the hit while it moves.
What you can change¶
| Setting | Where it lives | What it does |
|---|---|---|
| Display Name | GE_XenoCore_Status_* › Status |
Popup text and the Arts menu's effect line |
| Abbreviation | GE_XenoCore_Status_* › Status |
Two or three letters drawn on the HUD icon when no Icon is set |
| Colour | GE_XenoCore_Status_* › Status |
Popup colour and icon fill |
| Icon | GE_XenoCore_Status_* › Status |
Optional icon texture |
| Is Buff | GE_XenoCore_Status_* › Status |
Buffs sort after debuffs on the HUD |
| Duration, modifiers, granted tags | Any status or reaction effect | Standard Gameplay Effect settings |
| Directional Montages | Any reaction ability › XenoCore › Reaction | Front, Back, Left, Right, in that order. An empty entry means no reaction from that side. These are the shared defaults; a character's Anim Profile can override any slot |
| Profile Key | Any reaction ability › XenoCore › Reaction | Which row of a character's Anim Profile this reaction reads (Anim.XenoCore.Reaction.*). Empty means it always plays its own montages. Every shipped reaction has one |
| Front Back Half Angle | Any reaction ability › XenoCore › Reaction | Width of the front and back sectors. Default 45 |
| Hold Until Montage Ends, Follow Up Montage | Any reaction ability › XenoCore › Reaction | Keep the ability open for the montage, then crossfade into a get-up. The knock-down classes turn the hold on for you |
| Hold While Trigger Tag Present | Knock-down ability › XenoCore › Reaction | Needs Hold Until Montage Ends. Hold the knock-down for as long as the triggering reaction tag lasts, not for the montage's length. On for the minion's reactions, off for the player's |
| Flinch On Hit | Hit-react ability › XenoCore › HitReact | Play the flinch clip when hit. Off: no clip, the knockback still applies |
| Flinch Suppressed By Tags | Hit-react ability › XenoCore › HitReact | A flinch does not play while the character holds any of these. Default: Topple, Daze |
| Push Distance, Push Time, Push Strength Over Time | Hit-react ability › XenoCore › HitReact › Push | How far and how fast a hit at Force Multiplier 1 knocks this body back. Defaults 60 cm over 0.12 s. Push Distance 0 = never pushed |
| Force Multiplier | Art definition › Art › Hits, or auto-attack ability › XenoCore › Attack | How hard that Art or swing knocks its target back. 0 = no knockback |
| Incapacitated Tags | Auto-attack or enemy Art ability › XenoCore › AutoAttack | The attacker cannot swing or use Arts while it holds any of these. Default: Topple, Daze |
| Status Icon Size, Status Refresh Interval | Party member plate widget › XenoCore › Party › Status | HUD icon size and poll rate |
Fails silently: a Follow Up Montage's blend time lives on the montage
The crossfade from knock-down to get-up uses the follow-up montage asset's own Blend In time. There is no blend setting on the ability.
Fails silently: Hold Until Montage Ends off on a knock-down
Without it the ability ends on the frame it starts, so its movement lock is added and removed at once: you get a popup and no animation. The knock-down, guard, recoil and dodge classes turn it on in C++, so this only bites if a Blueprint copy turns it off, or a new reaction class forgets it. A flinch needs it off, or one hit waits on the last one's animation.
Fails silently: a knock-down cut short or left standing
With Hold While Trigger Tag Present on, the reaction ends early and without its get-up if something else takes the animation slot, such as a death montage or a Daze landing on a Topple. That is intended. It also refuses to start on a dead or dying character, so a reaction landing on the killing blow plays nothing.
Fails silently: restating Activation Blocked Tags on a hit-react child
The hit-react base blocks on ArtExecuting and Arming. A Blueprint child that sets its own
Activation Blocked Tags replaces that list rather than adding to it. If you override it,
list every tag, including the two from the base. GA_XenoCore_Player_HitReact does exactly this
and lists all four. The same applies to Flinch Suppressed By Tags and Incapacitated Tags:
setting either on a Blueprint child replaces the default Topple and Daze, and an empty list turns
the rule off for that ability.
Extending it¶
- A new status: create a Blueprint child of
UXenoCoreStatusEffectin your own folder, set its duration to SetByCallerXenoCore.Status.Durationif Arts should choose the duration, add its modifiers and the four display fields. It then pops up and shows on the HUD with no registration. See Status effect. - Making an Art react: add a
GE_XenoCore_Reaction_*entry to the Art's Effects list. See Art reactions. - Different clips for one character: do not duplicate the reaction ability. Fill in that character's Anim Profile instead; see Give a character its own combat animations.
- A knock-down for a new character type: a Blueprint child of
UXenoCoreGameplayAbility_ToppleReact(or_DazeReact). The trigger, the hold and the movement lock are already set; you only add clips. For an enemy, copyGA_XenoCore_Minion_Topple(and_Daze), swap its Directional Montages, and grant both in the enemy's ability set. Without them the enemy still cannot act while Toppled, but it stands still instead of falling. - A new kind of knock-down (for example XC1's Launch), programmers: a C++ child of
UXenoCoreGameplayAbility_KnockdownReactwhose constructor calls Set Trigger Tag with the new reaction tag. Never put that tag in Activation Blocked Tags: the tag is already present when the ability starts, so it would refuse itself. - Do not add a new reaction by applying a loose tag instead of an effect. A loose tag never expires and skips the chain requirement.
Testing tools¶
XenoCore.Reaction 1/2/3applies Break, Topple or Daze to the player alone, for that effect's authored duration;XenoCore.Reaction 0clears them. It applies the tag directly, so it deliberately skips the chain requirement to let you test each reaction on its own.XenoCore.Anim.Describe(addenemyor part of a pawn's name) lists every reaction clip a character plays and whether it comes from its profile or the shared default.XenoCore.Anim.Play Topple frontpreviews the clip alone.- Add
enemy(XenoCore.Reaction 2 enemy) to apply it to your locked-on target instead, or to the nearest living enemy when nothing is locked. Use it to check an enemy's knock-down without waiting for the Art chain.
Why it's built this way¶
For programmers: the design reasons
- An effect, not a tag. A reaction applied as an effect gets a real duration and its prerequisite for free from the effect's tag-requirement component; a loose tag was permanent and let Daze land on a target that had never been Broken.
- Watch the tag, not the source. The popups, the player's reactions and the face all listen for the tag appearing on an ASC, so an Art, a status, a script or the console command all behave the same and nothing can apply a reaction silently.
- Status presentation on the effect.
UXenoCoreStatusEffectadds only the four fields a Gameplay Effect has no home for, so there is no separate list of statuses to keep in step. - The victim decides the flinch. The attacker only sends an event; direction is computed from the victim's facing, and the victim's own blocked tags decide whether it reacts.