Usurper Reborn v0.49.2 - Armor Weight Classes, Combat & Balance
Release Date: March 2026
Overview
Armor Weight Class system adds Light/Medium/Heavy classifications to all armor with class restrictions, race restrictions, and meaningful combat trade-offs (dodge, stamina, fatigue). New characters start with class-appropriate weapons. Early-game spell damage buffed and mana costs reduced for caster viability. Stun immunity prevents infinite stunlock from Spark and other stun effects. Magician Sleep/Fear/Web spells fixed — were broken in single-monster combat. Backstab now checks off-hand weapon. Potion cap enforced on quest rewards and merchant purchases. Shop level requirements enforced. PvP escape-then-death fix. Dungeon exit confirmation prevents accidental Q-chaining. Trophy Room gate fix, marriage duration counter now uses game days. Ancient Library shrine XP rebalanced. Enhanced trap detection for Assassins/Rangers. Race-class restrictions updated for armor weight system. Bank guard scaling overhaul, multi-monster tactical combat keys, spouse level-up at Level Master, varied dungeon boss names, blood price bounty ordering fix, companion Power Strike off-hand fix. Plus Steam achievement reliability, Team Corner relocation, caster survivability buffs, and NPC/companion skill proficiency training.
New Features
Armor Weight Class System
All armor pieces are now classified as Light, Medium, or Heavy, creating meaningful gear decisions beyond raw AC numbers. Light armor users are faster and dodge more, while Heavy armor users have the best protection but tire faster.
Combat effects by armor tier (determined by heaviest equipped armor piece):
| Bonus | Light | Medium | Heavy |
|---|---|---|---|
| Dodge | +10% | +5% | +0% |
| Max Stamina | +20 | +10 | +0 |
| Stamina Regen | +2/round | +1/round | +0 |
| Fatigue | -30% | normal | +25% |
Class restrictions — each class archetype has a maximum armor tier:
- Casters (Magician, Sage): Light only
- Hybrids (Assassin, Bard, Jester, Alchemist, Ranger): Light & Medium
- Tanks (Warrior, Paladin, Barbarian, Cleric): All types
- Prestige classes: All types (they've earned it)
Race restrictions — small races (Hobbit, Gnome) cannot wear Heavy armor.
STR requirement — Heavy armor has an auto-calculated Strength requirement (15 + itemLevel/5) that prevents undergeared characters from wearing plate.
Display integration:
- Armor shop shows color-coded
[Light](cyan),[Medium](yellow),[Heavy](red) tags on each item - Inventory/equipment screen shows weight class tags on equipped armor
- Character creation shows armor restriction info on class selection ("Armor: Light only", "Armor: Light & Medium", "Armor: All types") and small race warning on race selection
- Equip-time enforcement with descriptive error messages ("Your class cannot wear Heavy armor", "Your race is too small for Heavy armor", "Requires 17 Strength for Heavy armor")
Weight class inference — armor pieces are classified by name keywords: Plate/Greathelm/Gauntlet/Titan keywords = Heavy; Chain/Scale/Studded/Brigandine keywords = Medium; everything else (Cloth, Leather, Silk, Shadow, Robe) = Light.
Backward compatible — old saves load fine; items default to None which is treated as Light (no penalty).
Spouse Level-Up at Level Master
Your married spouse can now benefit from your experience. The Level Master's "Share Experience" menu now includes your NPC spouse alongside team members and companions. Spouses appear with a [Spouse] tag and are listed first. If your spouse is also on your team, they won't be listed twice.
NPC & Companion Skill Proficiency Training
NPCs and companions now improve their skill proficiencies over time, making them more effective combatants as the game progresses.
NPCs train at the Gym: When NPCs visit the Gym during world simulation, they now have a 30% chance to also improve a skill proficiency (basic attack or a random class ability) alongside their stat training. NPC proficiency is capped at Expert (level 5 of 8) — strong but not matching players.
Companions improve through combat: When companion teammates attack in combat, they now have a chance to improve their basic attack proficiency through use (same system as the player). Companion proficiency is capped at Superb (level 6 of 8) — one tier higher than NPCs since they're special characters.
Full persistence: NPC and companion proficiency data is fully serialized in save files, so progress persists across save/load cycles.
Proficiency caps keep players special:
- Players: Legendary (level 8) — unchanged
- Companions: Superb (level 6)
- NPCs: Expert (level 5)
Multi-Monster Tactical Combat Keys
All tactical combat actions are now available in multi-monster combat, matching single-monster combat:
[P]Power Attack,[E]Precise Strike,[K]Backstab,[T]Taunt,[W]Disarm,[L]Hide,[G]Rage (Barbarian)- Each action prompts for target selection among living monsters
- Previously these keys were only recognized in single-monster fights
Magic Shop Procedural Accessory Inventory
The Magic Shop's accessory browsing has been overhauled to use procedural inventory generated from loot templates — the same system that powers the Weapon Shop and Armor Shop since v0.49.0. The old hand-crafted static inventory of ~70 accessories has been replaced with procedurally generated rings and necklaces covering levels 1-100.
New browsing experience:
[1] Ringsand[2] Necklacesreplace the old[A]ccessoriessingle-list menu- Paginated display (15 items per page) with level filtering, rarity-colored names, affordability dimming, and upgrade [+]/[-] indicators
- Currently equipped item shown at the top with stat bonuses
- Ring purchases prompt for Left/Right finger when both slots are occupied
- Full tax breakdown and quest completion tracking on purchase
Sell improvements:
- Dedicated
[S]ell Accessoriesscreen lists non-equipped accessories from inventory [A]lloption to sell all accessories at once- Individual sale by number
What stays the same:
- All 10+ services unchanged: enchanting, curse removal, identification, potions, love spells, dark arts, spell study, scrying, talk to owner
- No class or race restrictions on accessories (open to all)
Old God Aftermath — Town Reaction Scene
After defeating, saving, or allying with an Old God (floors 25-95), you now automatically emerge from the dungeon into a cinematic scene where the townsfolk react to what you did. The scene has three beats:
- Emergence — climbing out of the darkness into blinding sunlight
- Crowd reaction — 2-4 lines of unique dialogue based on which god you faced, the outcome, and your dialogue approach
- Closing — a brief moment of reflection before you arrive on Main Street
Each of the 6 non-Manwe gods has unique crowd reactions for every combination of outcome (Defeated/Saved/Allied/Spared) and approach (aggressive, humble, merciful, diplomatic, etc.). Examples:
- Defeat Maelketh with rage: "The crowd parts before you. A veteran mutters, 'Killed a god of war with pure rage. What does that make them?'"
- Save Aurelion: "Golden light breaks through the clouds. The crowd falls to their knees, tears streaming. 'THE LIGHT RETURNS!'"
- Ally with Noctura: "People avoid your eyes. The shadows you cast seem... longer than they should be."
Manwe (floor 100) is excluded — the final boss has its own ending sequence. Fleeing or being defeated also skips the scene (you stay on the dungeon floor).
Varied Dungeon Boss Names
Each dungeon theme now has a pool of 5 unique boss names instead of a single fixed name. The boss name is deterministic per floor level, so the same floor always has the same boss. Examples: Catacombs bosses include Bone Lord, Crypt Warden, Skull Revenant, Tomb Sentinel, and Ossuary King.
Bug Fixes
Blood Price Bounty Ordering Fix
Killing an NPC with an active bounty on them could incorrectly apply blood price (murder weight) because the bounty initiator was checked after AutoCompleteBountyForNPC() marked the quest as Deleted. Since GetActiveBountyInitiator() filters on non-deleted quests, the check would always return null — making sanctioned Crown/Shadows kills look like unprovoked murders. The bounty initiator is now retrieved before quest completion.
Companion Power Strike Off-Hand Fix
The Power Strike ability's off-hand follow-up attack (for dual-wielding characters) was gated on isPlayer, preventing companions and teammates from getting their off-hand swing after using Power Strike. The check now only requires player.IsDualWielding, so any dual-wielding combatant gets the follow-up.
Steam Achievement Reliability
A player reported receiving 29 achievements immediately upon opening the game for the first time. Investigation revealed two code issues in Steam stat synchronization:
- Per-stat StoreStats() removed: Previously, every individual
SetStat()call triggeredStoreStats(), causing Steam's server-side achievement evaluation to run 15 times per save (once per stat + one batch call). Now there's a singleStoreStats()call at the end ofSyncPlayerStats(), triggering evaluation exactly once. - Brand-new character guard: Stat sync is now skipped entirely for characters with no meaningful stats (zero kills, zero damage, level 1, zero gold, <1 minute playtime). This prevents pushing all-zero stats to Steam that could trigger spurious server-side achievement evaluation.
- Better diagnostics: Steam stat sync now logs all key stat values when pushing to help diagnose any future issues. Achievement unlocks logged at WARNING level for visibility.
Stun Immunity (Spark Stunlock Fix)
Stun effects (Spark, lightning enchant, Web, abilities) could stunlock monsters indefinitely — each cast reapplied stun before the monster ever got a turn. Monsters now gain 1 round of stun immunity after any stun expires, creating an alternating pattern: stunned → acts (immune) → vulnerable to stun again. This matches how stun already worked against town NPCs, where the target always gets a turn between stuns.
The immunity system applies to all 12+ stun application paths: spell stun, lightning enchant procs, ability stun effects (legendary shot, temporal prison, dissonant wave), poison stun (Nightshade Extract, Widow's Kiss), web entangle, and holy pacify.
Magician Sleep, Fear & Web Spells Fixed
Three Magician spell effects were broken in single-monster combat due to a legacy spell handler (HandleSpecialSpellEffect) that was never updated alongside the modern multi-monster handler:
- Sleep: Worked but used a hardcoded 3-round duration instead of SpellSystem's calculated 3-7 rounds (scaling with level). Now uses the actual calculated duration.
- Fear: Same issue — hardcoded 3 rounds instead of the calculated 2-8 rounds. Now uses the actual calculated duration.
- Web: Completely missing from the handler's switch statement — the spell consumed mana and showed the cast message but did absolutely nothing. Added proper web handling (sets IsStunned with calculated duration).
Poison and freeze effects in the same handler were also updated to use calculated durations instead of hardcoded values. The multi-monster spell path was already correct and is unaffected.
Race-Class Restriction Update
Hobbit and Gnome Paladin restrictions removed. The armor weight class system now mechanically prevents small races from wearing Heavy armor (which Paladins typically use), making the hard class restriction redundant. Both races retain their Barbarian restriction (too small for berserker rage). Orc restriction reason text corrected — previously cited "holy pursuits" despite allowing Cleric.
Potion Cap Overflow Fix
Quest rewards could give more potions than the max cap (50), overfilling the player's inventory. This caused "Buy Max Potions" at merchants to display a negative gold cost (e.g., "-13,420g") since the calculation maxPotions - currentPotions went negative. Four sites fixed:
- Quest rewards: Now cap potions at max and show "(capped at 50)" when truncated
- Dungeon merchant display: Shows "full!" instead of a negative gold amount when already at or over cap
- Dungeon merchant partial purchase: "Could only afford X" path now can't exceed the cap
- Magic shop: Now checks potion room before allowing purchase and caps the buyable quantity
Trophy Room Gate Fix
The [T] Trophies option at Home was accessible even without purchasing the Trophy Room upgrade. Now properly checks ownership and shows a message directing players to the Upgrades menu if they haven't bought it yet.
Marriage Duration Counter Fix
Marriage duration displays throughout the game (Home family view, relationship discussion, Love Street) were using real-world DateTime.Now instead of the in-game day counter, causing marriages to show "0 days" even after multiple game days had passed. All marriage and divorce duration displays now use MarriedGameDay / DivorceGameDay tracked via DailySystemManager.CurrentDay. Old saves without game-day data gracefully fall back to the previous real-time calculation.
Starting Equipment for New Characters
New characters now start with a class-appropriate weapon instead of being unarmed. This prevents the confusing situation where a freshly created Magician can't cast spells (which require a Staff) or an Assassin can't use Backstab (which requires a Dagger).
Starting weapons by class:
- Magician, Sage, Cleric: Wooden Staff (2H, 3 power)
- Assassin, Jester, Alchemist: Rusty Dagger (1H, 4 power)
- Ranger: Short Bow (2H, 5 power)
- Warrior, Paladin, Bard: Dull Sword (1H, 5 power)
- Barbarian: Crude Axe (1H, 5 power)
Backstab Off-Hand Weapon Check
Backstab (and other abilities with weapon requirements) now checks both main hand AND off-hand for the required weapon type. Previously, an Assassin dual-wielding with a dagger in the off-hand couldn't use Backstab because only the main hand was checked. This also fixes weapon requirement display in the greyed-out quickbar.
Spell Damage & Mana Cost Rebalance
Early-game spell damage was ~2.5x weaker than melee attacks, making casters feel underpowered until mid-game. Base damage increased for early spells and mana costs reduced:
| Spell | Old Damage | New Damage | Old Mana | New Mana |
|---|---|---|---|---|
| Magic Missile | 10-18 | 18-28 | 5 | 4 |
| Spark | 18-28 | 28-40 | 10 | 8 |
| Frost Touch | 28-42 | 40-58 | 18 | 14 |
| Arcane Shield | — | — | 8 | 7 |
| Sleep | — | — | 15 | 12 |
INT scaling rate also increased from 0.04 to 0.05 per point (below soft cap), making Intelligence investment more impactful across all spell levels.
Shop Level Requirement Enforcement
Weapon and armor shops now check the item's minimum level requirement before allowing purchase. Previously, players could buy high-level equipment they couldn't effectively use.
PvP Escape-Then-Death Fix
Players who successfully escaped from PvP combat could still die from damage-over-time effects (poison, bleed) processed in the same round after escape. The escape check now happens before status effect processing, so escaped players cleanly exit combat.
Empty Enter Key in Multi-Monster Combat
Pressing Enter without typing an action in multi-monster combat previously showed "Invalid action, please try again." Now silently re-prompts, matching single-monster combat behavior.
Dungeon Exit Confirmation
Pressing Q to leave the dungeon from the floor overview now asks for confirmation ("Leave the dungeon and return to town? Y/N"). This prevents accidentally exiting the dungeon when pressing Q through submenus (e.g., potion menu Q → room Q → floor overview Q would chain through three menu levels).
Ancient Library Shrine XP Rebalance
Ancient Library shrines were granting excessive XP (500-50,000 per shrine, scaling as floor × 500). Reduced to 50 + floor × 15 (65-1,550 XP range), making shrines a nice bonus without being an exploit.
Assassin Trap Detection Enhancement
Assassins, Rangers, Jesters, and Bards now have enhanced trap detection and evasion in the dungeon:
Trap evasion bonuses (added to base AGI/3 chance):
- Assassin: +15 + DEX/8 (best in class)
- Ranger: +10 + DEX/12
- Jester/Bard: +5
- Evasion cap raised from 75% to 85%
Trap detection hints — rooms with traps now show class-specific warnings:
- Assassin: 65% detection ("Your trained eye catches signs of a trap mechanism...")
- Ranger: 50% detection ("Your wilderness instincts warn you of danger...")
- Jester: 40% / Bard: 35% detection
- Other classes: 25% detection ("Something feels wrong about this room...")
Traveler's Sandals Stat Mismatch Fix
Traveler's Sandals (Assassin/Ranger footwear) were getting caster stats (+Int, +Wis, +Mana) instead of rogue stats (+Dex, +Agi, +Crit). The armor type inference classified them as Cloth due to "Sandals" and "Traveler" keywords matching the Cloth block. Moved both keywords to the Leather block so they correctly receive Dex/Agi/Crit bonuses. Also fixes Traveler's Cloak (all-class) which now gets more universally useful Dex/Agi bonuses instead of caster stats.
Poison Duration & Antidote System Overhaul
Poison now has a proper turn-based duration instead of a near-permanent intensity value with a 5% per-turn chance to decrease. When poisoned, you'll see how many turns remain (e.g., "(-5 HP, 8 turns left)"), and the poison clears automatically when the counter reaches zero. Poison duration scales with dungeon depth (5 + floor/5 turns for traps).
Antidotes are now storable consumables instead of instant-cure services:
- Carry limit: 5 + level/10 antidotes (scales 5-15)
- Buy from: Healer (
[N] Buy Antidotes, 75g each) or dungeon merchant ([3] Antidote, 75g — uses immediately if poisoned, stores if not) - Use from: Dungeon potion menu (
[D] Use Antidote), or/antidotequick command from any location - Old behavior preserved: Healer's
[P] Poison Cureservice still works as instant cure; dungeon sanctuary still cures poison
Previously, dungeon merchant antidotes were instant-cure services that couldn't be stored — players would buy them when not poisoned and nothing would happen. Now buying when not poisoned stores the antidote for later use.
Training System Roll Display Fix
The RollAbilityCheck() in the Training System was displaying Total = 0 on automatic failure rolls instead of the actual modifier total. Now correctly shows the rolled total even when the roll results in a critical failure.
NPC Sleep Attacks Disabled
NPC-initiated attacks on sleeping (logged-out) players in online mode have been disabled. This feature punished casual players who couldn't play in long sessions and felt unfair — you'd log in to find you'd been killed overnight with no counterplay.
Player-vs-player sleep attacks remain available — the [K] Attack Sleeper option at the Inn and Dormitory is still there as a deliberate PvP choice.
Enhancements
Bank Guard Scaling Overhaul
Bank robbery guards were previously flat-statted (Captain: 100 + level5 HP, Guard: 60 + level3 HP), making robberies trivially easy at higher levels. Guards now scale using formulas comparable to dungeon monsters:
- Captain: ~1.5x a same-level dungeon monster (HP: 75*level + level^1.2 * 20; STR/DEF/WeapPow scale with level)
- Regular Guards: Roughly equal to same-level dungeon monsters (HP: 50*level + level^1.2 * 12)
- Guard Pitbull: Also level-scaled (HP: 30*level + level^1.1 * 10)
Robbing a bank is now a serious challenge at any level.
Team Corner Relocated to Main Street
The Team Corner (where players form/join teams) has been moved from a sub-menu inside the Inn to Main Street, making it much easier to find. Previously buried as [C] inside the Inn's "Special Areas" section, it's now directly accessible from Main Street as [Z] Team Corner.
- Available at level 5+ (Tier 3 menu disclosure)
- Appears in all three menu styles (classic, BBS compact, screen reader)
- Team Corner's "Return" option now goes back to Main Street instead of the Inn
- The Inn's
[C]key is freed up (no longer navigates to Team Corner)
Balance
Dodge Cap Raised to 45%
The maximum dodge chance has been raised from 35% to 45% to accommodate armor weight bonuses. Characters in Light armor can now reach up to 45% dodge, making agility-focused builds more viable. Heavy armor characters are unaffected (no dodge bonus).
Magician & Sage Survivability Buff
Combat telemetry revealed that level 34 Magicians were dying repeatedly to same-level monsters — often killed in a single hit before they could cast a spell. The root cause: Magicians gained zero defense per level and only +3 HP per level, giving a level 34 Magician just 101 HP against monsters dealing 200-300 damage per hit. Sage had the same problem but worse (+2 HP/level, zero CON growth).
Magician per-level growth changes:
| Stat | Before | After |
|---|---|---|
| HP | +3 | +6 |
| DEF | +0 | +1 |
| CON | +1 | +2 |
Sage per-level growth changes:
| Stat | Before | After |
|---|---|---|
| HP | +2 | +5 |
| DEF | +0 | +1 |
| CON | +0 | +1 |
Both classes remain the squishiest in the game (Warrior gets +12 HP, +2 DEF, +3 CON per level), but can now survive 2-3 monster hits instead of dying instantly. This gives casters time to actually cast their spells before being one-shot. Existing characters will benefit on their next level-up.
Backstab Cooldown Increase
Backstab cooldown increased from 1 to 2 rounds. Previously, the cooldown of 1 ticked down to 0 before the player's next turn, making it effectively usable every round. With cooldown 2, Backstab genuinely skips one round between uses, preventing infinite high-damage stunlock combos with high-proficiency Assassins.
UI & Polish
Old God Banner Centering Fix
The "DEFEATED" and "SAVED" banners shown after Old God boss encounters had misaligned right edges because the title text was padded with hardcoded spaces that didn't account for varying god name lengths. Now uses dynamic PadLeft/PadRight centering for consistent box alignment regardless of name length.
Main Street Menu Column Alignment
The Main Street classic menu had inconsistent column widths (some items 12 chars, some 13, with extra gap insertions in certain rows). Rewrote with helper functions using a uniform 15-character column width for proper grid alignment across all 7 menu rows.
Magic Shop Upgrade/Downgrade Legend
The accessory browsing pages now show a legend line explaining the [+] and [-] indicators: [+] upgrade [-] downgrade vs equipped — displayed below the column header when the player has something equipped in that slot.
"Look" Command Hint Gated to MUD Mode
The "type look to redraw menu" hint at the bottom of location screens was showing in single-player and BBS modes where the look command isn't available. Now only displays in MUD server mode where the command actually works.
Files Changed
Scripts/Data/EquipmentData.cs— AddedGetShopRings()andGetShopNecklaces()query methods for procedural accessory shop inventoryScripts/Locations/MagicShopLocation.cs— Replaced static ~70-item accessory inventory with procedural browsing via EquipmentDatabase; addedAccessoryCategoryenum with category state pattern (_currentAccessoryCategory,_accessoryPage); new methods:GetShopItemsForCategory(),ShowAccessoryCategoryItems(),ProcessAccessoryCategoryChoice(),BuyAccessoryItem()(with ring finger selection prompt),SellAccessory()(with Sell All); removedInitializeMagicInventory()(~250 lines of static AddMagicItem calls),AddMagicItem()helper,SellItem(),GetMagicInventory(), oldBuyAccessory()loop; updated menus:[1] Ringsand[2] Necklacesreplace[A]ccessoriesin both standard and BBS compact displaysScripts/Core/GameConfig.cs— Version 0.49.2; 12 armor weight class constants;GetMaxArmorWeight()andIsSmallRace()helpers; NPCProficiencyCap, CompanionProficiencyCap, NPCGymProficiencyChance constants; Hobbit/Gnome Paladin restriction removed; Orc reason text correctedScripts/Core/EquipmentEnums.cs—ArmorWeightClassenum (None/Light/Medium/Heavy);ArmorTypeExtensionsclass withGetWeightClass()andGetWeightColor()extension methodsScripts/Core/Items.cs—WeightClassproperty on Equipment; class/race/STR enforcement inCanEquip();WeightClassinClone()Scripts/Core/Character.cs—GetArmorWeightTier()method (scans equipped armor, returns heaviest); armor weight bonus inMaxCombatStamina; armor regen bonus inRegenerateCombatStamina();Antidotes,MaxAntidotes,PoisonTurnspropertiesScripts/Core/GameEngine.cs— Restore NPC proficiency from save data inRestoreNPCs(); restoreAntidotesandPoisonTurnsfrom save dataScripts/Systems/StatEffectsSystem.cs— Armor weight dodge bonus inRollDodge(); dodge cap raised 35%→45%; INT scaling rate 0.04→0.05 per pointScripts/Core/Monster.cs— AddedStunImmunityRoundsproperty for stun immunity systemScripts/Systems/CombatEngine.cs— Armor fatigue multiplier on combat fatigue; weight class assignment inConvertLootItemToEquipment(); multi-monster tactical keys (P/E/K/T/W/L/G); companion Power Strike off-handisPlayerguard removed; teammate proficiency training in bothProcessTeammateActionvariants; stun immunity: 3 expiry paths set immunity, 12+ application paths check immunity; legacyHandleSpecialSpellEffect()fixed: addeddurationparameter, web case, use calculated durations for sleep/fear/poison/freeze; PvP escape-then-death fix (checkglobalEscapebefore status effects); empty Enter key silently re-prompts in multi-monster combat;PoisonTurns = 0on all poison cure paths (oceans_embrace, eternal_vigil, purify, cure_disease)Scripts/Systems/ShopItemGenerator.cs—InferArmorWeightClass()public static method (keyword-based Heavy/Medium/Light); weight class assigned inGenerateArmorItems();InferArmorType()fix: moved "Traveler" and "Sandals" keywords from Cloth to Leather block so Assassin/Ranger footwear gets Dex/Agi/Crit bonuses instead of Int/Wis/ManaScripts/Systems/InventorySystem.cs— Color-coded weight class tags inDisplaySlot()Scripts/Systems/CharacterCreationSystem.cs— Armor restriction info inBuildClassStatsPanel(); small race warning inShowRacePreviewCard()andBuildStatsPanel();GiveStartingWeapon()gives class-appropriate weapon at creationScripts/Systems/SteamIntegration.cs— Removed per-statStoreStats()fromSetStat(); added brand-new character guard inSyncPlayerStats(); enhanced diagnostic loggingScripts/Systems/WorldSimulator.cs— DisabledProcessNPCAttacksOnSleepers()call; NPC gym proficiency training (30% chance);GetRandomNPCTrainingSkill()helperScripts/Systems/CompanionSystem.cs— AddedSkillProficienciesandSkillTrainingProgressto Companion class and CompanionSaveData; proficiency copy-in atGetCompanionsAsCharacters(); sync-back viaSyncCompanionProficiency(); serialize/deserialize supportScripts/Systems/SaveSystem.cs— Serialize/restore NPC and companion proficiency dataScripts/Systems/ClassAbilitySystem.cs— Added proficiency cap parameter toTryImproveFromUse()call;CanUseAbility()andGetWeaponRequirementReason()check both main hand and off-hand for required weapon types; Backstab cooldown increased 1→2Scripts/Systems/SpellSystem.cs— Added proficiency cap parameter to bothTryImproveFromUse()calls; Magic Missile/Spark/Frost Touch base damage increased; Magic Missile/Arcane Shield/Spark/Sleep/Frost Touch mana costs reduced; spell descriptions updatedScripts/Systems/StreetEncounterSystem.cs— Blood price bounty ordering fix: checkGetActiveBountyInitiator()beforeAutoCompleteBountyForNPC()Scripts/Locations/LevelMasterLocation.cs— Magician: HP +3→+6, DEF +0→+1, CON +1→+2; Sage: HP +2→+5, DEF +0→+1, CON +0→+1; spouse added to Share Experience menu with[Spouse]tagScripts/Systems/OldGodBossSystem.cs— AddedApproachTypetoBossEncounterResult; set on all return paths (Defeated, Saved, Allied, Spared); dynamic PadLeft/PadRight centering for DEFEATED/SAVED bannersScripts/Locations/BaseLocation.cs— Weight class inference inConvertInventoryItemToEquipment(); poison turn-based duration inApplyPoisonDamage()with old-save migration;/antidotequick command; "look" hint gated behind MUD modeScripts/Locations/BankLocation.cs— Bank guard scaling overhaul: Captain ~1.5x dungeon monster, Guards ~1x, Pitbull level-scaledScripts/Systems/QuestSystem.cs— Potion reward capped at MaxHealingPotionsScripts/Locations/AdvancedMagicShopLocation.cs— Potion purchase capped at remaining room; "already at max" guardScripts/Locations/DungeonLocation.cs— Dungeon room fatigue scaled by armor weight; varied boss name pools (5 per theme, deterministic per floor); merchant Buy Max display usesMath.Max(0, ...)to prevent negative cost; partial purchase capped at potionsNeeded; dungeon exit confirmation prompt; Ancient Library shrine XP reduced (floor*500→50+floor*15); enhanced trap evasion with class-specific bonuses and DEX scaling; trap detection hints with class-specific messages and detection chances;PoisonTurnsset on all 4 poison application sites; merchant antidote stores when not poisoned; antidote[D]option in potion menu; sanctuary clearsPoisonTurns; newShowTownReactionScene()andGetTownReactionLines()methods with per-god crowd reactions; auto-return to Main Street after Old God encountersScripts/Systems/TrainingSystem.cs— AddedmaxLevelparameter toTryImproveFromUse(); addedGetProficiencyCapForCharacter()helper; fixedTotal = 0→Total = totalModin automatic failure path ofRollAbilityCheck()Scripts/Locations/WeaponShopLocation.cs— Level requirement check before purchase confirmationScripts/Locations/ArmorShopLocation.cs— Color-coded weight class tags in shop listing; level requirement check before purchase confirmationScripts/Locations/HomeLocation.cs— Trophy Room[T]gate (requires purchase); marriage/divorce duration displays use game days with old-save fallbackScripts/Locations/LoveStreetLocation.cs— Marriage duration displays use game days with old-save fallbackScripts/Systems/RomanceTracker.cs— AddedMarriedGameDayto Spouse; addedMarriedGameDay/DivorceGameDayto ExSpouse; set game day at marriage/divorce/death; export/import updatedScripts/Systems/SaveDataStructures.cs— AddedMarriedGameDayto SpouseData; addedMarriedGameDay/DivorceGameDayto ExSpouseData; added proficiency fields to NPCData and CompanionSaveInfo; addedAntidotesandPoisonTurnsfieldsScripts/Locations/MainStreetLocation.cs— Added[Z] Team Cornerto all 3 menu styles in tier 3; addedcase "Z"with level 5+ gate; rewroteShowClassicMenu()with uniform 15-char column width for grid alignmentScripts/Locations/MagicShopLocation.cs(additional) — Added [+]/[-] upgrade/downgrade legend line in accessory category viewScripts/Locations/InnLocation.cs— Removed Team Corner navigationScripts/Locations/TeamCornerLocation.cs— ChangedPossibleExitsfromTheInntoMainStreet; updated return navigationScripts/Systems/LocationManager.cs— Updated navigation table: TeamCorner now connects to MainStreet (was TheInn);PoisonTurns = 0on death resurrectionScripts/Locations/HealerLocation.cs—[N] Buy Antidotesmenu option andBuyAntidotes()method;PoisonTurns = 0on poison cureScripts/Locations/ArenaLocation.cs—PoisonTurns = 0on PvP deathScripts/Locations/DevMenuLocation.cs—PoisonTurnsset on poison debug commandsScripts/Systems/RareEncounters.cs—PoisonTurnsset on poison fountain;PoisonTurns = 0on rare curesScripts/Systems/StreetEncounterSystem.cs—PoisonTurnsset on poison vial;PoisonTurns = 0on street antidoteScripts/Systems/SaveSystem.cs— Serialize/restoreAntidotesandPoisonTurns