CustomMonster.xml

Per-monster overrides on top of Monster.xml. Apply stat multipliers to specific monsters (optionally scoped to one map), customize kill broadcasts, grant DataServer rewards on kill, and chain on-death summons.

File Location#

Data/Plugins/World/CustomMonster.xml

Loaded once at GameServer startup. Supports hot reload via plugin admin command.

Schema#

<CustomMonsters>
    <Monster Index="..." MapNumber="..."
             MaxLife="..." DamageMin="..." DamageMax="..."
             Defense="..." AttackRate="..." DefenseRate="..."
             ExperienceRate="..."
             KillMessage="..." InfoMessage="..."
             RewardValue1="..." RewardValue2="..."
             SummonMonster="..." SummonMonsterCount="..." SummonMonsterRate="..." />
</CustomMonsters>

Identity#

AttributeTypeEffect
IndexintMonster class ID from Monster.xml
MapNumberint or -1Map to scope this override to. -1 = every map

Stat Multipliers#

All multipliers are percent. 100 = unchanged, 200 = 2x, -1 = skip (use the base Monster.xml value).

AttributeEffect
MaxLifeHP multiplier
DamageMinMinimum physical damage multiplier. In Season 7+ builds also scales elemental minimum damage
DamageMaxMaximum physical damage multiplier. In Season 7+ builds also scales elemental maximum damage
DefensePhysical defense multiplier. In Season 7+ builds also scales elemental defense
AttackRateAttack success rate multiplier. In Season 7+ builds also scales elemental attack success rate
DefenseRateDefense success rate multiplier. In Season 7+ builds also scales elemental defense success rate
ExperienceRateXP reward multiplier

Broadcast Messages#

AttributeEffect
KillMessageMessage ID from Message.xml broadcast to all players on kill. -1 disables. The killer's name is passed as the first %s parameter
InfoMessageMessage ID sent only to the killer. -1 disables. Receives RewardValue1 and RewardValue2 as %d parameters

DataServer Rewards#

Optional kill reward forwarded to DataServer. Both values must be non--1 to trigger.

AttributeEffect
RewardValue1First reward parameter
RewardValue2Second reward parameter

The DataServer handler decides what those parameters mean (coin amount, event point, etc.); check your server's reward routing.

On-Death Summon#

AttributeEffect
SummonMonsterMonster class to spawn on this monster's death. Must be greater than 0 to trigger; 0 or -1 disables
SummonMonsterCountNumber to spawn. Any value <= 0 defaults to 1
SummonMonsterRateChance to summon, percent (0-100). Default 100

Summoned monsters spawn within 3 tiles of the death location and auto-despawn after 30 minutes. If no free spawn tile is found within 50 attempts, the summon is skipped.

Cross-File Dependencies#

AttributeRelated in
Index, SummonMonsterMonster.xml
MapNumberMapManager.xml
KillMessage / InfoMessageMessage.xml
Base stats that get multipliedMonster.xml

Common Issues#

  • Override not applied - Index or MapNumber mismatch with Monster.xml; MapNumber=-1 lets it apply everywhere
  • Stats unchanged despite entry - every multiplier is -1 (skip). Set at least one to a real value
  • RewardValue1=0, RewardValue2=0 - both are set (non--1), so a reward of zero is sent to DataServer. If no reward intended, set both to -1
  • Summon chain loops forever - SummonMonster points at a monster that also has a CustomMonster entry summoning the first. Chains respect the 30-minute despawn, but can still overwhelm the map
  • Broadcast message shows %s literal - KillMessage ID missing from Message.xml; engine prints the format string unchanged

Last updated April 21, 2026