> 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/common-dat.md).

# Common.dat

The master configuration file. Defines who this GameServer is, how it reaches the other services, and every server-wide gameplay rule. Loaded first at startup; every other `.dat` file layers on top.

## File Location

```
GameServer/Data/GameServerInfo - Common.dat
```

All keys live under the single section `[GameServerInfo]`. Changes require a GameServer restart.

## Account Level (AL0-AL3)

Many keys come in groups of four with `_AL0`, `_AL1`, `_AL2`, `_AL3` suffixes. Each suffix maps to a VIP tier read from the account's stored `AccountLevel`:

| Suffix | Tier         | Typical use    |
| ------ | ------------ | -------------- |
| `_AL0` | Free account | Baseline value |
| `_AL1` | VIP tier 1   | Small bonus    |
| `_AL2` | VIP tier 2   | Medium bonus   |
| `_AL3` | VIP tier 3   | Top bonus      |

If VIP is disabled for the server, keep all four suffixes equal to the `_AL0` value.

## Server Settings

| Key                    | Type   | Range       | Default          | Effect                                                                                                                        |
| ---------------------- | ------ | ----------- | ---------------- | ----------------------------------------------------------------------------------------------------------------------------- |
| `ServerName`           | string | <= 31 chars | `GameServer`     | Name shown in window title and broadcast messages                                                                             |
| `ServerCode`           | int    | 0-65535     | `0`              | Unique code matching one `<Server Code>` entry in ConnectServer's `ServerList.xml`                                            |
| `ServerLock`           | 0 or 1 |             | `0`              | `1` prevents non-GM clients from connecting                                                                                   |
| `GoldChannelServer`    | 0 or 1 |             | `0`              | `1` marks this server as a Gold channel (cosmetic label in the client)                                                        |
| `NonPvPServer`         | 0 or 1 |             | `0`              | `1` disables player-vs-player damage server-wide                                                                              |
| `ServerPort`           | int    | 1-65535     | `55901`          | TCP port game clients connect to. Must match ServerList.xml                                                                   |
| `ServerVersion`        | string | `X.XX.XX`   | `1.04.05`        | Season/episode identifier sent in handshakes                                                                                  |
| `ServerSerial`         | string | 16 chars    | *(ships filled)* | Protocol obfuscation serial. Do not change unless client ships with the matching value                                        |
| `ServerMaxUserNumber`  | int    | 1-1000      | `1000`           | Concurrent player cap. Values above 1000 are clamped to 1000                                                                  |
| `ServerMinLevel`       | int    | 0-MAX       | `0`              | Minimum character level allowed to log in. `0` = no limit                                                                     |
| `ServerMaxLevel`       | int    | 0-MAX       | `0`              | Maximum character level allowed to log in. `0` = no limit                                                                     |
| `ServerMinReset`       | int    | 0-MAX       | `0`              | Minimum character reset count to log in. `0` = no limit                                                                       |
| `ServerMaxReset`       | int    | 0-MAX       | `0`              | Maximum character reset count to log in. `0` = no limit                                                                       |
| `ServerMinMasterReset` | int    | 0-MAX       | `0`              | Minimum master reset count to log in. `0` = no limit                                                                          |
| `ServerMaxMasterReset` | int    | 0-MAX       | `0`              | Maximum master reset count to log in. `0` = no limit                                                                          |
| `LicenseKey`           | string |             | *(empty)*        | License token for this instance. Required                                                                                     |
| `EnableCastleSiege`    | 0 or 1 |             | `1`              | Master switch for Castle Siege machinery. When `0`, every CS-related Event.dat block is inert                                 |
| `GameDataOverlay`      | path   |             | *(empty)*        | Optional path to an overlay folder that shadows files in the shared `Data/` root. See [Data Overlays](/docs/data/overlays.md) |

{% hint style="warning" %}
`ServerCode` is the glue between GameServer, ConnectServer, and multi-instance deployments. Two GameServers with the same `ServerCode` will both heartbeat to the same slot in ConnectServer, producing flapping "online/offline" messages.
{% endhint %}

## Connection Settings

| Key                    | Type   | Default     | Effect                                                                                      |
| ---------------------- | ------ | ----------- | ------------------------------------------------------------------------------------------- |
| `DataServerAddress`    | string | `127.0.0.1` | IP of DataServer                                                                            |
| `DataServerPort`       | int    | `55960`     | TCP port of DataServer. Must match DataServer's `DataServerPort`                            |
| `JoinServerAddress`    | string | `127.0.0.1` | IP of JoinServer                                                                            |
| `JoinServerPort`       | int    | `55970`     | TCP port of JoinServer. Must match JoinServer's `JoinServerPort`                            |
| `ConnectServerAddress` | string | `127.0.0.1` | IP of ConnectServer                                                                         |
| `ConnectServerPort`    | int    | `55557`     | UDP port on ConnectServer for heartbeats. Must match ConnectServer's `ConnectServerPortUDP` |

This GameServer's public IP must appear in DataServer's and JoinServer's `AllowableIpList.txt`.

## Log Settings

Each flag toggles one log category. Logs are written to the GameServer working directory.

| Key                    | Default | Logs                                                                                                                                                                                                         |
| ---------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `WriteChatLog`         | `1`     | Public, whisper, party, and guild chat                                                                                                                                                                       |
| `WriteCommandLog`      | `1`     | Every chat command use (success and denial)                                                                                                                                                                  |
| `WriteTradeLog`        | `1`     | Trade window opens, items exchanged, zen transferred                                                                                                                                                         |
| `WriteConnectLog`      | `1`     | Login, logout, character enter/leave                                                                                                                                                                         |
| `WriteHackLog`         | `1`     | Hack detections (see [Hack Settings](#hack-settings))                                                                                                                                                        |
| `WriteCashShopLog`     | `1`     | Cash shop purchases and gift sends                                                                                                                                                                           |
| `WriteChaosMixLog`     | `1`     | Chaos machine attempts, outcomes, and announce broadcasts                                                                                                                                                    |
| `WriteLuckySpinLog`    | `1`     | Lucky Spin spins (win/lose, prize, cost, charges left) and reward deliveries — including login redelivery of wins orphaned by a crash/disconnect                                                             |
| `WriteGameDataSyncLog` | `0`     | GameDataSync block sends, chunk progress, completion / failure per player. Ships disabled - these lines are high-volume on a busy server. Set to `1` only when diagnosing a client/server data-sync mismatch |

Set to `0` to suppress that category. Logs rotate daily.

## Hack Settings

Server-side validators run on the potion use and movement paths. Not all of them disconnect - see the **Action** column.

| Key                            | Type      | Default | Action on trigger                                       | Effect                                                                                                                                                                                                                                                                                                                                                           |
| ------------------------------ | --------- | ------- | ------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `CheckAutoPotionHack`          | 0 or 1    | `1`     | Silently reject the potion (no disconnect, no hack log) | Prevents potion spam by enforcing a minimum gap between consumes.                                                                                                                                                                                                                                                                                                |
| `CheckAutoPotionHackTolerance` | int ms    | `250`   | -                                                       | Minimum gap between potion consumes. A use within this window is ignored.                                                                                                                                                                                                                                                                                        |
| `MoveSpeedGuardMode`           | 0-3       | `1`     | See below                                               | Movement speed guard on position updates. `0` = off, `1` = log-only (`[MoveSpeed]` lines, move still applied - use this to calibrate), `2` = reject the move and snap the client back to the server position, `3` = as `2` plus disconnect at the 5th rejected move within a rolling 60-second window (the strike counter resets after 60s without a rejection). |
| `MoveSpeedGuardBurst`          | int tiles | `6`     | -                                                       | Leaky-bucket capacity: how much position-jump distance a player may accumulate beyond what their walk speed allows. Headroom for lag spikes, redirects, and skill dashes.                                                                                                                                                                                        |
| `MoveSpeedGuardTolerance`      | int %     | `50`    | -                                                       | Extra leniency on the drain rate, as a percentage of walk speed. `50` = the bucket drains at 1.5x the character's walk speed.                                                                                                                                                                                                                                    |
| `MoveSpeedGuardDeadzone`       | int tiles | `3`     | -                                                       | Per-packet free distance before anything is charged to the bucket. Absorbs tile-quantization and walk-sim phase noise (spinning in place, mid-walk redirects produce legit 1-2 tile jumps). Teleport hacks jump 5-15 tiles per packet, far above it.                                                                                                             |

{% hint style="info" %}
**How the movement speed guard works.** A legitimate client sends its travel path step by step; the server walks it at the character's real movement speed, so each position packet only "jumps" the server-side position by a couple of tiles at most. A speed/teleport hack has to jump the position several tiles per packet. Each jump beyond the deadzone is charged to a per-player bucket that drains at walk speed (times tolerance); when the bucket overflows, the move is logged (`mode 1`) or rejected and the player is snapped back (`mode 2+`, bucket resets after the snap-back). Violations are written to the **hack log** (`WriteHackLog`), tagged `[MoveSpeed]`.

**Rollout:** keep `MoveSpeedGuardMode=1` at first and watch the hack log. Legitimate play should produce **zero** `[MoveSpeed]` lines - if mounts, dash skills, or laggy players trigger them, raise `MoveSpeedGuardDeadzone`/`MoveSpeedGuardBurst` before switching to mode `2` or `3`. Lowering the deadzone below `3` will flag players who click-spin in place.
{% endhint %}

{% hint style="info" %}
**Attack-speed protection is always on** and not exposed in `Common.dat`:

* `MaxAttackSpeed` caps the server-side attack speed used in all delay math (see Common Settings).
* The skill timing validator recomputes a per-cast minimum delay from `BaseSkillDelay`, `SpeedGrowthFactor`, and `MinSkillDelay`, scaled per-skill via `Data/Plugins/Characters/SkillSpeedScale.xml`.
* Casts arriving faster than the computed minimum (with 20% tolerance) are blocked and logged as `[SkillTiming]`. 20 violations in a row disconnect the player.
  {% endhint %}

{% hint style="warning" %}
`CheckSpeedHack`, `CheckLatencyHack`, and `CheckAutoComboHack` (and their tolerances) were **removed**. They compared client-self-reported values, so real cheats bypassed them trivially. Their jobs are covered by the always-on skill timing validator and the `MoveSpeedGuard*` keys above. Leftover keys in an old `Common.dat` are ignored.
{% endhint %}

## Common Settings

| Key                          | Type     | Default | Effect                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| ---------------------------- | -------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `MaxItemOption`              | int 0-15 | `7`     | Cap on item option bonus (+0 to +15). Most legacy clients expect `7`; raising it requires a compatible client                                                                                                                                                                                                                                                                                                                          |
| `MaxIpConnection`            | int 0-N  | `10`    | Concurrent game connections allowed from one source IP. Distinct from ConnectServer's cap of the same name                                                                                                                                                                                                                                                                                                                             |
| `PersonalCodeCheck`          | 0 or 1   | `0`     | Require a personal passcode (second password) on character entry                                                                                                                                                                                                                                                                                                                                                                       |
| `SetItemAcceptHarmonySwitch` | 0 or 1   | `0`     | `1` allows Jewel of Harmony bonuses on set items                                                                                                                                                                                                                                                                                                                                                                                       |
| `MainChecksum`               | int      | `0`     | Optional client main-binary checksum demanded at handshake. `0` disables the check; non-zero values force every client to report this exact checksum                                                                                                                                                                                                                                                                                   |
| `JewelSocketPentagram`       | 0 or 1   | `0`     | `1` allows Jewel of Socket to apply on Pentagram items                                                                                                                                                                                                                                                                                                                                                                                 |
| `KeepBonusBelowItemReq`      | 0 or 1   | `0`     | `1` keeps an equipped item's bonuses applied even after the character no longer meets its requirements (for example after a reset drops their level/stats). First equip still enforces level, strength, dexterity, vitality, energy, and leadership; once equipped, the item keeps applying its bonuses. The class requirement is always enforced. `0` = an item whose requirements are no longer met stops granting bonuses (default) |

## Monster Settings

| Key               | Type  | Default | Effect                                                         |
| ----------------- | ----- | ------- | -------------------------------------------------------------- |
| `MonsterLifeRate` | int % | `100`   | Global HP multiplier applied after all other monster modifiers |

## Health Bar

| Key                      | Default | Effect                               |
| ------------------------ | ------- | ------------------------------------ |
| `MonsterHealthBarSwitch` | `1`     | `1` shows monster HP bars to clients |
| `UserHealthBarSwitch`    | `1`     | `1` shows player HP bars to clients  |

## PK Settings

| Key              | Type    | Default | Effect                                                       |
| ---------------- | ------- | ------- | ------------------------------------------------------------ |
| `NonPK`          | 0 or 1  | `0`     | `1` disables all PK kills from counting toward outlaw status |
| `PKLimitFree`    | 0 or 1  | `0`     | `1` removes the per-day PK count cap                         |
| `PKDownTime1`    | seconds | `3600`  | Cooldown between second-tier and first-tier PK level         |
| `PKDownTime2`    | seconds | `3600`  | Cooldown between first-tier PK level and clear               |
| `PKDisableShop`  | 0 or 1  | `0`     | `1` blocks PK characters from opening personal shops         |
| `PKDisableTrade` | 0 or 1  | `0`     | `1` blocks PK characters from trading                        |

## Trade Settings

| Key           | Default | Effect                                   |
| ------------- | ------- | ---------------------------------------- |
| `TradeSwitch` | `1`     | Master toggle for player-to-player trade |

## Personal Shop Settings

| Key                  | Default | Effect                           |
| -------------------- | ------- | -------------------------------- |
| `PersonalShopSwitch` | `1`     | Master toggle for personal shops |

## Duel Settings

| Key                         | Type    | Default | Effect                                 |
| --------------------------- | ------- | ------- | -------------------------------------- |
| `DuelSwitch`                | 0 or 1  | `1`     | Master toggle for duel arena           |
| `DuelArenaAnnounceSwitch`   | 0 or 1  | `1`     | Broadcasts duel results to the server  |
| `DuelArenaDisableRestoreHP` | 0 or 1  | `0`     | `1` prevents HP restore during duel    |
| `DuelArenaDisableRestoreSD` | 0 or 1  | `0`     | `1` prevents SD restore during duel    |
| `DuelMaxScore`              | int     | `10`    | Score needed to win a duel             |
| `DuelBet`                   | int zen | `0`     | Mandatory bet amount. `0` = free duels |

## Guild Settings

| Key                      | Type   | Default | Effect                                               |
| ------------------------ | ------ | ------- | ---------------------------------------------------- |
| `GuildDeleteSwitch`      | 0 or 1 | `1`     | Allow guild deletion                                 |
| `GuildCreateMinLevel`    | int    | `100`   | Minimum character level to create a guild            |
| `GuildInsertMaxUser1`    | int    | `40`    | Base guild member cap                                |
| `GuildInsertMaxUser2`    | int    | `80`    | Expanded guild member cap after guild level-up       |
| `GuildAllianceMinUser`   | int    | `1`     | Minimum members required to form or join an alliance |
| `GuildAllianceMaxCount`  | int    | `5`     | Maximum guilds in an alliance                        |
| `GuildOwnerDestroyLimit` | 0 or 1 | `1`     | `1` lets the owner disband even with members present |

## Elf Buffer Settings

Controls Elf Soldier buff caps and formula constants. Four-tier keys apply per-account-level (see [Account Level](#account-level-al0-al3)).

| Key group                 | Default                  | Effect                                                 |
| ------------------------- | ------------------------ | ------------------------------------------------------ |
| `ElfBufferMaxLevel_AL0-3` | `1000 / 220 / 220 / 220` | Character level cap below which Elf buff still applies |
| `ElfBufferMaxReset_AL0-3` | `10000` each             | Reset cap below which Elf buff still applies           |
| `ElfBufferDamageConstA`   | `50`                     | Damage buff linear term                                |
| `ElfBufferDamageConstB`   | `5`                      | Damage buff quadratic term                             |
| `ElfBufferDefenseConstA`  | `45`                     | Defense buff linear term                               |
| `ElfBufferDefenseConstB`  | `3`                      | Defense buff quadratic term                            |

## Experience Settings

All rates are per-mille (out of 1000). `1000` = 1x, `2000` = 2x. Each group has four `_AL0-3` keys.

| Key group                               | Default  | Effect                                                                                                          |
| --------------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------- |
| `AddExperienceRate_AL0-3`               | `100000` | Base XP multiplier for normal kills. `100000` equals 100x the baseline. Large values simulate high-rate servers |
| `AddMasterExperienceRate_AL0-3`         | `100000` | Master XP multiplier                                                                                            |
| `MinMasterExperienceMonsterLevel_AL0-3` | `95`     | Monster level below which no master XP is granted                                                               |
| `AddEventExperienceRate_AL0-3`          | `1000`   | XP multiplier inside event maps (Blood Castle, Devil Square, etc.)                                              |
| `AddQuestExperienceRate_AL0-3`          | `1000`   | XP multiplier for quest kills                                                                                   |
| `OffAttackExperienceRate_AL0-3`         | `1000`   | XP multiplier while Off Attack / AFK mode is active                                                             |

{% hint style="info" %}
Experience rates stack multiplicatively with `MonsterLifeMultiplier` and level-difference penalties. High-rate servers typically set `AddExperienceRate` very high and leave the others at `1000`.
{% endhint %}

## Item Drop Settings

| Key                  | Type             | Default | Effect                                                 |
| -------------------- | ---------------- | ------- | ------------------------------------------------------ |
| `ItemDropTime`       | seconds          | `30`    | Lifetime of dropped items on the ground before despawn |
| `ItemDropRate_AL0-3` | int out of 10000 | `100`   | Drop chance per kill, out of 10000. `100` = 1%         |

## Money Drop Settings

| Key                         | Type           | Default | Effect                                                 |
| --------------------------- | -------------- | ------- | ------------------------------------------------------ |
| `MoneyDropTime`             | seconds        | `30`    | Lifetime of dropped zen piles                          |
| `MoneyAmountDropRate_AL0-3` | int multiplier | `1`     | Per-tier multiplier applied on top of base monster zen |

## Monster Stat Multipliers

All percentages. `100` = unchanged, `200` = 2x, etc.

| Key                             | Default | Effect                          |
| ------------------------------- | ------- | ------------------------------- |
| `MonsterLifeMultiplier`         | `100`   | Scales monster HP               |
| `MonsterDamageMinMultiplier`    | `100`   | Scales minimum monster damage   |
| `MonsterDamageMaxMultiplier`    | `100`   | Scales maximum monster damage   |
| `MonsterDefenseMultiplier`      | `100`   | Scales monster physical defense |
| `MonsterMagicDefenseMultiplier` | `100`   | Scales monster magic defense    |

## Monster Hit Damage Reset Settings

Controls when a monster forgets accumulated damage and resets its threat / aggro.

| Key                             | Type    | Default | Effect                                                                       |
| ------------------------------- | ------- | ------- | ---------------------------------------------------------------------------- |
| `MonsterHitDamageResetOnDeath`  | 0 or 1  | `0`     | `1` clears damage records when the monster dies                              |
| `MonsterHitDamageResetTime`     | seconds | `30`    | Seconds without a hit before damage records clear                            |
| `MonsterHitDamageResetDistance` | steps   | `0`     | Steps from spawn point before records clear. `0` disables the distance check |

## Advanced Money Drop Settings

If `MoneyValue > 0`, money drop formula becomes `(MoneyValue * MonsterLevel) + MoneyDropItemBonusRate%`.

| Key                      | Type      | Default  | Effect                                                             |
| ------------------------ | --------- | -------- | ------------------------------------------------------------------ |
| `MoneyValue_AL0-3`       | int       | `100000` | Base zen per monster level. Set to `0` to use the baseline formula |
| `MoneyDropItemBonusRate` | int 0-100 | `0`      | Item drop bonus percentage added on top                            |

## Item Durability Settings

Percentage of baseline durability consumed. `100` = normal, `200` = items break twice as fast, `50` = half rate.

| Key                      | Default |
| ------------------------ | ------- |
| `WeaponDurabilityRate`   | `100`   |
| `ArmorDurabilityRate`    | `100`   |
| `WingDurabilityRate`     | `100`   |
| `GuardianDurabilityRate` | `100`   |
| `PendantDurabilityRate`  | `100`   |
| `RingDurabilityRate`     | `100`   |
| `PetDurabilityRate`      | `100`   |
| `MuunDurabilityRate`     | `100`   |

`MuunDurabilityRate` covers Muun (mount/pet) wear and is loaded only when the Muun system is compiled in.

## Trade Item Block Settings

Each flag blocks a category from being traded when `1`.

| Key                     | Default | Blocks                       |
| ----------------------- | ------- | ---------------------------- |
| `TradeItemBlock`        | `0`     | All items (master switch)    |
| `TradeItemBlockExc`     | `0`     | Excellent items              |
| `TradeItemBlockSet`     | `0`     | Set items                    |
| `TradeItemBlockHarmony` | `0`     | Harmony-enhanced items       |
| `TradeItemBlockSell`    | `0`     | Items whose sell flag is set |
| `TradeItemBlockLucky`   | `1`     | Lucky items                  |

## Level Up Settings

| Key                  | Type | Default      | Effect                                        |
| -------------------- | ---- | ------------ | --------------------------------------------- |
| `MaxLevelUp`         | int  | `1`          | Levels granted per normal kill                |
| `MaxLevelUpEvent`    | int  | `1`          | Levels granted per event kill                 |
| `MaxLevelUpQuest`    | int  | `1`          | Levels granted per quest reward               |
| `MaxStatPoint_AL0-3` | int  | `2000000000` | Stat point cap per tier                       |
| `DWLevelUpPoint`     | int  | `5`          | Stat points per level for Dark Wizard         |
| `DKLevelUpPoint`     | int  | `5`          | Dark Knight                                   |
| `FELevelUpPoint`     | int  | `5`          | Fairy Elf                                     |
| `MGLevelUpPoint`     | int  | `7`          | Magic Gladiator                               |
| `DLLevelUpPoint`     | int  | `7`          | Dark Lord                                     |
| `SULevelUpPoint`     | int  | `5`          | Summoner                                      |
| `RFLevelUpPoint`     | int  | `7`          | Rage Fighter                                  |
| `PlusStatPoint`      | int  | `1`          | Bonus points per level applied to every class |

## Create Character Settings

Controls which advanced classes can be created and the prerequisites. Each advanced class (MG, DL, SU, RF) has four keys: a master `CreateType`, plus per-tier `CreateLevel_AL0-3`, `CreateReset_AL0-3`, and `CreateMasterReset_AL0-3`.

| Key                              | Effect                                                                                                                  |
| -------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
| `CharacterCreateSwitch`          | Master toggle for all character creation                                                                                |
| `<CLASS>CreateType`              | `0` = another character on the account must meet the requirement. `1` = apply the requirement to the creating character |
| `<CLASS>CreateLevel_AL0-3`       | Minimum character level                                                                                                 |
| `<CLASS>CreateReset_AL0-3`       | Minimum reset count                                                                                                     |
| `<CLASS>CreateMasterReset_AL0-3` | Minimum master reset count                                                                                              |

Valid class prefixes: `MG`, `DL`, `SU`, `RF`.

{% hint style="danger" %}
Setting `RFCreateLevel_AL*` to `250` is a known bug that prevents creation entirely. Use `0` or any value other than `250`.
{% endhint %}

## Shield Gauge Settings

| Key                          | Type   | Default | Effect                                  |
| ---------------------------- | ------ | ------- | --------------------------------------- |
| `ShieldGaugeRate`            | int %  | `90`    | Baseline shield damage absorption rate  |
| `ShieldGaugeConstA`          | int    | `12`    | Shield formula linear term              |
| `ShieldGaugeConstB`          | int    | `15`    | Shield formula quadratic term           |
| `ShieldGaugeAttackRate`      | int    | `2`     | Shield consumption rate per attack      |
| `ShieldGaugeAttackComboMiss` | 0 or 1 | `0`     | `1` consumes shield on combo misses too |

## Master Skill Tree Settings

| Key                       | Default | Effect                            |
| ------------------------- | ------- | --------------------------------- |
| `MasterSkillTree`         | `0`     | `1` enables the master skill tree |
| `MasterSkillTreePoint`    | `1`     | Skill points per master level     |
| `MasterSkillTreeMaxLevel` | `400`   | Master level cap                  |

## Gens System Settings

Faction-vs-faction contribution system.

| Key                                       | Type    | Default | Effect                                                      |
| ----------------------------------------- | ------- | ------- | ----------------------------------------------------------- |
| `GensSystemSwitch`                        | 0 or 1  | `1`     | Master toggle                                               |
| `GensSystemGuildLock`                     | 0 or 1  | `0`     | `1` locks faction per guild (all members share one faction) |
| `GensSystemPartyLock`                     | 0 or 1  | `0`     | `1` prevents parties mixing factions                        |
| `GensSystemInsertMinLevel`                | int     | `50`    | Minimum level to join a faction                             |
| `GensSystemContributionFloodTime`         | seconds | `30`    | Minimum gap between contribution-earning kills              |
| `GensSystemVictimContributionDecrease`    | int     | `3`     | Base contribution lost per death to a rival                 |
| `GensSystemKillerContributionIncrease`    | int     | `500`   | Base contribution gained per rival kill                     |
| `GensSystemVictimMinContributionDecrease` | int     | `1`     | Lower bound on victim loss                                  |
| `GensSystemVictimMaxContributionDecrease` | int     | `15`    | Upper bound on victim loss                                  |
| `GensSystemKillerMinContributionIncrease` | int     | `1`     | Lower bound on killer gain                                  |
| `GensSystemKillerMaxContributionIncrease` | int     | `15`    | Upper bound on killer gain                                  |
| `GensSystemStartRewardDay`                | int     | `1`     | First day of the weekly reward window                       |
| `GensSystemFinalRewardDay`                | int     | `7`     | Last day of the weekly reward window                        |

## Helper Settings (MuHelper)

| Key                  | Type    | Default | Effect                                                                                                                                                                                         |
| -------------------- | ------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `HelperSwitch`       | 0 or 1  | `1`     | Master toggle for MuHelper                                                                                                                                                                     |
| `OffAttackSwitch`    | 0 or 1  | `1`     | Master toggle for offline-attack. Gates **both** the `/offattack` chat command and the MuHelper Offline bridge. When `0`: chat command rejected with notice, bridge rejected before transition |
| `HelperActiveLevel`  | int     | `80`    | Minimum level to use MuHelper                                                                                                                                                                  |
| `HelperActiveDelay`  | minutes | `5`     | Zen charge interval                                                                                                                                                                            |
| `HelperActiveMoney1` | zen     | `20`    | Cost tier 1 (baseline level)                                                                                                                                                                   |
| `HelperActiveMoney2` | zen     | `50`    | Cost tier 2                                                                                                                                                                                    |
| `HelperActiveMoney3` | zen     | `80`    | Cost tier 3                                                                                                                                                                                    |
| `HelperActiveMoney4` | zen     | `100`   | Cost tier 4                                                                                                                                                                                    |
| `HelperActiveMoney5` | zen     | `120`   | Cost tier 5 (high level)                                                                                                                                                                       |
| `HelperMaxLevel`     | int     | `0`     | Global fallback maximum combined level (Level + Master Level) allowed to run MuHelper. `0` = no maximum. Used by any map whose `HelperMaxLevel` is `*`                                         |
| `HelperExpRate`      | int %   | `100`   | Global fallback XP percentage earned while MuHelper is active. `100` = full XP, `50` = half. Used by any map whose `HelperExpRate` is `*`                                                      |
| `OffAttackMinLevel`  | int     | `0`     | Minimum character level allowed to enter the `/offattack` chat command or MuHelper Offline bridge. `0` = no minimum. Global fallback for any map whose `OffAttackMinLevel` is `*`              |
| `OffAttackMaxLevel`  | int     | `0`     | Maximum combined level (Level + Master Level) allowed to use offline-attack. `0` = no maximum. Global fallback for any map whose `OffAttackMaxLevel` is `*`                                    |

`HelperMaxLevel`, `HelperExpRate`, `OffAttackMinLevel`, and `OffAttackMaxLevel` are the four server-wide fallbacks for the per-map MuHelper and Offline Mode limits. When a map in [MapManager.xml](/docs/data/mapmanager.md#per-map-muhelper-and-offline-mode-limits) sets one of these attributes to `*`, the value here is used for that map. See that page for the per-map overrides.

### MuHelper Offline Bridge

When a player ticks the **OffLine** checkbox in the MuHelper window and then presses **Start**, the server skips the normal helper billing loop and instead transitions the character directly into the same offline-attack mode used by the [`/offattack`](/docs/data/command-xml.md#shipped-commands) chat command.

**Flow:**

1. Player ticks the OffLine box and configures their primary attack skill in the MuHelper window. Closing the window saves the config to DataServer.
2. Player presses **Start** on MuHelper.
3. If the OffLine flag is set and the location allows it, the server starts custom-attack mode using the player's primary MuHelper attack skill, switches it to offline, and signals the client to **fully exit the process** (not just disconnect to the login screen). The character keeps attacking server-side until killed or the time limit runs out. Helper itself never runs - no Zen billing, no client-side helper logic.
4. If the OffLine flag is set but the location does not allow offline-attack (safezone, event map, trade/duel, no skill resolved), the server emits a chat notice and the helper does **not** start - the player stays online and must untick the box (or move to a valid map) before pressing Start again.
5. If the OffLine flag is **not** set, Start behaves normally: helper billing kicks in, client runs MuHelper.

Stop on MuHelper always behaves normally (stops helper). It is not part of the offline bridge.

**On reconnect:** the auto-resume entry written when offline-attack starts is force-cleared by the bridge, so when the player relaunches the client and logs back in, the offline attack stops and the character is back to a clean online state. This differs from `/attack` followed by `/offattack` chat commands - the chat-command path leaves auto-resume intact (per the existing `/offattack` behavior).

**Restrictions inherited from `/offattack`:**

* Map must allow custom attack ([MapManager.xml](/docs/data/mapmanager.md) `Attack` flag).
* Character must not be in safezone, trade, duel, or any event map (Chaos Castle, Doppelganger, Blood Castle, Crywolf, Illusion Temple, Deathmatch Arena, Doppelganger, Imperial Guardian).
* Character must have at least one valid attack skill (the primary MuHelper attack skill, falling back to the class default).

#### What carries over from MuHelper

| MuHelper config                                                 | Used in offline mode?                                                                                                                                                                           |
| --------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Primary attack skill (Skill 1 in the UI)                        | **Yes** — used as the single skill `/offattack` cycles                                                                                                                                          |
| OffLine checkbox                                                | **Yes** — gates whether Start triggers the bridge                                                                                                                                               |
| Activation skills (Skill 2, Skill 3)                            | No — offline runs one skill only                                                                                                                                                                |
| Skill conditions (mob count, on-attack triggers)                | No                                                                                                                                                                                              |
| Combo                                                           | No                                                                                                                                                                                              |
| Buff skills picked in MuHelper UI                               | No — see "Built-in defaults" below                                                                                                                                                              |
| Auto Heal / Drain Life thresholds                               | No                                                                                                                                                                                              |
| Hunting range, targeting mode (nearest / lowest HP)             | No — picks first valid target in viewport                                                                                                                                                       |
| Long-range counter-attack, return-to-position, max seconds away | No                                                                                                                                                                                              |
| Pickup options (Zen, Jewels, Ancient, Excellent, Extras)        | **Yes** - offline mode walks to and picks up ground items matching the saved pickup filters                                                                                                     |
| Auto Repair                                                     | **Yes** - equipped items at or below 50% durability are self-repaired offline (deducts zen), throttled to a 5-second check                                                                      |
| Pet attack mode (Dark Raven / Dark Horse)                       | No                                                                                                                                                                                              |
| Self-defense, auto-accept friend / guild                        | No                                                                                                                                                                                              |
| Auto Reset checkbox in MuHelper                                 | No (MuHelper-side flag); the [Reset System plugin](/docs/data/plugins/resetsystem.md) AutoReset state is separate and continues to fire if the character hits the level cap, regardless of mode |

#### Built-in defaults (what offline mode does on its own)

These run server-side regardless of MuHelper config, driven by `CustomAttack*` keys in this file:

| Behavior                                          | Source / tunable                                                                                                                                                                             |
| ------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Single-skill attack on nearest viewable mob       | Skill from MuHelper Skill 1; range / animation from `Skill.txt`                                                                                                                              |
| Auto HP potion below 50% Life                     | Inventory slots `(14,3)` Big -> `(14,2)` Middle -> `(14,1)` Small; cooldown `CustomAttackPotionDelay`                                                                                        |
| Auto Mana potion below 50% Mana                   | Inventory slots `(14,6)` -> `(14,5)` -> `(14,4)`; cooldown `CustomAttackPotionDelay`                                                                                                         |
| Stay within 5 tiles of start position             | Auto-stops if dragged outside                                                                                                                                                                |
| Per-AccountLevel time limit                       | `CustomAttackTime_AL0-3` in Common.dat (`0` = unlimited)                                                                                                                                     |
| Per-AccountLevel autobuff (class-hardcoded buffs) | `CustomAttackAutoBuff_AL0-3`; **bridge passes `SetBuff=0`** so this is off by default in the bridge path even when configured. The `/attack` chat command can opt in via `/attack <skill> 1` |
| XP multiplier while offline                       | `OffAttackExperienceRate_AL0-3`                                                                                                                                                              |
| Stop on safezone / trade / duel                   | Hardcoded                                                                                                                                                                                    |

The hardcoded class buffs (when autobuff is enabled by chat command, not the bridge) cycle through:

* Elf: Infinity Arrow, Greater Defense, Greater Damage, Heal
* DW / DK / DL / SU / RF: class-specific class buffs (Soul Barrier, Swell Life, Greater Critical Damage, Damage Reflection / Berserker, Ignore Defense / Increase Health / Increase Block)

#### Disabling offline mode

| Gate                                      | File                                              | Blocks chat `/offattack`?  | Blocks MuHelper Offline bridge?                                                                                                   |
| ----------------------------------------- | ------------------------------------------------- | -------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| **`OffAttackSwitch=0`**                   | this file                                         | **Yes**                    | **Yes**                                                                                                                           |
| Per-map `Attack` flag                     | [MapManager.xml](/docs/data/mapmanager.md)        | Yes                        | Yes                                                                                                                               |
| Per-AccountLevel `Enable` on `/offattack` | [Command.xml](/docs/data/command-xml.md) Index 67 | Yes                        | No — the bridge calls handlers directly, it does not go through CommandManager                                                    |
| `CustomAttackTime_AL{N}=0`                | this file                                         | No (means "no time limit") | No (same)                                                                                                                         |
| `HelperSwitch=0`                          | this file                                         | No (unrelated)             | Yes — bridge runs in the helper-start path; if helper is master-disabled, the Start packet is rejected before the bridge can fire |

**Recommended:** use `OffAttackSwitch=0` for a single-key global lockout - it's the only gate that blocks **both** entry points (chat command and MuHelper bridge) cleanly. When the bridge cannot proceed, it sends a chat notice and the helper does **not** fall back to online mode - the player must untick the OffLine box to start the helper online.

{% hint style="info" %}
The OffLine checkbox is opt-in. Players who don't tick it press Start and get normal online helper as before.
{% endhint %}

## Cash Shop Settings

| Key                              | Type    | Default | Effect                                                                 |
| -------------------------------- | ------- | ------- | ---------------------------------------------------------------------- |
| `CashShopSwitch`                 | 0 or 1  | `1`     | Master toggle                                                          |
| `CashShopGoblinPointDelay`       | minutes | `0`     | Interval between automatic Goblin Point grants. `0` disables the timer |
| `CashShopGoblinPointValue_AL0-3` | int     | `0`     | Goblin Points granted per tick, per tier                               |

{% hint style="info" %}
`CashShopScriptVersion*` and `CashShopBannerVersion*` appear in the shipped template but are not read by the current GameServer build. Leave them in place for forward compatibility; changes have no effect.
{% endhint %}

## Event Inventory

Per-character event-only item bag (separate from main inventory) with a hard expiry date.

| Key                         | Type     | Default | Effect                                              |
| --------------------------- | -------- | ------- | --------------------------------------------------- |
| `EventInventorySwitch`      | 0 or 1   | `0`     | Master toggle                                       |
| `EventInventoryExpireYear`  | int      | `0`     | Year on which all event-inventory items auto-expire |
| `EventInventoryExpireMonth` | int 1-12 | `0`     | Month of expiry                                     |
| `EventInventoryExpireDay`   | int 1-31 | `0`     | Day of expiry                                       |

## Mu Rummy

Card-matching mini-game with score-based zen rewards.

| Key                        | Type    | Default | Effect                                      |
| -------------------------- | ------- | ------- | ------------------------------------------- |
| `MuRummySwitch`            | 0 or 1  | `0`     | Master toggle                               |
| `MuRummyRewardScore1`      | int     | `0`     | Lower score threshold for the small reward  |
| `MuRummyRewardScore2`      | int     | `0`     | Upper score threshold for the larger reward |
| `MuRummyRewardMoneyAmount` | int zen | `0`     | Zen amount granted at the reward thresholds |

## Party Settings

Ten-slot party XP distribution. Slots above `PartyMaxMembers` are ignored, so only the first `PartyMaxMembers` values ever apply.

| Key                          | Default                                          | Effect                                                                                                                                           |
| ---------------------------- | ------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| `PartyMaxMembers`            | `5`                                              | Maximum slots in a party. Slot indices beyond this value are never used even if `PartyGeneralExperience*` / `PartySpecialExperience*` are filled |
| `PartyReconnectTime`         | `300` seconds                                    | Window to rejoin a party after disconnect                                                                                                        |
| `PartyGeneralExperience1-10` | `100 / 80 / 75 / 65 / 60` for 1-5; remainder `0` | Percentage share per party size N (generic party)                                                                                                |
| `PartySpecialExperience1-10` | `100 / 80 / 75 / 65 / 60` for 1-5; remainder `0` | Share for balanced parties (one of each class)                                                                                                   |
| `PartyDisablePK`             | `0`                                              | `1` prevents PK characters from joining parties                                                                                                  |

## Potion Settings

Per-potion restore rates, percent of max pool.

| Key                          | Default   | Effect                                  |
| ---------------------------- | --------- | --------------------------------------- |
| `ApplePotionRate`            | `10`      | Apple: % of max HP restored             |
| `SmallLifePotionRate`        | `20`      | Small Healing                           |
| `MidleLifePotionRate`        | `30`      | Medium Healing                          |
| `LargeLifePotionRate`        | `25`      | Large Healing                           |
| `SmallManaPotionRate`        | `20`      | Small Mana                              |
| `MidleManaPotionRate`        | `30`      | Medium Mana                             |
| `LargeManaPotionRate`        | `40`      | Large Mana                              |
| `SmallShieldPotionRate`      | `25`      | Small Shield                            |
| `MidleShieldPotionRate`      | `35`      | Medium Shield                           |
| `LargeShieldPotionRate`      | `45`      | Large Shield                            |
| `SmallCompoundPotionRate1/2` | `10 / 5`  | Small Compound: HP / MP (both restored) |
| `MidleCompoundPotionRate1/2` | `25 / 10` | Medium Compound                         |
| `LargeCompoundPotionRate1/2` | `45 / 20` | Large Compound                          |
| `EliteLifePotionRate`        | `100`     | Elite Healing                           |
| `EliteManaPotionRate`        | `100`     | Elite Mana                              |
| `EliteShieldPotionRate`      | `65`      | Elite Shield                            |

## Transformation Ring Settings

Map slots 1-6 to a transformation item index. Values are item subtypes in the Miscellaneous item category.

| Key                   | Default | Ring slot |
| --------------------- | ------- | --------- |
| `TransformationRing1` | `2`     | Slot 1    |
| `TransformationRing2` | `7`     | Slot 2    |
| `TransformationRing3` | `14`    | Slot 3    |
| `TransformationRing4` | `8`     | Slot 4    |
| `TransformationRing5` | `9`     | Slot 5    |
| `TransformationRing6` | `41`    | Slot 6    |

## Jewel Settings

Success rates (percent) for jewel and stone operations. Each group has four `_AL0-3` keys.

| Key group                      | Default | Effect                              |
| ------------------------------ | ------- | ----------------------------------- |
| `SoulSuccessRate_AL0-3`        | `100`   | Jewel of Soul on item +level up     |
| `LifeSuccessRate_AL0-3`        | `50`    | Jewel of Life on item +option       |
| `HarmonySuccessRate_AL0-3`     | `50`    | Jewel of Harmony enhancement        |
| `SmeltStoneSuccessRate1_AL0-3` | `50`    | Harmony Refining Stone purification |
| `SmeltStoneSuccessRate2_AL0-3` | `70`    | Harmony Refining Stone smelt        |
| `AddLuckSuccessRate1_AL0-3`    | `25`    | Lucky option roll attempt 1         |
| `AddLuckSuccessRate2_AL0-3`    | `20`    | Lucky option roll attempt 2         |

## Fruit Settings

Stat point redistribution via fruits. `_AL0-3` rate keys of `-1` mean the engine uses built-in formulas.

| Key                              | Default | Effect                                                    |
| -------------------------------- | ------- | --------------------------------------------------------- |
| `FruitAddPointMin`               | `1`     | Minimum stat points added per fruit                       |
| `FruitAddPointMax`               | `3`     | Maximum added                                             |
| `FruitAddPointSuccessRate_AL0-3` | `-1`    | Success rate override. `-1` keeps engine default          |
| `FruitSubPointMin`               | `1`     | Minimum subtracted per fruit                              |
| `FruitSubPointMax`               | `9`     | Maximum subtracted                                        |
| `FruitSubPointSuccessRate_AL0-3` | `-1`    | Subtract success rate override. `-1` keeps engine default |

## HP Bonus System

Grants bonus HP per master reset.

| Key             | Default | Effect                              |
| --------------- | ------- | ----------------------------------- |
| `HpBonus_AL0-3` | `1`     | HP added per master reset, per tier |
| `HpBonus_MAX`   | `10000` | Absolute cap on total bonus HP      |

## Die System

Chat announcements on death.

| Key                | Default | Effect                                 |
| ------------------ | ------- | -------------------------------------- |
| `DieUserSwitch`    | `1`     | Broadcasts when a player dies          |
| `DieMonsterSwitch` | `1`     | Broadcasts when a notable monster dies |

## Online User System

| Key                | Default | Effect                        |
| ------------------ | ------- | ----------------------------- |
| `OnlineGmSwitch`   | `1`     | Announces GM login/logout     |
| `OnlineUserSwitch` | `1`     | Announces player login/logout |

## Experience Message

| Key                 | Default | Effect                                                                         |
| ------------------- | ------- | ------------------------------------------------------------------------------ |
| `DisableExpMessage` | `0`     | `1` hides XP-per-kill messages; only level-up messages remain. Premium feature |

## Pushback Effects

Each flag removes the push/fall animation triggered by the named skill when `1`.

| Key                      | Default | Removes pushback from |
| ------------------------ | ------- | --------------------- |
| `DisableLightningEffect` | `1`     | Lightning             |
| `DisableCycloneEffect`   | `1`     | Cyclone               |
| `DisableTwistEffect`     | `1`     | Twisting Slash        |
| `DisableLungEffect`      | `1`     | Lunge                 |
| `DisableFallingEffect`   | `1`     | Falling Slash         |
| `DisableUpperCutEffect`  | `1`     | Uppercut              |

## Wing Class Mix Restrictions

Per-class blocks on wing creation in the Chaos Machine.

| Key                | Default | Effect                                      |
| ------------------ | ------- | ------------------------------------------- |
| `DisableWingMixDL` | `0`     | `1` prevents Dark Lord from mixing wings    |
| `DisableWingMixSU` | `0`     | `1` prevents Summoner from mixing wings     |
| `DisableWingMixRF` | `0`     | `1` prevents Rage Fighter from mixing wings |

## PK Event Access

| Key            | Default | Effect                                     |
| -------------- | ------- | ------------------------------------------ |
| `PkCanEnterBC` | `0`     | `1` allows PK characters into Blood Castle |
| `PkCanEnterCC` | `0`     | `1` allows PK into Chaos Castle            |
| `PkCanEnterDS` | `0`     | `1` allows PK into Devil Square            |

## PK Item Drop

Controls item drops from PKed characters.

| Key                      | Type             | Default  | Effect                                       |
| ------------------------ | ---------------- | -------- | -------------------------------------------- |
| `PkItemDropSwitch`       | 0 or 1           | `0`      | Master toggle                                |
| `PkItemDropEnable_AL0-3` | 0 or 1           | `1` each | Per-tier enable                              |
| `PkItemDropMinLevel`     | int              | `0`      | Minimum character level before drops trigger |
| `PkItemDropMaxLevel`     | int              | `15`     | Maximum level at which drops still trigger   |
| `PkItemDropExecellent`   | 0 or 1           | `1`      | Include Excellent items in the drop pool     |
| `PkItemDropSocketItem`   | 0 or 1           | `1`      | Include Socket items                         |
| `PkItemDropSetItem`      | 0 or 1           | `1`      | Include Set items                            |
| `PkItemDropHarmony`      | 0 or 1           | `1`      | Include Harmony-enhanced items               |
| `PkItemDropRate`         | int out of 10000 | `100`    | Drop chance per eligible item. `100` = 1%    |

## Disconnect Online Account

| Key                       | Default | Effect                                                                         |
| ------------------------- | ------- | ------------------------------------------------------------------------------ |
| `DisconnectOnlineAccount` | `1`     | On duplicate login, kick the existing session instead of rejecting the new one |

## Castle Siege Skills

| Key                     | Default | Effect                                                    |
| ----------------------- | ------- | --------------------------------------------------------- |
| `EnableCsSkillsAllMaps` | `1`     | `1` enables Castle Siege skill effects outside the CS map |

## Combo System

| Key                      | Default | Effect                                   |
| ------------------------ | ------- | ---------------------------------------- |
| `EnableComboToAllSwitch` | `1`     | `1` enables combo skills for every class |
| `ComboEnablePushEffect`  | `1`     | `1` knocks back monsters on combo hits   |

`EnableComboToAllSwitch` remains the master toggle. The CustomCombo plugin (`Data/Plugins/Characters/CustomCombo.xml`) extends the system by defining which skills count as primary and secondary in a combo for the classes that unlock it. CustomCombo does not shadow this switch; a class with combos disabled here stays without combos regardless of plugin content.

## Online Rewards

Periodic zen / coin rewards for connected players. `OnlineRewardOfflineSystems = 1` extends this to offline accounts. Coin1 = WC, Coin2 = WP, Coin3 = GP.

| Key                            | Default  | Effect                                 |
| ------------------------------ | -------- | -------------------------------------- |
| `OnlineRewardOfflineSystems`   | `0`      | `1` applies rewards even while offline |
| `OnlineRewardCoin1Delay`       | `60` min | Interval for Coin1                     |
| `OnlineRewardCoin1Value_AL0-3` | `0`      | Amount per interval for each tier      |
| `OnlineRewardCoin2Delay`       | `60` min | Interval for Coin2                     |
| `OnlineRewardCoin2Value_AL0-3` | `0`      | Amount per interval                    |
| `OnlineRewardCoin3Delay`       | `60` min | Interval for Coin3                     |
| `OnlineRewardCoin3Value_AL0-3` | `0`      | Amount per interval                    |

## Skill Timing / Attack Speed

Global attack speed formula for every skill. Server is authoritative; client display is cosmetic.

```
delay = max(MinSkillDelay, BaseSkillDelay * 1000 / (1000 + speed * SpeedGrowthFactor))
APS   = (1000 + speed * SpeedGrowthFactor) / BaseSkillDelay
```

| Key                 | Default | Effect                                                       |
| ------------------- | ------- | ------------------------------------------------------------ |
| `MaxAttackSpeed`    | `290`   | Hard cap on effective speed before the formula. `0` = no cap |
| `BaseSkillDelay`    | `1000`  | Starting delay in ms (delay at speed 0)                      |
| `SpeedGrowthFactor` | `23`    | APS gain per speed point. Higher = faster scaling            |
| `MinSkillDelay`     | `100`   | Minimum delay in ms. Absolute floor                          |

At the shipped defaults, speed `290` gives a 130 ms delay (7.69 casts/sec).

{% hint style="warning" %}
Per-skill timing overrides live in the SkillSpeedScale plugin. Those layer on top of this global formula.
{% endhint %}

## Cross-File Dependencies

| Setting here                                                                                  | Depends on or affects                                                                                             |
| --------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
| `EnableCastleSiege`                                                                           | Every Castle Siege schedule/reward block in [Event.dat](/docs/gameserver/event-dat.md) is inert when `0`          |
| `WriteChaosMixLog`                                                                            | Gates log rows produced by [ChaosMix plugin](/docs/data/plugins/chaosmix.md) recipes                              |
| `WriteLuckySpinLog`                                                                           | Gates log rows produced by the LuckySpin plugin (`Data/Plugins/LuckySpin/` wheels)                                |
| `GameDataOverlay`                                                                             | Path of the overlay folder shadowing shared `Data/` - see [Data Overlays](/docs/data/overlays.md)                 |
| Create Character Settings                                                                     | Combines with [Character.dat](/docs/gameserver/character-dat.md) class availability                               |
| `<CLASS>LevelUpPoint`, `PlusStatPoint`                                                        | Feed stat growth curves in [Character.dat](/docs/gameserver/character-dat.md)                                     |
| `ServerMinReset`, `ServerMaxReset`, `ServerMinMasterReset`, `ServerMaxMasterReset`            | Cap reset limits defined per-command in [Command.dat](/docs/gameserver/command-dat.md)                            |
| `EnableComboToAllSwitch`, `ComboEnablePushEffect`                                             | Combo definitions live in [CustomCombo plugin](/docs/data/plugins/customcombo.md); this switch is the master gate |
| Skill Timing block (`MaxAttackSpeed`, `BaseSkillDelay`, `SpeedGrowthFactor`, `MinSkillDelay`) | Per-skill scaling in [SkillSpeedScale plugin](/docs/data/plugins/skillspeedscale.md)                              |
| `HelperSwitch`, `HelperActive*`                                                               | Pickup whitelist in [MuHelperPickup plugin](/docs/data/plugins/muhelperpickup.md)                                 |
| `CashShopSwitch`, `CashShopGoblinPointDelay`, `CashShopGoblinPointValue_AL*`                  | Cash shop catalog in [Cash Shop](/docs/data/cashshop.md)                                                          |
| `MasterSkillTree`, `MasterSkillTreePoint`, `MasterSkillTreeMaxLevel`                          | Tree definitions in [MasterSkillTree](/docs/data/skill/masterskilltree.md)                                        |

## Common Issues

* **Stuck at "Loading files..."** - `LicenseKey` empty or invalid
* **Port in use** - `ServerPort` conflicts with another process or a previous crashed instance
* **Duplicate "GameServer online/offline" in ConnectServer log** - `ServerCode` matches another running GameServer
* **Players report wrong server name** - `ServerName` mismatch with what ConnectServer's `ServerList.xml` advertises
* **VIP users get the same rates as free accounts** - `_AL1`/`_AL2`/`_AL3` keys all set to the same value as `_AL0`
* **Players rubber-banded or disconnected for moving too fast** - check the log for `[MoveSpeed]` lines; raise `MoveSpeedGuardBurst`/`MoveSpeedGuardTolerance`, or drop `MoveSpeedGuardMode` back to `1` (log-only) while calibrating
* **Cannot create Rage Fighter** - `RFCreateLevel_AL*` set to `250` (known bug)
* **Castle Siege schedule does nothing** - `EnableCastleSiege = 0`
