Pascal's Wager Wiki

Talents are the permanent upgrades of the heroes in Pascal's Wager. Every hero has a talent tree of four pages, each page a web of up to 18 nodes. Nodes unlock moves, strengthen them, enlarge potion supplies and change how the hero behaves in the Abnormal state. They are bought with Immundus stones at an altar and can never be taken back. The trees of the individual heroes are listed in the table below; this page explains the rules they all share.

Overview#

HeroTreeNodesAttackSpecialAlchemySanityEmpty slotsLevels in totalStart unlockedStones to max
TerrenceTerrence talent tree34119593852349
ViolaViola talent tree341012573857651
BenitaBenita talent tree351012673756452
NorwoodNorwood talent tree34117793848345
JeroldJerold talent tree361111773650743
ElenaElena talent tree381311773446930
  • Pages. A slot number is page x 100 + position. Page 1 is Attack, 2 is Special, 3 is Alchemy and 4 is Sanity, each with positions 1 to 18, so 72 slots per hero. The shipped trees fill 34 to 38 of them. The unused slots are drawn on the grid with their connecting lines but have no data row.
  • Nodes and levels. A node has 1 to 3 levels (one node in the whole game, in the Elena tree, has 4). Of 211 nodes, 147 have a single level. Its level cap is the number of stones listed for it.
  • Roots. A node with no prerequisite is open from the start of its page.
  • Default nodes. Each hero's basic moves start at level 1 without paying (table below).
  • Elena is the Arcade mode hero and her tree works differently, see Elena talent tree.

Immundus stones#

Each level is paid with one stone of a fixed kind. The kinds are items 50001 to 50005.

Item idStoneNeeded by
50001Chipped Immundusall heroes (mostly first levels and basic moves)
50002Immundusall heroes
50003Immundus Crystalall heroes except Jerold, whose tree never asks for it
50004Immundus Diamondall heroes (the last levels of the strongest nodes)
50005Sea Tooth BoneJerold only

The stones have no ordinary shop price (Price is -1 in the item table) and stack to 99. See Immundus for where they come from.

Stones needed to max every node, after the free default levels:

HeroChipped ImmundusImmundusImmundus CrystalImmundus DiamondSea Tooth BoneTotal
Terrence615217-49
Viola322206-51
Benita517246-52
Norwood817164-45
Jerold415-51943
Elena71085-30

Elena's count covers only the nodes that list stones; her seven Sanity nodes list none (see below). The four base heroes together need 197 stones.

Prerequisites and learning#

  1. Open an altar's menu (see Altars). The talent tab is read-only anywhere else: outside an altar the game shows a hint that an altar is needed.
  2. Pick a node. It can be bought if its prerequisite node (the "Requires" column in the tree tables) is at level 1 or higher; the prerequisite does not need to be maxed. Nodes with no prerequisite are always available.
  3. Each level to buy shows the stone it needs and a confirm box. You may add several levels before confirming if you hold the right stones. Confirming consumes the stones and applies the effect at once. When a node raises maximum Health or maximum Sanity, the game works out the matching Health or Sanity gain at purchase so the current value follows the maximum (inferred from the purchase code).
  4. There is no refund. The panel lets you un-pick levels before confirming, but the game has no code path to remove learned levels (the only one is in the debug menu).

Starting nodes#

HeroNodes that start at level 1
TerrenceLunge Attack (101), Parry (201), Execution (213)
ViolaLight Combo (101), Powerful Shooting (107), Rapid-Fire (113), Counter Attack (201), Backstab (207), Execution (213)
BenitaTouch of Whip (101), Backstab (201), Execution (207), Reclaiming the Pure Blood (208)
NorwoodIron Fist (101), Furious Griminess (102), Execution (207)
JeroldSoul Sword (107), Serene (113), Backstab (201), Sendril Ordeal (204), Execution (207), Evasion: Ensuing (213), Utl Evasion: Sendril Ordeal (214)
ElenaDemiurge's Blade of Discipline (104), Sword Dance - Dual Moon (107), Rage of the Dance (113), Sword Dance - Lone Shadow (114), Flash (201), Execution (207), Parry (213), Counter (214), Demiurge's Curse (216)

Effect types#

Every node has a numeric type that selects what it does. Values are stored as Value + ValueAdd x (level - 1), and when several learned nodes share a type their values are added together. "Permille" means thousandths: 100 is 10%. The value displayed in the node's text is a different column (TextValue) and does not always match what the game applies; see the hero articles for each mismatch. Heroes: T Terrence, V Viola, B Benita, N Norwood, J Jerold, E Elena. Types used by Terrence, Viola or Benita were traced in the code. Types used only by Norwood, Jerold or Elena are described from their node text and were not traced.

Effect typeNodesUsed byScaleWhat it does
SkillOpen64T, V, B, N, J, EflagUnlocks the moves listed in the node's condition (move index, combo step; combo 0 means all steps). A move whose skill row has SkillTalent = N needs the summed SkillOpen value of N, so two nodes can be required (Benita's strengthened whip moves).
display12V, J, EnoneNo effect. The node only exists as a path to other nodes (Viola's Rapid-Fire and Counter Attack, for example).
PropertyAdd10T, V, B, N, J, EpermilleRaises the named stat by value / 1000 of its base (for example Sanity +5% per level).
SkillDamageAdd9T, V, BpermilleMultiplies the damage of the listed moves by (1 + value / 1000).
SkillRageAdd7T, B, N, J, EflatAdds Rage (or the hero's own resource) per hit of the listed moves.
EatSpeedUp6T, V, B, N, J, EflagUses the fast drinking animation.
ItemHpMaxAdd6T, V, B, N, J, EflatMore Health Potions can be carried.
ItemStatusTimeAdd6T, V, B, N, J, EpermilleBuffs created by items last (1 + value / 1000) times as long.
ItemStatusValueAdd6T, V, B, N, J, EpermilleRaises the strength fields of damage, heal and buff statuses that come from items.
ItemValueAdd6T, V, B, N, J, EpermilleHealth Potions heal (1 + value / 1000) times as much, capped at a full heal.
SanPropertyChangeRate6T, V, B, NpermilleChanges a built-in Abnormal-state stat change. Penalties are multiplied by (1 - value / 1000); bonuses by (1 + value / 1000); see Abnormal state#How talents reshape these effects.
StatusChange6V, B, Eid shiftSwaps a status for a stronger version. The condition names the base status id; the node adds its value (1, 2, ...) to the id, with a few moves using value - 1. The stronger versions are separate rows in the status table.
ItemProbAdd5T, V, B, N, JcolumnNot a percentage: the value picks a spare drop-table column (ProbAdd1, ProbAdd2) whose number is added to the drop weight of every entry of the listed item types.
ItemSanAdd5T, V, B, N, JflatSanity restored each time a listed potion or elixir is used.
SanAttackSub5T, V, B, N, JpermilleCuts the Sanity drained by your own hits by value / 1000 (Devout; see Sanity talents and trophies).
SkillToughnessAdd5T, N, J, EflatAdds armour (the Toughness pool, hyper-armour) points to the listed moves while they are performed. See Poise and stagger#Super armour (armour pools).
ComboAttackSubEnergy4J, EpermilleCuts the stamina cost of continuing a combo (Jerold, Elena).
SkillDamageSubAdd4N, J, EpermilleReduces damage taken while the listed move is being performed.
SkillAddStatus3J, EflagMakes the listed moves apply an extra status (Jerold's Sendril marks, Elena's stamina return).
SkillBeatBack3N, J, EflagAllows the listed moves to be cancelled or chained at the right moment (Norwood's interrupt, Jerold's evasion, Elena's parry).
ParryUse2B, EflagTurns on the parry hit box during the hero's normal attacks (Benita).
SkillCondition2EflagAllows a combo to continue after a particular move (Elena).
SkillPowerAdd2B, NflatAdds Power / Griminess / elixir points per hit of the listed moves.
AddChangeBuffer1JflagJerold's Sendril Ordeal: raises the number of energy grids that can be stored.
AddChangeBuffer21JflagJerold's Sendril Ordeal: unlocks the move.
BeatbackChangeBuffer1JflagJerold: a dodge made at the last moment gives an energy grid.
BlockAddPower1NflatBonus gauge when a block lands at the right moment (Norwood).
ColorBulletAdd1VflatRaises the bullet drop chance (10% per level) and amount of the special bullets dropped on kills (Viola).
ColorBulletMaxAdd1VflatRaises the special bullet capacity (Viola).
ExecuteRangeDamage1NflagExecutions also damage nearby enemies (Norwood).
HitAddPower1NpermilleSame, for the Power gauge (Norwood's Griminess).
HitAddRage1TpermilleWhen the hero is hit, gains value / 1000 of the attacker's own Rage-on-hit number.
ItemBlessChance1Bpermille pointsAdded to Benita's blessing success roll (base 400 of 1000). Read from Benita's save even when she is not leading.
NoBullet1VpermilleChance that a shot does not use a bullet (Viola).
SanCritStatusRate1VpermilleChance that a critical hit applies a status in the Abnormal state (Viola's Bleed).
SanDarkStatusRageAdd1JpermilleMore Rage on hits against Sendril-marked enemies in the Abnormal state (Jerold).
SanHpLowDamageAddRate1BpermilleMultiplies the Abnormal-state low-Health damage bonus (Benita).
SanItemStatusChange1Bid shiftBenita: swaps the potion-resistance status for a weaker one.
SanPropertyChangeValue1NflatSame idea for flat Abnormal-state changes (Norwood's poise).
SanRageReserve1JflagJerold: keeps Rage after blocking in a particular situation in the Abnormal state.
SanRageSubInSkillToughness1JpermilleLess Rage lost when an attack is interrupted in the Abnormal state (Jerold).
SanSkillWeaknessRate1NpermilleChance that a fully charged move staggers an enemy in the Abnormal state (Norwood).
SkillDefenceEnergySub1TpermilleCuts the stamina lost when a block lands through the listed move by value / 1000.
SkillRageSub1JpermilleLowers the Rage cost of the listed moves by value / 1000 (Jerold).
SkillSanPermit1TflagAllows a move that is normally locked while the hero is in the Abnormal state (Terrence's second dodge).
SkillToughnessSubAdd1TflatAdds poise damage to the listed moves (they break enemy poise more easily).
SkillWeaknessSubAdd1TpermilleMultiplies the resilience (stagger gauge) damage of the listed moves by (1 + value / 1000).
SkillWeaknessSubBaseOnRageAdd1EpermilleExtra resilience damage that depends on how full the Rage gauge is (code checks above 33% and above 66%). Elena only.
SpecialCombo1JflagJerold: allows Sendril Ordeal to be inserted into combos.
StatusBloodCritRateAdd1VpermilleMultiplies crit rate by (1 + value / 1000) against bleeding targets.

Achievements#

AchievementCondition (game text)What the code checks
BeginnerInset an immundusThe first confirmed talent purchase.
GrandmasterInset 5 Immundus DiamondsCounts Immundus Diamonds spent on talents (5 needed). Sea Tooth Bones do not count.
Super HumanActivate all the Talents at the highest levelEvery node of Terrence, Viola, Benita and Norwood at its top level, Sanity page included. Jerold and Elena are excluded. Checked after each purchase and again at the end of a playthrough (the second check is inferred from its position in the end-of-run code).
The Foreign SwordsmanActivate every max talent of JeroldEvery Jerold node at its top level.
Demiurge DancerActivate all of Elena's talents in Dance of the ThroneElena's Attack, Special and Alchemy pages at the top level, in Arcade mode. The Sanity page is skipped in the code.

Hidden mechanics#

  • The Condition column decides what a node touches. For move effects it is a list of move,combo pairs. For item effects it is a list of item ids or item types, for stat effects a stat id. A node that lists nothing applies to everything of its kind.
  • Text and data can disagree. Descriptions are built from TextValue, effects from Value. Examples found in the first three trees: Viola's Adapt to Abnormality: Critical Strike (text 40%, real 30%), Benita's Lingering Wind Whisper (text 66.6%, real 50%), and Sanity: Enhanced Elixir on every hero (text 10, real 5).
  • Lucky Madness does not use percent. It adds 5 or 10 to the weight of drop entries, and the code that rolls drops does not test the sanity state at all (controllerstorymode.lua:5355-5380 and fs_herodata.lua:401-431: no sanity condition).
  • Abnormal-state nodes are modifiers of built-in effects, not new effects: they shrink a penalty or multiply a bonus that each hero already has. Their code tests IsHeroSanNotNormal, so they work in both the Abnormal and the Lunatic stage. See Abnormal state#How talents reshape these effects.
  • Benita's blessing talent is global. The blessing roll reads Benita's talents directly, so Elixir Research helps even when you play someone else (see Blessing#Success chance).
  • Unused feature: groups. The code supports talent groups (TalentParent, type 999) where children share a parent's level, but no row in the shipped table uses it.
  • Elena's Sanity nodes are not bought. Seven of them are granted by defeating the seven Obsessed Ones in Arcade mode (each monster row names a talent to add) and are restored in later runs through the achievements for those fights. Details in Elena talent tree.
  • Strange messages. The "not enough stone" messages use the labels "Not Enough Immundus" for both the Immundus and the Crystal stone and the bare text "Immundus Crystal" for the Diamond stone; this is a text-table oddity.
  • Debug switch. A developer flag (DebugTalentOpenAll) forces every node to at least level 1; it is off in the shipped game.

Sources#

  • reference/lua_src/gamedata/structdata/exportdata/es_herotalent.lua (211 rows) and luascript/structdata/ms_herotalent.lua:5-81 (type ids), 83-96.
  • luascript/structdata/fs_talentdata.lua:5-45, 79-127, fs_herodata.lua:253-300, 342-372, 401-434, fs_herolist.lua:114-134.
  • luascript/ui/controller/playerinfoctrl.lua:90-96 (stone kinds), 4280-4331, 4405-4460, 4562-4600, 4850-4930.
  • luascript/controller/controllerstorymode.lua:8399-8412 (save menu opens the editor), 1536-1548 (end-of-run check), 1722-1735 (Arcade talent grant); luascript/structdata/fs_userdata.lua:109-123.
  • luascript/structdata/ms_achievement.lua:22-46; table Achievement rows with ids 11002, 12007, 20004, 40008, 60002, 60005-60011.
  • Table ItemData rows 50001-50005; table StoryMonster (column TalentAdd, 7 rows).
  • Abnormal-state types re-checked in the heroes_a pass: animalbase_value.lua 2410 (Norwood), 2476 (Viola Brutality), 2746 (Jerold), 2625 (Benita) and animalbase.lua 6640, 8964 all call IsHeroSanNotNormal.
  • Per-type code: logic/playervalue/animalbase_value.lua (many sections, listed in the hero articles), logic/player/animalbase.lua, logic/status/statusbase.lua.
  • build/wiki/data/talents_a/talents.json was generated from the table for these pages.