ModernUO/Distribution/Data/Spawns/shared/malas/Citadel.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

263 lines
7.3 KiB
JSON

[
{
"type": "Spawner",
"guid": "114d80f2-07e6-49e3-9418-6e7c30291028",
"name": "Spawner (406)",
"location": [142, 1921, 0],
"map": "Malas",
"count": 4,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 5,
"walkingRange": 5,
"entries": [
{ "name": "tigersclawthief", "maxCount": 4, "probability": 100 }
]
},
{
"type": "Spawner",
"guid": "15b169f9-fe9e-4ef7-973b-cb0619b9937d",
"name": "Spawner (406)",
"location": [82, 1875, 0],
"map": "Malas",
"count": 4,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 5,
"walkingRange": 5,
"entries": [
{ "name": "serpentsfangassassin", "maxCount": 4, "probability": 100 },
{ "name": "eliteninjawarrior", "maxCount": 4, "probability": 100 }
]
},
{
"type": "Spawner",
"guid": "17abd9d2-3b7a-44ec-a724-57c202236788",
"name": "Spawner (406)",
"location": [179, 1869, 0],
"map": "Malas",
"count": 4,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 10,
"walkingRange": 10,
"entries": [
{ "name": "serpentsfangassassin", "maxCount": 4, "probability": 100 },
{ "name": "tigersclawthief", "maxCount": 4, "probability": 100 }
]
},
{
"type": "Spawner",
"guid": "28535caf-b979-4745-8a87-e62691d7cb11",
"name": "Spawner (406)",
"location": [145, 1898, 0],
"map": "Malas",
"count": 3,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 25,
"walkingRange": 25,
"entries": [
{ "name": "serpentsfangassassin", "maxCount": 3, "probability": 100 },
{ "name": "tigersclawthief", "maxCount": 3, "probability": 100 },
{ "name": "eliteninjawarrior", "maxCount": 3, "probability": 100 }
]
},
{
"type": "Spawner",
"guid": "2d629e57-63db-4610-b6d2-cf3bfd34f0b0",
"name": "Spawner (406)",
"location": [181, 1883, 0],
"map": "Malas",
"count": 8,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 5,
"walkingRange": 5,
"entries": [
{ "name": "serpentsfangassassin", "maxCount": 8, "probability": 100 },
{ "name": "tigersclawthief", "maxCount": 8, "probability": 100 },
{ "name": "dragonsflamemage", "maxCount": 8, "probability": 100 },
{ "name": "eliteninjawarrior", "maxCount": 8, "probability": 100 }
]
},
{
"type": "Spawner",
"guid": "347e85d2-c752-4abf-86c7-bda2a2051033",
"name": "Spawner (406)",
"location": [183, 1961, 0],
"map": "Malas",
"count": 2,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 20,
"walkingRange": 20,
"entries": [
{ "name": "dragonsflamemage", "maxCount": 2, "probability": 100 },
{ "name": "serpentsfangassassin", "maxCount": 2, "probability": 100 }
]
},
{
"type": "Spawner",
"guid": "364cc553-16d0-428d-bf97-061c3ddfd120",
"name": "Spawner (406)",
"location": [170, 1974, 0],
"map": "Malas",
"count": 3,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 5,
"walkingRange": 5,
"entries": [
{ "name": "serpentsfangassassin", "maxCount": 3, "probability": 100 },
{ "name": "serpentsfanghighexecutioner", "maxCount": 3, "probability": 100 }
]
},
{
"type": "Spawner",
"guid": "435ce67b-aad4-4ed0-b621-73ab4b6b0042",
"name": "Spawner (406)",
"location": [81, 1892, 0],
"map": "Malas",
"count": 4,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 5,
"walkingRange": 5,
"entries": [
{ "name": "eliteninjawarrior", "maxCount": 4, "probability": 100 },
{ "name": "serpentsfangassassin", "maxCount": 4, "probability": 100 },
{ "name": "dragonsflamemage", "maxCount": 4, "probability": 100 }
]
},
{
"type": "Spawner",
"guid": "4854c18d-7bf2-4f8c-a69f-7679204b6d7d",
"name": "Spawner (406)",
"location": [155, 1869, 0],
"map": "Malas",
"count": 4,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 10,
"walkingRange": 10,
"entries": [
{ "name": "serpentsfangassassin", "maxCount": 4, "probability": 100 },
{ "name": "dragonsflamemage", "maxCount": 4, "probability": 100 }
]
},
{
"type": "Spawner",
"guid": "50c87975-6021-46cb-bbe1-58c45ba776b7",
"name": "Spawner (406)",
"location": [77, 1883, 0],
"map": "Malas",
"count": 4,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 5,
"walkingRange": 5,
"entries": [
{ "name": "dragonsflamemage", "maxCount": 4, "probability": 100 },
{ "name": "eliteninjawarrior", "maxCount": 4, "probability": 100 }
]
},
{
"type": "Spawner",
"guid": "856c181e-183a-4231-acc8-5146301c56c6",
"name": "Spawner (406)",
"location": [185, 1920, 0],
"map": "Malas",
"count": 2,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 7,
"walkingRange": 7,
"entries": [
{ "name": "magedragonsflamemage", "maxCount": 2, "probability": 100 }
]
},
{
"type": "Spawner",
"guid": "9f02ef97-7699-4a65-8cd6-615aa50cc318",
"name": "Spawner (406)",
"location": [139, 1868, 0],
"map": "Malas",
"count": 7,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 8,
"walkingRange": 8,
"entries": [
{ "name": "serpentsfangassassin", "maxCount": 7, "probability": 100 },
{ "name": "tigersclawthief", "maxCount": 7, "probability": 100 },
{ "name": "magedragonsflamemage", "maxCount": 7, "probability": 100 },
{ "name": "dragonsflamemage", "maxCount": 7, "probability": 100 },
{ "name": "eliteninjawarrior", "maxCount": 7, "probability": 100 }
]
},
{
"type": "Spawner",
"guid": "b5fed5a1-35db-4f09-b4b6-8017146a8bf3",
"name": "Spawner (406)",
"location": [174, 1900, 0],
"map": "Malas",
"count": 5,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 20,
"walkingRange": 20,
"entries": [
{ "name": "serpentsfangassassin", "maxCount": 5, "probability": 100 },
{ "name": "dragonsflamemage", "maxCount": 5, "probability": 100 },
{ "name": "eliteninjawarrior", "maxCount": 5, "probability": 100 }
]
},
{
"type": "Spawner",
"guid": "dccae74d-bafa-40ff-9984-7a2a0af5d8de",
"name": "Spawner (406)",
"location": [140, 1974, 0],
"map": "Malas",
"count": 2,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 8,
"walkingRange": 8,
"entries": [
{ "name": "magedragonsflamemage", "maxCount": 2, "probability": 100 },
{ "name": "serpentsfangassassin", "maxCount": 2, "probability": 100 }
]
},
{
"type": "Spawner",
"guid": "fb6ee275-c5c2-4780-9180-76e3a4ac1a97",
"name": "Spawner (406)",
"location": [134, 1947, 0],
"map": "Malas",
"count": 2,
"minDelay": "00:05:00",
"maxDelay": "00:10:00",
"team": 0,
"homeRange": 7,
"walkingRange": 7,
"entries": [
{ "name": "magedragonsflamemage", "maxCount": 2, "probability": 100 },
{ "name": "dragonsflamemage", "maxCount": 2, "probability": 100 }
]
}
]