ModernUO/Distribution/Data/Spawns/shared/trammel/OrcCaves.json
Kamron Batman 2f8a7afa57 chore(spawners): migrate spawn data to $type discriminator
- Rename "type" -> "$type" (first key, required for STJ polymorphism) in
  all 109 spawn JSON files (5,612 records).
- Convert "homeRange" + "location" -> "spawnBounds" object, dropping homeRange.
  Runtime keeps reading homeRange so un-migrated/external files still load.
- Add BoundsEquivalenceTests (hr=0/1/3/7) validating that the script's toBounds
  formula produces the same Rectangle3D as the runtime homeRange path.
- Add MigratedDataLoadTests loading a real migrated file as List<SpawnerDto>
  and round-tripping each DTO through ToSpawner().
- Add tools/spawner-json-migrate/migrate.mjs (offline Node script).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-25 16:17:35 -07:00

671 lines
12 KiB
JSON

[
{
"$type": "Spawner",
"guid": "0076bc53-87a0-493c-9251-8b689c0aac25",
"name": "Spawner (112)",
"location": [
5354,
1332,
0
],
"map": "Trammel",
"count": 4,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"spawnBounds": {
"x1": 5346,
"y1": 1324,
"z1": -128,
"x2": 5363,
"y2": 1341,
"z2": 128
},
"walkingRange": 8,
"entries": [
{
"name": "OrcCaptain",
"maxCount": 1,
"probability": 100
},
{
"name": "OrcishLord",
"maxCount": 1,
"probability": 100
},
{
"name": "OrcishMage",
"maxCount": 1,
"probability": 100
},
{
"name": "OrcBomber",
"maxCount": 1,
"probability": 100
}
]
},
{
"$type": "Spawner",
"guid": "02f05175-47b3-49ce-adfd-6838f0bb93a7",
"name": "Spawner (112)",
"location": [
5331,
1346,
0
],
"map": "Trammel",
"count": 3,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"spawnBounds": {
"x1": 5323,
"y1": 1338,
"z1": -128,
"x2": 5340,
"y2": 1355,
"z2": 128
},
"walkingRange": 8,
"entries": [
{
"name": "DireWolf",
"maxCount": 3,
"probability": 100
}
]
},
{
"$type": "Spawner",
"guid": "03496f57-4e3d-4a83-a12c-8ee3523f4efb",
"name": "Spawner (112)",
"location": [
5348,
2011,
0
],
"map": "Trammel",
"count": 5,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"spawnBounds": {
"x1": 5338,
"y1": 2001,
"z1": -128,
"x2": 5359,
"y2": 2022,
"z2": 128
},
"walkingRange": 15,
"entries": [
{
"name": "OrcBomber",
"maxCount": 1,
"probability": 100
},
{
"name": "EarthElemental",
"maxCount": 4,
"probability": 100
}
]
},
{
"$type": "Spawner",
"guid": "04dd6b85-c84e-49e1-8e6a-fbea6734f30b",
"name": "Spawner (112)",
"location": [
5153,
1971,
0
],
"map": "Trammel",
"count": 5,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"spawnBounds": {
"x1": 5145,
"y1": 1963,
"z1": -128,
"x2": 5162,
"y2": 1980,
"z2": 128
},
"walkingRange": 8,
"entries": [
{
"name": "Orc",
"maxCount": 5,
"probability": 100
}
]
},
{
"$type": "Spawner",
"guid": "17e3d0fd-73d1-435c-9d32-ea6716977e80",
"name": "Spawner (112)",
"location": [
5308,
1372,
0
],
"map": "Trammel",
"count": 1,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"spawnBounds": {
"x1": 5300,
"y1": 1364,
"z1": -128,
"x2": 5317,
"y2": 1381,
"z2": 128
},
"walkingRange": 8,
"entries": [
{
"name": "Noble",
"maxCount": 1,
"probability": 100
}
]
},
{
"$type": "Spawner",
"guid": "20658391-8218-48bd-bdab-fd04bbafad31",
"name": "Spawner (112)",
"location": [
5141,
1968,
0
],
"map": "Trammel",
"count": 3,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"spawnBounds": {
"x1": 5133,
"y1": 1960,
"z1": -128,
"x2": 5150,
"y2": 1977,
"z2": 128
},
"walkingRange": 8,
"entries": [
{
"name": "OrcCaptain",
"maxCount": 3,
"probability": 100
}
]
},
{
"$type": "Spawner",
"guid": "264b83e9-092d-4d4b-9dac-8f717b8a21a6",
"name": "Spawner (112)",
"location": [
5153,
1961,
0
],
"map": "Trammel",
"count": 2,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"spawnBounds": {
"x1": 5145,
"y1": 1953,
"z1": -128,
"x2": 5162,
"y2": 1970,
"z2": 128
},
"walkingRange": 8,
"entries": [
{
"name": "DireWolf",
"maxCount": 2,
"probability": 100
}
]
},
{
"$type": "Spawner",
"guid": "434454b5-2093-4125-8b2c-59c57d6bd98b",
"name": "Spawner (112)",
"location": [
5292,
1316,
0
],
"map": "Trammel",
"count": 2,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"spawnBounds": {
"x1": 5284,
"y1": 1308,
"z1": -128,
"x2": 5301,
"y2": 1325,
"z2": 128
},
"walkingRange": 8,
"entries": [
{
"name": "Corpser",
"maxCount": 2,
"probability": 100
}
]
},
{
"$type": "Spawner",
"guid": "48b68bf1-d9b1-4fac-af9e-9c51c90fe891",
"name": "Spawner (112)",
"location": [
5302,
1355,
0
],
"map": "Trammel",
"count": 4,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"spawnBounds": {
"x1": 5294,
"y1": 1347,
"z1": -128,
"x2": 5311,
"y2": 1364,
"z2": 128
},
"walkingRange": 12,
"entries": [
{
"name": "OrcishLord",
"maxCount": 1,
"probability": 100
},
{
"name": "Orc",
"maxCount": 3,
"probability": 100
}
]
},
{
"$type": "Spawner",
"guid": "4abbaeaf-4d90-4eef-bca1-55bbc1b0b631",
"name": "Spawner (112)",
"location": [
5144,
1960,
0
],
"map": "Trammel",
"count": 3,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"spawnBounds": {
"x1": 5136,
"y1": 1952,
"z1": -128,
"x2": 5153,
"y2": 1969,
"z2": 128
},
"walkingRange": 8,
"entries": [
{
"name": "OrcishLord",
"maxCount": 3,
"probability": 100
}
]
},
{
"$type": "Spawner",
"guid": "646f189b-b834-4e7d-9e96-dc8b5d71412d",
"name": "Spawner (112)",
"location": [
5300,
1314,
0
],
"map": "Trammel",
"count": 6,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"spawnBounds": {
"x1": 5292,
"y1": 1306,
"z1": -128,
"x2": 5309,
"y2": 1323,
"z2": 128
},
"walkingRange": 10,
"entries": [
{
"name": "Orc",
"maxCount": 3,
"probability": 100
},
{
"name": "OrcishMage",
"maxCount": 1,
"probability": 100
},
{
"name": "OrcishLord",
"maxCount": 2,
"probability": 100
}
]
},
{
"$type": "Spawner",
"guid": "6d6544ae-63b4-4c8b-8be3-7b52b505f7f9",
"name": "Spawner (112)",
"location": [
5317,
1309,
0
],
"map": "Trammel",
"count": 6,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"spawnBounds": {
"x1": 5309,
"y1": 1301,
"z1": -128,
"x2": 5326,
"y2": 1318,
"z2": 128
},
"walkingRange": 8,
"entries": [
{
"name": "OrcishLord",
"maxCount": 1,
"probability": 100
},
{
"name": "OrcishMage",
"maxCount": 2,
"probability": 100
},
{
"name": "OrcBomber",
"maxCount": 1,
"probability": 100
},
{
"name": "Orc",
"maxCount": 2,
"probability": 100
}
]
},
{
"$type": "Spawner",
"guid": "c13bf083-3691-486a-b5af-7779a398b1f8",
"name": "Spawner (112)",
"location": [
5308,
2005,
0
],
"map": "Trammel",
"count": 5,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"spawnBounds": {
"x1": 5296,
"y1": 1993,
"z1": -128,
"x2": 5321,
"y2": 2018,
"z2": 128
},
"walkingRange": 12,
"entries": [
{
"name": "OrcBrute",
"maxCount": 1,
"probability": 100
},
{
"name": "Orc",
"maxCount": 4,
"probability": 100
}
]
},
{
"$type": "Spawner",
"guid": "c343a444-ed8b-4bc7-9c5f-4ac06bcb18f8",
"name": "Spawner (112)",
"location": [
5332,
1365,
0
],
"map": "Trammel",
"count": 3,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"spawnBounds": {
"x1": 5324,
"y1": 1357,
"z1": -128,
"x2": 5341,
"y2": 1374,
"z2": 128
},
"walkingRange": 8,
"entries": [
{
"name": "Orc",
"maxCount": 3,
"probability": 100
}
]
},
{
"$type": "Spawner",
"guid": "cd4b9397-58f2-42bf-ac91-033ad8396eda",
"name": "Spawner (112)",
"location": [
5146,
1995,
0
],
"map": "Trammel",
"count": 3,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"spawnBounds": {
"x1": 5138,
"y1": 1987,
"z1": -128,
"x2": 5155,
"y2": 2004,
"z2": 128
},
"walkingRange": 8,
"entries": [
{
"name": "Orc",
"maxCount": 1,
"probability": 100
},
{
"name": "OrcCaptain",
"maxCount": 1,
"probability": 100
},
{
"name": "OrcishLord",
"maxCount": 1,
"probability": 100
}
]
},
{
"$type": "Spawner",
"guid": "def6d26d-288a-4659-9ccc-b7556ba93dfe",
"name": "Spawner (112)",
"location": [
5281,
2029,
0
],
"map": "Trammel",
"count": 3,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"spawnBounds": {
"x1": 5273,
"y1": 2021,
"z1": -128,
"x2": 5290,
"y2": 2038,
"z2": 128
},
"walkingRange": 8,
"entries": [
{
"name": "Orc",
"maxCount": 3,
"probability": 100
}
]
},
{
"$type": "Spawner",
"guid": "ebff4db1-6752-4457-b629-109818ec0294",
"name": "Spawner (112)",
"location": [
5356,
1304,
0
],
"map": "Trammel",
"count": 4,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"spawnBounds": {
"x1": 5348,
"y1": 1296,
"z1": -128,
"x2": 5365,
"y2": 1313,
"z2": 128
},
"walkingRange": 10,
"entries": [
{
"name": "OrcBomber",
"maxCount": 1,
"probability": 100
},
{
"name": "OrcCaptain",
"maxCount": 1,
"probability": 100
},
{
"name": "Orc",
"maxCount": 2,
"probability": 100
}
]
},
{
"$type": "Spawner",
"guid": "f128f5b2-ca75-465f-87b2-d5bbf8c933cf",
"name": "Spawner (112)",
"location": [
5316,
1332,
0
],
"map": "Trammel",
"count": 3,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"spawnBounds": {
"x1": 5308,
"y1": 1324,
"z1": -128,
"x2": 5325,
"y2": 1341,
"z2": 128
},
"walkingRange": 8,
"entries": [
{
"name": "GiantRat",
"maxCount": 3,
"probability": 100
}
]
},
{
"$type": "Spawner",
"guid": "f769344d-9b4e-4573-b61a-5d1e4d66361d",
"name": "Spawner (112)",
"location": [
5310,
1969,
0
],
"map": "Trammel",
"count": 4,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"spawnBounds": {
"x1": 5298,
"y1": 1957,
"z1": -128,
"x2": 5323,
"y2": 1982,
"z2": 128
},
"walkingRange": 12,
"entries": [
{
"name": "OrcBomber",
"maxCount": 2,
"probability": 100
},
{
"name": "Orc",
"maxCount": 2,
"probability": 100
}
]
}
]