ModernUO/Projects/UOContent/Mobiles/Vendors/NPC
Kamron Batman ab738d90af
fix: pet release never finished, summon master follows the pet, horse breeder and notoriety guards (#2613)
Pet and summon bugs found by the master-reference audit for #2592 (comments there have the full inventory). Independent of delta saves.

## Releasing a pet never finished

The Release order ran two half-releases that never met:

- The order handler cleared the master. That set `Controlled` to false, so `Obey` never ran again and the think-side `DoOrderRelease` (re-home, three-day delete timer, backpack drop) was dead code: a released pet kept its pack and never despawned.
- The loyalty drain called `DoOrderRelease` directly, so a pet whose loyalty hit zero got the countdown and dropped its pack but kept its master and its owner's follower slots, the opposite of the code comment's intent.

`DoOrderRelease` is now the whole release (targets, bonding, `SetControlMaster(null)`, re-home, delete or countdown, pack drop) and runs once, synchronously, from the handler or the loyalty drain. Summons still die on release, as before. Two tests pin both entry points: master cleared, follower slots returned, countdown running, home anchored.

This is the one place the `PetOrders` / `PetOrderHandlers` split bit; the wider audit of that duplication is a separate task.

## Summon master follows the pet

Transfer, stable claim, GM "obey" and Ball of Summoning copied `SummonMaster` only when `Summoned`, so a talisman summon (`Summoned` is false, `SummonMaster` set) kept its original summoner after a transfer: two different masters on one creature, with the original summoner's area spells still exempting it. They now mirror the summon master whenever it is set. Jail stabling cleared only `ControlMaster`, so a jailed talisman summon kept charging the summoner's follower slots; it now clears both, like the stable master and auto-stable already do.

## Small ones

- The faction horse breeder set `Controlled`/`ControlMaster` directly; it now goes through `SetControlMaster` and tells the buyer why it refused (1049607) instead of silently deleting the horse.
- `Notoriety` dereferenced `SummonMaster` on a summoned creature without a null check.

## Tests

UOContent.Tests 778 green (two new).
2026-09-06 16:12:29 -07:00
..
Guildmasters feat: Pre-Publish 14 Crafting (supersedes #2181, #2381) (#2476) 2026-06-07 20:27:22 -07:00
Alchemist.cs fix: Changes on Vendor>NPC to use code generation (#1308) 2022-12-22 12:40:26 -08:00
AnimalTrainer.cs fix: pet release never finished, summon master follows the pet, horse breeder and notoriety guards (#2613) 2026-09-06 16:12:29 -07:00
Architect.cs fix: Changes on Vendor>NPC to use code generation (#1308) 2022-12-22 12:40:26 -08:00
Armorer.cs fix: Changes on Vendor>NPC to use code generation (#1308) 2022-12-22 12:40:26 -08:00
Baker.cs fix: Changes on Vendor>NPC to use code generation (#1308) 2022-12-22 12:40:26 -08:00
Bard.cs fix: Changes on Vendor>NPC to use code generation (#1308) 2022-12-22 12:40:26 -08:00
Barkeeper.cs fix: Changes on Vendor>NPC to use code generation (#1308) 2022-12-22 12:40:26 -08:00
Beekeeper.cs fix: Changes on Vendor>NPC to use code generation (#1308) 2022-12-22 12:40:26 -08:00
Blacksmith.cs chore: Fixes variable types for possible performance issues (#2172) 2025-05-01 21:54:41 -07:00
Bowyer.cs fix: Changes on Vendor>NPC to use code generation (#1308) 2022-12-22 12:40:26 -08:00
Butcher.cs fix: Changes on Vendor>NPC to use code generation (#1308) 2022-12-22 12:40:26 -08:00
Carpenter.cs fix: Changes on Vendor>NPC to use code generation (#1308) 2022-12-22 12:40:26 -08:00
Cobbler.cs fix: Changes on Vendor>NPC to use code generation (#1308) 2022-12-22 12:40:26 -08:00
Cook.cs fix: Changes on Vendor>NPC to use code generation (#1308) 2022-12-22 12:40:26 -08:00
CustomHairstylist.cs fix: Refactors Custom Hairstylist (#2188) 2025-05-17 03:30:07 -07:00
Farmer.cs fix: Changes on Vendor>NPC to use code generation (#1308) 2022-12-22 12:40:26 -08:00
Fisherman.cs fix: Changes on Vendor>NPC to use code generation (#1308) 2022-12-22 12:40:26 -08:00
Furtrader.cs fix: Changes on Vendor>NPC to use code generation (#1308) 2022-12-22 12:40:26 -08:00
Glassblower.cs fix: Changes on Vendor>NPC to use code generation (#1308) 2022-12-22 12:40:26 -08:00
GolemCrafter.cs fix: Changes on Vendor>NPC to use code generation (#1308) 2022-12-22 12:40:26 -08:00
GypsyAnimalTrainer.cs fix: Changes on Vendor>NPC to use code generation (#1308) 2022-12-22 12:40:26 -08:00
GypsyBanker.cs fix: Changes on Vendor>NPC to use code generation (#1308) 2022-12-22 12:40:26 -08:00
GypsyMaiden.cs fix: Changes on Vendor>NPC to use code generation (#1308) 2022-12-22 12:40:26 -08:00
HairStylist.cs fix: Changes on Vendor>NPC to use code generation (#1308) 2022-12-22 12:40:26 -08:00
Herbalist.cs fix: Changes on Vendor>NPC to use code generation (#1308) 2022-12-22 12:40:26 -08:00
HolyMage.cs fix: Changes on Vendor>NPC to use code generation (#1308) 2022-12-22 12:40:26 -08:00
InnKeeper.cs fix: Changes on Vendor>NPC to use code generation (#1308) 2022-12-22 12:40:26 -08:00
IronWorker.cs fix: Changes on Vendor>NPC to use code generation (#1308) 2022-12-22 12:40:26 -08:00
Jeweler.cs fix: Changes on Vendor>NPC to use code generation (#1308) 2022-12-22 12:40:26 -08:00
KeeperOfChivalry.cs fix: Changes on Vendor>NPC to use code generation (#1308) 2022-12-22 12:40:26 -08:00
LeatherWorker.cs fix: Changes on Vendor>NPC to use code generation (#1308) 2022-12-22 12:40:26 -08:00
Mage.cs fix: Changes on Vendor>NPC to use code generation (#1308) 2022-12-22 12:40:26 -08:00
Mapmaker.cs fix: Changes on Vendor>NPC to use code generation (#1308) 2022-12-22 12:40:26 -08:00
Miller.cs fix: Changes on Vendor>NPC to use code generation (#1308) 2022-12-22 12:40:26 -08:00
Miner.cs fix: Changes on Vendor>NPC to use code generation (#1308) 2022-12-22 12:40:26 -08:00
Monk.cs fix: Changes on Vendor>NPC to use code generation (#1308) 2022-12-22 12:40:26 -08:00
Provisioner.cs fix: Changes on Vendor>NPC to use code generation (#1308) 2022-12-22 12:40:26 -08:00
Rancher.cs fix: Changes on Vendor>NPC to use code generation (#1308) 2022-12-22 12:40:26 -08:00
Ranger.cs fix: Changes on Vendor>NPC to use code generation (#1308) 2022-12-22 12:40:26 -08:00
RealEstateBroker.cs fix: Changes on Vendor>NPC to use code generation (#1308) 2022-12-22 12:40:26 -08:00
Scribe.cs fix: Fixes crafter deserialize, cleans up bandages, and codegens misc items (#1350) 2023-02-25 00:54:12 -08:00
Shipwright.cs fix: Fixes missing codegen for ShipWright (#1316) 2022-12-30 10:48:42 -08:00
StoneCrafter.cs fix: Changes on Vendor>NPC to use code generation (#1308) 2022-12-22 12:40:26 -08:00
Tailor.cs fix: Changes on Vendor>NPC to use code generation (#1308) 2022-12-22 12:40:26 -08:00
Tanner.cs fix: Changes on Vendor>NPC to use code generation (#1308) 2022-12-22 12:40:26 -08:00
TavernKeeper.cs fix: Changes on Vendor>NPC to use code generation (#1308) 2022-12-22 12:40:26 -08:00
Thief.cs fix: Changes on Vendor>NPC to use code generation (#1308) 2022-12-22 12:40:26 -08:00
Tinker.cs fix: Changes on Vendor>NPC to use code generation (#1308) 2022-12-22 12:40:26 -08:00
Vagabond.cs fix: Changes on Vendor>NPC to use code generation (#1308) 2022-12-22 12:40:26 -08:00
VarietyDealer.cs fix: Changes on Vendor>NPC to use code generation (#1308) 2022-12-22 12:40:26 -08:00
Veterinarian.cs fix: Changes on Vendor>NPC to use code generation (#1308) 2022-12-22 12:40:26 -08:00
Waiter.cs fix: Changes on Vendor>NPC to use code generation (#1308) 2022-12-22 12:40:26 -08:00
Weaponsmith.cs fix: Changes on Vendor>NPC to use code generation (#1308) 2022-12-22 12:40:26 -08:00
Weaver.cs fix: Changes on Vendor>NPC to use code generation (#1308) 2022-12-22 12:40:26 -08:00