Shadow Man Remastered

Weighted Options

Weighted options allow you to choose how likely a particular option's value is to be used in game generation. The higher a value is weighted, the more likely the option will be chosen. Think of them like entries in a raffle.

Choose the options you would like to play with! You may generate a single-player game from this page, or download an options file you can use to participate in a MultiWorld.

A list of all games you have generated can be found on the User Content page.


Game Options

Progression Balancing

Controls how aggressively key items are pushed toward deeper locations. 0 = uniform random placement. 100 = key items strongly biased toward hardest-to-reach locations.
This is a range option.

Accepted values:
Normal range: 0 - 100
0
25
0
0
0
0
0

Accessibility

Set rules for reachability of your items/locations. **Full:** ensure everything can be reached and acquired. **Minimal:** ensure what is needed to reach your goal can be acquired.
25
0
0

Gate Shuffle Preset

Controls how coffin gate soul requirements are shuffled. - story: All gates open (SL0). No soul requirements anywhere. - easy: Gates shuffled, capped at SL7. First 6 coffin gates start open. - medium: Gates shuffled, capped at SL8. First 3 coffin gates start open. - hard: Full shuffle with safety caps. First coffin gate starts open. - chaos: Fully unconstrained shuffle. Some seeds may be extremely difficult.
0
0
0
25
0
0

Max Gate Soul Level

Caps the highest Soul Level a shuffled coffin gate can require. 10 = no cap (vanilla SL pool, top gate needs all 120 souls — zero slack; generation may fail and retry). Lower values leave slack between the 120-soul supply and the largest requirement, which makes generation far more reliable, especially in multiworlds. Applied on top of the preset's own cap (whichever is lower). Ignored by the story preset.
This is a range option.

Accepted values:
Normal range: 3 - 10
0
25
0
0
0
0
0

Open Gates Override

Overrides the gate preset's own "N gates open" count, forcing the first N coffin gates (a fixed linear order: Marrow, Wasteland, Asylum, Temple, Cageways, Playrooms) to SL0 regardless of which preset is chosen. -1 (default) leaves each preset's own baked-in value alone (story/chaos: 0, easy: 6, medium: 3, hard: 1). 0-6 explicitly overrides it. Resolved before regions/rules are built, so fill logic sees the opened gates correctly either way. Has no visible effect on the story preset, which already sets every gate to SL0.
This is a range option.

Accepted values:
Normal range: -1 - 6
25
0
0
0
0
0

Entrance Mode

Shuffles which physical portal in Deadside Marrow Gates leads to which destination — the door that vanilla sends you to (say) the Cageways could instead lead to a Gad Temple, and vice versa. - off: vanilla connections (default). - deadside_only: the 9 Deadside hub portals (Wasteland, Asylum Gateways, the 3 Gad Temples, Cageways, Playrooms, Lavaducts, Fogometers) are shuffled among themselves. Each portal keeps its own physical soul threshold (fixed by where it actually sits in Deadside) — only where it leads changes. cross_hub mode (mixing in the 5 Dark Engine soul gates too, matching the standalone randomizer) is not implemented yet.
25
0
0

Shuffle Weapons

If enabled, weapons are shuffled into the randomizer pool. If disabled, weapons appear at their vanilla locations.
0
25
0

Shuffle Lore Items

If enabled, lore items (Book of Shadows, Prophecy, Jack's Schematic) are shuffled into the item pool.
0
25
0

Shuffle Bonus Items

If enabled, the Light Soul (permanent invincibility reward for collecting all 666 Cadeaux) is shuffled into the item pool.
25
0
0

Shuffle Enemies

If enabled, enemy types are randomized within each level. Does not affect item placement logic.
25
0
0

Deadside Guns

If enabled, forces the vanilla "I like Dead Side Guns" secret on at patch time -- Deadside weapons work on Liveside and vice versa -- without needing to find its hidden in-world unlock trigger (Florida Summer Camp, near the final mine shaft). Applied by editing the player's kexengine.cfg directly; requires having launched the game at least once already so that file exists.
25
0
0

Enemy Shuffle Mode

Controls how enemies are shuffled when Shuffle Enemies is enabled. - difficulty: Difficulty-weighted — harder enemies land in deeper areas. - full: Draw from all enemy types globally. - contextual: Shuffle within themed pools per level.
25
0
0
0

Enemy Shuffle: Mix Movement Types

If enabled, enemy shuffle may swap enemies across movement types (ground/flying/swimming). Ignored unless Shuffle Enemies is on.
25
0
0

Enemy Shuffle: Uncap Type Counts

If enabled, enemy shuffle draws each slot's replacement independently instead of preserving per-type counts — some enemy types may appear far more (or less) often than vanilla. Ignored unless Shuffle Enemies is on.
25
0
0

Shuffle True Form Enemies

If enabled, true form boss enemies (which drop Dark Souls) can swap positions with regular enemies. Soul reachability logic is preserved.
25
0
0

Shuffle Ambient Creatures

If enabled, friendly/ambient creatures (rats, egrets, flies, butterflies, friendly fish) are shuffled across their spawn slots. Cosmetic only.
25
0
0

Ambient Shuffle Mode

Controls how ambient creatures are shuffled when Shuffle Ambients is enabled. - global: One pool, no bucketing — a rat can become a fish. - full: Shuffle within movement type (ground/flying/swimming). - contextual: Shuffle within context group + movement type.
25
0
0
0

Shuffle Music

If enabled, music tracks are shuffled globally across all levels. Requires a KPF repack — applied by running apply_ap_seed.py (shadow-man-remastered-randomizer repo) against your generated seed, not during AP generation itself.
25
0
0

Shuffle Voice Lines

If enabled, Shadow Man's generic voice lines are shuffled.
25
0
0

Shuffle Weapon SFX

If enabled, weapon fire and reload sounds are shuffled within each weapon category.
25
0
0

Shuffle Enemy SFX

If enabled, enemy pain/startle/attack sounds are shuffled between enemy types. Cosmetic only.
25
0
0

Shuffle Skyboxes

If enabled, level skyboxes are shuffled between levels. Cosmetic only.
25
0
0

Cadeaux Key Items

Controls whether cadeaux (statue/altar) locations exist as AP checks at all. Off (default): cadeaux locations are excluded from the AP location pool entirely — same treatment as barrels. They stay untouched/vanilla (no checks, no hints, no "Cadeaux" AP item in the pool either). On: all ~657 cadeaux locations become real AP checks with no item-type restriction — any item, including other players' key items, can land there, and a "Cadeaux" filler item is added to the pool to match. May produce more difficult seeds since key items can end up further from a natural playthrough path. Soul (Govi/Dark Soul altar) locations are unaffected either way — they've always existed as checks eligible to hold any item type. Note this is a narrower scope than the standalone shadow-man-remastered-randomizer tool's own graded "insanity" tiers, which can also open up weapon/lore/ bonus/barrel slots (barrels alone would add ~2,085 more locations) — that broader mode isn't implemented here.
25
0
0

Max Cadeaux Bundle Size

Groups cadeaux pickups into a single AP check instead of one check per cadeaux. Only meaningful when Insanity is also on (cadeaux locations don't exist as AP checks at all otherwise). GLOBAL bundling (redesigned 2026-07-28, Jon's explicit call after seeing ~87 scattered sub-size remainder bundles from the original per-bucket design): every eligible cadeaux across the WHOLE game is shuffled together and chunked into groups of this size, with AT MOST ONE remainder bundle for the entire seed (e.g. 653 cadeaux at 5 -> 130 bundles of x5, one bundle of x3) instead of one remainder per region/gate cluster. The tradeoff: a bundle's representative location can now sit behind a different gate than some of the cadeaux whose value it absorbed, so the reward economy's pacing no longer strictly tracks region/gate progression the way it used to (an early-game cadeaux can end up hollowed out to fund a payout that only becomes collectible much later, or vice versa). This does NOT affect AP's fill/logic correctness or seed completability -- every representative still gets its own individually-correct reachability rule from wherever it physically sits (see regions.py's compute_cadeaux_bundle_representatives()) -- it only changes how the cadeaux economy FEELS relative to game progression. 1 (default): no bundling, same behavior as before this option existed -- every cadeaux-category location is its own AP check (~657 of them). Higher values cap chunk size at that value; one cadeaux per chunk is chosen at random (per-seed) to remain a real AP location, the rest stay physically untouched/vanilla cadeaux (same treatment as any other non-AP-tracked location) -- collectible in game for the normal vanilla altar/Fogometers cadeaux economy, just without their own individual AP check. E.g. a cap of 5 turns ~657 individual checks into ~131 bundle checks (130 at x5, 1 remainder). Random per seed (YAML "random", or "random-range-X-Y") is supported the same as any other Range option here. Shrinks how many "Cadeaux" AP items can ever exist in the pool to match the reduced bundle count -- generate_early()'s existing Fogometers-Cadeaux-Required deficit precollection (see FogometersCadeauxRequired's docstring) automatically scales to cover the larger gap this can create, same mechanism, no separate handling needed.
This is a range option.

Accepted values:
Normal range: 1 - 50
25
0
0
0
0
0

Starting Health (x1000)

Starting (and max) health, as a multiple of 1000. Vanilla is 5 (5000 HP). EXE patch — applied by running apply_ap_seed.py (shadow-man-remastered-randomizer repo) against your generated seed, not during AP generation itself.
This is a range option.

Accepted values:
Normal range: 1 - 10
0
25
0
0
0
0
0

Altar Health Grant (x1000)

Health granted per life altar interaction, as a multiple of 1000. Vanilla is 1 (1000 HP per altar, 5 altars total). EXE patch — only applies when you run apply_ap_seed.py (shadow-man-remastered-randomizer repo) against your generated seed, not during AP generation itself.
This is a range option.

Accepted values:
Normal range: 1 - 10
25
0
0
0
0
0

Altar Cadeaux Required

Minimum Cadeaux required to interact with a life altar or the Fogometers door (cost per interaction always matches). Vanilla is 100. Does not affect AP logic — cadeaux_666 in access_rules.py is currently a no-op. EXE patch — applied by running apply_ap_seed.py (shadow-man-remastered-randomizer repo) against your generated seed, not during AP generation itself.
This is a range option.

Accepted values:
Normal range: 1 - 133
0
25
0
0
0
0
0

Fogometers Cadeaux Required

Total Cadeaux required to open the Fogometers door. Vanilla is 666. Clamped to at least 5x Altar Cadeaux Required. EXE patch — applied by running apply_ap_seed.py (shadow-man-remastered-randomizer repo) against your generated seed, not during AP generation itself. CORRECTION (2026-07-24): this docstring used to say "Does not affect AP logic" — that stopped being true the same day cadeaux_666() was fixed to actually check state.count("Cadeaux", player) instead of an unconditional True (see access_rules.py). This value IS what the Fogometers Light Soul location's logic checks against when Cadeaux Gated Content (below) is on. Left at the 666 vanilla default, only 653 of the 666 vanilla Cadeaux are ever AP-trackable/verified, so generate_early() precollects the 13-item shortfall as free starting Cadeaux to keep that location solvable — see its comment in __init__.py.
This is a range option.

Accepted values:
Normal range: 0 - 666
0
25
0
0
0
0

Fog Door Check

Controls whether the Fogometers Light Soul location (gated behind SL10 + collecting Fogometers Cadeaux Required worth of Cadeaux) exists as an AP check at all. Off (default): excluded from the AP location pool entirely — stays untouched/vanilla, same treatment as barrels and enemy checks. On: it becomes a real AP check. Only meaningful when Insanity is also on (Cadeaux is only an AP-tracked item then); with Insanity off the location's own rule always passes, same as before this option existed. Renamed display_name (2026-07-28, Jon's request): the old name "Cadeaux Gated Content" didn't make clear WHICH content. Settled on "Fog Door Check" — short and pairs with FogometersCadeauxRequired's GUI label ("Fog door:", the threshold THIS toggle's gate checks against when on) rather than spelling out "Fogometers Light Soul Gate in Logic" in full; the docstring above carries the detail instead. Found and added 2026-07-24 after this location's rule turned out to be unreachable-in-full-accessibility for FillError diagnosis reasons — see __init__.py's generate_early() comment and access_rules.py's cadeaux_666() docstring for the full history.
25
0
0

Death Penalty (x100)

Max health lost per death, as tenths (10 = -1000 HP/death, 0 = off). Floor equals the penalty amount (health never drops below one step). EXE patch — applied by running apply_ap_seed.py (shadow-man-remastered-randomizer repo) against your generated seed, not during AP generation itself.
This is a range option.

Accepted values:
Normal range: 0 - 100
25
0
0
0
0
0

Shift-Sprint Multiplier (x10)

Hold Shift to move at this multiple of normal speed, on both land and in water, as tenths (20 = 2.0x, 0 = off/vanilla -- no Shift-sprint). EXE patch — applied by running apply_ap_seed.py (shadow-man-remastered-randomizer repo) against your generated seed, not during AP generation itself.
This is a range option.

Accepted values:
Normal range: 0 - 50
25
0
0
0
0
0

Soul Threshold Mode

Randomizes the real in-game soul counts required for each Soul Level (SL1-SL10) via EXE patch. AP's own logic (access_rules.py's _soul_level(), fed by this world's resolved self.sl_thresholds) has respected whatever mode is chosen here since 2026-07-20 — it no longer assumes vanilla thresholds, so a shuffled seed's logic and its real in-game requirements stay in sync. See SoulLogicBuffer below if shuffled thresholds are producing seeds that feel razor-tight. - off: Vanilla thresholds (1,3,7,15,23,35,51,71,95,120). - progressive: Gaps grow geometrically — early SLs cheap, late SLs steep. - balanced: Roughly equal-sized gaps between thresholds. - full_random: Fully random ascending thresholds (mode="random" internally). full_random's history: existed 2026-07-20, hardened 2026-08-07 (flat minimum gap between every consecutive SL) after being confirmed live to occasionally produce AP-unsatisfiable seeds. Removed outright 2026-08-09 after Jon's own live A/B test (switching a failing seed from full_random to progressive fixed it) — at the time this looked like proof full_random itself was uniquely unsafe. Re-added 2026-08-09 once the REAL root cause was found and fixed: it was never full_random specifically. create_items()'s Dark Soul progression-count math was reading the fixed VANILLA threshold table to decide `need`, instead of this seed's own resolved self.sl_thresholds — so whenever a mode's real per-SL threshold exceeded the vanilla value at that same index, too few Dark Souls got classified as real `progression` items, making the seed's actual gate unsatisfiable in AP's own logic regardless of Fill placement. Simulation showed this hit "balanced" in 100% of 3000 seeds (by up to +45 souls) and "progressive" in 20-83% of seeds depending on the SL — i.e. progressive and balanced were exposed to the same underlying bug the whole time, just less visibly. Fixing that (create_items() now uses self.sl_thresholds) plus full_random's own 2026-08-07 minimum-gap hardening and a second 2026-08-09 hardening pass (an additional, much larger floor on the final SL9->SL10 gap specifically, since SL10 is hardcoded to require literally every soul in the game and a thin top gap left SL9 almost as fragile) closes both layers full_random's risk ever came from. Confirmed via 10 real generation runs each of progressive and balanced post-fix, zero failures, before re-adding. See soul_threshold_patch.py's randomize_soul_thresholds() for the generator-side mode="random" implementation.
25
0
0
0
0

Soul Logic Buffer

Pads how many souls AP's LOGIC requires before a soul gate, above and beyond the gate's real in-game requirement. E.g. under "easy", a gate that actually only needs 3 souls in-game won't be considered passable by AP's fill/logic until several MORE souls than that have been placed somewhere reachable before it. The real, in-game requirement (what's patched into the exe and shown to the client) is completely unaffected — this only changes how much slack AP leaves itself when deciding where things can go, so a real playthrough that doesn't grab every single reachable soul (or grabs them in a suboptimal order) still comfortably clears each gate instead of landing exactly on the wire. Every gate's padded requirement is still capped at 120 (the maximum possible souls in the game), so this can never make a gate outright impossible. - off: no padding (default) — exact previous behavior. - hard: +2 souls of slack per gate. - medium: +4 souls of slack per gate. - easy: +6 souls of slack per gate. See SOUL_LOGIC_BUFFER_VALUES below for the actual numbers each tier resolves to — change them there, not here, if they ever need tuning. Briefly defaulted off -> easy (+6) 2026-08-07 as a stopgap alongside the soul_threshold_patch.py "random"-mode top-gap fix, while the real driver of that era's generation failures was still being chased. Reverted back to off 2026-08-09 once the actual root cause (create_items() computing Dark Soul progression counts from vanilla thresholds instead of this seed's own resolved ones — see SoulThresholdMode's docstring above) was found and fixed directly, and confirmed clean via real generation batches. This is a genuinely optional extra-slack knob now, not a safety net standing in for a bug fix — still worth reaching for if a specific seed's soul economy feels razor-tight, but no longer needed by default.
25
0
0
0
0

Piston Combo Randomizer

Randomizes the 6 Dark Engine piston combination values (via EXE patch). Each piston normally sits at a fixed 3-digit combination; when this is enabled the combinations are rolled per-seed and the in-game journal (Jack's Schematic entry) is rewritten to show the new values. When enabled, Jack's Schematic (the item that unlocks that journal entry) becomes required progression — you must find it before you can learn the piston combinations needed to shut the pistons off and reach Legion (the final boss), guaranteeing it's always reachable before the game's completion condition. When off (default), the pistons stay at their vanilla combinations and Jack's Schematic is just a regular lore item like any other.
25
0
0

Trap/Bonus Count

How many "Trap/Bonus" filler items are added to the pool this seed. Renamed from SecretTrapCount (2026-08-03) when this system grew past just cosmetic secrets — each received item now rolls a random effect from whichever categories are enabled (see TrapBonusSecretsEnabled/ TrapBonusHealthEnabled/TrapBonusVoodooEnabled/TrapBonusAmmoEnabled): secret — a random cosmetic secret effect (Big Head, Wireframe, Disco Lights, etc.), the original Secret Trap behavior. Drawn only from secrets confirmed safe to toggle live via client.py's direct-memory-write approach (see CLAUDE.md's 2026-07-31 "Generalizing past g_dogmode" writeup) -- deliberately excludes secrets whose on-change callback hasn't been independently verified. health — poison (drains your whole health pool over ~1 min, ending in a real death if it isn't stopped by finding health first) or a gradual heal (restores well past full over the same window). voodoo — instantly drains voodoo power to 0, or pins it at its live cap (the Soul Level meter) for a while. ammo — instantly drains Shotgun/Violator/9mm ammo to 0, or fills and holds them all at max for a while. See TrapBonusMode/TrapBonusDuration for how long the "hold"-style effects (secret, voodoo hold, ammo hold) stick around -- poison and heal have their own fixed internal duration regardless of those options, since they're one-shot processes rather than a toggle. 0 (default) adds none, same as before this option existed. Random per seed (YAML "random", or "random-range-X-Y") is supported the same as any other Range option here. Capped at 1000 (2026-08-04, raised from 200, which itself was raised 2026-07-31 from an arbitrary initial 30) -- the real ceiling is however many verified barrel-category locations exist to promote alongside them (~2000+, see generate_early()'s barrel_promoted_locs), so 1000 still leaves headroom without reaching that limit.
This is a range option.

Accepted values:
Normal range: 0 - 1000
25
0
0
0
0
0

Trap/Bonus Mode

Controls how long a Trap/Bonus's effect lasts once received, for the categories where "how long" is meaningful — secret, voodoo hold, and ammo hold. Poison and heal ignore this entirely (they're one-shot processes with their own fixed internal duration); voodoo/ammo drain are instant and have nothing to revert either. - always_temporary: reverts automatically after Trap/Bonus Duration seconds (the "for fun" default -- big head for a minute, unlimited voodoo for a minute, etc.). - always_permanent: stays on for the rest of the session once received (more of a curse-or-blessing than a temporary trap) -- for secret, reverts on its own the next time you receive ANOTHER trap that happens to roll the same secret; for voodoo/ammo hold, keeps re-asserting indefinitely until superseded by that same category's drain effect. - mixed: each individual Trap/Bonus independently rolls temporary vs permanent when received, so a single seed can have both. Controlled at the seed level, same as every other randomized setting in this project.
25
0
0
0

Trap/Bonus Duration

Seconds a temporary Trap/Bonus effect lasts before automatically reverting (see Trap/Bonus Mode) — applies to secret, voodoo hold, and ammo hold. Only matters when a given trap actually goes temporary. Random per seed (YAML "random", or "random-range-X-Y") is supported the same as any other Range option here.
This is a range option.

Accepted values:
Normal range: 10 - 300
0
25
0
0
0
0
0

Trap/Bonus: Secrets

If enabled, received Trap/Bonus items can roll a random cosmetic secret effect (Big Head, Wireframe, Disco Lights, etc.). On by default to match this category's original (Secret Trap) behavior.
0
25
0

Trap/Bonus: Health (Poison/Heal)

If enabled, received Trap/Bonus items can roll poison (drains your whole health pool over ~1 min, ending in a real death if you don't find health first) or a gradual heal (restores well past full over the same window).
0
25
0

Trap/Bonus: Voodoo Power

If enabled, received Trap/Bonus items can roll an instant voodoo power drain to 0, or pin voodoo power at its live cap for a while.
0
25
0

Trap/Bonus: Ammo

If enabled, received Trap/Bonus items can roll an instant ammo drain to 0 (Shotgun/Violator/9mm all at once), or fill and hold all three at max for a while.
0
25
0

death_link

When you die, everyone who enabled death link dies. Of course, the reverse is true too.
25
0
0

Death Link Threshold

How many of your own deaths it takes to send one Death Link. 1 (default) sends on every death — the same behavior as before this option existed. 5 (the max) means only every 5th death of yours actually broadcasts to the rest of your team; the other 4 die "for free," with no Death Link sent. Only matters when Death Link is also on. Deaths caused by an incoming Death Link (i.e. someone else on your team died) never count toward your own threshold and are never filtered — you always die immediately when the team dies, regardless of this setting. This only throttles what you send out, not what you receive. See client.py's _health_watcher_loop() for the counter.
This is a range option.

Accepted values:
Normal range: 1 - 5
25
0
0
0
0
0
Item & Location Options

Local Items

Forces these items to be in their native world.
 

Non-local Items

Forces these items to be outside their native world.
 

Start Inventory

Start with the specified amount of these items. Example: "Bomb: 1"

Start Inventory from Pool

Start with the specified amount of these items and don't place them in the world. Example: "Bomb: 1" The game decides what the replacement items will be.

Start Hints

Start with these item's locations prefilled into the ``!hint`` command.
 

Start Location Hints

Start with these locations and their item prefilled into the ``!hint`` command.

Excluded Locations

Prevent these locations from having an important item.

Priority Locations

Prevent these locations from having an unimportant item.

Item Links

Share part of your item pool with other players.
This option cannot be modified here. Please edit your .yaml file manually.