- Add ImportLocation/ImportMap read-only accessors to BaseSpawner.Json.cs exposing _jsonLocation/_jsonMap for the importer post-STJ-deserialization. - Rewrite ImportJsonSpawners to deserialize List<BaseSpawner> directly via SpawnerJsonSerializer.Options (polymorphic on $type), eliminating DynamicJson + AssemblyHandler.FindTypeByName + CreateInstance<ISpawner>. - Enforce cleanup contract: every deserialized spawner (registered in World at Map.Internal by STJ) is either MoveToWorld'd or Delete()'d — map==null/ Internal guard Deletes, inner catch Deletes on placement failure. - Add internal ImportFile seam for testability (from=null safe; only used in JsonException path which valid files never hit). - Add ImportCleanupTests: valid placement, no-map orphan rejected, duplicate location replaced — all with rigorous finally cleanup. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| Accounting | ||
| Engines | ||
| Gumps | ||
| Items | ||
| Misc | ||
| Mobiles/AI | ||
| Multis | ||
| Network/Packets | ||
| Skills | ||
| Spells | ||
| Utilities | ||
| WorldSaves | ||