> For the complete documentation index, see [llms.txt](https://axiomemu.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://axiomemu.gitbook.io/docs/gameserver/event-dat.md).

# Event.dat

Enable flags and high-level tunables for every scheduled event

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.

{% hint style="info" %}
**Default** in the tables below = the value in the shipped file. If you delete a line, the server uses its own built-in value instead, and that can be different (for most `*Event` switches the built-in value is `0` = off).
{% endhint %}

## Standard Events

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

### Blood Castle

| Key                                                                 | Type   | Default | Effect                                                                                                                  |
| ------------------------------------------------------------------- | ------ | ------- | ----------------------------------------------------------------------------------------------------------------------- |
| `BloodCastleEvent`                                                  | 0 or 1 | `1`     | Master enable                                                                                                           |
| `BloodCastleMaxUser`                                                | int    | `10`    | Max simultaneous players per sub-instance                                                                               |
| `BloodCastleMasterAnyTier`                                          | 0 or 1 | `0`     | `1` lets master class (ChangeUp >= 2) characters pick any tier regardless of tier bounds                                |
| `BloodCastlePerIpCharCap`                                           | int    | `0`     | Max characters from one IP allowed across all BC tiers combined. `0` = disabled                                         |
| `BloodCastleTier{1-8}{Min,Max}{Level,Reset,GrandReset,MasterReset}` | int    | `-1`    | Per-tier bracket bounds. `-1` disables that bound. See [Bracket Entry Gates](#bracket-entry-gates) for the full pattern |

See [BloodCastle.dat](/docs/data/event/bloodcastle.md) for schedule, rewards, and per-stage monster lists.

### Bonus Manager

| Key                  | Default | Effect                                         |
| -------------------- | ------- | ---------------------------------------------- |
| `BonusManagerSwitch` | `0`     | Master enable for global drop/XP bonus windows |

See [BonusManager.dat](/docs/data/event/bonusmanager.md) for the shared bonus windows.

### Castle Deep

| Key                   | Type    | Default | Effect                 |
| --------------------- | ------- | ------- | ---------------------- |
| `CastleDeepEvent`     | 0 or 1  | `0`     | Master enable          |
| `CastleDeepEventTime` | minutes | `30`    | Run duration per cycle |

See [CastleDeepEvent.dat](/docs/data/event/castledeep.md) 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.

| Key                                               | Type    | Default  | Effect                                                                                                         |
| ------------------------------------------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------- |
| `CastleSiegeEvent`                                | 0 or 1  | `0`      | Enable flag. Ships **off**. Set to `1` to run Castle Siege; inert unless `EnableCastleSiege = 1` in Common.dat |
| `CastleSiegeCycleStartYear/Month/Day`             | int     | `0` each | Start date of a CS cycle override. `0` = use engine default                                                    |
| `CastleSiegeSpecificState`                        | int 0-6 | `0`      | Force CS into a specific phase. `0` = automatic progression                                                    |
| `CastleSiegeStateStartYear/Month/Day/Hour/Minute` | int     | `0` each | Force state start timestamp. `0` = automatic                                                                   |
| `CastleSiegeOffensiveWeaponDamage`                | raw HP  | `300`    | Fixed HP subtracted per hit of an offensive siege weapon. Not a percentage                                     |
| `CastleSiegeDefensiveWeaponDamage`                | raw HP  | `200`    | Fixed HP subtracted per hit of a defensive siege weapon. Not a percentage                                      |
| `CastleSiegeLowerAccumulatedTimeValue`            | int     | `0`      | Seconds removed from accumulated occupation time per regression tick                                           |
| `CastleSiegeDecayAccumulatedTimeValue`            | int     | `0`      | Seconds of passive decay per tick                                                                              |

{% hint style="warning" %}
Use the specific-state overrides only to force-test siege phases. Leave them at `0` in production or the live cycle will never advance on its own.
{% endhint %}

### Chaos Castle

| Key                                                                 | Type   | Default | Effect                                                                                                         |
| ------------------------------------------------------------------- | ------ | ------- | -------------------------------------------------------------------------------------------------------------- |
| `ChaosCastleEvent`                                                  | 0 or 1 | `1`     | Master enable                                                                                                  |
| `ChaosCastleMinUser`                                                | int    | `1`     | Minimum participants for a round to start                                                                      |
| `ChaosCastleBlowUserRate`                                           | int %  | `50`    | Chance the arena knock-off mechanic fires when a monster is killed. Rolled once per monster death, not per hit |
| `ChaosCastleMasterAnyTier`                                          | 0 or 1 | `0`     | Master class can pick any tier. See [Bracket Entry Gates](#bracket-entry-gates)                                |
| `ChaosCastlePerIpCharCap`                                           | int    | `0`     | IP cap across all CC tiers. `0` = disabled                                                                     |
| `ChaosCastleTier{1-7}{Min,Max}{Level,Reset,GrandReset,MasterReset}` | int    | `-1`    | Per-tier bracket bounds                                                                                        |

### Crywolf

| Key                         | Type   | Default | Effect                                                                                                              |
| --------------------------- | ------ | ------- | ------------------------------------------------------------------------------------------------------------------- |
| `CrywolfEvent`              | 0 or 1 | `0`     | Master enable. Ships **off**. Set to `1` to run Crywolf                                                             |
| `CrywolfBenefitSwitch`      | 0 or 1 | `1`     | `1` applies server-wide buff when Crywolf is won                                                                    |
| `CrywolfBenefitChaosRate`   | int %  | `10`    | Chaos machine bonus while benefit active                                                                            |
| `CrywolfBenefitMonsterLife` | int %  | `80`    | Monster life scaling while benefit active. Value is the percentage of normal HP monsters spawn with (`80` = 80% HP) |
| `CrywolfPenaltySwitch`      | 0 or 1 | `0`     | `1` applies server-wide penalty when Crywolf is lost                                                                |
| `CrywolfPenaltyJewelDrop`   | int %  | `70`    | Jewel drop rate while penalty active                                                                                |
| `CrywolfPenaltyExperience`  | int %  | `70`    | XP rate while penalty active                                                                                        |

### Devil Square

| Key                                                                 | Type   | Default | Effect                                                                          |
| ------------------------------------------------------------------- | ------ | ------- | ------------------------------------------------------------------------------- |
| `DevilSquareEvent`                                                  | 0 or 1 | `1`     | Master enable                                                                   |
| `DevilSquareMaxUser`                                                | int    | `15`    | Max participants per sub-instance                                               |
| `DevilSquareMasterAnyTier`                                          | 0 or 1 | `0`     | Master class can pick any tier. See [Bracket Entry Gates](#bracket-entry-gates) |
| `DevilSquarePerIpCharCap`                                           | int    | `0`     | IP cap across all DS tiers. `0` = disabled                                      |
| `DevilSquareTier{1-7}{Min,Max}{Level,Reset,GrandReset,MasterReset}` | int    | `-1`    | Per-tier bracket bounds                                                         |

### Double Goer

| Key                       | Type   | Default | Effect                                              |
| ------------------------- | ------ | ------- | --------------------------------------------------- |
| `DoubleGoerEvent`         | 0 or 1 | `1`     | Master enable                                       |
| `DoubleGoerDifficultRate` | int %  | `100`   | Difficulty scale. `100` = baseline, higher = harder |

### Illusion Temple

| Key                                                                    | Type         | Default | Effect                                                                          |
| ---------------------------------------------------------------------- | ------------ | ------- | ------------------------------------------------------------------------------- |
| `IllusionTempleEvent`                                                  | 0 or 1       | `1`     | Master enable                                                                   |
| `IllusionTempleMinUser`                                                | int          | `1`     | Minimum participants to start                                                   |
| `IllusionTempleRewardFenrirRate`                                       | out of 10000 | `5`     | Drop chance of a Fenrir-tier reward on victory. `5` = 0.05%, `100` = 1%         |
| `IllusionTempleMasterAnyTier`                                          | 0 or 1       | `0`     | Master class can pick any tier. See [Bracket Entry Gates](#bracket-entry-gates) |
| `IllusionTemplePerIpCharCap`                                           | int          | `0`     | IP cap across all IT tiers. `0` = disabled                                      |
| `IllusionTempleTier{1-6}{Min,Max}{Level,Reset,GrandReset,MasterReset}` | int          | `-1`    | Per-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.

| Key                                                            | Type   | Default | Effect                                                                                                                                                 |
| -------------------------------------------------------------- | ------ | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `KalimaMasterAnyTier`                                          | 0 or 1 | `0`     | `1` = master characters (3rd class) may enter any Kalima tier, with any Lost Map or the Kalima Ticket. See [Bracket Entry Gates](#bracket-entry-gates) |
| `KalimaTier{1-7}{Min,Max}{Level,Reset,GrandReset,MasterReset}` | int    | `-1`    | Per-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).

{% hint style="warning" %}
`KalimaMasterAnyTier = 1` counts as "configured", so the vanilla brackets stop applying. If you turn it on but leave every tier bound at `-1`, **every** character (not only masters) can enter any Kalima, and the Kalima Ticket sends everyone to Kalima 7. Set the tier bounds too when you use it.
{% endhint %}

### Imperial Guardian

| Key                             | Type   | Default | Effect           |
| ------------------------------- | ------ | ------- | ---------------- |
| `ImperialGuardianEvent`         | 0 or 1 | `1`     | Master enable    |
| `ImperialGuardianDifficultRate` | int %  | `100`   | Difficulty scale |

### Invasion Manager

| Key                     | Default | Effect                                                                         |
| ----------------------- | ------- | ------------------------------------------------------------------------------ |
| `InvasionManagerSwitch` | `1`     | Master enable for scripted monster invasions (Skeleton King, Red Dragon, etc.) |

Each invasion is its own XML file under [`Data/Event/Invasions/`](/docs/data/event/invasionmanager.md). The legacy `InvasionManager.dat` is no longer read.

### Kanturu

| Key            | Default | Effect        |
| -------------- | ------- | ------------- |
| `KanturuEvent` | `1`     | Master enable |

### Moss Merchant

| Key                     | Type    | Default | Effect         |
| ----------------------- | ------- | ------- | -------------- |
| `MossMerchantEvent`     | 0 or 1  | `1`     | Master enable  |
| `MossMerchantEventTime` | minutes | `120`   | Cycle interval |

### Raklion

| Key            | Default | Effect        |
| -------------- | ------- | ------------- |
| `RaklionEvent` | `1`     | Master enable |

### Rei do MU (King of MU)

| Key                      | Type   | Default | Effect                                                                                       |
| ------------------------ | ------ | ------- | -------------------------------------------------------------------------------------------- |
| `ReiDoMUEvent`           | 0 or 1 | `0`     | Master enable. Schedule, warning window, and rewards live in shared `Data/Event/ReiDoMu.dat` |
| `ReiDoMUMap`             | int    | `0`     | Map index where the throne NPC spawns                                                        |
| `ReiDoMUCordX`           | int    | `0`     | Throne NPC X coordinate                                                                      |
| `ReiDoMUCordY`           | int    | `0`     | Throne NPC Y coordinate                                                                      |
| `ReiDoMUGuildMinMembers` | int    | `0`     | Minimum 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:

| Suffix                              | Meaning                  |
| ----------------------------------- | ------------------------ |
| `MinLevel` / `MaxLevel`             | Character level range    |
| `MinReset` / `MaxReset`             | Reset count range        |
| `MinGrandReset` / `MaxGrandReset`   | Grand reset count range  |
| `MinMasterReset` / `MaxMasterReset` | Master 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](/docs/data/game-data-sync.md) 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

```ini
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 here            | Related in                                                                                                                                                   |
| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `CastleSiegeEvent`      | Inert unless Common.dat `EnableCastleSiege = 1`; full CS data in shared [`Data/Event/MuCastleData.dat`](/docs/data/event/mucastledata.md)                    |
| `BloodCastleEvent`      | Per-cycle timing + rewards in shared [`Data/Event/BloodCastle.dat`](/docs/data/event/bloodcastle.md)                                                         |
| `ChaosCastleEvent`      | Shared [`Data/Event/ChaosCastle.dat`](/docs/data/event/chaoscastle.md)                                                                                       |
| `CrywolfEvent`          | Shared [`Data/Event/Crywolf.dat`](/docs/data/event/crywolf.md)                                                                                               |
| `DevilSquareEvent`      | Shared [`Data/Event/DevilSquare.dat`](/docs/data/event/devilsquare.md)                                                                                       |
| `DoubleGoerEvent`       | Shared [`Data/Event/DoubleGoer.dat`](/docs/data/event/doublegoer.md)                                                                                         |
| `IllusionTempleEvent`   | Shared [`Data/Event/IllusionTemple.dat`](/docs/data/event/illusiontemple.md)                                                                                 |
| `ImperialGuardianEvent` | Shared [`Data/Event/ImperialGuardian.dat`](/docs/data/event/imperialguardian.md)                                                                             |
| `InvasionManagerSwitch` | Shared [`Data/Event/Invasions/*.xml`](/docs/data/event/invasionmanager.md) (one file per invasion)                                                           |
| `KanturuEvent`          | Shared [`Data/Event/Kanturu.dat`](/docs/data/event/kanturu.md)                                                                                               |
| `MossMerchantEvent`     | Shared [`Data/Event/MossMerchant.dat`](/docs/data/event/mossmerchant.md)                                                                                     |
| `RaklionEvent`          | Shared [`Data/Event/Raklion.dat`](/docs/data/event/raklion.md)                                                                                               |
| `ReiDoMUEvent`          | Shared [`Data/Event/ReiDoMu.dat`](/docs/data/event/reidomu.md) for schedule and reward pools                                                                 |
| Context damage rates    | Per-event damage rates in [Character.dat](/docs/gameserver/character-dat.md) (`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
