ModernUO/Distribution/Data/Spawns/shared/felucca/FelCropsLS.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

530 lines
10 KiB
JSON

[
{
"$type": "RegionSpawner",
"guid": "0c48edf9-a88e-45f1-9ba3-cd8c919aefbc",
"name": "Spawner",
"location": [
823,
2274,
0
],
"map": "Felucca",
"count": 6,
"minDelay": "00:00:10",
"maxDelay": "00:00:30",
"entries": [
{
"name": "FarmableCabbage",
"maxCount": 6,
"probability": 100
}
],
"region": "A Cabbage Field in Skara Brae 2"
},
{
"$type": "RegionSpawner",
"guid": "0c6481ab-3341-4113-ac1a-6523c19c881d",
"name": "Spawner",
"location": [
1216,
1604,
0
],
"map": "Felucca",
"count": 6,
"minDelay": "00:00:10",
"maxDelay": "00:00:30",
"entries": [
{
"name": "FarmableTurnip",
"maxCount": 6,
"probability": 100
}
],
"region": "A Turnip Field in Britain 2"
},
{
"$type": "RegionSpawner",
"guid": "2bf378f0-77ed-44cd-8dfb-181d068f401e",
"name": "Spawner",
"location": [
843,
2352,
0
],
"map": "Felucca",
"count": 6,
"minDelay": "00:00:10",
"maxDelay": "00:00:30",
"entries": [
{
"name": "FarmableWheat",
"maxCount": 6,
"probability": 100
}
],
"region": "A Wheatfield in Skara Brae 2"
},
{
"$type": "RegionSpawner",
"guid": "3d7925bf-2642-4185-bc03-fa314fb75a7f",
"name": "Spawner",
"location": [
675,
1179,
0
],
"map": "Felucca",
"count": 10,
"minDelay": "00:00:10",
"maxDelay": "00:00:30",
"entries": [
{
"name": "Sheep",
"maxCount": 10,
"probability": 100
}
],
"region": "A Field of Sheep in Yew 2"
},
{
"$type": "RegionSpawner",
"guid": "425ac125-1597-41b4-9e6d-72b91801230b",
"name": "Spawner",
"location": [
675,
939,
0
],
"map": "Felucca",
"count": 10,
"minDelay": "00:00:10",
"maxDelay": "00:00:30",
"entries": [
{
"name": "Sheep",
"maxCount": 10,
"probability": 100
}
],
"region": "A Field of Sheep in Yew 1"
},
{
"$type": "RegionSpawner",
"guid": "427451dd-93fa-43c9-85c6-01536066c8cc",
"name": "Spawner",
"location": [
823,
2254,
0
],
"map": "Felucca",
"count": 6,
"minDelay": "00:00:10",
"maxDelay": "00:00:30",
"entries": [
{
"name": "FarmableCarrot",
"maxCount": 6,
"probability": 100
}
],
"region": "A Carrot Field in Skara Brae"
},
{
"$type": "RegionSpawner",
"guid": "4b4e3973-d836-4f7c-b9f7-5fb7d468da28",
"name": "Spawner",
"location": [
4567,
1475,
0
],
"map": "Felucca",
"count": 8,
"minDelay": "00:00:10",
"maxDelay": "00:00:30",
"entries": [
{
"name": "FarmableCotton",
"maxCount": 8,
"probability": 100
}
],
"region": "A Cotton Field in Moonglow"
},
{
"$type": "RegionSpawner",
"guid": "57da6436-6b16-4697-add5-f4b45776ccbc",
"name": "Spawner",
"location": [
813,
2163,
0
],
"map": "Felucca",
"count": 6,
"minDelay": "00:00:10",
"maxDelay": "00:00:30",
"entries": [
{
"name": "FarmableWheat",
"maxCount": 6,
"probability": 100
}
],
"region": "A Wheatfield in Skara Brae 1"
},
{
"$type": "RegionSpawner",
"guid": "57f955bb-49e1-4a66-a214-4fbddf8d572b",
"name": "Spawner",
"location": [
1231,
1723,
0
],
"map": "Felucca",
"count": 8,
"minDelay": "00:00:10",
"maxDelay": "00:00:30",
"entries": [
{
"name": "FarmableOnion",
"maxCount": 8,
"probability": 100
}
],
"region": "An Onion Field in Britain 1"
},
{
"$type": "RegionSpawner",
"guid": "58b14343-2032-4507-a913-6b536507c2e5",
"name": "Spawner",
"location": [
1199,
1823,
0
],
"map": "Felucca",
"count": 8,
"minDelay": "00:00:10",
"maxDelay": "00:00:30",
"entries": [
{
"name": "FarmableWheat",
"maxCount": 8,
"probability": 100
}
],
"region": "A Wheatfield in Britain 2"
},
{
"$type": "RegionSpawner",
"guid": "640fe3f8-9917-4dfa-986d-038923163add",
"name": "Spawner",
"location": [
823,
2264,
0
],
"map": "Felucca",
"count": 6,
"minDelay": "00:00:10",
"maxDelay": "00:00:30",
"entries": [
{
"name": "FarmableOnion",
"maxCount": 6,
"probability": 100
}
],
"region": "An Onion Field in Skara Brae"
},
{
"$type": "RegionSpawner",
"guid": "7b09d4b5-fe63-4f95-8525-3c970c513adc",
"name": "Spawner",
"location": [
1232,
1604,
0
],
"map": "Felucca",
"count": 6,
"minDelay": "00:00:10",
"maxDelay": "00:00:30",
"entries": [
{
"name": "FarmableCarrot",
"maxCount": 6,
"probability": 100
}
],
"region": "A Carrot Field in Britain 2"
},
{
"$type": "RegionSpawner",
"guid": "8536c19c-2036-495a-a3c5-e82c9f32f5ad",
"name": "Spawner",
"location": [
1183,
1683,
0
],
"map": "Felucca",
"count": 8,
"minDelay": "00:00:10",
"maxDelay": "00:00:30",
"entries": [
{
"name": "FarmableCabbage",
"maxCount": 8,
"probability": 100
}
],
"region": "A Cabbage Field in Britain 1"
},
{
"$type": "RegionSpawner",
"guid": "9805ef58-355f-4352-bfc4-43c6710ff409",
"name": "Spawner",
"location": [
1215,
1723,
0
],
"map": "Felucca",
"count": 8,
"minDelay": "00:00:10",
"maxDelay": "00:00:30",
"entries": [
{
"name": "FarmableCarrot",
"maxCount": 8,
"probability": 100
}
],
"region": "A Carrot Field in Britain 1"
},
{
"$type": "RegionSpawner",
"guid": "aed692cc-2dac-4c80-931b-35c73ca8d092",
"name": "Spawner",
"location": [
571,
1099,
0
],
"map": "Felucca",
"count": 10,
"minDelay": "00:00:10",
"maxDelay": "00:00:30",
"entries": [
{
"name": "Sheep",
"maxCount": 10,
"probability": 100
}
],
"region": "A Farm in Yew"
},
{
"$type": "RegionSpawner",
"guid": "b29b54ab-5ae3-4ce3-93ac-326f324a34f6",
"name": "Spawner",
"location": [
1135,
1791,
0
],
"map": "Felucca",
"count": 8,
"minDelay": "00:00:10",
"maxDelay": "00:00:30",
"entries": [
{
"name": "FarmableWheat",
"maxCount": 8,
"probability": 100
}
],
"region": "A Wheatfield in Britain 1"
},
{
"$type": "RegionSpawner",
"guid": "bba64d97-11eb-4a87-b326-e41e3c9b355d",
"name": "Spawner",
"location": [
375,
1191,
0
],
"map": "Felucca",
"count": 6,
"minDelay": "00:00:10",
"maxDelay": "00:00:30",
"entries": [
{
"name": "FarmableWheat",
"maxCount": 6,
"probability": 100
}
],
"region": "A Wheatfield in Yew 2"
},
{
"$type": "RegionSpawner",
"guid": "d8a2e54e-4951-468f-93c5-376460070cba",
"name": "Spawner",
"location": [
1199,
1683,
0
],
"map": "Felucca",
"count": 8,
"minDelay": "00:00:10",
"maxDelay": "00:00:30",
"entries": [
{
"name": "FarmableTurnip",
"maxCount": 8,
"probability": 100
}
],
"region": "A Turnip Field in Britain 1"
},
{
"$type": "RegionSpawner",
"guid": "e37b4d74-c87e-4102-8c87-8f80c728fe0c",
"name": "Spawner",
"location": [
567,
1239,
0
],
"map": "Felucca",
"count": 5,
"minDelay": "00:00:10",
"maxDelay": "00:00:30",
"entries": [
{
"name": "FarmableWheat",
"maxCount": 5,
"probability": 100
}
],
"region": "A Wheatfield in Yew 1"
},
{
"$type": "RegionSpawner",
"guid": "e416e9fa-5a9a-426b-962e-50cdce64ca7f",
"name": "Spawner",
"location": [
1152,
1576,
0
],
"map": "Felucca",
"count": 8,
"minDelay": "00:00:10",
"maxDelay": "00:00:30",
"entries": [
{
"name": "FarmableWheat",
"maxCount": 8,
"probability": 100
}
],
"region": "A Wheatfield in Britain 5"
},
{
"$type": "RegionSpawner",
"guid": "e6a4aede-5a76-473d-8331-4bb73701ea1a",
"name": "Spawner",
"location": [
1120,
1624,
0
],
"map": "Felucca",
"count": 8,
"minDelay": "00:00:10",
"maxDelay": "00:00:30",
"entries": [
{
"name": "FarmableWheat",
"maxCount": 8,
"probability": 100
}
],
"region": "A Wheatfield in Britain 4"
},
{
"$type": "RegionSpawner",
"guid": "e7b34039-ec1f-43c8-b64f-d7462ce7ae9d",
"name": "Spawner",
"location": [
823,
2355,
0
],
"map": "Felucca",
"count": 6,
"minDelay": "00:00:10",
"maxDelay": "00:00:30",
"entries": [
{
"name": "FarmableCotton",
"maxCount": 6,
"probability": 100
}
],
"region": "A Cotton Field in Skara Brae"
},
{
"$type": "RegionSpawner",
"guid": "f4bccdc2-c663-4ccd-b7df-31656fa2ae09",
"name": "Spawner",
"location": [
823,
2264,
0
],
"map": "Felucca",
"count": 6,
"minDelay": "00:00:10",
"maxDelay": "00:00:30",
"entries": [
{
"name": "FarmableCabbage",
"maxCount": 6,
"probability": 100
}
],
"region": "A Cabbage Field in Skara Brae 1"
},
{
"$type": "RegionSpawner",
"guid": "f68b6bc8-f822-4c7a-9d01-37fad25bc95b",
"name": "Spawner",
"location": [
1231,
1887,
0
],
"map": "Felucca",
"count": 8,
"minDelay": "00:00:10",
"maxDelay": "00:00:30",
"entries": [
{
"name": "FarmableWheat",
"maxCount": 8,
"probability": 100
}
],
"region": "A Wheatfield in Britain 3"
}
]