Stamina (internally Energy) is the bar every hero spends on attacks, dodges, throws and absorbing hits with a guard. It refills very quickly, but almost every action pauses the refill until its animation is nearly over, and an empty bar disables blocking entirely.
Overview#
- Each action in the skill table has a stamina cost (
EnergySub). The cost is taken at the action's first animation trigger, not when you press the button. - An action only needs more than 0 stamina to start. A 210-cost art works with 1 stamina left; the bar just bottoms out at 0. The bar can never go below 0.
- Regeneration is a percentage of your maximum, so a bigger bar also refills faster in absolute terms.
- Running and sprinting do not cost stamina. No code path charges stamina for movement (inferred from the absence of any such call).
Maximum stamina#
Max stamina comes from one attribute: attribute 6 (internal name Generous; see Attributes). The formula is:
Max stamina = floor(HeroRate × T(points) / 1000)
T is a curve shared by all heroes. HeroRate is a per-hero multiplier.
| Points in attribute 6 | 1 | 5 | 10 | 15 | 20 | 25 | 30 | 40 | 50 | 60 | 80 | 99 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| T(points) | 291 | 334 | 400 | 488 | 573 | 637 | 688 | 750 | 793 | 815 | 830 | 840 |
| Hero | HeroRate | Starting points | Starting max | At 20 | At 30 | At 40 | At 60 | At 99 |
|---|---|---|---|---|---|---|---|---|
| Terrence | 700 | 12 | 303 | 401 | 481 | 525 | 570 | 588 |
| Viola | 850 | 14 | 398 | 487 | 584 | 637 | 692 | 714 |
| Benita | 800 | 9 | 308 | 458 | 550 | 600 | 652 | 672 |
| Norwood | 750 | 14 | 351 | 429 | 516 | 562 | 611 | 630 |
| Jerold | 600 | 14 | 281 | 343 | 412 | 450 | 489 | 504 |
| Elena | 600 | 24 | 375 | 343 | 412 | 450 | 489 | 504 |
On Casual the base value is raised by 20% before talents and trophies are applied.
Regeneration#
| Situation | Rate |
|---|---|
| Normal | 40% of max stamina per second (EnergyRecovery 400‰) |
| Guard raised (Guarding) | 10% of max per second (EnergyRecoveryBlock 100‰) |
| During most actions | 0, until the animation reaches its "run exit" point (the frame where you could start moving again) |
| After your guard is broken | 0 for 1 second |
| After the bar hits 0 | 0 for the hero's exhaustion delay (see below) |
These actions do not pause regeneration: holding a guard, drinking a consumable with the normal drink skill (the code does not list the quick-drink skill 113, so it should pause regeneration like an attack; inferred), executions, backstabs, and any skill flagged EnergyRecoveryForce.
At 40% per second, Terrence's starting bar of 303 refills from empty in 2.5 seconds once regeneration is allowed. Benita's Wind Whisper / Breath statuses (10019-10021) add 666 per mille to the base 400 for 40-60 s (per the Benita article).
Costs of common actions#
All values are flat stamina points from the skill table.
| Hero | Light attacks | Heavy / charged | Combat arts | Dodge | Throw | Guard |
|---|---|---|---|---|---|---|
| Terrence | 65 per swing | 95 (heavy chain), 150–180 (charged) | 95–120 (30 Rage), 150–210 (full Rage) | 65 | 65 | 0 to raise; hits drain stamina |
| Viola | 90 per Light chain hit (melee) | 50 (heavy chain), 170 (charged shot) | 140 | 65 | 65 | none |
| Benita | 65 | 65 | 65 | 65 | 65 | none |
| Norwood | 65 (light chain) | 105 (heavy chain) | 65 | 65 | 65 | 0 to raise; hits drain stamina |
| Jerold | 55 | 75 | 95 | 65 | 65 | none (counter pose, drains stamina over time) |
| Elena | 36 | 36 | 60–96 (form switch 96 / 48) | 48 | 48 | 0 to raise; hits drain stamina |
Backstabs, executions, drops, and eating/drinking cost no stamina (EnergySub 0 for every hero).
Hidden mechanics#
- Overspending is free. The game only checks that stamina is above 0. Starting a 180-cost charged attack with 5 stamina left is allowed; you just end at 0.
- Exhaustion delay. When the bar hits exactly 0, regeneration is locked for
clamp(100 − EnergyRecoveryTime, 0, 100) / 10seconds. Terrence, Viola, Benita and Norwood have EnergyRecoveryTime 100, so they have no extra delay. Jerold and Elena have 92, so they wait 0.8 s. While in the Abnormal state (and therefore also when Lunatic) and carrying her hit status, Viola's EnergyRecoveryTime is cut by 50% (to 50; see Abnormal state#Effects by hero), which works out to about a 5 s lockout (calculated from the formula). - The real regen pause is the animation. Regeneration stays off until the current move's run-exit frame. Chaining attacks keeps the bar frozen; stepping out between swings lets it refill.
- Guarding at 0 stamina does nothing. A block or a hit-deflect only counts if stamina is above 0.
- Stamina from critical hits. The trophies Oath (+15) and The First Seed (+35) restore that much stamina on each critical hit you land with a weapon (not with throwables).
- Cheaper dodges. Eternity and Concentration Rune (−15%), Broken Eternity (−9%) and Chaos Silk (−20%) reduce the stamina cost of dodges only (dodge, dodge-cancel, and Jerold's leaping dodges). See Trophy effects and Dodging.
- Free actions. A status of type EnergyDontUse makes every action cost 0 stamina while it lasts. Benita's statuses 10022–10024 and Elena's status 10114 are of this kind. Elena's is applied by her form-change move and is removed when her Power gauge runs out.
- Jerold's combo discount. A Jerold talent reduces stamina costs by a per-mille amount once he has chained 3 or more attacks (
TalentComboAttackNum = 3). - Wheel of Reversal. For Jerold, this trophy restores a flat 50 stamina every time he triggers a perfect ("extreme") dodge. See Dodging.
Sources#
logic/playervalue/animalbase_value.lua:428-433(IsHeroSanNotNormal(10002)andHero10002_Define.SanHitEnergyRecoveryDelayRate).reference/lua_src/luascript/logic/playervalue/animalbase_value.lua: 627–697 (regeneration pause rules, delay timer), 809–895 (cost lookup,> 0check, dodge trophy reduction), 1090 (clamp to 0..max), 1539–1584 (exhaustion delay formula, regeneration rates), 200–215 (Casual +20%), 432–433 (Viola lunatic modifier), 2487–2492 (stamina on crit).luascript/logic/player/animalbase.lua: 3743–3757 (costs charged on the first trigger frame), 4818–4832 and 4846–4875 (guard and deflect need stamina > 0).gamedata/playerdefine/animalbase_value_define.lua: 11 (DefenceBreakEnergyRecoveryDelay = 1), 24 (CasualEnergyRatio = 0.2).luascript/structdata/fs_herodata.lua: 575–608 (property formula).- Tables:
es_heropropertydata.lua(PropertyId 11 rates; PropertyId 15/6/27 recovery values per hero),es_heroattributedata.lua(AttributeId 6, Property_11 curve),es_herodata.lua(Attribute_6 starting values, HeroId 10001–10007),es_skilldata.lua(EnergySub; e.g. rows 1, 15, 18, 35, 36, 249, 336, 444, 558, 728),es_trophydata.luarows 18, 25, 40, 49, 66, 75, 78. - Re-read in
build/wiki/pass/scripts/combat/c5.py; Casual +20% and the Terrence 363 example are on the Difficulty article. - Raw data dump:
build/wiki/data/resources/player_skills.tsv,heroes.json. - Verified in a second pass:
animalbase_value.lua858–861 (EnergyDontUse status), 645–660 (regeneration pause),hero10005_value.lua33–45 (Jerold combo discount),hero10007.lua419–425 (Elena's EnergyDontUse status 10114),es_skilldata.luaEnergySub for skill indexes 101–104 per hero.