Besides plain stat lines, 395 of the 477 trophy rows carry a special effect. In the data it is a pair of numbers: LogicType (which effect) and LogicParam (how strong). The game checks the effect at the moment it matters, for example when you land a hit, take a hit, pick up an item or rest at an altar. This page lists every effect, what the parameter means, and which trophies have it. For the stat lines, see Trophy enhancement, Trophy reforging and Random trophy properties.
How effects combine#
- Only effects with both type and parameter above 0 count.
- The game builds one table of totals for all six equipped trophies. If several equipped trophies share an effect, their parameters are added, unless the trophy is flagged
NoOverlay, in which case only the largest is used. 86 rows have that flag: every Lunatic-slowdown trophy (type 124) and every rage trophy (type 125). - "Similar effects do not stack" on a shield or death-ward trophy does not need that flag: the shield and ward are statuses with fixed values, so two of them just apply the same status again. Wearing a 500-point and a 250-point shield trophy together gives no extra shield; see Hidden mechanics.
- The parameter comes from the base item and does not change with enhancement.
- Most parameters are in per mille (thousandths): 125 means +12.5%, 4500 means +450%. A parameter of 1 simply means "on". The designers' own notes on the unused test rows say the same ("per mille").
- Effects tied to your own attacks only apply to your hero's normal attacks and skills. Thrown items and other consumables are excluded (the code requires that no item is involved).
Effect list#
| Type | Internal name | Effect | Parameter |
|---|---|---|---|
| 101 | DamageSuckHp | Heal after you deal damage | Per mille of the damage dealt |
| 102 | DamageSubHp | Lose HP when you deal damage | Per mille of the damage dealt |
| 103 | CriticalEnergyAdd | Gain stamina on a critical hit | Flat stamina |
| 104 | HPMaxAttackAdd | More attack at full HP | Per mille attack |
| 105 | HPHalfAttackAdd | More attack at 50% HP or less | Per mille attack |
| 106 | NoDeath | Survive one lethal hit, renewed by resting | On/off |
| 107 | Shield | 500-point trophy shield, renewed by resting | On/off |
| 108 | DamagePerSec | Unused: lose HP every second | Per mille of max HP |
| 109 | DodgeEnergySub | Dodges cost less stamina | Per mille reduction |
| 110 | EatToughnessAdd | More poise while drinking a potion | Flat poise |
| 111 | AutoGetItem | Items fly to you automatically | On/off |
| 112 | Silent | Enemies hear you only at touching range | On/off |
| 113 | ShowDamageValue | Damage numbers on enemies | On/off |
| 114 | DeathDisappear | Trophy is destroyed when you die | On/off |
| 115 | PierceMuteki | Immune to Pierce damage | On/off |
| 116 | ResistSubSan | Sanity loss from hits halved | On/off |
| 117 | DeadDropSub | Unused (no code reads it) | none |
| 118 | HPHalfPhysicResistAdd | Physical defence up at 50% HP or less | Per mille |
| 119 | AlwaysSan | Treated as Abnormal sanity at all times | On/off |
| 120 | ShieldSmall | 250-point trophy shield, renewed by resting | On/off |
| 121 | SanAttackAdd | Attack up while Abnormal or Lunatic | Per mille |
| 122 | SanPhysicResistAdd | Physical defence up while Abnormal or Lunatic | Per mille |
| 123 | SanElementResistAdd | Elemental resistances up while Abnormal or Lunatic | Per mille |
| 124 | CrazySanSubSlow | Sanity drains slower in the Lunatic state | Per mille reduction |
| 125 | HPHalfRageAdd | More rage gained at low HP | Per mille |
| 126 | HPHalElementResistAdd | Elemental resistances up at 50% HP or less | Per mille |
| 127 | HPMaxElementResistAdd | Elemental resistances up at full HP | Per mille |
| 128 | HPMaxPhysicResistAdd | Physical defence up at full HP | Per mille |
| 129 | DodgeEnergyAdd | Jerold gains stamina after a perfect evasion | Ignored (50 fixed) |
| 130 | ChangeSendrilProperty | Marked enemies count as Sendril | On/off |
| 131 | GetDeathDropItem | Bones lost on death can be recovered | On/off |
Thresholds used by the code: "Abnormal" sanity starts at 70% of maximum sanity and "Lunatic" at 50% (see Sanity and Lunatic state). The names that say "Half" are not all 50%, see Hidden mechanics.
Trophies by effect#
Items marked E can be enhanced; the rest cannot. Names that are only Chinese in the data are unreleased test rows.
Sustain and self-damage#
| Type | Trophy | Id | Parameter | Real value | |
|---|---|---|---|---|---|
| 101 | Father's Love | 60024 | 50 | 5% of damage dealt | E |
| 101 | Glory | 60045 | 75 | 7.5% | E |
| 101 | Basilisk's Epiphany | 60052 | 100 | 10% | E |
| 102 | Discipline | 60020 | 50 | 5% of damage dealt lost as HP | E |
| 102 | Shimmering Shard | 60064 | 75 | 7.5% | E |
| 102 | Brooch with Sacred Pattern | 60067 | 120 | 12% | E |
Both effects round up (ceil(damage x param / 1000)), so even a 1-damage hit heals or costs at least 1 HP. They trigger only on hits from your hero's own skills that deal more than 0 damage. Damage-over-time from statuses (bleed, poison, burn and so on) is computed by the status code and never reaches this check, so it neither heals nor hurts you. The code also has a branch for "continuous" (per-frame) damage, where the same rounding would give at least 1 HP every frame, but no hero skill is configured as continuous damage (only environment traps are), so in practice it never applies. The self-damage cannot kill you: it passes a minimum of 1 HP to the HP function, so it leaves you at 1 HP at worst. It goes through the normal HP-loss path, so your skill shield and then your trophy shield soak it up before your HP does.
Damage conditions#
| Type | Trophy | Id | Parameter | Condition | |
|---|---|---|---|---|---|
| 104 | The Withered | 60034 | 70 | +7% attack at full HP | E |
| 104 | Pale Egg | 60047 | 100 | +10% | E |
| 105 | Scarlet Egg | 60048 | 100 | +10% attack at 50% HP or less | E |
| 105 | Figurine of Sorrowful Nun | 60063 | 75 | +7.5% | E |
| 105 | Fanatical Sand | 60066 | 150 | +15% | E |
| 103 | Oath | 60033 | 15 | +15 stamina per critical hit | E |
| 103 | The First Seed | 60055 | 35 | +35 stamina per critical hit | E |
The attack bonus multiplies your attack before the defence step (see Damage formula). "Full HP" means current HP is at least maximum HP. The 105 check uses current <= max / 2.
Defence conditions#
| Type | Trophy | Id | Parameter | Effect | |
|---|---|---|---|---|---|
| 118 | Brass Ring of Handel | 60062 | 75 | Physical defence +7.5% at 50% HP or less | E |
| 118 | The Rose | 60065 | 150 | +15% | E |
| 127 | Seal of the Pious | 60081 | 4500 | Elemental resistances +450% at full HP | E |
| 128 | Strong Spirit Casket | 60086 | 4500 | Physical defence +450% at full HP | E |
| 126 | (HP below 50%, elemental) | 67073 | 2000 | +200%, test row only | no |
The 127 and 128 trophies multiply the base defence value by 5.5. The damage formula never lets damage fall below 30% of attack, so the gain depends on how strong the hit is compared with your defence. Worked examples (attack against defence 100, before other modifiers): an attack of 300 deals 130 normally and 90 with the trophy (31% less, now at the floor); an attack of 1000 deals 900 normally and 355 with the trophy (61% less); an attack of 2000 deals 1900 and 952 (50% less). "Elemental" here means Fire, Poison, Arcane and Dark. These bonuses do not apply to Pierce damage or to damage from throwables.
Shield, ward and rest effects#
| Type | Trophy | Id | Effect | |
|---|---|---|---|---|
| 106 | Adamina's Protection | 60044 | Survive the next fatal hit | E |
| 106 | Basilisk's Nirvana | 60054 | same | E |
| 106 | The Ring of the Colossus Guardian | 60058 | same | E |
| 107 | Basilisk's Protection | 60053 | 500-point shield | E |
| 107 | Halo Pendant | 60084 | 500-point shield | E |
| 120 | Double-star Brooch | 60059 | 250-point shield | E |
The status is only added when you rest at an altar (the "worship rest" action). Resting first clears any leftover ward or shield and then adds a fresh one, so you can top up a half-worn shield by resting again. The ward (status 10025) keeps you at 1 HP once and then disappears; it works only for ordinary damage (the damage "reason" must be the default). The shields (statuses 10026 and 10079) first set your trophy-shield pool to zero and then fill it with 500 or 250 points; each status ends when the pool is empty. The pool absorbs damage after the skill shield. Benita's second-stage SP2 skill wipes both the skill shield and the trophy shield. See Shields and protection.
Movement, stamina and quality of life#
| Type | Trophy | Id | Parameter | Effect | |
|---|---|---|---|---|---|
| 109 | Eternity | 60040 | 150 | Dodge stamina cost -15% | E |
| 109 | Concentration Rune | 60061 | 150 | -15% | E |
| 109 | Broken Eternity | 60078 | 90 | -9% | E |
| 109 | Chaos Silk | 60087 | 200 | -20% | E |
| 110 | Lost Badge | 60039 | 100 | +100 poise while drinking | E |
| 110 | The Skull of the Proponent | 60056 | 100 | +100 poise while drinking | E |
| 111 | Black Manus | 60060 | 1 | Auto-collect items | E |
| 112 | Non-Existent Boots | 60057 | 1 | Quiet footsteps | E |
| 113 | Truth | 60025 | 1 | Damage numbers | E |
| 113 | Fallen Saint's Spear | 60083 | 1 | Damage numbers | E |
| 129 | Wheel of Reversal | 60090 | 1 | +50 stamina after a perfect evasion (Jerold only) | E |
Details:
- Dodge cost (109). Applies to the hero's dodge and jump-dodge skills only. The cost is multiplied by
(1000 - parameter) / 1000and cannot drop below 0. Two such trophies add (150 + 200 = 35% off). - Poise while drinking (110). Adds the parameter to the poise (toughness) value of the "Eat" and "Eat fast" skills, so enemies need more poise damage to interrupt a potion. It is not a general poise bonus. See Poise and stagger.
- Auto-collect (111). Without the trophy only experience-type pickups are drawn to you. With it every pickup except documents and scene marks is drawn in, but not if you could not take it anyway: trophies when the bag already holds 600, health or mana refills when the count is full, bullets when full, and any other item at its stack maximum.
- Quiet footsteps (112). In the AI's hearing test, a sneaking player is only heard at the sum of both bodies' radii. The trophy gives that range to a normally moving player. Enemies can still see you inside their sight cone.
- Damage numbers (113). Shows the number for every hit you land on an enemy, with a different style for critical hits. Only direct hits show numbers, not damage-over-time ticks (inferred from the
isPeriodcheck). - Wheel of Reversal (129). Only Jerold's code reads it: on a successful counter-dodge ("beat back") he adds 50 stamina. For other heroes it does nothing.
Sanity, purification and the Marred#
| Type | Trophy | Id | Parameter | Effect | |
|---|---|---|---|---|---|
| 115 | Marcion Puzzle Ball | 60028 | 1 | Immune to Pierce attacks | no |
| 116 | Loneliness Whisper | 60027 | 1 | Sanity loss from hits halved | E |
| 119 | Melos Bottles (10 kinds, 60068-60075, 60079, 60080) | 1 | Always at least Abnormal | no |
- Pierce immunity (115). Any attack of the Pierce damage type returns zero, and damage-over-time effects that came from a Pierce attack deal nothing and show no effect. This is what lets you walk through the Marcion poisonous mist. See Damage types and resistances.
- Loneliness Whisper (116). The data text suggests a reduced chance, but the code is not random: every sanity cost from an enemy move is simply multiplied by 0.5, both for single hits and for continuous drains.
- Melos Bottles (119). If your sanity would be Normal, the game reports Abnormal instead. That switches on all Abnormal-state bonuses (types 121 to 123, and probably hero talents that check for a non-Normal sanity state, inferred) all the time, but it also keeps you one step from Lunatic. It does not apply in the carriage. The bottles have fixed stat lines and cannot be enhanced or reforged. How they are obtained and upgraded: Gravedigger#Melos Bottle ladder; sanity side: Sanity talents and trophies.
Random trophies: the Abnormal and Lunatic families#
Random-property trophies (ids 67xxx, 68xxx and 69xxx) carry three tiers of the same effect: the first digits of the id and the description wording (slight, moderate, great) show the tier. Their stat lines are rolled at pickup (see Random trophy properties), the effect value is fixed by tier.
| Type | Effect | Tier 1 | Tier 2 | Tier 3 | Trophies |
|---|---|---|---|---|---|
| 121 | Attack while Abnormal or Lunatic | +12.5% | +17% | +20% | Beastheart Stone, Bloodthirsty Eye, Glowing Crystal, Zealot's Crest |
| 122 | Physical defence while Abnormal or Lunatic | +12.5% | +17% | +20% | Executioner's Gloves, Pagan Icon, Poison Arrowleaf |
| 123 | Elemental resistances while Abnormal or Lunatic | +12.5% | +17% | +20% | Mist Bracer, Stag Rings |
| 124 | Sanity drain in Lunatic state | -50% | (no tier 2 or 3) | Skullcutter, Beast Chain, Meteor Bracelet, Hunting Claw, Daemon Mask | |
| 125 | Rage gained at low HP | +40% | +55% | +70% | Raw Gem Amulet, Brass Mask, Flamel's Ring |
- The Abnormal-state bonuses apply as soon as sanity is at or below 70%, and they continue in the Lunatic state.
- Lunatic slowdown (124) reduces the passive sanity drain applied to a Lunatic hero. It is used for the dark-forest drain (0.5 per second), the generic Lunatic drain (0.5 per second) and the maze drain (5 every 2 seconds in the Lunatic state, against 0.5 for a non-Lunatic hero). Values are multiplied by
(1000 - parameter) / 1000, so 500 halves them. Only the highest value counts (NoOverlay). The drain numbers per area are on Lunatic state. - Rage at low HP (125). The description says "HP below 50%", but every site in the code uses 30% (
hpNow <= hpMax * 0.3). It scales the rage your own moves give you (damage moves and healing moves) and the rage you gain from being hit, which is itself only paid out if a talent grants rage on being hit. Only the strongest equipped one counts. See Rage.
Hero-specific and death effects#
| Type | Trophy | Id | Effect | |
|---|---|---|---|---|
| 114 | Active Niter Pot, Crimson Spar, Stone Grass Ring, Spellbreaker Runestone, Glistening Mercury, Seal of Flame | 61011 to 61066 | Destroyed when you die | no |
| 130 | Night's Embrace | 60089 | Enemies marked by Jerold count as Sendril | E |
| 131 | World-Devouring Promise | 60091 | Dropped bones can be recovered | E |
- Destroyed on death (114). Each of the six trophies has six rows (ids 61011, 61021, 61031, 61041, 61051 and 61061 for the first one, internal levels 1 to 6). On a death the game runs through the equipped trophies and removes every one of this type. The check runs only when no other enabled hero is alive to take over (
IsSecondaryHostPlayerDead,controller/controllermain.lua:3211-3223), so in effect when the last hero falls. Scripted deaths where a story movie takes over skip this. - Night's Embrace (130). When Jerold hits an enemy that carries his "taint" mark (statuses 10101 or 10102) and that enemy has no Sendril rating, it is rated Sendril for the damage bonus. An enemy that is both Human and Beast loses the Beast rating and gains Sendril, so Atk vs Humanoid and Atk vs Sendril both apply. An enemy with only one of the two loses it entirely and counts as pure Sendril. See Jerold.
- World-Devouring Promise (131). On death, the game takes 25% to 35% of your Bone Fragments (rounded down, with a 30% chance to round up when there is a remainder). On the next respawn it creates a "frog" pickup (the Heggie guard in the trophy text) holding that amount at your last footprint position, but only if this trophy is equipped. Without the trophy the code deducts the bones and creates no pickup. See Currencies.
Hidden mechanics#
- The "Half" in the data names is not 50% for rage. Every rage check uses 30%. Attack and defence "Half" effects do use 50%.
- Self-damage trophies cannot kill you, and full-HP trophies shut off the instant you lose a single HP: the check is
current >= max. - Defence boosts of 450% are strong but capped by the damage floor. With the 30% floor of the damage formula, the 127 and 128 trophies cut hits by roughly 30% to 60% while you are at full HP (see the worked examples above); weak hits already near the floor gain the least. They do nothing against Pierce damage or thrown items.
- A 500 shield plus a 250 shield gives you 500, not 750. Resting adds the 500-point status (10026) first and the 250-point one (10079) second. Both are status type 112 and 10026 has
IsRefresh0, so the second one is rejected. Wearing Double-star Brooch next to Basilisk's Protection or Halo Pendant wastes the slot. The rule itself is explained in Shields and protection. - Shields and death wards are only renewed at altars. The Lua code has no other source (the game engine could still add them elsewhere, inferred), so a half-used ward or shield stays as it is until you rest again. See Shields and protection.
- Loneliness Whisper is a flat 50% sanity reduction, not a chance, despite its description.
- Melos Bottles change the sanity state without touching sanity. Equipped, they keep the Abnormal-state bonuses permanently active, while your real sanity bar can still sink into the Lunatic state.
- Self-damage eats shields first. Discipline, Shimmering Shard and Brooch with Sacred Pattern wear down the skill shield and then the trophy shield you earned by resting before they touch your HP.
- Life-steal and self-damage ignore damage over time. Only direct skill hits count; bleed, poison and burn ticks do not, and every hit gives or costs at least 1 HP because of the rounding up.
- Wheel of Reversal is Jerold-only, and Night's Embrace is Jerold-only in practice because it needs his mark.
- Auto-collect respects the 600-trophy cap, so a full trophy bag is the only thing it refuses for trophies.
- Enhancement leaves effect numbers alone. Only stat lines get bigger.
- Unused content. Effect 108 (lose a fraction of maximum HP every second) is fully coded but no trophy has it. Effect 117 exists only as a name. Effect 126 exists only on a test row. Eight test rows (ids 67068 to 67075, listed in Trophy list#Placeholder trophies) have Chinese-only names, no price, parameters from 500 to 4500 and designer notes in their descriptions; none is found in any drop table or shop.
- Two descriptions contradict the code. "Reduced chance to lose sanity" is a flat halving, and "HP below 50%" for rage is really 30%.
Sources#
luascript/structdata/fs_trophyequiplist.lua:234-257(effect totals: sum, or highest if NoOverlay),:259-283(Dead removes type 114),:285-291(GetLogicParam)luascript/structdata/ms_itemdata.lua:61-93(effect names and ids),:94-96(status ids 10025, 10026, 10079),:156-157(6 levels, 600-trophy cap),:121-125(Bone Fragment / Big Bone ids)luascript/logic/playervalue/animalbase_value.lua::372(110),:575-588(108),:868-873(109),:1096-1110(113),:1672-1680(119),:1777-1790(130),:2137-2142(115),:2216-2240(104, 105, 121),:2244-2294(127, 128, 118, 126, 122, 123),:2486-2491(103),:2662-2676and:2863-2878(101, 102),:2718-2725,:2765-2770,:2994-3000,:3019-3025(125 at 30%),:2790-2795and:2938-2944(116)luascript/logic/player/animalbase.lua:13078-13110(rest renews 106, 107, 120),logic/player/hero10005.lua:304-308(129),common/gameai.lua:672-690(112),logic/item/itemscene.lua:114-175(111),logic/status/statusbase.lua:255-262, 283-292(115)luascript/logic/player/animalbase.lua:5304-5316(a new status is rejected while an active, non-refreshable status of the same StatusType exists),:13085-13110(rest adds 10026, then 10079),luascript/logic/status/statusbase.lua:226-231(a full stack activates a status at once),luascript/logic/status/status109.lua:7-18(shield sets property 33 to zero, then adds the value),:21-35(ends when the pool is 0),StatusData10025, 10026, 10079 (Param1 33, Param4 500 or 250, Param3 0);logic/status/statusbase.lua:283-347(status value and status DoT path, separate from the hit path)luascript/logic/playervalue/animalbase_value.lua:976-1079(HP loss: skill shield, then trophy shield, then min-HP clamp and NoDeath ward only for reason None),:2300-2325(damage reduction, 30% floor),:2856-2878(per-frame branch);logic/player/animalbase.lua:17352-17360andgamedata/playerconfig/hero100*_config.lua(no hero skill uses DamageType.Period = 2);logic/player/hero10003.lua:369-375(Benita SP2 clears trophy shield)- Death branch:
luascript/controller/controllerstorymode.lua:1856-1859,controller/controllermain.lua:3211-3223; per-mille helperscommon/mathhelper.lua:193-205; effect parameters per tier recounted inbuild/wiki/pass/scripts/trophies/v1.pyandv5.py(121-123: 125/170/200; 124: 500; 125: 400/550/700). - Review scripts:
build/wiki/scripts/refute_trophy_enh/r1.py(NoOverlay, pre-enhanced rows),r5.py(defence worked examples) luascript/controller/controllerstorymode.lua:1857-1859, 1877-1892, 2033-2038(114 and 131),:2197-2203, 2222-2228, 2275-2282(124); constants at:19-23luascript/common/mathhelper.lua:193-205(permil helpers)luascript/gamedata/playerdefine/animalbase_value_define.lua:13-17(SanBound),hero10005_define.lua:170(DodgeAddEnergy = 50)- Tables:
TrophyData(LogicType, LogicParam, NoOverlay, EmotionType), rows 67068-67075 for designer notes. Generated lists inbuild/wiki/data/trophy_enh/logic_rows.jsonandeffects_by_lt.json.