ModernUO/Projects
Kamron Batman 861c7e5f4d refactor(factions): migrate Faction/Town from RunUO Parse(string) to ISpanParsable<T>
Faction and Town were never converted from RunUO's bare static Parse(string) to
IParsable/ISpanParsable, so they had only a 1-arg Parse(string) that returned null on
no-match. That made them unreachable through Server.Types' IParsable path (they fell to
Convert.ChangeType and failed) and, worse, would have let [set assign null silently on a
bad name. Both now implement ISpanParsable<T> (string + span Parse/TryParse, throw-on-
failure contract), matching Race/Poison. No external callers depended on the old
null-returning Parse.

Also documents the convention in dev-docs/runuo-migration-docs/01-foundation-changes.md
(new section 15 + checklist item): ModernUO expects any RunUO static Parse(string) to be
converted to IParsable<T>/ISpanParsable<T>. Server.Types still binds a legacy Parse(string)
by reflection as a safety net. Full suite 535/535.
2026-07-20 09:29:22 -07:00
..
Application fix: Bumps dependencies. (#2531) 2026-07-14 15:17:55 -07:00
BuildTool fix: Bumps dependencies. (#2531) 2026-07-14 15:17:55 -07:00
Logger fix: Bumps dependencies. (#2531) 2026-07-14 15:17:55 -07:00
Server fix(opl): only apply the ':#' cliloc marker to integer values (#2540) 2026-07-19 10:49:16 -07:00
Server.Tests fix(opl): only apply the ':#' cliloc marker to integer values (#2540) 2026-07-19 10:49:16 -07:00
UOContent refactor(factions): migrate Faction/Town from RunUO Parse(string) to ISpanParsable<T> 2026-07-20 09:29:22 -07:00
UOContent.Tests feat(types): support legacy RunUO Parse(string) types; AdvancedSearch reuses it 2026-07-20 09:19:20 -07:00