MonsterSetBase Configuration

Controls where and how monsters spawn across all maps. The server scans one folder of per-map XML files at startup and appends every entry into a single global spawn table.

File Location#

Per-map spawns: Data/Monster/MonsterSetBase/*.xml (one file per map)

No master registry file ships with AXIOM-EMU. The server scans the MonsterSetBase/ directory and loads every .xml file it finds.

Dependencies#

Depends OnPurpose
Monster.xmlSpawns reference monster stats by Class (Index)
MapManager.xmlEntries on a map not enabled by this server are silently dropped at load time
Used ByPurpose
Map loadingServer reads spawn files during map initialization
Event systemsBlood Castle, Devil Square, Illusion Temple, Imperial Guardian, Raklion, Crywolf, Castle Siege, Chaos Castle, and Invasion Manager all scan the spawn table for their Type 3 / Type 4 entries

File Structure#

Per-Map Spawn Files#

Each map has its own file: MonsterSetBase/000 - Lorencia.xml, MonsterSetBase/001 - Dungeon.xml, etc. The filename is documentation only; the actual map is chosen by each entry's Map attribute. Files load in alphabetical order and their entries are appended into one global spawn table, so adding or renaming a file is all that is needed to register new spawns.

Map numbers match the game's internal map IDs (00 = Lorencia, 01 = Dungeon, 02 = Devias, etc.) and must match the Map value written inside each entry.

Spawn Entry Attributes#

AttributeTypeDescription
TypeintSpawn type (see Spawn Types below)
ClassintMonster Index from Monster.xml
MapintMap number (00 = Lorencia, 01 = Dungeon, etc.)
DisintRoaming distance from spawn point (in tiles)
XintSpawn X coordinate
YintSpawn Y coordinate
TXintTarget X coordinate (Type 1/3 only) - defines spawn area with X
TYintTarget Y coordinate (Type 1/3 only) - defines spawn area with Y
DirintFacing direction (0-7, or -1 for random)
CountintNumber of monsters to spawn (Type 1/3 only, minimum 1 if 0)
ValueintParsed but unused - no current system reads it. Leave it off new entries
CommentstringDescription (optional, for admin reference)

Spawn Types#

TypeNameBehaviorUse Case
0FixedSingle monster at exact X/Y; respawns at the same locationNPCs, guards, stationary bosses
1GroupCount monsters spawn randomly inside the (X,Y)-(TX,TY) rectangle; each respawn re-rolls a point in the same rectangleNormal hunting zones
2SpotSingle monster; loader offsets X/Y by -3..+3 once at load, then every (re)spawn picks a fresh point within +/-3 of that offset X/YScattered individual spawns
3EventParsed then skipped at map init; no system currently activates it. Do not useNone - see the warning below
4Event FixedSingle monster at exact X/Y; filtered out of normal init and activated by event code matching on MonsterClass and MapBlood Castle, Devil Square, Illusion Temple, Imperial Guardian, Raklion

Type 0: Fixed Spawn#

<Monster Type="0" Class="226" Map="00" Dis="00" X="122" Y="110" Dir="03" Comment="Trainer"/>
  • Spawns exactly 1 monster at X=122, Y=110
  • Dis="00" means the monster cannot roam
  • Dir is a 0-7 facing index; use -1 for random
  • Use for NPCs and bosses at specific locations

Type 1: Group Spawn#

<Monster Type="1" Class="003" Map="00" Dis="10" X="187" Y="121" TX="187" TY="121" Dir="-1" Count="007" Comment="Spider"/>
  • Spawns 7 spiders at (187,121) because TX=X and TY=Y (the spawn rectangle collapses to a single tile)
  • TX/TY must be set larger than X/Y to create a real spawn area; otherwise every unit of Count spawns at the exact point
  • Dis="10" allows each monster to roam 10 tiles from its spawn point
  • Dir="-1" means random facing
  • Use for normal monster packs in hunting zones

Type 2: Spot Spawn#

<Monster Type="2" Class="028" Map="03" Dis="05" X="202" Y="155" Dir="-1" Comment="BeetleMonster"/>
  • Spawns 1 monster within a 7x7 box centered on the configured X/Y (coordinates offset by -3..+3 on each axis)
  • The loader offsets the stored X/Y once at load time, then picks a fresh random point within +/-3 of that offset X/Y on every spawn and respawn
  • Good for scattered individual monsters that should not cluster
  • Commonly used in Noria for BeetleMonster and ForestMonster

Type 3: Event Spawn (Invasion Manager)#

<Monster Type="3" Class="089" Map="00" Dis="10" X="100" Y="100" TX="120" TY="120" Dir="-1" Count="010" Value="1" Comment="White Wizard Event"/>

Type 4: Event Fixed Spawn#

<Monster Type="4" Class="131" Map="11" Dis="00" X="100" Y="100" Dir="03" Comment="Blood Castle Gate"/>
  • Single monster at exact X/Y for event systems
  • Behaves like Type 0 but filtered by event code (Type 3/4 are excluded from normal spawns)
  • Used by Blood Castle, Devil Square, Illusion Temple, Imperial Guardian, Raklion
  • Event systems programmatically control when these spawns are activated

Direction Values#

DirMeaning
0-7Facing index (MU Online standard 8-way facing)
-1Random; loader rolls a fresh 0-7 value per entry at load time

TODO: verify exact compass mapping of each 0-7 value against the client's direction table.

Important Behavior#

Spawn Timing#

Coordinate System#

  • Coordinates are in tiles (not pixels)
  • Origin (0,0) is typically top-left corner
  • Maximum coordinates vary by map (usually 255x255 or similar)
  • Invalid coordinates = monster spawns but is unreachable/invisible

Dis (Roaming Distance)#

  • Dis="00" = Monster cannot move (stays at spawn point)
  • Dis="10" = Monster can wander up to 10 tiles from spawn point before AI forces return
  • Distance is calculated as Euclidean distance from spawn point (sqrt formula)
  • Too high Dis on maps with walls = monsters may appear to walk through walls when returning
  • NPCs should always have Dis="00" to prevent walking away

Count Behavior#

Type 1 and 3 spawn exactly Count monsters:

  • Count="007" spawns 7 monsters
  • Count="000" spawns 1 monster (the loader converts zero to one)
  • Each monster rolls its initial location inside the (X,Y)-(TX,TY) rectangle
  • On death, the respawn rolls a new location in the same rectangle (Type 1/3 only)

Internally the loader expands each Type 1 / Type 3 entry into Count individual spawn slots in the 20000-slot global table. A Count="050" entry consumes 50 slots.

TX/TY as Spawn Area#

For Type 1/3, (X,Y) and (TX,TY) define a rectangular spawn area:

  • If TX=X and TY=Y, every unit of Count spawns at the exact point (the box collapses to a single tile). Use this only when you want stacked spawns
  • If TX > X or TY > Y, spawns are spread across the rectangle (must be greater than, not just not equal)
  • Example: X="100" Y="100" TX="120" TY="120" = 20x20 tile spawn zone
  • The picker retries up to 100 times to find a walkable tile before giving up on that roll

Event Spawn Filtering (Type 3/4)#

Examples#

<Monster Type="0" Class="226" Map="00" Dis="00" X="122" Y="110" Dir="03" Comment="Trainer"/>

Spawns Trainer NPC at fixed location in Lorencia, cannot roam (Dis=0), facing index 3.

Per-Map Spawn Files#

Each map has its own spawn file. The folder ships with files covering at least the following map IDs:

Map IDFileMap Name
00000 - Lorencia.xmlLorencia
01001 - Dungeon.xmlDungeon
02002 - Devias.xmlDevias
03003 - Noria.xmlNoria
04004 - Lost Tower.xmlLost Tower
06006 - Arena.xmlArena
07007 - Atlans.xmlAtlans
08008 - Tarkan.xmlTarkan
09009 - Devil Square 1.xmlDevil Square (lower tiers)
10010 - Icarus.xmlIcarus
11-17, 52011 - Blood Castle 1.xml ... 017 - Blood Castle 7.xml, 052 - Blood Castle 8.xmlBlood Castle
18-23, 53018 - Chaos Castle 1.xml ... 023 - Chaos Castle 6.xml, 053 - Chaos Castle 7.xmlChaos Castle
24-29, 36024 - Kalima 1.xml ... 029 - Kalima 6.xml, 036 - Kalima 7.xmlKalima
30030 - Castle Siege.xmlCastle Siege
31031 - Land of Trials.xmlLand of Trials
32032 - Devil Square 2.xmlDevil Square (higher tiers)
33033 - Aida.xmlAida
34034 - Crywolf.xmlCrywolf
37-39037 - Kanturu 1.xml ... 039 - Kanturu 3.xmlKanturu
40040 - Silent.xmlSilent Map
41041 - Barracks.xmlBarracks of the Balgass
42042 - Refuge.xmlRefuge of the Balgass
45-50045 - Illusion Temple 1.xml ... 050 - Illusion Temple 6.xmlIllusion Temple
51051 - Elbeland.xmlElbeland

Kanturu 3 (map 39) also has dedicated spawn entries in KanturuMonsterSetBase.xml loaded separately for the Kanturu event.

Common Tasks#

Add Monster Spawn to Map#

  1. Find the map file (e.g., 002 - Devias.xml)
  2. Add a new <Monster> entry
  3. Set Type (usually 1 for monster groups)
  4. Set Class to monster Index from Monster.xml
  5. Set X/Y coordinates and Count

Increase Monster Density#

Find existing spawn entries and increase Count:

<!-- Before -->
<Monster Type="1" Class="003" Map="00" Dis="10" X="187" Y="121" TX="187" TY="121" Dir="-1" Count="007" Comment="Spider"/>

<!-- After -->
<Monster Type="1" Class="003" Map="00" Dis="10" X="187" Y="121" TX="187" TY="121" Dir="-1" Count="020" Comment="Spider"/>

Create Dense Hunting Zone#

Add multiple spawn entries with overlapping areas:

<Monster Type="1" Class="005" Map="02" Dis="10" X="100" Y="100" TX="120" TY="120" Dir="-1" Count="015"/>
<Monster Type="1" Class="005" Map="02" Dis="10" X="110" Y="110" TX="130" TY="130" Dir="-1" Count="015"/>
<Monster Type="1" Class="005" Map="02" Dis="10" X="120" Y="100" TX="140" TY="120" Dir="-1" Count="015"/>

Creates 45 Hell Hounds across overlapping zones for intense hunting.

Remove Monster from Map#

Delete or comment out the spawn entry:

<!-- <Monster Type="1" Class="003" Map="00" Dis="10" X="187" Y="121" TX="187" TY="121" Dir="-1" Count="007" Comment="Spider"/> -->

Move Boss Location#

Change X and Y coordinates:

<!-- Before -->
<Monster Type="0" Class="018" Map="01" Dis="05" X="125" Y="125" Dir="00" Comment="Gorgon"/>

<!-- After -->
<Monster Type="0" Class="018" Map="01" Dis="05" X="200" Y="200" Dir="00" Comment="Gorgon"/>

Common Issues#

Last updated August 20, 2026