ModernUO/Distribution/Data/Spawns/post-uoml/ilshenar/Towns.json
Kamron Batman 0d1fffd9fc
fix: Fixes spawners, adds convertpremiumspawners, exportspawners, and replaces with neruns distro (#751)
### Additions
* Adds `[exportspawners <relative json file path to distro>`
  * If no path is provided, it will be saved to the `Data\Spawns` folder with the current timestamp as the file name.
  * Supports global, facet, region, multi, and area
* Fixes client disconnect for bad spawner generation command.
* Moves spawner commands to their own folder.
* Adds GUIDs for spawners. This allows for easy replacement during import to reduce duplication.
* Allows exporting the name of the spawner.
* Fixes globbing when using [generatespawners
* Adds [convertpremiumspawners to convert Premium Spawners (from Neruns distro)

Possibly in .NET 6 serializing JSON will be more performant using JSON nodes.


### Screenshots
![Screen_Shot_2021-08-31_at_10 20 06_PM](https://user-images.githubusercontent.com/3953314/131618495-cf7e3ae5-58e5-4f86-9d3c-3cc49906d9fc.png)
![Screen_Shot_2021-08-31_at_10 21 08_PM](https://user-images.githubusercontent.com/3953314/131618502-c39cc368-2266-47a5-9b87-e5ffa108b875.png)
![Screen_Shot_2021-08-31_at_10 13 29_PM](https://user-images.githubusercontent.com/3953314/131618512-f9807f1b-76e4-4503-989d-42324798fbf5.png)
2021-09-03 21:52:44 -07:00

631 lines
17 KiB
JSON

[
{
"type": "Spawner",
"guid": "d90dea03-b2cb-4b99-bd72-5aae8a332bfa",
"name": "Spawner (311)",
"location": [1517, 558, 5],
"map": "Ilshenar",
"count": 1,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 20,
"walkingRange": 35,
"entries": [{ "name": "Skeleton", "maxCount": 1, "probability": 100 }]
},
{
"type": "Spawner",
"guid": "ab3dd2b3-07aa-41e9-ad5a-e2f43f27164c",
"name": "Spawner (311)",
"location": [1517, 552, 10],
"map": "Ilshenar",
"count": 3,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 15,
"walkingRange": 30,
"entries": [
{ "name": "Spectre", "maxCount": 1, "probability": 100 },
{ "name": "Shade", "maxCount": 1, "probability": 100 },
{ "name": "Wraith", "maxCount": 1, "probability": 100 }
]
},
{
"type": "Spawner",
"guid": "02c838c4-6602-43ff-ab50-7f283c2f68c2",
"name": "Spawner (311)",
"location": [1516, 557, 4],
"map": "Ilshenar",
"count": 3,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 20,
"walkingRange": 35,
"entries": [
{ "name": "Ghoul", "maxCount": 1, "probability": 100 },
{ "name": "Zombie", "maxCount": 2, "probability": 100 }
]
},
{
"type": "Spawner",
"guid": "8f22e220-52d1-468d-a7b6-9114de11ce4e",
"name": "Spawner (311)",
"location": [1517, 552, 10],
"map": "Ilshenar",
"count": 8,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 15,
"walkingRange": 30,
"entries": [
{ "name": "SkeletalKnight", "maxCount": 1, "probability": 100 },
{ "name": "BoneKnight", "maxCount": 1, "probability": 100 },
{ "name": "SkeletalMage", "maxCount": 3, "probability": 100 },
{ "name": "BoneMagi", "maxCount": 3, "probability": 100 }
]
},
{
"type": "Spawner",
"guid": "550794d7-03a6-40e6-ba7b-55f760445e56",
"name": "Spawner (311)",
"location": [1517, 541, 11],
"map": "Ilshenar",
"count": 1,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 10,
"walkingRange": 20,
"entries": [{ "name": "Lich", "maxCount": 1, "probability": 100 }]
},
{
"type": "Spawner",
"guid": "cef88e8f-026c-499c-b85d-baa903238136",
"name": "Spawner (311)",
"location": [1517, 541, 61],
"map": "Ilshenar",
"count": 1,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 4,
"walkingRange": 10,
"entries": [{ "name": "LichLord", "maxCount": 1, "probability": 100 }]
},
{
"type": "Spawner",
"guid": "2519b05f-1e27-4422-833e-2a236c6f8aaf",
"name": "Spawner (311)",
"location": [1203, 1138, -25],
"map": "Ilshenar",
"count": 4,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 40,
"walkingRange": 55,
"entries": [
{ "name": "MeerWarrior", "maxCount": 1, "probability": 100 },
{ "name": "MeerCaptain", "maxCount": 1, "probability": 100 },
{ "name": "MeerMage", "maxCount": 1, "probability": 100 },
{ "name": "MeerEternal", "maxCount": 1, "probability": 100 }
]
},
{
"type": "Spawner",
"guid": "0c049e44-3727-4772-b8ce-1350328fddcf",
"name": "Spawner (311)",
"location": [1127, 1112, -34],
"map": "Ilshenar",
"count": 2,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 25,
"walkingRange": 35,
"entries": [
{ "name": "DireWolf", "maxCount": 1, "probability": 100 },
{ "name": "TimberWolf", "maxCount": 1, "probability": 100 }
]
},
{
"type": "Spawner",
"guid": "6947407d-ed3f-490d-9b90-c1fff5a3587e",
"name": "Spawner (311)",
"location": [1180, 1188, -25],
"map": "Ilshenar",
"count": 1,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 15,
"walkingRange": 15,
"entries": [{ "name": "Snake", "maxCount": 1, "probability": 100 }]
},
{
"type": "Spawner",
"guid": "8b686285-c781-460d-ba5f-c7d71c1a1748",
"name": "Spawner (311)",
"location": [1181, 1189, -25],
"map": "Ilshenar",
"count": 1,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 12,
"walkingRange": 12,
"entries": [{ "name": "GiantSerpent", "maxCount": 1, "probability": 100 }]
},
{
"type": "Spawner",
"guid": "3de99e86-67d5-47d1-abfc-0faba585f121",
"name": "Spawner (311)",
"location": [817, 1065, -30],
"map": "Ilshenar",
"count": 23,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 60,
"walkingRange": 70,
"entries": [
{ "name": "Ogre", "maxCount": 1, "probability": 100 },
{ "name": "OgreLord", "maxCount": 5, "probability": 100 },
{ "name": "Ratman", "maxCount": 2, "probability": 100 },
{ "name": "RatmanMage", "maxCount": 10, "probability": 100 },
{ "name": "RatmanArcher", "maxCount": 5, "probability": 100 }
]
},
{
"type": "Spawner",
"guid": "7fa522d6-8d6e-4714-ad13-49fe6e50a73e",
"name": "Spawner (311)",
"location": [1643, 310, 48],
"map": "Ilshenar",
"count": 20,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 30,
"walkingRange": 50,
"entries": [
{ "name": "Phoenix", "maxCount": 1, "probability": 100 },
{ "name": "FireElemental", "maxCount": 2, "probability": 100 },
{ "name": "HellHound", "maxCount": 4, "probability": 100 },
{ "name": "LavaSerpent", "maxCount": 5, "probability": 100 },
{ "name": "LavaLizard", "maxCount": 4, "probability": 100 },
{ "name": "Daemon", "maxCount": 4, "probability": 100 }
]
},
{
"type": "Spawner",
"guid": "6c0ae42a-15f9-4cd3-a082-4fdbc07f89cc",
"name": "Spawner (311)",
"location": [1643, 310, 48],
"map": "Ilshenar",
"count": 3,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 30,
"walkingRange": 50,
"entries": [
{ "name": "Succubus", "maxCount": 1, "probability": 100 },
{ "name": "Efreet", "maxCount": 2, "probability": 100 }
]
},
{
"type": "Spawner",
"guid": "a1745cf8-c3a6-40fa-bb29-9def638343f2",
"name": "Spawner (311)",
"location": [1665, 244, 93],
"map": "Ilshenar",
"count": 4,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 25,
"walkingRange": 25,
"entries": [
{ "name": "EarthElemental", "maxCount": 1, "probability": 100 },
{ "name": "Drake", "maxCount": 3, "probability": 100 }
]
},
{
"type": "Spawner",
"guid": "dc58a43b-46d9-4be0-89e2-06617fa5af69",
"name": "Spawner (311)",
"location": [1715, 228, 78],
"map": "Ilshenar",
"count": 6,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 10,
"walkingRange": 10,
"entries": [
{ "name": "StoneHarpy", "maxCount": 1, "probability": 100 },
{ "name": "StoneGargoyle", "maxCount": 3, "probability": 100 },
{ "name": "Balron", "maxCount": 2, "probability": 100 }
]
},
{
"type": "Spawner",
"guid": "111afee8-c940-4246-a117-7702d21ebee5",
"name": "Spawner (311)",
"location": [1363, 1046, -13],
"map": "Ilshenar",
"count": 1,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 15,
"walkingRange": 30,
"entries": [{ "name": "EtherealWarrior", "maxCount": 1, "probability": 100 }]
},
{
"type": "Spawner",
"guid": "4cbabb06-70ed-472b-b807-ceb413a8f9c1",
"name": "Spawner (311)",
"location": [1046, 517, -80],
"map": "Ilshenar",
"count": 4,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 15,
"walkingRange": 15,
"entries": [
{ "name": "SavageRider", "maxCount": 1, "probability": 100 },
{ "name": "Savage", "maxCount": 3, "probability": 100 }
]
},
{
"type": "Spawner",
"guid": "811f5f8d-092d-4835-8964-1f7721c3bbac",
"name": "Spawner (311)",
"location": [1046, 517, -80],
"map": "Ilshenar",
"count": 1,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 7,
"walkingRange": 10,
"entries": [{ "name": "SavageShaman", "maxCount": 1, "probability": 100 }]
},
{
"type": "Spawner",
"guid": "761f2e6f-d415-4442-a837-4d2c43294ba6",
"name": "Spawner (311)",
"location": [1116, 527, -80],
"map": "Ilshenar",
"count": 2,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 15,
"walkingRange": 15,
"entries": [
{ "name": "Savage", "maxCount": 1, "probability": 100 },
{ "name": "SavageRidgeback", "maxCount": 1, "probability": 100 }
]
},
{
"type": "Spawner",
"guid": "6fe7a6fb-6d18-4581-bb70-371e51518bdf",
"name": "Spawner (311)",
"location": [1110, 542, -77],
"map": "Ilshenar",
"count": 1,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 25,
"walkingRange": 25,
"entries": [{ "name": "Bird", "maxCount": 1, "probability": 100 }]
},
{
"type": "Spawner",
"guid": "4683f7b7-b5b0-471c-ab55-c33d5c5ddc19",
"name": "Spawner (311)",
"location": [1108, 492, -80],
"map": "Ilshenar",
"count": 1,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 25,
"walkingRange": 25,
"entries": [{ "name": "Bird", "maxCount": 1, "probability": 100 }]
},
{
"type": "Spawner",
"guid": "a7ccd077-3940-4f44-b14d-2e45f21b5fdf",
"name": "Spawner (311)",
"location": [1110, 542, -77],
"map": "Ilshenar",
"count": 5,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 25,
"walkingRange": 25,
"entries": [
{ "name": "Hind", "maxCount": 1, "probability": 100 },
{ "name": "GreatHart", "maxCount": 2, "probability": 100 },
{ "name": "BlackBear", "maxCount": 1, "probability": 100 },
{ "name": "DireWolf", "maxCount": 1, "probability": 100 }
]
},
{
"type": "Spawner",
"guid": "3691eab3-8b04-46a4-ace1-ae9aecfaf219",
"name": "Spawner (311)",
"location": [1108, 492, -80],
"map": "Ilshenar",
"count": 5,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 25,
"walkingRange": 25,
"entries": [
{ "name": "Hind", "maxCount": 1, "probability": 100 },
{ "name": "GreatHart", "maxCount": 2, "probability": 100 },
{ "name": "BlackBear", "maxCount": 1, "probability": 100 },
{ "name": "DireWolf", "maxCount": 1, "probability": 100 }
]
},
{
"type": "Spawner",
"guid": "ed0db4c7-84f1-49b9-ba81-ff232f4255e0",
"name": "Spawner (311)",
"location": [1161, 668, -80],
"map": "Ilshenar",
"count": 1,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 5,
"walkingRange": 5,
"entries": [{ "name": "Savage", "maxCount": 1, "probability": 100 }]
},
{
"type": "Spawner",
"guid": "b4cf46cc-2b9d-4e42-82d1-32657426ef0c",
"name": "Spawner (311)",
"location": [1181, 691, -80],
"map": "Ilshenar",
"count": 1,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 4,
"walkingRange": 4,
"entries": [{ "name": "Savage", "maxCount": 1, "probability": 100 }]
},
{
"type": "Spawner",
"guid": "950eb27b-fb66-4a8b-a434-09d416bedc3c",
"name": "Spawner (311)",
"location": [1187, 685, -80],
"map": "Ilshenar",
"count": 1,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 4,
"walkingRange": 4,
"entries": [{ "name": "Savage", "maxCount": 1, "probability": 100 }]
},
{
"type": "Spawner",
"guid": "02eed1af-100f-430d-81f0-9d81417790c1",
"name": "Spawner (311)",
"location": [1191, 696, -80],
"map": "Ilshenar",
"count": 1,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 5,
"walkingRange": 7,
"entries": [{ "name": "Savage", "maxCount": 1, "probability": 100 }]
},
{
"type": "Spawner",
"guid": "7b774000-0a38-4e27-a17f-1001f81eec09",
"name": "Spawner (311)",
"location": [1191, 696, -80],
"map": "Ilshenar",
"count": 1,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 10,
"walkingRange": 10,
"entries": [{ "name": "SavageRider", "maxCount": 1, "probability": 100 }]
},
{
"type": "Spawner",
"guid": "0eb8d0fd-a223-44cd-a91e-acbd31a568a5",
"name": "Spawner (311)",
"location": [1203, 762, -80],
"map": "Ilshenar",
"count": 1,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 10,
"walkingRange": 10,
"entries": [{ "name": "Savage", "maxCount": 1, "probability": 100 }]
},
{
"type": "Spawner",
"guid": "edeb9eb1-2157-4c57-b743-73db3751bd60",
"name": "Spawner (311)",
"location": [1234, 760, -80],
"map": "Ilshenar",
"count": 1,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 10,
"walkingRange": 10,
"entries": [{ "name": "SavageShaman", "maxCount": 1, "probability": 100 }]
},
{
"type": "Spawner",
"guid": "76ce4042-5f27-4e93-a417-29a1c545f64e",
"name": "Spawner (311)",
"location": [1213, 719, -80],
"map": "Ilshenar",
"count": 4,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 10,
"walkingRange": 10,
"entries": [
{ "name": "Savage", "maxCount": 1, "probability": 100 },
{ "name": "SavageRider", "maxCount": 3, "probability": 100 }
]
},
{
"type": "Spawner",
"guid": "78d351e0-494a-4ac9-a1a1-2ff07f4cdab1",
"name": "Spawner (311)",
"location": [1214, 744, -80],
"map": "Ilshenar",
"count": 1,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 10,
"walkingRange": 10,
"entries": [{ "name": "Savage", "maxCount": 1, "probability": 100 }]
},
{
"type": "Spawner",
"guid": "fc0f18cd-7070-4fa5-b499-a9eeea127cdf",
"name": "Spawner (311)",
"location": [1231, 694, -80],
"map": "Ilshenar",
"count": 3,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 10,
"walkingRange": 10,
"entries": [
{ "name": "Savage", "maxCount": 1, "probability": 100 },
{ "name": "SavageShaman", "maxCount": 2, "probability": 100 }
]
},
{
"type": "Spawner",
"guid": "563f344b-97f3-40c6-a64d-d87cdb6a93d1",
"name": "Spawner (311)",
"location": [1251, 703, -80],
"map": "Ilshenar",
"count": 1,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 10,
"walkingRange": 10,
"entries": [{ "name": "Savage", "maxCount": 1, "probability": 100 }]
},
{
"type": "Spawner",
"guid": "e4d28153-f0a0-4d17-bb77-4d783bfc1656",
"name": "Spawner (311)",
"location": [1274, 728, -80],
"map": "Ilshenar",
"count": 1,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 10,
"walkingRange": 10,
"entries": [{ "name": "Savage", "maxCount": 1, "probability": 100 }]
},
{
"type": "Spawner",
"guid": "7324a8c7-0fbe-4a34-b478-d743a9d88409",
"name": "Spawner (311)",
"location": [1292, 755, -80],
"map": "Ilshenar",
"count": 1,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 4,
"walkingRange": 4,
"entries": [{ "name": "Savage", "maxCount": 1, "probability": 100 }]
},
{
"type": "Spawner",
"guid": "e0b20c00-8f00-40fd-9488-dc71892ce492",
"name": "Spawner (311)",
"location": [1280, 770, -80],
"map": "Ilshenar",
"count": 1,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 7,
"walkingRange": 7,
"entries": [{ "name": "Savage", "maxCount": 1, "probability": 100 }]
},
{
"type": "Spawner",
"guid": "372cdd42-8ed9-4b97-aa00-abefbfe8e0ff",
"name": "Spawner (311)",
"location": [1279, 781, -80],
"map": "Ilshenar",
"count": 1,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 5,
"walkingRange": 5,
"entries": [{ "name": "Ridgeback", "maxCount": 1, "probability": 100 }]
},
{
"type": "Spawner",
"guid": "b9343eb4-b15e-4ced-99cb-8a4ec5f3e519",
"name": "Spawner (311)",
"location": [1243, 732, -80],
"map": "Ilshenar",
"count": 5,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 10,
"walkingRange": 10,
"entries": [
{ "name": "Savage", "maxCount": 1, "probability": 100 },
{ "name": "SavageShaman", "maxCount": 1, "probability": 100 },
{ "name": "SavageRider", "maxCount": 3, "probability": 100 }
]
},
{
"type": "Spawner",
"guid": "ac6f0882-cb21-4cd0-874c-b0e5b44d40e6",
"name": "Spawner (311)",
"location": [1262, 758, -80],
"map": "Ilshenar",
"count": 1,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 10,
"walkingRange": 10,
"entries": [{ "name": "Savage", "maxCount": 1, "probability": 100 }]
}
]