ModernUO/Distribution/Data/Spawns/uoml/trammel/Outdoors.json
Kamron Batman 723e1a836d
feat: Deduplicates spawns. Adds spawnbounds where needed. (#2299)
### Summary

- Add z-restricted spawnBounds to 35 spawners across 15 files to prevent creatures from spawning on incorrect floors
- Building spawners (Pyramid, Fire dungeon, Shame, Vendors) use minZ = spawner_z to prevent spawning below
- Ground level spawners (Graveyards, Outdoors, Tokuno) use minZ = -128 for natural terrain variation
- Multi-floor structures in Ilshenar use floor-specific Z restrictions

### Test plan

- Verify spawners in Fire dungeon building don't spawn creatures on floors below
- Verify Pyramid spawners keep creatures on their respective levels
- Verify ground level spawners (graveyards, outdoors) still spawn correctly on terrain
- Check Ilshenar multi-floor structure spawns creatures on correct floors
2025-12-30 00:21:03 -08:00

189 lines
6.1 KiB
JSON

[
{
"type": "Spawner",
"guid": "949f3b33-3f72-4065-b212-a15495e305d6",
"name": "Spawner (2113)",
"location": [3619, 2814, 21],
"map": "Trammel",
"count": 17,
"minDelay": "01:00:00",
"maxDelay": "01:00:00",
"team": 0,
"homeRange": 50,
"walkingRange": 50,
"entries": [
{ "name": "HordeMinion", "maxCount": 17, "probability": 100 }
]
},
{
"type": "Spawner",
"guid": "b4555e77-ee2f-44d0-b85b-d7d6f26612ef",
"name": "Spawner (2113)",
"location": [3619, 2814, 21],
"map": "Trammel",
"count": 17,
"minDelay": "01:00:00",
"maxDelay": "01:00:00",
"team": 0,
"homeRange": 50,
"walkingRange": 50,
"entries": [
{ "name": "Mongbat", "maxCount": 17, "probability": 100 }
]
},
{
"type": "Spawner",
"guid": "8cd18e64-2c1c-4853-b82e-8842b4b71dcd",
"name": "Spawner (2113)",
"location": [3485, 2595, 12],
"map": "Trammel",
"count": 3,
"minDelay": "01:00:00",
"maxDelay": "01:00:00",
"team": 0,
"homeRange": 30,
"walkingRange": 30,
"entries": [
{ "name": "Brigand", "maxCount": 3, "probability": 100 },
{ "name": "Harpy", "maxCount": 3, "probability": 100 },
{ "name": "Lizardman", "maxCount": 3, "probability": 100 },
{ "name": "OrcishMage", "maxCount": 3, "probability": 100 },
{ "name": "Orc", "maxCount": 3, "probability": 100 },
{ "name": "Ratman", "maxCount": 3, "probability": 100 },
{ "name": "Spectre", "maxCount": 3, "probability": 100 },
{ "name": "Troll", "maxCount": 3, "probability": 100 }
]
},
{
"type": "Spawner",
"guid": "c08f91a3-eb9d-464c-96ce-d70f6c5a8fc4",
"name": "Spawner (2113)",
"location": [3446, 2741, 49],
"map": "Trammel",
"count": 7,
"minDelay": "01:00:00",
"maxDelay": "01:00:00",
"team": 0,
"homeRange": 50,
"walkingRange": 50,
"entries": [
{ "name": "Brigand", "maxCount": 7, "probability": 100 },
{ "name": "Harpy", "maxCount": 7, "probability": 100 },
{ "name": "Lizardman", "maxCount": 7, "probability": 100 },
{ "name": "OrcishMage", "maxCount": 7, "probability": 100 },
{ "name": "Orc", "maxCount": 7, "probability": 100 },
{ "name": "Ratman", "maxCount": 7, "probability": 100 },
{ "name": "Spectre", "maxCount": 7, "probability": 100 },
{ "name": "Troll", "maxCount": 7, "probability": 100 }
]
},
{
"type": "Spawner",
"guid": "0111020b-4ccf-45e7-bfbe-8a4f4fbeedad",
"name": "Spawner (2113)",
"location": [3459, 2655, 9],
"map": "Trammel",
"count": 3,
"minDelay": "01:00:00",
"maxDelay": "01:00:00",
"team": 0,
"homeRange": 30,
"walkingRange": 30,
"entries": [
{ "name": "Brigand", "maxCount": 3, "probability": 100 },
{ "name": "Harpy", "maxCount": 3, "probability": 100 },
{ "name": "Lizardman", "maxCount": 3, "probability": 100 },
{ "name": "OrcishMage", "maxCount": 3, "probability": 100 },
{ "name": "Orc", "maxCount": 3, "probability": 100 },
{ "name": "Ratman", "maxCount": 3, "probability": 100 },
{ "name": "Spectre", "maxCount": 3, "probability": 100 },
{ "name": "Troll", "maxCount": 3, "probability": 100 }
]
},
{
"type": "Spawner",
"guid": "ed918ae7-13cc-45da-a9ee-166d198bb83f",
"name": "Spawner (2113)",
"location": [3379, 2693, 35],
"map": "Trammel",
"count": 3,
"minDelay": "01:00:00",
"maxDelay": "01:00:00",
"team": 0,
"homeRange": 30,
"walkingRange": 30,
"entries": [
{ "name": "Brigand", "maxCount": 3, "probability": 100 },
{ "name": "Harpy", "maxCount": 3, "probability": 100 },
{ "name": "Lizardman", "maxCount": 3, "probability": 100 },
{ "name": "OrcishMage", "maxCount": 3, "probability": 100 },
{ "name": "Orc", "maxCount": 3, "probability": 100 },
{ "name": "Ratman", "maxCount": 3, "probability": 100 },
{ "name": "Spectre", "maxCount": 3, "probability": 100 },
{ "name": "Troll", "maxCount": 3, "probability": 100 }
]
},
{
"type": "Spawner",
"guid": "63c48500-e80c-4662-a58d-b32b2591f94d",
"name": "Spawner (2113)",
"location": [3411, 2592, 44],
"map": "Trammel",
"count": 6,
"minDelay": "01:00:00",
"maxDelay": "01:00:00",
"team": 0,
"homeRange": 40,
"walkingRange": 40,
"entries": [
{ "name": "Brigand", "maxCount": 6, "probability": 100 },
{ "name": "Harpy", "maxCount": 6, "probability": 100 },
{ "name": "Lizardman", "maxCount": 6, "probability": 100 },
{ "name": "OrcishMage", "maxCount": 6, "probability": 100 },
{ "name": "Orc", "maxCount": 6, "probability": 100 },
{ "name": "Ratman", "maxCount": 6, "probability": 100 },
{ "name": "Spectre", "maxCount": 6, "probability": 100 },
{ "name": "Troll", "maxCount": 6, "probability": 100 }
]
},
{
"type": "Spawner",
"guid": "8dc26593-aecf-4d5c-97c6-d4d11e8411dc",
"name": "Spawner (2113)",
"location": [3464, 2503, 49],
"map": "Trammel",
"count": 7,
"minDelay": "01:00:00",
"maxDelay": "01:00:00",
"team": 0,
"homeRange": 50,
"walkingRange": 50,
"entries": [
{ "name": "Brigand", "maxCount": 7, "probability": 100 },
{ "name": "Harpy", "maxCount": 7, "probability": 100 },
{ "name": "Lizardman", "maxCount": 7, "probability": 100 },
{ "name": "OrcishMage", "maxCount": 7, "probability": 100 },
{ "name": "Orc", "maxCount": 7, "probability": 100 },
{ "name": "Ratman", "maxCount": 7, "probability": 100 },
{ "name": "Spectre", "maxCount": 7, "probability": 100 },
{ "name": "Troll", "maxCount": 7, "probability": 100 }
]
},
{
"type": "Spawner",
"guid": "2733ca83-6c31-48d5-b360-eedf6f885beb",
"name": "Spawner (2113)",
"location": [3602, 2815, 28],
"map": "Trammel",
"count": 1,
"minDelay": "00:45:00",
"maxDelay": "01:00:00",
"team": 0,
"homeRange": 1,
"walkingRange": 10,
"entries": [
{ "name": "OrcCamp", "maxCount": 1, "probability": 100 },
{ "name": "RatCamp", "maxCount": 1, "probability": 100 }
]
}
]