BonusManager.dat

Scheduled server-wide bonus windows. Defines when a bonus is active, which rate it modifies, and the bonus value per VIP tier. Up to 30 independent bonus slots can run in parallel.

File Location#

Data/Event/BonusManager.dat

Loaded once at GameServer startup. Gated by Event.dat BonusManagerSwitch. Changes require a restart.

Sections#

Section 0 - Schedule#

0
//Index   Year   Month   Day   DoW   Hour   Minute   Second
0         *      1       *     *     0      0        0
1         *      4       *     *     0      0        0
2         *      5       *     *     0      0        0
end

Each row ties a bonus slot (Index, 0-29) to a calendar start. Multiple rows with the same Index stack as alternate start times.

Section 1 - Window Metadata#

1
//Index   StartMessage   FinalMessage   BonusTime
0         *              *              86400
...
end
ColumnTypeEffect
IndexintBonus slot ID (0-29)
StartMessagemessage ID or *Message.xml ID broadcast when the window opens. * = silent
FinalMessagemessage ID or *Message ID broadcast when the window ends. * = silent
BonusTimesecondsWindow duration. 86400 = 24 hours

Section 2 - Bonus Rules#

2
//Index  BonusIndex  BonusValue_AL0  BonusValue_AL1  BonusValue_AL2  BonusValue_AL3  ItemIndex  ItemLevel  MapNumber  MonsterClass  MonsterLevelMin  MonsterLevelMax
0        3           1000            1000            1000            1000            *          *          *          *             12               69
...
end

Multiple rows per Index are allowed; each row applies a separate rule while the window is active. All filter columns must match for the rule to fire.

ColumnTypeEffect
IndexintBonus slot ID (matches sections 0 and 1)
BonusIndexenumBonus type. See BonusIndex values
BonusValue_AL0-3intPer-VIP-tier bonus amount. Unit depends on BonusIndex
ItemIndexint or *Restrict bonus to this item index (for drop-based bonuses). * = any
ItemLevelint or *Restrict to this item level. * = any
MapNumberint or *Restrict to this map. * = any
MonsterClassint or *Restrict to this monster class. * = any
MonsterLevelMinint or *Minimum monster level. * = no floor
MonsterLevelMaxint or *Maximum monster level. * = no ceiling

BonusIndex Values#

ValueBonusUnit
0Experience ratePercent added to baseline (e.g. 100 = +100%)
1Master experience ratePercent added to baseline
2Item drop ratePercent added to baseline
3Common item drop ratePer-million; added against remaining headroom (1000000 - base)
4Excellent item drop ratePer-million; against remaining headroom
5Set (Ancient) item drop ratePer-million; against remaining headroom
6Goblin PointFlat amount added to reward
7Reset amountFlat amount added per reset command
8Master reset amountFlat amount added per master reset command

Cross-File Dependencies#

ValueRelated in
Enable flagEvent.dat BonusManagerSwitch
Per-tier values (_AL0-3)Same Account Level scheme as Common.dat
StartMessage, FinalMessageMessage.xml
ItemIndexItem.xml
MonsterClass, MonsterLevelMin/MaxMonster.xml
MapNumberMapManager.xml

Common Issues#

  • Bonus never triggers - current time does not fall inside any window; check section 0 + BonusTime in section 1
  • Bonus applies outside event map - MapNumber = *; set a specific map to restrict
  • VIP tiers all get the same bonus - all four _AL0-3 columns have the same value
  • Multiple bonuses stack unexpectedly - multiple rows in section 2 share the same Index; each applies independently, and separate Index slots also layer
  • Common/Excellent/Set drop bonus seems weaker than expected - indices 3-5 scale against remaining probability (1000000 - base), not as a flat percent; adjust _AL0-3 upward if the baseline drop rate is already high

Last updated April 21, 2026