← All proposalsWork blog
Oil painting of a hooded rogue crouched in a shadowed medieval alley, caltrops scattered on the cobblestones and smoke curling at their boots

The Unseen Trade

A deep dive into Shroud of the Avatar's Subterfuge tree, what Ultima Online and the twenty-nine years of thieves since can teach it, and twenty-four concrete proposals.

Subterfuge just had its best month in years: a full balance pass, a brand-new smoke bomb skill with its own crafted reagent, a client-side stealth visibility overhaul, and a Distract that finally works. The combat math is in the best shape it has ever been. What the school still lacks is everything around the math: a skill sold by every trainer that does not exist, a poison passive whose level is read by nothing, caltrops that vanish in a frame, no locks to pick, no traps to disarm, no pockets it is legal to pick, and no way to know how hidden you are. This document surveys what the genre learned about thief gameplay, measures the tree against it, and proposes twenty-four improvements — sixteen of them pure client or data work.

0 · Executive summary 1 · Where we are today 2 · Lessons: Ultima Online to modern 3 · The twenty-four proposals    Tier 1 · Fix-first (S1–S8)    Tier 2 · Core upgrades (S9–S18)    Tier 3 · Server-backed (S19–S24)    Considered and rejected 4 · One night's work 5 · Sequencing 6 · Appendix
Section 0

Executive summary

Shroud's Subterfuge tree is a direct descendant of Ultima Online's thief: the stationary/moving stealth split is UO's Hiding and Stealth, the smoke bomb is UO Ninjitsu's smoke bomb, the poison coatings are UO's Poisoning ladder, and the backstab passives are as old as the genre. But UO's thief was never just combat math. It was a web of surrounding systems — Detect Hidden as the counter-investment, Lockpicking as a treasure profession, Remove Trap as the party moment, Stealing as an economy — and it spent twenty-five years learning which of those survive contact with an MMO population. The answer, learned the hard way through the 2003 insurance patch that killed the player-thief overnight: the PvE loops survive. The theft economies that lasted (UO's Doom stealables, WoW's junkboxes, ESO's Justice fences, OSRS's Thieving) all point the skill at NPCs and the world, not at other players' property.

SotA holds the skeleton of every ancestor system and ships almost none of the surrounding body. Measured against the genre, our gaps cluster in three places:

  1. Honesty and feedback — a trainer-sold skill that does not exist, a passive that trains nothing, an item whose description is empty, and no instrument anywhere that tells a player how hidden they are. The genre's founding lesson (Thief's light gem, 1998) is that stealth is only playable when the game tells the truth about it.
  2. Counterplay and AI texture — NPCs have two states, oblivious and attacking; there is no re-stealth lockout, no facing arc, no observer-side detection stat anywhere in the codebase. Stealth power balances against everyone at once instead of against an opposing investment.
  3. The thief's economy — no locks to pick, no traps to disarm, a Pick Pocket that cannot fire in any scene in the game, and not one item that grants a stealth stat. The school has combat verbs but no profession.

Twenty-four proposals follow. S1–S8 are fix-first honesty work, all client or data. S9–S18 build the counterplay spine and the toolbelt, still zero server code. S19–S24 are the systems tier — lockpicking, trapped chests, the PvE pickpocket economy, world stealables, the Perception counter-stat, and server-side broadcast suppression — each labeled with its real server cost. Two community asks are answered by name, and the whole ransom question stays where it already lives, on the PvP page's S22.

#ProposalTierSizeServerOne-line pitch
S1Stop selling a skill that does not exist1Snonepull dead Pick Lock from trainers; bank the stranded XP
S2Make Poison Weapon honest1Snonewire the passive to a real reward; the tooltip stops lying
S3Obfuscate polish set1S–Mnoneskill-level term, item text, merchant stock, real smoke
S4Caltrops that linger1S–Mnonethe one-frame burst becomes a 20–30s spike field
S5Publish the stealth-break rules1Snoneone audited table of what ends concealment, in tooltips
S6The stealth eye1MnoneHidden / Noticed / Revealed, driven from the real checks
S7Wire or delete the dead tweak1Snonethe movement threshold dial gains a reader or leaves
S8Reconcile the two distance models1Snonetargeting range vs visibility range: decide and publish
S9The suspicion ladder2LnoneNPCs investigate before they attack
S10Front-arc detection2Mnonebehind a guard becomes a real place
S11Revealed: the re-stealth lockout2Mnoneone debuff prices re-stealth; every counter speaks it
S12The noisemaker2Mnonea crafted throwable tier under the Distract skill
S13Sap's blackjack rule2Mnoneunaware targets sleep longer and wake with no memory
S14Rogue gear that exists2Mnonethe first items in the game that touch Stealth
S15The Smoke Pot2Mnonebottle the orphaned stealth field as a thrown cloud
S16The second coat2MnonePoison Weapon 40 unlocks a utility-only coating slot
S17Ghost runs2Mnonecleared-unseen achievements; the community's own endgame
S18The quarry mark2M–Lnonea delayed finisher the victim's own running feeds
S19Lockpicking3XLcontent + lootthe lock, the pick, and a standing supply of chests
S20Trapped chests3Lrides S19detect and disarm; the party moment that invites a rogue
S21Pickpocket NPCs3XLtheft op + DB rowsthe PvE theft revival: junkboxes, a fence, daily limits
S22World stealables3Lspawn tablesskill-gated rare lifts that end up on your mantle
S23Perception: the counter-stat3Lenum + mirrora net-new observer stat, plus the flare that reveals
S24Stop broadcasting the hidden3Lview filteringthe server stops sending what you should not see
Section 1

Where we are today

The tree holds seventeen entries: ten actives from Distract at the root through Camouflage and Silent Movement to Sneak Attack, Sap, Pick Pocket and Opportunity Strike, six passives from Train Dexterity to the Subterfuge specialization, and one ghost. Here is the tree as the trainer sells it, annotated with what each row actually does:

Skills — Subterfuge
SkillTypeTrainedNotes
DistractActive80tree root, reworked Aug 9
Engage OpponentActive80gap closer, spec stealth pulse
TripActive64knockdown
CamouflageActive100stationary stealth
Silent MovementActive100moving stealth
ObfuscateActive12smoke bomb, new Aug 1
Sneak AttackActive96stealth opener, capped Aug 3
SapActive72mez from behind
Pick PocketActive40cannot fire in any scene
Opportunity StrikeActive55post-dodge reaction
Pick LockActive33Coming soon. Does nothing.
Train DexterityPassive100core stat
Armor Weak PointsPassive88crit chance
BackstabPassive90behind-target damage
Safe FallPassive61fall damage reduction
Poison WeaponPassive77level is read by nothing
SpecializationPassive80scales nearly every rune
Trainer: Combat Subterfuge17 skills for sale

The machinery every proposal plugs into

One pipeline carries the whole school. A stealth rune applies a concealment effect; the effect writes the additive Stealth stat and drives the two visibility axes (a dissolve everyone sees, a per-observer perception channel); NPC aggro multiplies its detection radii by the stat; player visibility runs distance-and-angle bands through one shared perception class; and exactly one damage formula reads the stat directly. Every proposal below extends one of these nodes. None forks the pipeline — that discipline is what let August's balance wave land 21 data changes without breaking anything.

flowchart LR
  A["Stealth rune cast\nCamouflage / Silent Movement / Obfuscate"] --> B["Concealment effect\nbreak rules + grace windows"]
  B --> C["CharacterStat.Stealth\nadditive, consumers clamp"]
  C --> D["NPC detection\naggro + hearing + peripheral radii"]
  C --> E["Player visibility\ndistance + angle bands"]
  C --> F["Sneak Attack damage\nstealth term capped at 1"]
  B --> G["Visibility axes\ndissolve + per-observer channel"]
  style B stroke:#c9a55a,stroke-width:2px
  style C stroke:#c9a55a,stroke-width:2px

Built this year — credited, not re-proposed

The August wave already fixed the combat math, and nothing here re-proposes any of it: the specialization term that read the wrong school, reaction windows cut from 11 seconds to 4.5, Sneak Attack gated to melee and its stealth multiplier capped, poison durations scaling with skill and spec, faster stealth cooldowns, a data-driven Distract radius that finally reworked into a five-target alert, the brand-new Obfuscate smoke bomb with its crafted reagent, and a client-side visibility overhaul — stealthed players actually disappear now, keep their name out of chat and the PvP list, stop being barked at by NPCs, and re-stealthing drops aggro when line of sight breaks. Testers got /tweak stealth dials and a /reactions overlay to check the new windows. That work is the floor this document stands on.

Territory: the PvP page owns the ransom system and everything downstream of it (its S22); alchemy owns poison recipes, oils, and the conserve chance (its S5 and S18); the Lunar magic school owns Vanish, Shadow Form, Night Step and Cocoon of Night; the traps epic owns trap-counterplay wiring; player dungeons own decoy doors. This page links rather than claims.

The one hard constraint. There is no observer-side perception stat or detection skill anywhere in the codebase — the perception class carries a comment forbidding one from being bolted in — and the server holds no live player positions and no stealth logic at all. Every proposal below inherits those two facts; the ones that change them (S23, S24) say so out loud.
Section 2

Lessons: Ultima Online to modern

UO shipped the complete thief in 1997: Hiding and Stealth as separate investments, Snooping and Stealing as a two-stage crime, Lockpicking as a treasure profession, Remove Trap as the party ritual, Poisoning as a PvP terror, Detect Hidden as the counter-stat anyone could buy. It was the best emergent drama the genre ever produced, and it was slowly dismantled by its own victims: every protection layer players demanded — item insurance above all, in 2003 — drained the player-theft economy until only the PvE loops were left standing. The recovery UO chose is the single most instructive decision in the school's history: the same expansion that shipped insurance shipped the Doom stealables, rare artifacts liftable only with the Stealing skill, and the thief became a collector. Twenty years later that is still what a UO thief does.

Oil painting still life of a thief's tools on a candlelit table: lockpicks, poison vials, caltrops, a smoke bomb, a curved dagger, rope, and a spilled coin purse
The whole argument in one image: the trade is the tools, not just the knife. SotA ships the poisons and the smoke; the picks, the trapped chests they open, and the purse they pay into are the missing half.
1997
UO launches
The full thief: hide, sneak, snoop, steal, pick, disarm, poison, detect. Theft as a social contract.
1998
Thief: The Dark Project
The light gem: stealth is only playable when the game tells the truth about hiding.
2001
Dark Age of Camelot
Detection as a published opposed formula; poison loadouts; Vanish must lock out offense.
2003
UO Age of Shadows
Insurance kills the player-thief; Doom stealables ship the same day. The pivot to PvE theft, never reversed.
2004
WoW launches
The themepark kit: stealth vs detection levels, Sap, Vanish, Distract, poisons and lockpicking as professions.
2012
MoP + GW2
WoW deletes poison items after 8 years of friction removal; GW2 ships Revealed, the cleanest counterplay primitive.
2015
ESO Justice
The whole thief fantasy ships in a live MMO with NPC victims only; player enforcers cut before launch.
2021
New World
No stealth at all: no cloak wars, but no rogue fantasy either, and the criticism came anyway.

What each game contributes

Ultima Online: the ancestry itself — and the insurance arc, the genre's clearest proof that victim-protection and player-theft are a zero-sum dial, with PvE stealables as the recovery that worked. Dark Age of Camelot: detection as a smooth opposed formula players could reason about, poison as a loadout decision, and the Vanish lesson — escape tools must lock out re-engagement or they become engage tools. WoW: the complete themepark kit, plus two twenty-year lessons: maintenance is not gameplay (poisons went crafted, to vendor, to permanent ability), and lockpicking died of supply drought, not mechanics — when content stopped placing lockboxes, "LF rogue, tips paid" disappeared. ESO: the only shipped MMO thief economy — Legerdemain ranks earned by committing crime, pickpocketing with position and witness rules and a live success readout, the bounty-fence-launder pipeline — and the Nightblade cloak's cautionary tale that binary stealth counters leave both sides feeling cheated. GW2: stealth as a resource measured in seconds, and Revealed — one tunable lockout debuff that every anti-stealth tool in the game speaks. Thief: the founding vocabulary — the light gem, tools that edit the environment instead of the target, the blackjack's unaware-only rule, and a community that ran a 25-year prestige ladder on "finish it unseen."

Capability matrix

CapabilityUODAoCWoWESOGW2Thief '98SotA todaySotA proposed
Stationary / moving stealth split
Observer-side detection stat● S23
Facing / vision-cone detection◔ players only● S10
Stealth-state feedback UI● S6
Re-stealth lockout (Revealed)◔ delay◔ silence● S11
NPC suspicion / investigate state● S9
From-stealth openers and payoffs● S13/S18
Stealth CC with diminishing returns◔ no DR● S13
Pickpocket economy (NPC victims)◔ players○ dead● S21
Lockpicking + content supply○ stub● S19
Trap detect / disarm● S20
Distraction / lure tools◔ skill only● S12
Poison / coating loadout split◔ damage only● S16
Stealth itemization (gear)○ zero items● S14
Ghost-run prestige● community● S17

● native · ◔ partial or third-party · ○ absent. "SotA today" = the unity-6.5 migration branch after the August 2026 Subterfuge wave. OSRS's Thieving and EQ2's trapped chests inform S20/S21 but did not earn columns.

Section 3

The twenty-four proposals

Tier 1 · Fix-first — honesty and legibility, client-only

S1 · Stop selling a skill that does not exist

Tier 1Size SServer: none

Every Subterfuge trainer in the game sells Pick Lock. It has a work-in-progress icon, a description that reads "Coming soon", and a rune with zero effects. Players have spent gold and banked XP on a skill that trains nothing, and it was never flagged for refund. Until lockpicking actually ships (S19), the trainer should stop taking the money, and the policy on the XP already spent should be stated in public: it is held, and it becomes live the day the skill does.

Seen in: no genre citation needed. This is our own inconsistency, found in the code.

Implementation notes

The trainer asset lists all 17 school IDs including 519 even though the skill row is marked unimplemented; the loader constructs it disabled, the tree hides it, and the card UIs refuse it — but the sale goes through. One data edit removes the row. Deliberately do not route 519 through the skill-retirement list: retirement refunds and forgets, and S19 intends to make the banked XP real. If lockpicking is ever formally rejected instead, the retirement entry plus a pooled-XP refund is the fallback. The trainer row returns in the same commit that ships S19.

client S (data)server noneperf nonetests trainer list assertion

S2 · Make Poison Weapon do what its tooltip says

Tier 1Size SServer: none

Poison Weapon is a trainable passive whose level is read by nothing. Its description promises that raising the skill extends your poisons, but the duration formula shipped in August reads the poison's own tier and your specialization, never this skill. It earns XP every time you apply a poison and pays that XP nowhere. Wire it to a real reward so the tooltip stops lying.

Seen in: WoW (poison power tracked a rogue-owned number); DAoC (the Envenom skill is the gate for everything poison).

Implementation notes

The clean hook already exists: a poison-effectiveness bonus stat is defined and initialized on both client and server and consumed by nothing. Grant it as the passive's per-level innate reward and add a matching term to the ten poison runes' duration expressions — data edits on existing assets, no enum append, no server change. Tune the grant so skill 100 lands near +25% on top of the shipped spec multiplier, not +100%. S16 later gives the same skill a second job.

client S (data)server noneperf nonetests duration formula goldens

S3 · Obfuscate polish set

Tier 1Size S–MServer: none

The smoke bomb shipped working but rough: training the skill itself does nothing (only specialization extends the smoke), the Smoke Bomb item has an empty description, no merchant stocks the item (only the recipe), and the visual is a recycled vanish flash instead of smoke. Four small fixes finish the newest skill in the tree.

Seen in: UO Ninjitsu's smoke bomb (crafted, vendored, iconic); WoW's Vanish (the effect is the fantasy).

Implementation notes

(1) The smoke window gains a skill-level term so training 0 to 100 buys roughly three extra seconds alongside the spec term. (2) The item description gets written; sample, lift-ready: "A paper shell packed with ash and coal dust. Bursts into thick smoke when thrown down." (3) The item joins alchemist merchant stock beside other reagents. (4) The rune's effect reference swaps to a real smoke burst; one already exists in the emote FX set. (5) The strings get localized. All data and loc edits; the rune keeps its distinct effect type, so the NPC stealth-skill list is untouched.

client S–M (data+loc)server noneperf nonetests duration golden + loc lint

S4 · Caltrops that linger

Tier 1Size S–MServer: none

Caltrops promise "an area of effect that slows any enemy passing through" and deliver a one-frame burst. Anyone who buys the item expects a patch of spikes that holds ground. Converting the burst into a 20 to 30 second field turns a novelty into the rogue's kiting and escape tool — and the whole conversion is data, because the lingering-field machinery already runs 41 authored fields in the game.

Seen in: the D&D lineage (area denial with a speed tax); Thief (tools edit the terrain, not the target).

Implementation notes

Author a caltrops effect-area (slow plus a small bleed tick, radius 3) and a field prefab cloned from an existing gameplay-object field, and repoint the consumable's rune at it; the initial contact damage becomes the field's first tick. Placement does not break stealth — laying spikes is preparation, not an attack, and that ruling joins the S5 table. Player-cast fields already resolve as victim-sourced, so no authority questions. The Blacksmithing recipe and merchant bundle are untouched. Field-versus-pathing is the real risk: a patch NPCs never walk through is dead weight, so the radius stays chokepoint-scale and the tool pairs with Distract and Trip.

client S–M (data)server noneperf one more live field typetests field placement + slow golden

S5 · Publish the stealth-break rules

Tier 1Size SServer: none

Nobody can say from inside the game exactly what ends Camouflage or Silent Movement. The rules exist and are actually good — damage breaks it, falling never does, the smoke bomb grants a grace window against damage ticks, a lit torch gives you away — but they live in code. DAoC proved a published break table is itself a feature: players who know why they popped blame themselves, not the game.

Seen in: DAoC (the canonical learnable break table); EQ (utility verbs engineered to not break hide); GW2 (being hit does not break stealth, a rule players could learn).

Implementation notes

An audit pass produces one table from the effect classes' break handlers, shipped three ways: every combat skill tooltip gains a "Breaks concealment: yes/no" line, the two stealth skills gain a short rules paragraph, and the player guides get the full table. Sample tooltip line, lift-ready: "Taking damage ends this effect. Falling does not." The same pass codifies the non-breaking utility list — Distract, Pick Pocket, caltrop placement, and later the S19/S20 verbs inherit it by policy. Mostly loc and docs; anything inconsistent the audit surfaces becomes its own small fix.

client S (loc+docs)server noneperf nonetests source-scan pin on break rules

S6 · The stealth eye: a three-state instrument

Tier 1Size MServer: none

The genre's founding lesson is Thief's light gem: stealth is only playable when the game tells the truth about how hidden you are. SotA computes real answers every frame — your stealth value, every NPC's detection radius, the player visibility bands, the grace windows — and shows you none of it. A small three-state indicator while concealed makes Camouflage versus Silent Movement rank differences legible for the first time. Requested in part by Jack SinAssist, whose ask that stealth stay visible on your own screen the August work already half-answered; this is the other half.

Seen in: Thief (the light gem, born from playtesters unable to judge their own visibility); Skyrim (the opening eye); Splinter Cell (meters).

Concealment
HIDDENSilent Movement, rank 100
Nearest watcherfar
States
Hiddenno one can see you
Noticedsomething is close to finding you
Revealedconcealment has ended
Implementation notes

A client widget mounted while any concealment effect runs. Hidden: no observer's check passes. Noticed: the nearest NPC's detection radius, after the stealth multiplier, puts you inside a warning band (roughly 1.25 times the current detect range, worst-case nearest observer). Revealed: the effect broke. Three words, no percentage meter pretending precision the model does not have — a lying instrument is worse than none, which is the Thief 4 community's verdict on its fake gem and the reason every input here mirrors the actual check. The stealth stat is read clamped, as every consumer does. S9 later upgrades Noticed from a derived band to a real AI state.

client Mserver noneperf one nearest-observer scan while stealthedtests state thresholds, pure logic

S7 · Wire or delete the dead stealth tweak

Tier 1Size SServer: none

A movement-threshold dial for stealth sits in the tweaks file with zero readers — testers can turn it and nothing changes. Either it becomes the movement-cancel threshold it was named for, or it goes.

Seen in: internal hygiene; the tester-tools audit flagged it in August.

Implementation notes

The natural consumer is Camouflage's movement-cancel check: wired, a sub-threshold drift (controller wobble, uneven ground, a moving platform) stops cancelling your camouflage — a real quality-of-life win on slopes. If design prefers the hair-trigger, delete the tweak instead. One small code edit either way, then a short tester soak on the feel.

client Sserver noneperf nonetests threshold golden

S8 · Reconcile the two stealth distance models

Tier 1Size SServer: none

A stealthed player becomes untargetable somewhere between 10 and 5 meters, but becomes invisible at 3 meters inside a 60 degree cone. Two rule sets answer "how close is too close," and the space between them is where confused bug reports live. Pick one model, align the other to it or declare the difference deliberate, and publish the number either way. The stealth design doc itself flags this as a balance decision waiting to be made.

Seen in: DAoC (one published detection formula, no parallel systems); GW2 (one Revealed currency, one rule).

Implementation notes

A decision card more than a build: either targeting adopts the visibility bands so one stealth-driven curve answers both questions, or the gap stays and the S5 table says why — "you can be seen before you can be targeted" is a defensible design if it is chosen on purpose. Tweak-level change once decided; the deliverable is the decision plus the published number. PvP feel shifts slightly in either direction, so it rides a chaos soak.

client Sserver noneperf nonetests band goldens

Tier 2 · Core upgrades — the counterplay spine and the toolbelt

S9 · The suspicion ladder: NPCs that investigate

Tier 2Size LServer: none

SotA NPCs have two states: oblivious and attacking. Every stealth tradition worth copying inserts a middle state — the guard hears something, walks to where it came from, looks around, gives up. That one AI change converts Camouflage, Silent Movement, and Distract from aggro-radius multipliers into actual stealth gameplay, creates the setup window Sneak Attack and Sap were designed for, and produces the "was I seen" events S17's ghost runs need.

Seen in: MGS (the alert ladder, the most-copied state machine in stealth); Thief and Splinter Cell (investigation as the core loop); ESO (suspicious NPCs after a failed pickpocket).

Guard patrol
StateTellBehavior
Unawarenonewalks the patrol route
Suspicious?walks to the noise, looks around, gives up
Alerted!attacks, calls nearby allies
Suspicion fades if nothing is found
Implementation notes

The detection roll gains a middle result: a pass at reduced confidence inside an outer band feeds a suspicion accumulator instead of snapping to aggro; crossing the threshold sends the NPC walking to the stimulus point with an overhead question-mark tell (the bark and overlay plumbing from the August NPC work carries it), lingering a few seconds, decaying on a timer. Full detection at close range still snaps straight to attack — no free passes at knife range. Suspicion is per-NPC, not per-player, so two players working the same guard interact honestly. This is the scope sink of the whole catalog — AI work on a 2014 codebase — so it ships behind tester tweak dials the way the stealth-look work did, and it starts early because S12, S13, and S17 all read its states.

client L (AI)server noneperf bounded by existing aggro ticktests suspicion state machine, pure logic

S10 · Front-arc detection weighting

Tier 2Size MServer: none

Against players, approaching from behind already matters — the visibility check is distance plus angle. Against NPCs it is a flat circle: sneaking up behind a guard is exactly as dangerous as walking into his face. Weighting NPC detection by facing makes "behind" a real place, and it is the reason Distract exists at all — turn the head, then move through the gap you made.

Seen in: WoW (the 180 degree front arc, the mechanic Distract was built on); ESO (pickpocketing demands the behind arc); Thief (facing is everything).

Implementation notes

Scale the detection radius by the observer's facing: full in the front arc, stepped down to roughly 60% in the rear half, tuned by a new tester dial. Hearing stays omnidirectional so rear approaches are safer, never free. The behind-arc geometry already exists — Sap and Sneak Attack read a behind-target term today — and Distract's head-turn event now creates a real opening. A few dozen lines in the aggro class plus tweak data. Too deep a rear discount trivializes patrols; that is what the dial and a chaos soak are for.

client Mserver noneperf one dot product per checktests arc multiplier goldens

S11 · Revealed: the re-stealth lockout

Tier 2Size MServer: none

SotA has no re-stealth lockout at all: attack from stealth, step back, stealth again. GW2 proved that a single debuff is the cleanest counterplay primitive in the genre — attacking from concealment applies Revealed, a short window in which you cannot re-conceal, and every future counter-tool speaks that same currency. One tunable number future-proofs every stealth skill the school ever adds.

Seen in: GW2 (Revealed, the canonical version); DAoC (Vanish's silence after use — escape must not become engage); UO (the shared hide delay on smoke bombs).

Implementation notes

The from-stealth-attack hook already fires when a stealth-breaking rune completes; it now also applies a standard debuff to self (4 second baseline; GW2 runs 3 PvE / 4 PvP). Camouflage, Silent Movement, and Obfuscate refuse to cast while it runs, with a clean fail string, lift-ready: "You cannot hide again yet." The debuff gets an icon so the price is visible. Implemented as an ordinary character effect on its own channel — no new effect type, the serialized enum stays append-only. Future counters (S23's flare) apply the same debuff at range. PvP enforcement rides the same client-trust model all combat already uses; S24 is the structural complement.

client Mserver noneperf nonetests lockout + refusal goldens

S12 · The noisemaker: a crafted distraction tier

Tier 2Size MServer: none

Distract is a trained skill; the genre says distraction should also be something you can buy. A crafted noisemaker throwable gives every player a lesser Distract, gives crafters a new sellable, and leaves the trained skill as the superior version. The guard physically leaving his post is the payoff; the gap he leaves is the gameplay.

Seen in: MGS (the thrown magazine); Thief (noisemaker arrows); Styx (the escalating decoy ladder); WoW (Distract as the free tier).

Implementation notes

The primitive already exists and has exactly one consumer: Distract's AI-event effect, the only one of its type in the project. The consumable is the standard four-asset chain — item, self-consuming rune, sub-effect carrying the AI event at a reduced radius with no mastery scaling (that is the skill's edge), small FX prefab. One honest caveat: verify the AI-event path behaves when sourced from a consumable rather than a skill cast; if it assumes caster skill data, that is a guard clause, not a system. Recipe lands in tinkering or carpentry to spread the crafting love beyond alchemy. The illusion-decoy third tier stays out of scope for a magic page to claim someday. A distraction nobody visibly reacts to is a dead item, which is why this reads best after S9 — though the head-turn works today, so a v1 can precede it.

client M (data + one guard clause)server noneperf nonetests consumable-sourced AI event

S13 · Sap's blackjack rule: the unaware gate

Tier 2Size MServer: none

Thief's blackjack is the genre's best-loved non-lethal verb because of its condition: it only works on a target that has no idea you are there. Sap already checks the behind arc; adding an unaware gate turns it into a true stealth opener — a longer mez on a target with you in no aggro table, no alarm raised to the victim's friends, and an NPC that comes to with no memory and no grudge. That last rule is the MMO-shaped version of hiding the body.

Seen in: Thief (the unalert-only blackjack); WoW (Sap as the from-stealth opener, and the diminishing-returns lesson learned too late); OSRS (the knockout-then-rob loop with isolation rules).

Implementation notes

A new target-unaware context token (an aggro-table lookup, NPC targets only) follows the exact pattern that carried the Opportunity Strike dodge-window token. Sap's data gains an unaware bonus on duration and suppresses the aggro broadcast on that path; when an unaware-sap mez expires naturally, the wake-up skips the aggro add entirely. Two riders ship with it: the strip-your-own-mez bug dies (casting Pick Pocket currently removes Mesmerized from the target — the sap-and-rob combo cancels its own setup), and a diminishing-returns rule lands the same day — repeat mez on one target inside a window applies at half then quarter duration, because WoW retrofitting that rule after "stunlock" became its most hated archetype is not a history worth repeating.

client Mserver noneperf nonetests unaware token + DR goldens

S14 · Rogue gear that actually exists

Tier 2Size MServer: none

Not one item in the game grants Stealth or Subterfuge Mastery — zero hits across every item asset — and the artifact whose filename literally says "stealth harp" has no effects at all. A small, deliberate gear line gives the school an itemization identity without touching the stat model.

Seen in: UO (armor weight as the stealth-gear axis); DAoC (stealth itemization as class identity); every RPG whose thief has boots worth wanting.

Implementation notes

Three data-only moves, sized against the additive unclamped stealth stat. (1) Extend the one good precedent — the Boots of Skulking's conditional design, bonuses active only while stealthed — into a small Skulking set (gloves, cowl) whose stats gate on being concealed, so gear never stacks the raw stat. (2) One capstone artifact granting a small flat Stealth bonus (0.1 to 0.15) while stationary — the only direct Stealth item in the game, sized so it cannot alone cross the Sneak Attack cap or the detection floor; the August cap on the damage term is precisely what makes a small item safe to print. (3) Give Embry's Harp its missing effects — a Silent Movement bonus fits an instrument named for quiet.

client M (data)server noneperf nonetests stat-cap interaction goldens

S15 · The Smoke Pot: a ground smoke field

Tier 2Size MServer: none

There is a fully authored stealth field sitting in the project attached to nothing a player can buy: a ten meter area that grants moving stealth to anyone inside, referenced by exactly two prefabs. Bottle it. A thrown Smoke Pot that lays a lingering cloud — allies inside can slip into concealment, enemies inside strike less true — turns smoke from a personal panic button into a placed tactical object, and gives a party one modest reason to bring a rogue.

Seen in: PoE (Smoke Mine, a zone you fight from); GW2 (smoke-field combos as group stealth done modestly); WoW (Shroud of Concealment's warning: keep the group time-save small or the slot becomes mandatory).

Implementation notes

Clone the orphaned stealth field to a tuned variant (shorter, smaller, plus a to-hit debuff on hostiles inside) and hang it on the standard four-asset consumable chain, with the S3 smoke FX. One mandatory verification: the NPC stealth-skill list is built from runes whose effects are stealth-typed, and this rune must stay out of it — the effect-area indirection should keep it clean, but it gets proven before ship, and if the rune would need a stealth-typed effect the design restructures instead. Alchemy recipe priced above the Smoke Bomb. Hard dependency: without S11's Revealed lockout, an in-combat group re-stealth is a free fight reset.

client M (data)server noneperf one more field typetests field grants + lockout interaction

S16 · The second coat: a utility poison slot

Tier 2Size MServer: none

All ten poison coatings are damage. WoW ran that experiment for years: when every poison competes for one slot, only the mathematically best damage option ever gets used; the lethal/non-lethal split is what made utility poisons exist in practice. Give Poison Weapon a real job — governing a second, utility-only coat slot — so "which two coats am I carrying tonight" becomes the rogue's loadout decision. The recipes themselves belong to the alchemy page; this card owns the slot rule and the delivery plumbing.

Seen in: WoW (one lethal plus one non-lethal, the proven architecture); DAoC (the poison loadout as the assassin's spellbook; the heal-cut poison as the most valued type); Skyrim (the per-hit friction counter-example).

Implementation notes

Coatings occupy one effect channel today; the second slot is a second channel, unlocked at Poison Weapon 40 — finally a level gate the skill owns, compounding S2. Utility coat effects (snare, attack-slow, heal-cut) arrive as alchemy-page recipes on the existing ten-tier frame; this side ships the channel, the gate, and the tooltip line, lift-ready: "Poison Weapon 40 allows a second coating that deals no damage." Anti-heal is the PvP flashpoint in every game that shipped it; the cure counter must stay visible and purchasable, and the cure potion and its recipe already are. If the alchemy page's oils land first, this slot rule accepts them unchanged.

client Mserver noneperf nonetests channel coexistence goldens

S17 · Ghost runs: seen-by-no-one achievements

Tier 2Size MServer: none

The Thief community invented Ghosting — finish the mission unseen, touch nothing — and sustained a twenty-five-year prestige ladder on it at zero developer cost. The precondition is legibility: you must be able to know whether you were seen. A per-scene "cleared unseen" stat surfaced as achievements and a title gives stealth players a self-renewing endgame inside content that already exists.

Seen in: the Thief community (Ghost, Strict, and Supreme rulesets); MGS (rank screens made no-alert runs a canonical playstyle).

Implementation notes

Version one is countable today: cleared with zero aggro-table entries between scene load and completion, tracked client-side on the string-keyed achievement stats the achievements program already runs (per-scene stats have precedent there). S9's investigate events later tighten the definition to zero detections. Surface as per-dungeon achievements plus a meta-title; sample, lift-ready: "Ghost of the Epitaph". Rewards stay cosmetic — the event stream is client-authoritative, so power rewards would invite spoofing. The rule prints in the achievement text so the definitional arguments (does a pet count?) have an answer.

client Mserver noneperf nonetests run-flag state machine

S18 · The quarry mark: a movement-punishing finisher

Tier 2Size M–LServer: none

UO's Death Strike is the most praised opener the ancestor ever shipped because the victim chooses their damage: a delayed payload that lands harder the farther the target moves during the window. It punishes panic-running without touching the stationary fight, and it reads as pure assassin. A Subterfuge finisher in that shape — scaled off skill and specialization, never weapon speed — completes the tree's combat identity.

Seen in: UO Ninjitsu (Death Strike); DAoC (static spec-scaled openers preserving build diversity); GW2 (the Deadeye's earn-then-spend alternative).

Implementation notes

A new active in the Opportunity Strike wing: tag the target from stealth; four seconds later the payload lands, base scaling off skill and mastery, multiplied by distance moved during the window, capped. The new code is one per-target moved-distance accumulator token, following the same context-token pattern the dodge-window token established; everything else is rune data. Any stealth read in the formula clamps by ternary, exactly as the capped Sneak Attack term does. Tagging is an attack, so it breaks stealth and picks up S11's Revealed naturally — the lockout exists before the kit gains another opener, which is also why this card ranks last in its tier.

client M–Lserver noneperf one accumulator per tagged targettests distance-scale goldens

Tier 3 · Server-backed — each carries its cost on the label

S19 · Lockpicking: the lock, the pick, and the chest

Tier 3Size XLcontent + loot tables

The strongest new-code card in the school. The skill stub exists, a full lock-and-key object system exists, and the two have never met — the entire codebase references Pick Lock exactly twice, both boilerplate. The build is three-sided: wire a picking path into the existing lock object, craft breakable picks, and — above all — the content supply: tiered locked chests in dungeon loot rooms, on treasure-map digs, and placeable in player dungeons. WoW's lesson is that lockpicking died of supply drought, not mechanics: "looking for a rogue, tips paid" only exists while boxes keep dropping.

Seen in: UO (tinker practice boxes up to treasure-map chests, the profession ladder); WoW Classic (rogue-as-service in trade chat); ESO (instant force-lock pacing); Asheron's Call (quality-tiered picks, the crafter's stake); EQ (lock-gated dungeon doors, the party key).

Banded Strongbox
Lockedquality: sturdy
Pick this lock
Pick Lock 62 vs sturdy lockgood odds
Lockpicks carried7
A failed attempt can break a pick.
PickLeave it
Implementation notes

The lock object already models states, compatible keys, worst-key-first consumption, and data-driven break chances. A picking branch slots beside the key branch: no compatible key, but a carried lockpick plus Pick Lock at or above the lock's tier attempts an instant skill-check open — ten seconds is the genre's settled pacing ceiling, so no minigame — and failure consumes the pick through the existing break plumbing. Lockpicks model on the key archetype with a fits-any-lock-at-or-below-tier flag, crafted by tinkering or blacksmithing as a new product line. The skill levels by use, which is native to SotA, and the XP banked under S1 goes live. The supply side is the real work and the real promise: locked-chest entries as a standing loot-table rule, not a one-time content pass; lock tiers on treasure-map chests; a placeable locked chest for player dungeons. If a placed chest's lock tier persists as new decoration state, that is a database shape change and carries its migrations-ledger entry. Never a skeleton key — see Rejected.

client Lserver loot seeding + scene contentperf nonetests pick-vs-tier goldens + break rates

S20 · Trapped chests: detect and disarm

Tier 3Size Lrides S19 content

The trap system shipped its first wave this month — dozens of trap prefabs across a hundred scenes and a full decision core — and no skill interacts with any of it. The roadmap's own traps entry names the unused counterplay pieces. This card is the Subterfuge half of that sentence: higher-tier locked chests can be trapped, a passive reveals traps at short range, an active disarm is a skill check, and failure fires the trap. It is the per-loot-drop party moment every group sees — the reason to invite a rogue that is not damage.

Seen in: UO (Remove Trap; failure fires the trap and can summon a lootless guardian, directly portable); EQ2 (chest rarity scales the trap; the scout disarms before anyone opens); the D&D lineage (traps punish, never wall).

Implementation notes

Two new tree entries filling dead slots: a detect passive (trap highlight within a few meters — a passive reveal, not a minigame) and a disarm active (skill check against the trap's tier through the existing trap-chance core; failure triggers through the existing trigger path, the worst failures optionally spawning a lootless guardian). Trap tiers ride S19's chest tiers; both verbs join the S5 non-breaking list, because disarming from concealment is the class fantasy. UO's prereq-stacking lesson applies — detect is not a prerequisite for disarm; they sit parallel in the tree. A chest a party cannot open at all without a rogue is the failure state; traps price the loot, they never wall it. The traps epic owns the wiring program; this card plugs the skill grammar into it and lands coordinated with that plan.

client Lserver rides S19perf nonetests disarm-vs-tier goldens

S21 · Pickpocket NPCs: the fence and the junkbox

Tier 3Size XLtheft op + DB ledger rows

Pick Pocket is a shipped skill that cannot fire in any scene in the game — its target model is players, and the ransom system that made that meaningful is disabled. Every MMO theft economy that survived is NPC-victim: OSRS's gold faucet with an attention tax, ESO's justice pipeline, WoW's junkboxes. Point the skill at NPCs: coin and flavored loot off guards and merchants, locked junkboxes that feed lockpicking, stolen-flagged goods only a fence buys, and failure meaning a stun, a fine, and a guard response. The skill revives without touching another player's property. Requested by adambomb1200 — the most-viewed unanswered Subterfuge ask on the forum.

Seen in: OSRS (stun on failure, mitigation charms, per-target lockouts); ESO Justice (bounty, fence, launder — the full fantasy shipped with NPC victims only); WoW (junkboxes feeding lockpicking and a cross-class market); UO (witness-count catch chances, quoted as history).

Oil painting of a crowded medieval market where a cutpurse lifts a coin pouch from a distracted merchant's belt
The oldest trade in New Britannia, waiting for a legal venue: the ancestors all landed on NPC marks, a fence to sell to, and a guard who makes failure expensive.
Pick Pocket
Town merchantunaware, back turned
Chance72%
Success: coins, goods, sometimes a locked junkbox.
Failure: a stun, a fine, and the guards take an interest.
Stolen goods sell only at a fence.
Implementation notes

The steal effect is the surgical site: today it docks Truth virtue and calls the ransom manager, player targets only. The NPC branch rolls server-resolved loot from NPC-class tables (guards carry keys and small valuables, merchants trade goods, commoners coin and junkboxes), shows a live success percentage on the cast — ESO proved the readout is load-bearing and must never lie — enforces a per-NPC lockout timer, and wires the existing caught-in-the-act path to a stun plus guard aggro plus a gold fine. The yield must be server-granted, not client-asserted: a theft operation is a new request group, which means the manual receive-dispatch wiring into the op router and registration in both server build files — named here because skipping either ships a silent failure. Stolen-flagged items sell only at an outlaw fence with a daily limit and a laundering cut as the inflation valve; the flag and the counter are database shape changes with their migrations-ledger entries. Junkboxes are locked containers only S19 opens — the two economies feed each other. The behind-arc-plus-hidden gate reuses the exact distance-and-angle math the stealth work shipped, and the misleading PvP-flag failure message dies in passing.

client Lserver XL: theft op, fence, tables + 2 DB ledger rowsperf nonetests loot rolls, lockouts, fence limits

S22 · World stealables: the collector thief

Tier 3Size Lspawn tables + server-granted lifts

When item insurance killed UO's player-thief in 2003, the same expansion shipped the recovery: rare artifacts liftable only with the Stealing skill, spawning on rarity timers. That pivot kept the skill alive for twenty years after the social gameplay died. SotA's version writes itself: rare decorative objects seeded through dungeons, liftable only at high Subterfuge skill while concealed, respawning on rarity classes — landing in the one economy SotA does better than every ancestor, housing. A stolen rarity on your mantle is a trophy with a story.

Seen in: UO (Doom stealables and monster stealables, the post-insurance recovery, never reversed).

Implementation notes

A stealable-spawn scene component referencing an item archetype, a Subterfuge skill floor, and a respawn class; lifting requires concealment plus the check and is server-granted like S21's yields. An initial set of a dozen stealables across existing dungeons, placement rotating among spawn points to defeat camping — UO's rare-camp lesson. A successful lift does not break stealth (it joins the S5 list); a failed one does, loudly. The real budget line is content authoring: each stealable needs an item, an icon, and a spot worth sneaking to.

client Mserver spawn tables + granted liftsperf nonetests lift gate goldens

S23 · Perception: the investable counter-stat

Tier 3Size Lenum + shared mirror

Flagged plainly: no observer-side perception stat exists anywhere in the codebase, and the perception class carries a comment forbidding one from being bolted in. This card proposes the honest version — a genuinely new system. Every ancestor converged on the same rule: stealth must balance against an opposing investment, not against everyone at once. A trainable Perception passive feeding a new detection layer, plus a crafted Watchman's Flare that applies S11's Revealed in a zone, gives non-thieves a build answer to stealth and hands the crafting economy the counter-item. Asheron's Call's hard lesson ships with it: the counter-stat and a stealth-side sweetener land in the same release, or one side feels robbed.

Seen in: UO (Detect Hidden as a template choice); DAoC (the published spec-differential radius formula, the cleanest model); WoW (stealth level versus detection level, plus Flare as an opt-in cost); AC (Deception versus Assess, both sides shipped together).

Implementation notes

Built beside the perception class, not inside it: a new detection model that the visibility check consults after its early-outs, widening an observer's effective bands by a factor of Perception minus clamped Stealth. The new stat appends at the end of the character-stat enum on both sides of the shared mirror — append-only, propagated with the same discipline as the mastery stat's registration set. The flare is a standard four-asset consumable whose effect area applies Revealed; its rune carries no stealth-typed effect, so the NPC stealth list is untouched. Reveals stay graduated — they reduce effective stealth or apply the lockout, never a binary pop, which is the decade-long ESO cloak-war lesson. Resolution runs on the observer's client, the same trust model as the rest of combat; S24 is the structural mitigation. Start the multiplier small and tune on the test shard with the existing stealth dials.

client Lserver enum + mirror syncperf nonetests band-widening goldens

S24 · Stop telling everyone where the hidden are

Tier 3Size Lview-publish filtering

Today the server broadcasts stealthed characters to every client, and hiding is a client-side courtesy — a modified client can simply render what honest clients politely fade. The stealth design doc lists this as the known leak. The fix is structural: the server stops sending what a given observer should not see. A modified client cannot draw a character it never receives. This is the anti-cheat half of the stealth program, it changes no gameplay at all, and the seams are already mapped.

Seen in: every server-authoritative MMO's interest management — cited as the standard, not a mechanic to copy.

Implementation notes

The per-observer filter point in the view-update publish already exists; the stealthed test is a single key check on the character-state channel, because a zeroed stat's key is removed from the wire format. Observer positions on the server are roughly two seconds stale, which is exactly why the design specifies wide hysteresis — suppress beyond about 60 meters, resume inside about 45 — so staleness can never hide someone standing next to you: this suppresses at range and never adjudicates knife-range detection. Re-entering the band triggers a full-state resync down the existing publish path; the known risk is a late pop-in reading as lag, and the generous bands plus resync are the design answer. Any new backend file registers in both server build files. Honest clients see nothing different, which is the point.

client noneserver L: publish filtering, net48 + net10perf fewer packets, if anythingtests suppress/resync integration on chaos

Considered and rejected

Section 4

One night's work

The danger with twenty-four proposals is a game with twenty-four widgets. The composition rule for this page: one instrument (the stealth eye, S6, which also carries Revealed and the suspicion states), one toolbelt (the consumables: caltrops, smoke bomb, Smoke Pot, noisemaker, coatings, lockpicks — all items, no new UI), and one tree (the same seventeen slots, with the dead ones alive). Everything else is a rule the S5 table publishes. Here is the whole loop in a single run — approach, entry, prize, exit — with the proposal that carries each beat:

The Ruined Keep, after dark
BeatWhat happensCarried by
ApproachSilent Movement up; the eye reads HiddenS6
PatrolGuard faces away; the rear arc is the roadS10
SlipA thrown noisemaker pulls him off post; ?S12, S9
EntrySap the door guard from behind, unaware: long mez, no alarmS13
PrizeDetect the trap, disarm it, pick the sturdy lockS20, S19
LiftA dusty idol only a thief can take; it will look right on the mantleS22
TroubleA second guard; the eye flips Noticed, caltrops buy the corridorS6, S4
ExitSmoke Pot down, slip out through the cloud, Revealed priced the trickS15, S11
AfterFence the take in town; the run counts toward Ghost of the KeepS21, S17
Every beat is a proposal; none of it is a new window.
Section 5

Sequencing

PhaseShipsServerDepends onWhy this order
1S1–S8noneAll client and data; fixes every lie the tree currently tells and gives players the instrument every later system is judged through. Feedback before content is the genre's settled order.
2S11, S10, S9, S13nonephase 1 (S6 displays S9's states)Revealed and the suspicion ladder are the primitives everything else keys off; counterplay ships before power. S9 is the scope sink, so it starts early.
3S12, S14, S15, S16, S17, S18noneS9 (S12, S17); S11 (S15, S18); S2 (S16)The toolbelt and payoffs only read as gameplay once NPCs visibly react and re-stealth has a price.
4S19, S20loot seeding + scene contentS1 (trainer restore); traps epic (S20)The flagship and its sibling; supply lands as a standing loot rule so the WoW decay never starts.
5S21, S22theft op, fence, spawn tables; DB ledger rowsS19 (junkboxes), S13 (sap-and-rob), S9 (failure texture)The theft economy lands after the locks it feeds and the AI that gives failure its texture; the fence is the biggest server bite, so it goes last among gameplay phases.
6S23, S24enum + mirror; view filteringS11 (the flare's payload)The counter-stat ships against a mature stealth kit, paired with a stealth-side sweetener; broadcast suppression hardens everything already built and can float earlier if a cheat incident forces it.
flowchart TD
  S5["S5 break rules"] --> S6["S6 stealth eye"]
  S9["S9 suspicion ladder"] --> S12["S12 noisemaker"]
  S9 --> S13["S13 unaware Sap"]
  S9 --> S17["S17 ghost runs"]
  S11["S11 Revealed"] --> S15["S15 Smoke Pot"]
  S11 --> S18["S18 quarry mark"]
  S11 --> S23["S23 Perception + flare"]
  S2["S2 Poison Weapon"] --> S16["S16 second coat"]
  S1["S1 trainer honesty"] --> S19["S19 lockpicking"]
  S19 --> S20["S20 trapped chests"]
  S19 --> S21["S21 pickpocket NPCs"]
  S13 --> S21
  S21 --> S22["S22 stealables"]
  TE["Traps epic"] -.-> S20
  PVP["PvP page S22: ransoms"] -.-> RJ["Rejected: PvP deck-glyph theft"]
  AL["Alchemy page S5/S18"] -.-> S16
Section 6

Appendix

A1 · What each tier actually costs

GroupCardsWhat it rides on
Data and loc edits onlyS1, S2, S3, S4, S5, S14, S15 (mostly), S16 (mostly)Existing rune assets, item archetypes, the 41-field effect-area library, the four-asset consumable chain, loc files. No new C# beyond guard clauses.
Client C#, no serverS6, S7, S8, S9, S10, S11, S12, S13, S17, S18The aggro and perception classes, the context-token pattern, the effect channels, string-keyed achievement stats. NPC AI runs client-side in this architecture, which is what makes the whole counterplay spine serverless.
Server-backedS19, S20, S21, S22, S23, S24Loot tables and scene content (S19/S20/S22), one new theft request group + fence vendor + two DB ledger rows (S21), one enum append through the shared mirror (S23), view-publish filtering in both server builds (S24).

A2 · Constraints every proposal honors

A3 · Test surface

The pure-logic pieces — S6's state thresholds, S9's suspicion machine, S10's arc multipliers, S11's lockout rules, S13's unaware token and diminishing returns, S18's distance scaling, S19's pick-versus-tier odds, S21's loot rolls and lockouts, S23's band widening — are all EditMode-testable with no scene objects, extending the SubterfugeBalanceTests and StealthPerceptionTests suites the August wave established. The S5 audit doubles as a source-scan test pinning the break rules so they cannot drift silently.

A4 · Selected sources

UO: UOGuide (Hiding, Stealth, Detect Hidden, Snooping, Stealing, Lockpicking, Remove Trap, Poisoning, Ninjitsu, Smoke Bomb, Item Insurance, Doom stealables), uo.com wiki, UO Outlands thieves-overhaul notes. DAoC: disorder.dk stealth mechanics, Crows of Winter detection guide, apothecary poison reference, 1.109/1.121 patch notes. WoW: Warcraft Wiki (Poisons, Pick Lock, Sap, Vanish, Distract, Stealth mechanic), Wowhead junkbox and lockpicking guides. ESO: UESP (Justice, Legerdemain, Pickpocket, Lockpicking), ESO-Hub, the cloak-counterplay forum record. GW2: official wiki (Stealth, Revealed, Initiative, Deadeye). Thief: Game Developer's postmortems and light-gem histories, TTLG ghosting rulesets. OSRS: the wiki's Thieving, Blackjack and Stall pages. Also: Skyrim/Oblivion lockpicking pages, MGS enemy-status references, PoE Smoke Mine, Albion invisibility potions, Sea of Thieves and EVE Crimewatch consequence design. Full URL list in the research notes accompanying this proposal.

Prepared 2026-08-13 against the unity-6.5 migration branch, three days after the August Subterfuge balance wave it builds on. Companion markdown: docs/plans/2026-08-13-subterfuge-improvements-proposal.md. Twenty-four proposals: eighteen client or data only, six server-backed, each grounded in the classes and assets that would carry it.

Feedback

General comments

No account needed. Every proposal above also has its own Discussion box for talking about that one alone; this thread is for the plan as a whole. Comments are plain text, held to basic decency, and may be trimmed.

← All proposalsWork blog