Event.dat

Master on/off and light-tuning for the server's events. Schedules, reward pools, monster waves, and map-specific behavior live in the shared Data/Event/*.dat files; this file only decides whether each event is active and how its headline numbers are tuned.

File Location#

GameServer/Data/GameServerInfo - Event.dat

All keys under [GameServerInfo]. Changes require a GameServer restart.

Standard Events#

Most standard events ship enabled by default. Exceptions noted per section (Castle Siege and Crywolf ship off).

Blood Castle#

KeyTypeDefaultEffect
BloodCastleEvent0 or 11Master enable
BloodCastleMaxUserint10Max simultaneous players per sub-instance
BloodCastleMasterAnyTier0 or 101 lets master class (ChangeUp >= 2) characters pick any tier regardless of tier bounds
BloodCastlePerIpCharCapint0Max characters from one IP allowed across all BC tiers combined. 0 = disabled
BloodCastleTier{1-8}{Min,Max}{Level,Reset,GrandReset,MasterReset}int-1Per-tier bracket bounds. -1 disables that bound. See Bracket Entry Gates for the full pattern

See BloodCastle.dat for schedule, rewards, and per-stage monster lists.

Bonus Manager#

KeyDefaultEffect
BonusManagerSwitch0Master enable for global drop/XP bonus windows

See BonusManager.dat for the shared bonus windows.

Castle Deep#

KeyTypeDefaultEffect
CastleDeepEvent0 or 10Master enable
CastleDeepEventTimeminutes30Run duration per cycle

See CastleDeepEvent.dat for schedule and monster data.

Castle Siege#

Gated by Common.dat EnableCastleSiege. Schedule anchors are zero by default, meaning the next cycle is computed from the current date.

KeyTypeDefaultEffect
CastleSiegeEvent0 or 10Enable flag. Ships off. Set to 1 to run Castle Siege; inert unless EnableCastleSiege = 1 in Common.dat
CastleSiegeCycleStartYear/Month/Dayint0 eachStart date of a CS cycle override. 0 = use engine default
CastleSiegeSpecificStateint 0-60Force CS into a specific phase. 0 = automatic progression
CastleSiegeStateStartYear/Month/Day/Hour/Minuteint0 eachForce state start timestamp. 0 = automatic
CastleSiegeOffensiveWeaponDamageraw HP300Fixed HP subtracted per hit of an offensive siege weapon. Not a percentage
CastleSiegeDefensiveWeaponDamageraw HP200Fixed HP subtracted per hit of a defensive siege weapon. Not a percentage
CastleSiegeLowerAccumulatedTimeValueint0Seconds removed from accumulated occupation time per regression tick
CastleSiegeDecayAccumulatedTimeValueint0Seconds of passive decay per tick

Chaos Castle#

KeyTypeDefaultEffect
ChaosCastleEvent0 or 11Master enable
ChaosCastleMinUserint1Minimum participants for a round to start
ChaosCastleBlowUserRateint %50Chance the arena knock-off mechanic fires when a monster is killed. Rolled once per monster death, not per hit
ChaosCastleMasterAnyTier0 or 10Master class can pick any tier. See Bracket Entry Gates
ChaosCastlePerIpCharCapint0IP cap across all CC tiers. 0 = disabled
ChaosCastleTier{1-7}{Min,Max}{Level,Reset,GrandReset,MasterReset}int-1Per-tier bracket bounds

Crywolf#

KeyTypeDefaultEffect
CrywolfEvent0 or 10Master enable. Ships off. Set to 1 to run Crywolf
CrywolfBenefitSwitch0 or 111 applies server-wide buff when Crywolf is won
CrywolfBenefitChaosRateint %10Chaos machine bonus while benefit active
CrywolfBenefitMonsterLifeint %80Monster life scaling while benefit active. Value is the percentage of normal HP monsters spawn with (80 = 80% HP)
CrywolfPenaltySwitch0 or 101 applies server-wide penalty when Crywolf is lost
CrywolfPenaltyJewelDropint %70Jewel drop rate while penalty active
CrywolfPenaltyExperienceint %70XP rate while penalty active

Devil Square#

KeyTypeDefaultEffect
DevilSquareEvent0 or 11Master enable
DevilSquareMaxUserint15Max participants per sub-instance
DevilSquareMasterAnyTier0 or 10Master class can pick any tier. See Bracket Entry Gates
DevilSquarePerIpCharCapint0IP cap across all DS tiers. 0 = disabled
DevilSquareTier{1-7}{Min,Max}{Level,Reset,GrandReset,MasterReset}int-1Per-tier bracket bounds

Double Goer#

KeyTypeDefaultEffect
DoubleGoerEvent0 or 11Master enable
DoubleGoerDifficultRateint %100Difficulty scale. 100 = baseline, higher = harder

Illusion Temple#

KeyTypeDefaultEffect
IllusionTempleEvent0 or 11Master enable
IllusionTempleMinUserint1Minimum participants to start
IllusionTempleRewardFenrirRateout of 100005Drop chance of a Fenrir-tier reward on victory. 5 = 0.05%, 100 = 1%
IllusionTempleMasterAnyTier0 or 10Master class can pick any tier. See Bracket Entry Gates
IllusionTemplePerIpCharCapint0IP cap across all IT tiers. 0 = disabled
IllusionTempleTier{1-6}{Min,Max}{Level,Reset,GrandReset,MasterReset}int-1Per-tier bracket bounds

Kalima#

Kalima has no Event switch. These keys gate both the Lost Map +N and the Kalima Ticket with one table, so the two can never disagree.

KeyTypeDefaultEffect
KalimaMasterAnyTier0 or 101 = master characters (3rd class) may enter any Kalima tier, with any Lost Map or the Kalima Ticket. See Bracket Entry Gates
KalimaTier{1-7}{Min,Max}{Level,Reset,GrandReset,MasterReset}int-1Per-Kalima bounds. Tier N = Kalima N

Untouched (all -1 and KalimaMasterAnyTier = 0) = vanilla level brackets (MG/DL/RF: 20/111/161/211/261/311/350, others: 40/131/181/231/281/331/350) and any Kalima at or below your bracket is open.

Configured: a Lost Map +N opens only if the char passes every bound of tier N. The Kalima Ticket sends you to the highest tier you pass (a master with KalimaMasterAnyTier = 1 goes to Kalima 7). Leave Max* at -1 if higher chars should still be able to enter lower Kalimas. No per-IP cap (Kalima is an open map).

Imperial Guardian#

KeyTypeDefaultEffect
ImperialGuardianEvent0 or 11Master enable
ImperialGuardianDifficultRateint %100Difficulty scale

Invasion Manager#

KeyDefaultEffect
InvasionManagerSwitch1Master enable for scripted monster invasions (Skeleton King, Red Dragon, etc.)

Each invasion is its own XML file under Data/Event/Invasions/. The legacy InvasionManager.dat is no longer read.

Kanturu#

KeyDefaultEffect
KanturuEvent1Master enable

Moss Merchant#

KeyTypeDefaultEffect
MossMerchantEvent0 or 11Master enable
MossMerchantEventTimeminutes120Cycle interval

Raklion#

KeyDefaultEffect
RaklionEvent1Master enable

Rei do MU (King of MU)#

KeyTypeDefaultEffect
ReiDoMUEvent0 or 10Master enable. Schedule, warning window, and rewards live in shared Data/Event/ReiDoMu.dat
ReiDoMUMapint0Map index where the throne NPC spawns
ReiDoMUCordXint0Throne NPC X coordinate
ReiDoMUCordYint0Throne NPC Y coordinate
ReiDoMUGuildMinMembersint0Minimum guild member count required to claim the throne

Removed Custom Events#

Guild vs Guild, Team vs Team, Kill All, PvP 1x1, Run and Catch, Russian Roulette, Hide and Seek, the Quickly event and the EventStartSwitch / EventStartTime scheduler were removed. Their keys are no longer read, TvTEvent.dat and GvGEvent.dat are gone, and their commands (/veloz, /abrirevento, /participar, /pegapega, /queroir, /escesc, /roletarussa, /offpvp, /pvp, /matamata, /starttvt, /startgvg) were removed from Command.xml. Old keys left in Event.dat are ignored.

For class-vs-class fights use the Custom Arena (Plugins/Events/CustomArena.xml); players join from the Move window while an arena is open.

Bracket Entry Gates#

Devil Square, Blood Castle, Chaos Castle, Illusion Temple, and Kalima each support server-authoritative tier gating. Every tier (1-8 for BC, 1-7 for DS/CC/Kalima, 1-6 for IT) has eight optional bounds:

SuffixMeaning
MinLevel / MaxLevelCharacter level range
MinReset / MaxResetReset count range
MinGrandReset / MaxGrandResetGrand reset count range
MinMasterReset / MaxMasterResetMaster reset count range

Key format: <Event>Tier<N><Min|Max><Level|Reset|GrandReset|MasterReset>. Example: BloodCastleTier3MaxReset = 50.

Sentinel rules#

  • -1 on either side of a min/max pair disables that bound. Both at -1 disables the gate entirely (any value passes).
  • 0 is a real bound, distinct from -1. MinReset = 0 means "must have at least 0 resets" (always passes); MinReset = -1 means "reset is not checked".
  • "Untouched config" = MasterAnyTier = 0 AND every tier of that event has all eight bounds at -1. In that state the engine falls back to vanilla hardcoded brackets, preserving out-of-the-box behavior.

Master class override#

<Event>MasterAnyTier = 1 lets master characters (3rd class, ChangeUp >= 2) bypass all tier bounds for that event and pick whichever tier they want. Use to keep low brackets relevant on high-rate servers where masters would otherwise be locked to the top tier only.

Turning it on also turns off the vanilla brackets for that event (the config is no longer "untouched"). Set the tier bounds as well, or every character can pick any tier.

Per-IP cap#

<Event>PerIpCharCap caps the number of characters from one IP simultaneously inside any tier of that event (the cap is event-wide, not per-tier). 0 disables. Counted by the source IP address of each logged-in character within the event's map range.

Client UI#

When any tier on an event has been touched, the configured bracket table is synced to the client via Game Data Sync opcode 0xEC and used by:

  • The Devil Square / Blood Castle entry dialogs (tier list reflects live config, not hardcoded brackets)
  • Entry-item tooltips (DS Invitation of the Devil Square, BC Scroll of Archangel, CC Armor of Guardsman, IT Ticket/Cloaks, Kalima Lost Map / Kalima Ticket) - the configured bracket table renders inline in the item tooltip (the same style as the Armor of Guardsman tier table), with the player's qualifying tier highlighted and the required Zen cost shown. This table is synced GameServer to Client; an admin who only edits Event.dat sees the change reflected in-game after the server restarts and clients reconnect

If the event is untouched, the client falls back to its legacy hardcoded brackets.

When an entry is rejected, the client rejection popup states the precise reason - not enough resets, not enough grand resets, not enough master resets, or level out of range - rather than a generic "cannot enter" message. The reason shown is the specific bound the character failed for the tier it attempted.

Example: gate DS Tier 1 to fresh chars under 100 resets#

DevilSquareTier1MinLevel       = 1
DevilSquareTier1MaxLevel       = 199
DevilSquareTier1MinReset       = 0
DevilSquareTier1MaxReset       = 99
DevilSquareTier1MinGrandReset  = -1
DevilSquareTier1MaxGrandReset  = -1
DevilSquareTier1MinMasterReset = -1
DevilSquareTier1MaxMasterReset = -1

Reset bound applies; GR/MR bounds are inactive on this tier.

Cross-File Dependencies#

Setting hereRelated in
CastleSiegeEventInert unless Common.dat EnableCastleSiege = 1; full CS data in shared Data/Event/MuCastleData.dat
BloodCastleEventPer-cycle timing + rewards in shared Data/Event/BloodCastle.dat
ChaosCastleEventShared Data/Event/ChaosCastle.dat
CrywolfEventShared Data/Event/Crywolf.dat
DevilSquareEventShared Data/Event/DevilSquare.dat
DoubleGoerEventShared Data/Event/DoubleGoer.dat
IllusionTempleEventShared Data/Event/IllusionTemple.dat
ImperialGuardianEventShared Data/Event/ImperialGuardian.dat
InvasionManagerSwitchShared Data/Event/Invasions/*.xml (one file per invasion)
KanturuEventShared Data/Event/Kanturu.dat
MossMerchantEventShared Data/Event/MossMerchant.dat
RaklionEventShared Data/Event/Raklion.dat
ReiDoMUEventShared Data/Event/ReiDoMu.dat for schedule and reward pools
Context damage ratesPer-event damage rates in Character.dat (CastleSiegeDamageRate*, ChaosCastleDamageRate, IllusionTempleDamageRate)

Common Issues#

  • Event enabled but nothing spawns at the scheduled time - the switch here only toggles the feature; schedule and spawn data live in the shared Data/Event/<EventName>.dat file
  • Castle Siege never starts - either Common.dat EnableCastleSiege = 0 or CastleSiegeSpecificState set to a non-zero value is pinning the state
  • Crywolf penalty punishes everyone after a loss - intended behavior; set CrywolfPenaltySwitch = 0 to disable

Last updated October 5, 2026