Pascal's Wager Wiki

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.

HeroPenaltyBonus
TerrenceMaximum health -30%. Chained dodges are disabled (the follow-up dodge moves cannot be used, only a single roll).Damage +10%.
ViolaEvery 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.
BenitaElixir (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.
NorwoodFire, 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).
JeroldDark 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.
Elenanone in the datanone
The First Messengernonenone

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:

HeroTalent (level)Effect, computed from the code
TerrenceAdapt to Abnormality: Life (1 / 2)Health penalty -30% becomes -20% / -15%.
TerrenceAdapt to Abnormality: DodgeContinuous dodge works again.
TerrenceKnight's InstinctDamage bonus +10% becomes +15%.
ViolaAdapt to Abnormality: Critical Strike (1 / 2)Critical bonus +10% becomes +20% / +30%.
ViolaAdapt to Abnormality: Stamina (1 / 2)Shortens the stamina wait while bleeding.
ViolaBrutality (1)Critical hits have a 20% chance to inflict Bleed.
BenitaAdapt to Abnormality: Elixir (1 / 2)Cost penalty +33% becomes +22% / +11%.
BenitaAdapt 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.
BenitaBloodthirsty InstinctBelow 30% health the damage bonus becomes +30%.
NorwoodAdapt to Abnormality: Inertia (1 / 2)Resistance penalty -50% becomes -30% / -10%.
NorwoodObstinateToughness bonus +10 becomes +15.
NorwoodBerserker Instinct30% chance that some fully charged moves empty a non-boss enemy's Weakness gauge.
JeroldCalming Rage (1 / 2)Rage lost from interrupted moves 10 becomes 7.5 / 5.
JeroldSendril Affinity (1 / 2)Extra Rage on marked targets +10% becomes +15% / +20%.
JeroldSendril's Arrival: BrierWhile 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 (StackAddPer 40 / 35 / 25, StackSubPer 2): 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 (SanItemValueSubRate 300) 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.

Sanity, Lunatic state, Sanity talents and trophies, Terrence talent tree, Viola talent tree, Benita talent tree, Norwood talent tree, Jerold talent tree, Characters.

Sources#

  • HeroTalent hero 10002 TalentPos 409 (StoneLevel 4, one Diamond level, Value 200; the ValueAdd 100 is never reached); logic/status/statusbase.lua:226-232, :338-342 and logic/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 constant gamedata/playerdefine/hero10002_define.lua:86.
  • Benita items: logic/player/animalbase.lua:6606-6624, 6642-6660 (gauge: :5262-5330 AddStatus, logic/status/statusbase.lua:226-232 AddStack, logic/player/animalbase.lua:5353-5358 IsHaveStatusById 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 (Type 37, condition "102,0").
  • Hero text: table HeroData column en_UISanityDescription for 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, StoryMonster SanDropId), :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-310 and the other attack scripts listed by grep IsAnimalCrazy; logic/player/animalbase.lua:11080-11095.
Categories:Sanity