Write omitted z1/z2 whenever both z bounds sat at/outside the sbyte extremes, but Read
reconstructs absent z as exactly z1=-128, z2=127 (depth 255). So any rectangle that tripped
the omit condition without being that sentinel round-tripped to depth 255 — e.g. a
homeRange-style z1=-128/z2=128 (depth 256) silently lost its top z-level on re-serialize.
Omit z only for the exact -128/127 sentinel; write it otherwise.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
### Summary
- Works around a sneaky edge case bug in the JIT with stackalloc where sometimes the buffer is not zero'd.
- Fixes SendDisplayBoatHS
- Fixes sending health bars in the `SendEverything()` logic.
- Fixes a bug in sizing for some string helper functions.
### Developer Note
We are enabled `SkipLocalsInit` - do not rely on `stackalloc` to be zero'd. To zero the buffer, use `span.Clear();`
Closes#1606
## 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.
**Only one functional change**
* Fixes a bug in LogFactory where `Warning` is being logged as `Information`
Non-functional changes:
* Updates/Fixes copyright headers
* Removes namespace scopes for core files.
View with [whitespace off](https://github.com/modernuo/ModernUO/pull/1187/files?w=1).