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#
| Attribute | Type | Effect |
|---|---|---|
Index | int | Monster class ID from Monster.xml |
MapNumber | int or -1 | Map 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).
| Attribute | Effect |
|---|---|
MaxLife | HP multiplier |
DamageMin | Minimum physical damage multiplier. In Season 7+ builds also scales elemental minimum damage |
DamageMax | Maximum physical damage multiplier. In Season 7+ builds also scales elemental maximum damage |
Defense | Physical defense multiplier. In Season 7+ builds also scales elemental defense |
AttackRate | Attack success rate multiplier. In Season 7+ builds also scales elemental attack success rate |
DefenseRate | Defense success rate multiplier. In Season 7+ builds also scales elemental defense success rate |
ExperienceRate | XP reward multiplier |
Broadcast Messages#
| Attribute | Effect |
|---|---|
KillMessage | Message ID from Message.xml broadcast to all players on kill. -1 disables. The killer's name is passed as the first %s parameter |
InfoMessage | Message 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.
| Attribute | Effect |
|---|---|
RewardValue1 | First reward parameter |
RewardValue2 | Second reward parameter |
The DataServer handler decides what those parameters mean (coin amount, event point, etc.); check your server's reward routing.
On-Death Summon#
| Attribute | Effect |
|---|---|
SummonMonster | Monster class to spawn on this monster's death. Must be greater than 0 to trigger; 0 or -1 disables |
SummonMonsterCount | Number to spawn. Any value <= 0 defaults to 1 |
SummonMonsterRate | Chance 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#
| Attribute | Related in |
|---|---|
Index, SummonMonster | Monster.xml |
MapNumber | MapManager.xml |
KillMessage / InfoMessage | Message.xml |
| Base stats that get multiplied | Monster.xml |
Common Issues#
- Override not applied -
IndexorMapNumbermismatch with Monster.xml;MapNumber=-1lets 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 -
SummonMonsterpoints 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
%sliteral -KillMessageID missing from Message.xml; engine prints the format string unchanged