Monster Configuration

The Monster system controls all NPC and monster behavior in the game including spawning, stats, AI, and skills.

Configuration Files#

Core Monster Definitions#

FilePurpose
Monster.xmlMonster stats, levels, resistances, regen time

Spawn Configuration#

File/DirectoryPurpose
MonsterSetBase/Directory containing per-map spawn files (e.g., 000 - Lorencia.xml, 002 - Devias.xml)
KanturuMonsterSetBase.xmlKanturu event map spawns (loaded separately by the Kanturu system)

Monster Skills#

FilePurpose
MonsterSkill.xmlAssigns skills to specific monsters
MonsterSkillUnit.xmlDefines skill behaviors (targeting, scope, delay)
MonsterSkillElement.xmlDefines skill effects (damage, debuffs, buffs)

Advanced AI System#

FilePurpose
MonsterAIGroup.xmlAssigns AI personalities to monster spawns
MonsterAIUnit.xmlDefines complete AI personalities (links automata to actions)
MonsterAIAutomata.xmlState machine definitions (when to change behavior)
MonsterAIElement.xmlAtomic AI actions (what to do in each state)
MonsterAIRule.xmlTime-scheduled per-class AI Unit overrides (shipped file is empty; loader and dispatcher are wired)

File Location#

All monster configs are in: Data/Monster/

Basic spawn files are in: Data/Monster/MonsterSetBase/ (directory with per-map XML files)

Workflow Overview#

Adding a New Monster#

  1. Define stats in Monster.xml - Add <Info> entry with unique Index, stats, resistances, RegenTime
  2. Assign skills (optional) in MonsterSkill.xml - Add <Monster> entry linking monster Index to skill units
  3. Configure spawns - Choose one method:

Modifying Monster Behavior#

  • Change stats - Edit Monster.xml (Level, Life, DamageMin/Max, Defense, etc.)
  • Change spawn density - Edit Count attribute in map-specific MonsterSetBase/*.xml file (Type 1 or 3 only)
  • Change spawn locations - Edit X/Y (and TX/TY for Type 1/3) coordinates in map-specific file
  • Change respawn time - Edit RegenTime in Monster.xml (in seconds, server multiplies by 1000)
  • Add/remove skills - Edit MonsterSkill.xml (add or remove <Monster> entry)
  • Change AI behavior - Edit MonsterAIGroup.xml (for AI-controlled monsters only)

Creating Custom Skills#

  1. Define effects in MonsterSkillElement.xml - Create Element entries
  2. Define behavior in MonsterSkillUnit.xml - Create Unit entry referencing Elements
  3. Assign to monster in MonsterSkill.xml - Reference Unit index

Important Concepts#

Spawn File Loading Behavior#

The GameServer loads monster configuration files at startup in this order:

  1. KanturuMonsterSetBase.xml - Kanturu event spawn list (200-entry table)
  2. MonsterAIAutomata.xml, MonsterAIElement.xml, MonsterAIGroup.xml, MonsterAIRule.xml, MonsterAIUnit.xml
  3. Monster.xml - Monster stat definitions
  4. All .xml files in the MonsterSetBase/ directory (one file per map), appended into one global table
  5. MonsterSkillElement.xml, MonsterSkillUnit.xml, MonsterSkill.xml

After step 4 the server logs [MonsterSetBase] loaded N / 20000 entries, and [MonsterSetBase] CAP HIT if the table filled.

Spawn directory loading behavior:

  • Server scans the appropriate spawn directory and loads ALL .xml files found
  • Files are processed in alphabetical order by filename
  • If you add a new map spawn file, just place it in the directory - no registry file needed
  • No master spawn registry file exists

Monster Index#

Every monster has a unique Index number used throughout all configs:

  • 0-99: Common monsters (Bull Fighter, Spider, etc.)
  • 200-299: NPCs (Trainers, merchants, guards)
  • 300+: Special monsters and bosses

Spawn Types#

TypeBehaviorUse Case
0Fixed positionNPCs, guards, bosses
1Count monsters in rectangle defined by X,Y and TX,TYNormal monster groups
2Single monster, X/Y offset by +/-3 at load timeScattered spawns
3Same as Type 1 but filtered out of normal init; activated by Invasion Manager using ValueInvasions, White Wizard, custom events
4Single monster at fixed X/Y; filtered out of normal init; activated by event codeBlood Castle, Devil Square, Illusion Temple, Imperial Guardian, Raklion

Skills System#

Skills are modular:

  • Elements define effects (damage, stun, heal)
  • Units combine Elements into a complete skill
  • MonsterSkill assigns Units to monsters

A monster can have up to 6 skill unit slots.

Dependencies#

Basic Monster System#

Monster.xml (defines stats, RegenTime by Index)
    ↑
    | (references monster Index)
    |
MonsterSetBase/*.xml (spawns monsters at locations)

Skill System#

Monster.xml (monster Index)
    ↑
    | (references monster Index)
    |
MonsterSkill.xml (assigns skill units to monsters)
    ↓ (references unit Index)
MonsterSkillUnit.xml (skill behavior)
    ↓ (references element Index)
MonsterSkillElement.xml (skill effects)

Advanced AI System#

MonsterAIGroup.xml (spawns monsters with AI)
    ↓ (references StartAI, AI01-03)
MonsterAIUnit.xml (AI personality)
    ↓ (references Automata + Elements)
    |
    +→ MonsterAIAutomata.xml (state transitions)
    +→ MonsterAIElement.xml (actions in each state)

Common Tasks#

Increase Monster Difficulty#

  1. Edit Monster.xml - Increase Level, DamageMin/Max, Defense
  2. Optionally add skills in MonsterSkill.xml

Add Boss Spawn#

  1. Ensure boss exists in Monster.xml with proper stats
  2. Add Type="0" entry in appropriate map file with fixed X/Y
  3. Set high RegenTime in Monster.xml (e.g., 3600 = 1 hour)

Create Monster-Dense Zone#

  1. Find the appropriate map file in Data/Monster/MonsterSetBase/ directory
  2. Add multiple Type="1" entries with same Class attribute
  3. Set Count attribute to desired density (e.g., Count="20" for 20 monsters per spawn point)
  4. Define spawn area with X, Y, TX, TY coordinates (monsters spawn randomly within this rectangle)

Disable Monster Skills#

  1. Find monster Index in MonsterSkill.xml
  2. Change UnitType/UnitIndex to "*" (wildcard) to disable slots
  3. Or remove entire Monster entry
  • Kanturu event state machine - Stage timing that drives KanturuMonsterSetBase.xml spawn groups
  • MapManager - Map index table; spawn entries on maps not enabled here are dropped at load time

Next Steps#

Last updated November 5, 2026