The Abnormal state is what the interface calls the middle stage of Sanity loss. Once sanity is at or below 70% of the maximum, the hero no longer behaves normally: each character receives a set of changes that are listed in the character's stat page, and trophies built around the state become active. Nothing in this stage locks sanity, so a drink of Elixir of Sanity can bring you back to Normal. The deeper stage is the Lunatic state.
What every hero gets#
- Equipped trophies with an "Abnormal" line work (attack, physical defence, or all elemental resistances; see Sanity talents and trophies).
- Ordinary enemies in the area get an aggressive flag (see Abnormal state#Enemies turn aggressive).
- Talents that read "in the Abnormal State" are now eligible (with the exceptions noted there).
- Chapter bosses and some elites that carry a "sanity drop" roll an extra drop table (usually a 40% chance of Anthozoan Bones) when they die while you are not Normal. Lunatic counts too. The tables are listed per boss in Bosses#How boss fights work.
- Time spent in the state (Abnormal or Lunatic, any hero) is counted for the achievement "Crazy" (18,000 seconds, 5 hours, in total across the whole save; Achievements). Entering it for the first time completes a tutorial-trigger quest (quests 19015 and 19016 are the first-time Abnormal and first-time Lunatic markers).
- Lunatic is just Abnormal plus the lock described on the other page: every effect below still holds.
Effects by hero#
All numbers below are the values at the start (no talents). "Per mille" values in the code are converted to percent.
| Hero | Penalty | Bonus |
|---|---|---|
| Terrence | Maximum health -30%. Chained dodges are disabled (the follow-up dodge moves cannot be used, only a single roll). | Damage +10%. |
| Viola | Every hit that lands on her (even a blocked or parried one, as the wound status is not blocked) inflicts the "Wound" bleed-style effect (Bleed#Related effects): about 1% of base maximum health per second for 5 s (the status refreshes its timer; stacking is not evident in the data). While wounded, her Stamina Recovery Time stat is cut by 50% (100 to 50). The pause after emptying her stamina is (100 - that stat) / 10 seconds, so it grows from none to 5 s (see Stamina). | Critical hits deal +10% extra damage. |
| Benita | Elixir (Power) cost of her moves +33%. Each potion drunk or Pure Blood reclaimed adds 40 to a drug-resistance gauge (it fades by 2 per second); at 100 the Drug Resistance status switches on for 30 s, which takes about three drinks. While it is on, potions heal 50% less, and potion-type statuses (including the Elixir of Sanity and Elixir of Hallucination ticks) are halved before rounding up. | Damage +15% while below 50% health. |
| Norwood | Fire, Poison, Arcane and Dark resistance -50% (also applied to the defence used against matching status effects). Breaking his guard empties his Weakness gauge, which breaks his posture. | Toughness +10 (harder to interrupt). |
| Jerold | Dark resistance -50%. When a hit knocks him out of one of his attack moves he loses 10 Rage. | Attacking a Sendril-marked target (the "Jerold's Taint" marks) gives +10% more Rage. |
| Elena | none in the data | none |
| The First Messenger | none | none |
Enemies turn aggressive#
The moment sanity first drops out of Normal, the game gives every ordinary enemy in the area (not bosses, not stationary or non-hostile ones) a "crazy" flag and a red glow. The flag is cleared when sanity returns to Normal, so it belongs to the whole Abnormal and Lunatic range, not to the Lunatic state alone. Enemy AIs with a second branch for that flag (about 26 attack scripts, for example 20001, 20004, 20011 and 20049) then:
- stop idling in their threat/stalking stance as often and pick the attack state about three times out of four instead;
- chain combo moves back to back (the crazy branch repeatedly re-checks the combo continuation moves).
This is read from the behaviour trees; the numeric weight is 3 : 1 attack to threat (inferred meaning). Enemies that spawn later in the same visit are not re-flagged until the state changes again (inferred).
How talents reshape these effects#
Talents in each tree make the state more of a build choice. The same list is the "hero-specific" part of Sanity talents and trophies, which owns the talents shared by every hero:
| Hero | Talent (level) | Effect, computed from the code |
|---|---|---|
| Terrence | Adapt to Abnormality: Life (1 / 2) | Health penalty -30% becomes -20% / -15%. |
| Terrence | Adapt to Abnormality: Dodge | Continuous dodge works again. |
| Terrence | Knight's Instinct | Damage bonus +10% becomes +15%. |
| Viola | Adapt to Abnormality: Critical Strike (1 / 2) | Critical bonus +10% becomes +20% / +30%. |
| Viola | Adapt to Abnormality: Stamina (1 / 2) | Shortens the stamina wait while bleeding. |
| Viola | Brutality (1) | Critical hits have a 20% chance to inflict Bleed. |
| Benita | Adapt to Abnormality: Elixir (1 / 2) | Cost penalty +33% becomes +22% / +11%. |
| Benita | Adapt to Abnormality: Potion Resistance (1 / 2) | Each use adds 35 / 25 instead of 40 to the gauge, so it takes three / four drinks to switch the resistance on. |
| Benita | Bloodthirsty Instinct | Below 30% health the damage bonus becomes +30%. |
| Norwood | Adapt to Abnormality: Inertia (1 / 2) | Resistance penalty -50% becomes -30% / -10%. |
| Norwood | Obstinate | Toughness bonus +10 becomes +15. |
| Norwood | Berserker Instinct | 30% chance that some fully charged moves empty a non-boss enemy's Weakness gauge. |
| Jerold | Calming Rage (1 / 2) | Rage lost from interrupted moves 10 becomes 7.5 / 5. |
| Jerold | Sendril Affinity (1 / 2) | Extra Rage on marked targets +10% becomes +15% / +20%. |
| Jerold | Sendril's Arrival: Brier | While Abnormal, a well-timed counter during his Arrival move keeps the Rage that move would otherwise empty. |
Hidden mechanics#
- The penalty talents are reductions. The English text of "Adapt to Abnormality" can be read as stacking more penalty; in the code each one lowers the penalty by multiplying it by
(1 - talent percent). Level 2 of the Norwood talent leaves only -10%. - Wounds on Viola ignore blocking. The check that lets a block cancel the wound looks at a "guard" flag that this status does not have, so even a perfectly timed block still wounds her.
- Benita's resistance starts working as soon as the gauge is full, not at the first potion. The three resistance statuses are build-up statuses (
StackAddPer40 / 35 / 25,StackSubPer2): a status only counts as present once its gauge has reached 100, and then the potion code halves the heal. See Benita#Abnormal state. - Terrence's dodge restriction is data, not code. Two dodge rows carry a "normal only" flag; the talent adds a permission for those two moves.
- "Lucky Madness" is not limited to this state. The drop code adds its bonus on every kill. See Sanity talents and trophies#Lucky Madness by hero.
- An unused Viola constant. Her define file also holds a 30% item-value reduction (
SanItemValueSubRate300) that no code reads; only Benita's 50% version is used. - Norwood's Toughness bonus is a flat point value. It is +10 points (+15 with the talent), not a percentage like every other penalty on this page.
Related#
Sanity, Lunatic state, Sanity talents and trophies, Terrence talent tree, Viola talent tree, Benita talent tree, Norwood talent tree, Jerold talent tree, Characters.
Sources#
HeroTalenthero 10002 TalentPos 409 (StoneLevel4, one Diamond level, Value 200; the ValueAdd 100 is never reached);logic/status/statusbase.lua:226-232,:338-342andlogic/player/animalbase.lua:5353-5359(halving needs the active Drug Resistance status).- State check:
logic/player/animalbase.lua:17214-17233. - Constants:
gamedata/playerdefine/hero10001_define.lua:27-29,hero10002_define.lua:82-86,hero10003_define.lua:73-81,hero10004_define.lua:52-53,hero10005_define.lua:166,structdata/ms_statusdata.lua:49-51. - Property changes:
logic/playervalue/animalbase_value.lua:405-445(Terrence, Viola, Norwood, Jerold),:471-540(talent-scaled add/sub helpers),:905-925(Benita Power),:2624-2640, 2814-2830(Benita low-health damage),:2470-2485(Viola crit status),:2740-2756(Jerold rage). - Viola wound:
logic/player/animalbase.lua:7598-7611; StatusData 10004 (LogicType 104, Param5 10, Time 5), 10001. - Norwood:
logic/player/animalbase.lua:8522-8534, 8596-8604, 8654-8662;logic/status/statusbase.lua:312-322;logic/player/hero10004.lua:287-297;logic/playervalue/animalbase_value.lua:2405-2425. - Jerold:
logic/player/animalbase.lua:8962-8970;logic/player/hero10005.lua:270-282; StatusData 10101, 10102 (LogicType 124). - Viola stamina pause:
logic/playervalue/animalbase_value.lua:432-433, 1565-1569; unused constantgamedata/playerdefine/hero10002_define.lua:86. - Benita items:
logic/player/animalbase.lua:6606-6624, 6642-6660(gauge::5262-5330AddStatus,logic/status/statusbase.lua:226-232AddStack,logic/player/animalbase.lua:5353-5358IsHaveStatusById needs an active status);logic/player/hero10003.lua:399-405;logic/status/statusbase.lua:340-342; StatusData 10044-10046. - Terrence dodge: SkillData rows for hero 10001, skill 102 combos 1 and 2 (
SkillSan= 1);logic/player/animalbase.lua:4241-4253; HeroTalent 11408 (Type37, condition "102,0"). - Hero text: table HeroData column
en_UISanityDescriptionfor ids 10001-10005. - Talents: HeroTalent 11408-11410, 12408-12410, 13408-13410, 14408-14410, 15405-15407; see also
reports/talent_trees.md. - Achievement time:
structdata/ms_achievement.lua:57(18000),logic/playervalue/animalbase_value.lua:588-625. - Sanity drop gate:
controller/controllerstorymode.lua:3433-3446(IsHeroSanNotNormal, StoryMonsterSanDropId),:5215-5240(CreateSanDropItem). - Enemy flag:
controller/controllerstorymode.lua:1701-1714(HostPlayerNotNormal: every non-boss, mobile, hostile enemy),logic/playervalue/animalbase_value.lua:1118-1133(set when leaving Normal) and:1206-1210(cleared on return to Normal);logic/ai/brainbase.lua:40-52;logic/ai/behaviour/attack/attack20001.lua:215-310and the other attack scripts listed bygrep IsAnimalCrazy;logic/player/animalbase.lua:11080-11095.