Pascal's Wager Wiki

Some trophies, mostly those found in Deep into the Dark Mist, carry random properties. Their stats are fixed by the trophy type, but each stat's value is rolled once from a range when the trophy enters your inventory. The roll is permanent: these trophies cannot be enhanced, reforged or used as reforge material.

How the roll works#

For each of the trophy's (up to 4) properties the game looks up a range row with a lower bound, an upper bound and a step, then computes:

value = Lower + Step × R, where R is a whole number from 1 to (Upper − Lower) / Step, drawn by a generator seeded with RandomSeed + RandomTimes (one call per property).

Pool rowLowerUpperStepPossible values
50101 Attack (+0)2032121 to 32 (12 values)
60601 Health (+0)50100555 to 100 (10 values)

All ranges divide evenly, so the upper bound can always be rolled, but the listed lower bound never can (the smallest roll is one step above it).

The random number does not come from the clock. It comes from a seed kept in your story save: seed = RandomSeed + RandomTimes, and RandomTimes goes up by 10 on every call, one call per property. A three-property trophy uses three consecutive seeds. RandomTimes wraps back to 0 after passing 999,999.

Pools#

Values shown as the possible range for each trophy level (the item's "+N"; the item id's hundreds digit is N).

PoolProperty+0+1+2+3+4+5
501Attack21-3234-4547-5860-7173-8486-100
502Atk vs Humanoid5.1%-8%8.2%-11.1%11.3%-14.2%14.4%-17.3%17.5%-20.4%20.6%-24%
503Atk vs Beasts5.1%-8%8.2%-11.1%11.3%-14.2%14.4%-17.3%17.5%-20.4%20.6%-24%
504Atk vs Sendril5.1%-8%8.2%-11.1%11.3%-14.2%14.4%-17.3%17.5%-20.4%20.6%-24%
506Crit Damage3.1%-5%5.2%-7.1%7.3%-9.2%9.4%-11.3%11.5%-13.4%13.6%-16%
507Crit Rate2.6%-4.7%4.9%-6.7%6.9%-8.7%8.9%-10.7%10.9%-12.7%12.9%-15%
601Defence13-2224-3335-4446-5557-6668-78
602Element Res19-2931-4143-5355-6567-7779-90
603Poison Res19-2931-4143-5355-6567-7779-90
604Arcane Res19-2931-4143-5355-6567-7779-90
605Shadow Res19-2931-4143-5355-6567-7779-90
606Health55-100110-170180-230240-300310-370380-450
701Stamina Regen26-4042-6062-8082-100102-120122-140
702Stamina31-5052-6567-8082-9597-110112-125
703Sanity6-79-1012-1315-1618-1921-22
704Crit Rate2.1%-3.8%4%-5.7%5.9%-7.6%7.8%-9.5%9.7%-11.4%11.6%-13.3%
705Crit Damage2.6%-4.3%4.5%-6.2%6.4%-8.1%8.3%-10%10.2%-11.9%12.1%-13.8%

Random-property trophies#

Each type exists at +0 to +5 (all 17 are also listed in the Trophy list, and their level odds per chest in Trophy sources#Dream Chests). Most also come in three effect strengths that share the same stat pools: ids 67xxx (described as a slight effect), 68xxx (moderate) and 69xxx (great). The strengths differ only in the trophy's special effect (LogicParam; see Trophy effects#Random trophies: the Abnormal and Lunatic families).

TrophyCategoryItem idsLevelsPools (property)
Bloodthirsty EyeScars67001-69501 (18)1-6507 Crit Rate, 502 Atk vs Humanoid, 506 Crit Damage
Beastheart StoneScars67002-69502 (18)1-6507 Crit Rate, 503 Atk vs Beasts, 506 Crit Damage
Glowing CrystalScars67003-69503 (18)1-6507 Crit Rate, 504 Atk vs Sendril, 506 Crit Damage
SkullcutterScars67004-67504 (6)1-6501 Attack, 502 Atk vs Humanoid, 503 Atk vs Beasts
Beast ChainScars67005-67505 (6)1-6501 Attack, 503 Atk vs Beasts, 504 Atk vs Sendril
Meteor BraceletScars67006-67506 (6)1-6501 Attack, 504 Atk vs Sendril, 502 Atk vs Humanoid
Raw Gem AmuletScars67007-69507 (18)1-6501 Attack, 507 Crit Rate, 506 Crit Damage
Poison ArrowleafResistance67008-69508 (18)1-6606 Health, 602 Element Res, 603 Poison Res
Pagan IconResistance67009-69509 (18)1-6606 Health, 604 Arcane Res, 605 Shadow Res
Mist BracerResistance67010-69510 (18)1-6606 Health, 601 Defence
Brass MaskResistance67011-69511 (18)1-6601 Defence, 606 Health, 605 Shadow Res
Flamel's RingResistance67012-69512 (18)1-6601 Defence, 606 Health, 602 Element Res
Zealot's CrestNightmare67013-69513 (18)1-6704 Crit Rate, 705 Crit Damage, 502 Atk vs Humanoid, 504 Atk vs Sendril
Executioner's GlovesNightmare67014-69514 (18)1-6702 Stamina, 705 Crit Damage, 701 Stamina Regen
Stag RingsNightmare67015-69515 (18)1-6702 Stamina, 701 Stamina Regen, 704 Crit Rate
Hunting ClawNightmare67016-67516 (6)1-6703 Sanity, 704 Crit Rate, 705 Crit Damage
Daemon MaskNightmare67017-67517 (6)1-6703 Sanity, 702 Stamina, 705 Crit Damage

Eight more Nightmare items with untranslated Chinese names (67068-67075) also have the random-property flag. They appear in no maze drop list. Each has two pools (for example 67068: Attack and Stamina Regen), and their internal names (such as an attack bonus during abnormal collapse) do not match those pools, so they look like test or cut items.

Where they come from#

  • Maze drops: the Deep into the Dark Mist drop lists (StoryMazeDrop) contain random-property trophies on every maze level, and the best version on offer rises with depth. Level 1 lists only +0; the highest listed version is +1 at level 2, +2 at level 3, +3 at level 4, +4 from level 7 and +5 from level 16. Levels 10-15 list only +3/+4, and from level 21 on only +4/+5 (counted from drop-list entries, not weighted by their Prob chances).
  • Trophy boxes (Dream Chests) from merchants: buying a "trophy box" item picks one trophy from the box's drop list for the current story, weighted by each entry's Prob. That pick uses the same save seed and counter, and if the picked trophy has random properties, its values use the next seeds in the sequence. The purchase is refused when your trophy inventory is full.

Hidden mechanics#

  • Rolled at pickup, then frozen. The roll happens when the trophy object is created in your inventory (a drop, a reward or a merchant purchase). The values are written into the save as two lists (RanT types, RanV values) and loaded back unchanged; the game only rolls again if a saved random trophy has no stored values.
  • The level does not change the roll. Each "+N" version is a separate item whose property ids already point at the +N pool rows, so the pool comes from the item id, not from enhancing (which these trophies cannot do anyway).
  • Save-scumming does not help (inferred from the code). The seed and the roll counter are saved with your story. If you reload a save and pick up the same trophies in the same order, they should roll exactly the same values. You can only change the outcome by changing what else uses the counter before the pickup, such as another random-property trophy or a merchant trophy box (inferred from the shared counter).
  • New seed when the maze is cleared. Choosing to return to Mist Camp after the last maze floor (the prompt about the Terror Obsessions being dispersed) rolls a brand-new 5-digit seed (10000-99999). A new story also starts with a new seed. The roll counter RandomTimes is not reset by this, so the sequence of seeds still continues.
  • The bottom of each range is unreachable. For example, an Attack +0 pool row reads 20-32, but the lowest possible roll is 21. Every value in between is equally likely (one uniform draw per property).
  • Consistency check. A developer test save embedded in the game code holds a Raw Gem Amulet +5 (69507) with Attack 93, Crit Rate 14.5% and Crit Damage 14.8%, and Stag Rings +5 (69515) with Stamina 114, Stamina Regen 126 and Crit Rate 12.8%. All six values fall inside the +5 ranges above.
  • Stats stack normally. Random values go into the same stat totals as fixed trophy stats and reforged sub-properties.

Sources#

  • reference/lua_src/luascript/structdata/fs_trophyitemdata.lua:7-30 (rolled in the constructor only when no saved values exist), :237-258 (RandomProperty formula).
  • reference/lua_src/luascript/structdata/ms_trophyrandomproperty.lua:8-28; gamedata/structdata/exportdata/es_trophyrandomproperty.lua rows 50101-70506 (102 real rows; the other 846 rows are empty PropertyId 0 placeholders).
  • reference/lua_src/luascript/common/mathhelper.lua:240-246 (getRandomWithSeed); reference/lua_src/luascript/structdata/fs_savestory.lua:93-94, 264-265, 737-748 (seed and counter saved), :3874-3886 (GetRandomSeed +10 per call, ResetRandomSeed).
  • reference/lua_src/luascript/controller/controllerstorymode.lua:7493-7501 (seed reset when returning to Mist Camp).
  • reference/lua_src/luascript/structdata/fs_trophyequiplist.lua:42-65, 107-130 and fs_itemlist.lua:64-67, 97 (RanT/RanV saved and applied).
  • reference/lua_src/luascript/ui/controller/exchangectrl.lua:248-256, 1600-1621 (trophy box purchase: weighted pick from StoryItemDrop for the current story, using the same seed).
  • reference/lua_src/luascript/controller/controllerstorymode.lua:5494-5539 and structdata/fs_itemlist.lua:155-168 (trophy created on pickup); structdata/ls_game.lua:356 (developer test save used for the consistency check).
  • Re-check: build/wiki/scripts/refute_trophy_reforge/check2.py (all 102 pool rows and the 17 trophy pool lists) and maze.py (maze drop levels).
  • es_trophydata.lua: ItemIds 67001-69517 (RandomProperty = 1, EmotionType = 1), e.g. 67001 vs 68001 vs 69001 (LogicParam 125/170/200); StoryMazeDrop (MazeLevel vs ItemId).
Categories:Trophies