Guarding (blocking) lets a hero absorb frontal attacks with Stamina instead of health. Each guard move has a Guard value and each attack has a Guard Break value. The ratio between the two decides how much stamina you lose, whether chip damage gets through, and whether the guard collapses.
Who can guard#
| Hero | Guard move | Guard value | Notes |
|---|---|---|---|
| Terrence | Sword guard | 50 | The opening of the raise has a perfect-guard window and a parry window. |
| Norwood | Normal guard | 75 | Takes no chip damage on a successful block (GuardDamageRatio 0). |
| Norwood | Rage guard (ultimate guard) | 1000 | Costs 10 Rage per blocked hit; reverts to the normal guard at 0 Rage. |
| Elena | Single-blade guard | 75 | Has a perfect-guard and parry window from the first frame. No chip damage. |
| Elena | Single-blade auto-guard | 100 | |
| Jerold | Special pose (counter pose) | 999 | Not a held block: it is a "hit-hand" counter move (AI type Other) that goes through the same formula. Costs 100 Rage and 30 Power to start; it drains stamina over time (EnergySubPeriod 1) and stamina does not regenerate while it runs (inferred from the regeneration check). |
| Viola, Benita | none | — | They must dodge. |
How a blocked hit is resolved#
An attack can only be blocked if:
- it hits you from the front;
- you have more than 0 stamina;
- you are inside the guard animation's active frames; and
- the enemy's move is flagged as blockable. Some moves are not (grabs, many boss specials, every attack of the boss Edith in the data).
The game then computes (the damage side is part of Damage formula#5. Back hits, guards and parries):
diff = (GuardBreak − Guard) / Guard
| diff | Result | Damage you take | Stamina lost |
|---|---|---|---|
| < 0 (attack weaker than guard) | Clean block | 0 | damage × GuardEnergyRatio × (1 + diff) |
| 0 to < 1 | Block with chip | damage × GuardDamageRatio × diff | same formula |
| ≥ 1 (Guard Break at least 2× your Guard) | Guard break: stagger animation, 1 s of no stamina regen | damage × GuardBreakDamageRatio × diff, capped at 100% | same formula |
| ≥ 2.5 (Guard Break at least 3.5× your Guard) | Guard fails: treated as a normal hit, your poise is set to 0 | up to 100% | same formula |
A guard also breaks (as in the third row) if stamina reaches 0 or your Weakness bar is empty.
For the player, stamina loss per blocked hit is capped at 45% of max stamina (BlockEnergyRateMax = 0.45). A single block can never empty a full bar.
| Hero | GuardEnergyRatio | GuardDamageRatio | GuardBreakDamageRatio |
|---|---|---|---|
| Terrence, Viola, Benita | 0.35 | 1 | 1 |
| Norwood | 0.45 | 0 | 1 |
| Jerold | 0.25 | 1 | 1 |
| Elena | 0.25 | 0 | 1 |
Example. Terrence (Guard 50) blocks a 200-damage hit (ignoring the 45% cap above and any talents):
| Guard Break | diff | Result |
|---|---|---|
| 50 | 0 | 0 damage, 70 stamina |
| 75 | 0.5 | 100 damage (chip), 105 stamina |
| 100 | 1.0 | guard break, 200 damage, 140 stamina |
Perfect guard#
Guard animations have two active phases (skillDefence value 2, then 1). A hit landing in the early phase (value 2) is a perfect guard:
- the guard can never break or fail, whatever the Guard Break;
- stamina loss cannot take you below 1;
- damage that gets through is halved;
- there is a short hit-freeze (0.06 s).
| Guard | Perfect phase (fraction of the raise animation) | Normal phase |
|---|---|---|
| Terrence | 12%–41% | from 41%, then the held loop |
| Norwood (both guards) | 33%–74% | from 74% |
| Elena | 0%–41% | from 41% |
Norwood gains extra on a perfect guard: +12 Power (his second gauge; talents add more) and +30% of max stamina back. Elena's perfect guard also triggers a slow-motion effect and enhances her next form.
Hidden mechanics#
- Poise is safe, Weakness is not. A successful block or deflect deals 0 poise damage, but the attack's Weakness damage still applies. Blocking a long string can empty your Weakness bar and break your guard on a hit that would normally be safe.
- Guard Break numbers. Across all enemy attack rows, the most common Guard Break is 50 (exactly Terrence's guard, so no chip). About two-thirds of enemy attacks exceed 50 and cause chip damage on Terrence. About a third reach 100 and break his guard outright. About 12% (Guard Break 175+, mostly the 999 "unblockable-strength" moves) make his guard fail. Only Norwood's Rage guard (1000) is stronger than 999. Whether a move is also flagged as not blockable at all is a separate per-move flag.
- Attacks from behind ignore guards. They are never blocked and deal
BackGuardBreak × BackDamageRatetimes normal damage. Most player attacks have BackGuardBreak 1.25, and backstab-type moves have 2. See Backstab. - Norwood's and Elena's failed guards. A failed guard (diff ≥ 2.5) scales damage by GuardDamageRatio, not GuardBreakDamageRatio. That ratio is 0 for Norwood and Elena, so by the formula a failed guard staggers them but deals no health damage (inferred from the code path; not tested in game).
- Norwood's guard break in the Lunatic state. When Norwood is in the Abnormal state (and therefore also when Lunatic; the code tests
IsHeroSanNotNormal(10004)), a broken guard also sets his Weakness bar to 0. - Guard regeneration is slow. While the guard is up, stamina regenerates at 10%/s instead of 40%/s.
- Talents that change guarding: Terrence's Parry: Enhanced (talent 11203, its text says 30% less stamina consumed on a successful parry; the code applies it as a 300 per-mille cut to the stamina lost on the affected guard move). Other talents raise Guard by a per-mille amount (Terrence has an extra one that only applies in the Abnormal state stage and beyond; inferred from the talent type
SkillSanGuardAdd). A status of type "GuardAdd" sets Guard to 999. See Terrence talent tree. - Parry is part of the guard. Terrence's guard raise has a counter window from 11.7% to 25.5% of the animation, and Elena's guard has a parry window. Timing a hit there triggers a parry instead of a block (see Parry and counter#Terrence's Parry (a block)).
Sources#
reference/lua_src/luascript/logic/playervalue/animalbase_value.lua: 2130–2132, 2376–2378 (no poise damage on a block), 2500–2557 (block resolution, perfect guard), 2563–2601 (deflect), 3045–3095 (GetGuard / GetGuardBreak with talents and the GuardAdd status), 1577–1579 (guard regeneration).luascript/logic/player/animalbase.lua: 4771–4844 (CheckBlock, IsBlocked), 7457–7487 (Fail → hit with poise zeroed), 8484–8529 (OnBlock, guard-break stagger, 1 s delay), 17342–17350 (per-move blockable flag).luascript/logic/player/hero10004.lua: 36–70, 101–115;gamedata/playerdefine/hero10004_define.lua: 20, 38, 51, 57–58.luascript/logic/player/hero10007.lua: 40–64.gamedata/playerdefine/animalbase_define.lua: 236–241 (BlockFrameFreeze 0.06, BlockEnergyRateMax 0.45, BlockGuardLevelHigh 2.5, BlockGuardLevelLow 1);animalbase_value_define.lua: 11.gamedata/playerconfig/hero2*_config.lua(skillBlockedEnable; hero20027 has no blockable entries).- Tables:
es_herodata.luaHeroId 10001–10007 (GuardEnergyRatio, GuardDamageRatio, GuardBreakDamageRatio, BackDamageRate);es_skilldata.luarows 22 (Terrence guard, Guard 50), 418/422 (Norwood 1000/75), 683/687 (Elena 75/100), 492 (Jerold pose 999), all enemy rows for Guard Break statistics;es_animalanimator.luarows hero10001skill11, hero10004skill27/skill28, hero10007skill16(skillDefence, skillCounterAttack, skillParry);es_herotalent.luaTalentId 11203. - Re-read in
build/wiki/pass/scripts/combat/c1.py/c3.py: BackGuardBreak and GuardBreak columns ofes_skilldata.lua;animalbase.lua:8518-8528(Norwood guard-break Weakness reset testsIsHeroSanNotNormal, the Abnormal state). - Verified in a second pass:
animalbase_value.lua2536–2557 (hit-hand branch used by Jerold's pose, same formula),es_skilldata.luarow 492 (RequiredRage 100, RequiredPower 30, EnergySubPeriod 1),animalbase.lua8520–8528 (lunatic Norwood guard break zeroes Weakness),es_herotalent.luaTalentId 11203 (Type 25 = SkillDefenceEnergySub).