Extends vendor shop region coverage from the four initial towns
(Britain, Trinsic, Vesper, Minoc) to every remaining town that has
vendor spawns across all facets, completing issue #1052.
Adds 290 NoHousingRegion shop child-regions for 19 towns spanning
Trammel, Felucca, Ilshenar, Malas, Tokuno and TerMur: Jhelom, Cove,
Magincia, Moonglow, Nujel'm, Ocllo, Papua, Serpent's Hold, Skara Brae,
Wind, Yew, Buccaneer's Den, Delucia, Gargoyle City, Reg Volon, Luna,
Umbra, Zento and Royal City.
Regions are derived from the actual vendor spawn coordinates and follow
the existing curated 16-type shop vocabulary; co-located profession
clusters (e.g. Alchemist/Mage/Herbalist, Armorer/Weaponsmith, Cobbler/
Provisioner) fold into one shop region, matching how the first four
towns were authored. Jhelom resolves correctly as a town nested under
"Jhelom Islands".
Taverns and inns are intentionally excluded (already covered by the
existing NoLogoutDelay regions). Vendors that share a spawn point with
another shop type, sit inside an existing no-logout or gypsy-camp
sub-region, or fall outside any town region are omitted.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add NoHousingRegion child regions for Minoc vendor shops on both
facets, nested under the Minoc TownRegion. Same shop-region pattern
as Britain.
Refs #1052
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add NoHousingRegion child regions for Vesper vendor shops on both
facets, nested under the Vesper TownRegion. Same shop-region pattern
as Britain.
Refs #1052
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add NoHousingRegion child regions for Trinsic vendor shops on both
facets, nested under the Trinsic TownRegion. Same shop-region pattern
as Britain.
Refs #1052
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add NoHousingRegion child regions for Britain vendor shops on both
facets, following the existing New Haven/Haven shop pattern. Each shop
type (bakery, blacksmith, tailor, mage, bank, etc.) resolves to its own
region nested under the Britain TownRegion instead of only the broad
town region. Taverns/inns are intentionally excluded as they already
have dedicated NoLogoutDelay regions.
Refs #1052
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
### Summary
- [X] Gets rid of the Dtos
- [X] Simplifies the json serializer registration
- [X] Adds a custom `RegionByName` JsonConverter that can look up other regions that have already been registered.
### BREAKING CHANGE
1. **Child regions must appear after their parents in the JSON file**
2. In the regions json file, _"Parent"_ can no longer be just a string. It must be an object that includes the map.
- ```json
"Parent": { "Name": "Britain", "Map": "Felucca" }
```
## Possible Breaking Change
* Reverted regions.json back to RunUO until newer regions are implemented and proper expansion checks are added.
### Other Changes
- [X] Adds `Region.IsPartOf<T1, T2>()` to check for multiple types.
- [X] Fixes regions.json being wrong
- [X] Adds lots of missing regions. **They are not implemented properly yet**
- [X] Adds regions.xml -> regions.json (check ModernUO Discord)
- [X] Adds expansion specific regions.