Shields and protection covers the statuses that stop damage or debuffs instead of raising stats: shields that soak up damage, death wards that leave you at 1 HP, short invincibility, debuff immunity and unbreakable guarding. They come from Trophies, Consumables, hero skills and the maze statues. See Status effects for how statuses work in general and Buffs for the stat boosts.
Shields#
A hero has two separate shield pools: the skill shield (property 34) and the trophy shield (property 33). A shield status fills its pool when it starts. The status ends when the pool reaches 0 or its time runs out, and the pool is emptied when the status ends.
| Source | Status | Pool | Absorbs | Lasts |
|---|---|---|---|---|
| Benita: Holy Soul shield skill | 10016 | Skill shield | 20% of base skill shield | 50 s or until broken |
| Benita, with Elixir: Sanctuary of Holy Soul rank 1 / 2 | 10017 / 10018 | Skill shield | 30% / 40% of base skill shield | 50 s |
| Basilisk's Protection, Halo Pendant (trophies) | 10026 Trophy Shield | Trophy shield | 500 | Until broken |
| Double-star Brooch (trophy) | 10079 Trophy Shield (small) | Trophy shield | 250 | Until broken |
| Shriveled Holy Fruit (items 20028, 72120) | 10072 Potion Shield | Trophy shield | 400 | 60 s or until broken |
The base skill shield comes from the attribute table (Property_34, always equal to Property_33). It equals base max HP (Property_5) only for the first 13 attribute points. From point 14 on it grows faster, for example 1264 against 1186 HP at point 20 and 1986 against 1857 at point 86 (attribute set 1). Benita's shield is therefore 20/30/40% of that base skill shield value, slightly more than the same percentage of her max HP at high attribute points.
How shields absorb#
- Any HP loss hits the skill shield first, then the trophy shield, and only then your HP. This includes damage-over-time ticks (inferred: DoT ticks go through the same HP-loss function).
- If the shields absorb the whole hit, you take no HP damage at all.
- Falls ignore shields. Fall damage is a share of base HP + skill shield + trophy shield, so a lethal fall is still lethal with a full shield.
Death wards#
| Source | Status | Charges | Recharge |
|---|---|---|---|
| Adamina's Protection, Basilisk's Nirvana, The Ring of the Colossus Guardian (trophies) | 10025 Death Ward | 1 | Each time you rest at an altar |
| Cleansing Saint statue in the maze: printed price 20 sanity, 10 after the halving (Maze statues#Sanity is halved) | 10090 Death Ward (stacking) | +1 per use, up to 3 | Not recharged. Carried between maze floors |
A blow that would take you to 0 HP leaves you at 1 HP and uses one charge. The trophy ward is used before the maze ward. The Death Ward status sits in family 111, shared with the enemy markers in Blind; they never meet on one target in practice (inferred).
Other protection#
| Status | Source | Effect | Duration |
|---|---|---|---|
| 10082 Invincible | Norwood: successful counter | Takes no damage from hits and cannot be hit-staggered. Damage-over-time ticks are not stopped (see Hidden mechanics). | 1.5 s |
| 10068 / 10123 Debuff Immunity | Slightly Sweet Roots / Slightly Sweet Roots+ | Removes all current debuffs when eaten, then blocks new ones | 30 s / 300 s |
| 10120 Unbreakable guard | Elena: single-blade ultimate | Guard rating set to 999, so blocks don't break | Until her Power runs out |
| (trophy logic type 115, not a status kind) Pierce immunity | Marcion Puzzle Ball (trophy) | Pierce-type hits do 0 damage. Pierce-type statuses (only 10029, the poison mist) have no effect and no visual. | While equipped |
Hidden mechanics#
- Trophy shields and the trophy death ward refill only when you rest at an altar. Equipping the trophy does nothing until the next rest (the rest handler is the only code that applies these statuses; inferred that nothing else does). When you rest, the game removes the old status and applies a fresh one, so the shield returns to full. They are not saved either (
SaveEnable0), so reloading may leave you without them until you rest (inferred). See Altars. - Shields don't add together. Applying a shield status first sets its pool to 0, then fills it. Re-casting Benita's shield on a half-broken shield gives a fresh full shield, never more (her skill code clears the old shield first). Eating a second Shriveled Holy Fruit while the first Potion Shield is still active only resets the 60 s timer: the same-ID refresh path (
AddStatus) skips the constructor that fills the pool, so a half-broken potion shield is not topped up. - The big trophy shield blocks the others. Trophy Shield (500), Trophy Shield (small) and the Potion Shield are one family (112). The 500 shield has
IsRefresh0, so while it is up, the game rejects any other member of the family:- Eating a Shriveled Holy Fruit while the 500-point trophy shield is active does nothing, although the fruit is still used up (inferred: the item is consumed before its status is applied).
- Wearing Double-star Brooch together with Basilisk's Protection or Halo Pendant is useless. At rest, the 500 shield is applied first and the 250 shield is rejected.
- Eating the fruit while the 250-point brooch shield is active replaces it with a full 400-point Potion Shield.
- Skill and trophy shields do stack. They are separate pools, so Benita's Holy Soul shield sits on top of a trophy or potion shield.
- Benita's Annihilation talent spends both pools. Its damage equals the skill shield plus the trophy shield remaining. Using it empties both pools, which removes your trophy shield until the next altar rest.
- Death wards don't save you from falls. The ward is skipped when the HP loss is fall damage. Hits that are meant to kill outright are tagged with a reason that the game never defines. That tag counts as "no reason", so the death ward appears to save you from those as well (inferred from the code; untested).
- Debuff Immunity has blind spots. It blocks only statuses flagged as debuffs. Enemy sanity loss (10040), poison mud (10029), the defence-down and weakness debuffs that Treasure Thieves (the Black Sprite King) puts on himself (10110, 10111) and other unflagged statuses still get through. It does block Stun and the side effects of Brute Force and Elixir of Epiphany (see Buffs).
- Invincibility doesn't stop statuses or DoT. Norwood's 1.5 s invincibility (status 10082, logic type 115 NoDamage) zeroes the damage of hits and blocks new hit reactions, but
AddStatusnever checks it (inferred), and the damage-over-time ticks of Bleed, Poison, sanity drain and similar statuses are not stopped either (why). - The maze death ward is generous. Each use of the Cleansing Saint statue adds a charge, up to 3, and the ward is saved and carried from floor to floor until used. When it saves you, it loses one charge.
Sources#
ui/controller/statueuictrl.lua:215-217(SubProperty(propertyId, value / 2)) and:146-149(IsPropertyEnough): the statue price is halved.- Status-group pass:
es_statusdata.lua10025 (StatusType111,LogicType110), 10026/10072/10079 (Param4500/400/250,IsRefresh0/1/1), 10082 (1.5 s,LogicType115), 10090 (Overlay3, shared and saved), 10016-10018 (Param5200/300/400, 50 s). - StatusData rows with StatusId 10016-10018, 10025, 10026, 10029, 10068, 10072, 10079, 10082, 10090, 10120, 10123 (
es_statusdata.lua): Param1 (33 trophy shield, 34 skill shield), Param4, Param5, Time, StatusType 112, IsRefresh, Overlay, SaveEnable, Share. - TrophyData rows 13 (60028, LogicType 115), 29 (60044, 106), 38 (60053, 107), 39 (60054, 106), 46 (60058, 106), 47 (60059, 120), 72 (60084, 107), plus the higher-tier copies (rows 187-212). ItemData rows 338, 341, 362, 371. StoryMazeStatue rows 18 and 24 (20 sanity,
GetStatusId10090). HeroTalent row 86 (Sanctuary of Holy Soul,StatusChange). HeroAttributeData (Property_5 = Property_33 = Property_34). luascript/structdata/ms_itemdata.lua:61-98(trophy logic types and status IDs);ms_statusdata.lua:47(NoDeathAddId).luascript/logic/status/status109.lua:7-55(shield set, ends at 0, emptied on clear);statusbase.lua:117-163(charges);status104.lua:11-31(invincibility check in the uncalledGetValueByPropertyId),animalbase.lua:5425-5497(ticks useGetPropertyValue).luascript/logic/playervalue/animalbase_value.lua:1014-1037(absorb order),1062-1087(death wards),1894-1902(fall damage includes shields),2022-2034, 2798-2808(kill-outright reason),2130-2141(pierce immunity),3068-3070(guard 999).gamedata/playerdefine/animalbase_define.lua:514-519(DamageReasonhas no MustDeath entry).luascript/logic/player/animalbase.lua:5248-5351(family rules),5597-5621(debuff cleanse),5825-5833(IsNoDamage),6624-6626(Sweet Roots cleanse),13081-13109(altar rest re-applies trophy statuses).luascript/logic/player/hero10003.lua:368-391, 408-412;logic/playervalue/hero10003_value.lua:123-128;hero10004.lua:87;hero10007.lua:433;logic/playervalue/hero10007_value.lua:15-30;logic/status/statusbase.lua:250-292(pierce immunity on statuses).