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
| Column | Type | Effect |
|---|---|---|
Index | int | Bonus slot ID (0-29) |
StartMessage | message ID or * | Message.xml ID broadcast when the window opens. * = silent |
FinalMessage | message ID or * | Message ID broadcast when the window ends. * = silent |
BonusTime | seconds | Window 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.
| Column | Type | Effect |
|---|---|---|
Index | int | Bonus slot ID (matches sections 0 and 1) |
BonusIndex | enum | Bonus type. See BonusIndex values |
BonusValue_AL0-3 | int | Per-VIP-tier bonus amount. Unit depends on BonusIndex |
ItemIndex | int or * | Restrict bonus to this item index (for drop-based bonuses). * = any |
ItemLevel | int or * | Restrict to this item level. * = any |
MapNumber | int or * | Restrict to this map. * = any |
MonsterClass | int or * | Restrict to this monster class. * = any |
MonsterLevelMin | int or * | Minimum monster level. * = no floor |
MonsterLevelMax | int or * | Maximum monster level. * = no ceiling |
BonusIndex Values#
| Value | Bonus | Unit |
|---|---|---|
0 | Experience rate | Percent added to baseline (e.g. 100 = +100%) |
1 | Master experience rate | Percent added to baseline |
2 | Item drop rate | Percent added to baseline |
3 | Common item drop rate | Per-million; added against remaining headroom (1000000 - base) |
4 | Excellent item drop rate | Per-million; against remaining headroom |
5 | Set (Ancient) item drop rate | Per-million; against remaining headroom |
6 | Goblin Point | Flat amount added to reward |
7 | Reset amount | Flat amount added per reset command |
8 | Master reset amount | Flat amount added per master reset command |
Cross-File Dependencies#
| Value | Related in |
|---|---|
| Enable flag | Event.dat BonusManagerSwitch |
Per-tier values (_AL0-3) | Same Account Level scheme as Common.dat |
StartMessage, FinalMessage | Message.xml |
ItemIndex | Item.xml |
MonsterClass, MonsterLevelMin/Max | Monster.xml |
MapNumber | MapManager.xml |
Common Issues#
- Bonus never triggers - current time does not fall inside any window; check section 0 +
BonusTimein section 1 - Bonus applies outside event map -
MapNumber = *; set a specific map to restrict - VIP tiers all get the same bonus - all four
_AL0-3columns have the same value - Multiple bonuses stack unexpectedly - multiple rows in section 2 share the same
Index; each applies independently, and separateIndexslots 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-3upward if the baseline drop rate is already high