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:

SuffixTierTypical use
_AL0Free accountBaseline value
_AL1VIP tier 1Small bonus
_AL2VIP tier 2Medium bonus
_AL3VIP tier 3Top bonus

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

Server Settings#

KeyTypeRangeDefaultEffect
ServerNamestring<= 31 charsGameServerName shown in window title and broadcast messages
ServerCodeint0-655350Unique code matching one <Server Code> entry in ConnectServer's ServerList.xml
ServerLock0 or 101 prevents non-GM clients from connecting
GoldChannelServer0 or 101 marks this server as a Gold channel (cosmetic label in the client)
NonPvPServer0 or 101 disables player-vs-player damage server-wide
ServerPortint1-6553555901TCP port game clients connect to. Must match ServerList.xml
ServerVersionstringX.XX.XX1.04.05Season/episode identifier sent in handshakes
ServerSerialstring16 chars(ships filled)Protocol obfuscation serial. Do not change unless client ships with the matching value
ServerMaxUserNumberint1-10001000Concurrent player cap. Values above 1000 are clamped to 1000
ServerMinLevelint0-MAX0Minimum character level allowed to log in. 0 = no limit
ServerMaxLevelint0-MAX0Maximum character level allowed to log in. 0 = no limit
ServerMinResetint0-MAX0Minimum character reset count to log in. 0 = no limit
ServerMaxResetint0-MAX0Maximum character reset count to log in. 0 = no limit
ServerMinMasterResetint0-MAX0Minimum master reset count to log in. 0 = no limit
ServerMaxMasterResetint0-MAX0Maximum master reset count to log in. 0 = no limit
LicenseKeystring(empty)License token for this instance. Required
EnableCastleSiege0 or 11Master switch for Castle Siege machinery. When 0, every CS-related Event.dat block is inert
GameDataOverlaypath(empty)Optional path to an overlay folder that shadows files in the shared Data/ root. See Data Overlays

Performance#

Neither key ships in the default Common.dat. Add the line to change it. Both are read once at startup.

KeyTypeRangeDefaultEffect
PerfProfiler0 or 11Built-in CPU profiler. 1 writes a summary to Perf\YYYY-MM-DD.txt once a minute. 0 = off
SendBatchWindowint ms0-20050How long the server may hold packets for one player so it can send them together. Fewer, bigger sends = less CPU and network load on busy maps. A player's own replies are never held. 0 = off (send at once). Values above 200 are clamped to 200. Any value above 0 also turns off Nagle's delay on player sockets

Connection Settings#

KeyTypeDefaultEffect
DataServerAddressstring127.0.0.1IP of DataServer
DataServerPortint55960TCP port of DataServer. Must match DataServer's DataServerPort
JoinServerAddressstring127.0.0.1IP of JoinServer
JoinServerPortint55970TCP port of JoinServer. Must match JoinServer's JoinServerPort
ConnectServerAddressstring127.0.0.1IP of ConnectServer
ConnectServerPortint55557UDP port on ConnectServer for heartbeats. Must match ConnectServer's ConnectServerPortUDP
ConnectTimeOutPreLoginint300Seconds an idle socket may sit connected without submitting credentials (login box open) before the server drops it
ConnectTimeOutLoggedint60Seconds a logged-in client may go without answering the server's live-client ping before it is disconnected

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

Server Manager Control Settings#

The control channel lets the Axiom Server Manager see this GameServer's status and logs and send it commands (notice, kick, start events, graceful shutdown). None of these keys ship in the default Common.dat. Add the lines to change them. Read once at startup.

KeyTypeDefaultEffect
ControlPortint55990TCP port the control channel listens on. 0 = control channel off
ControlKeystring(empty)Shared password the Server Manager must send. Empty = no password
ControlBindIP127.0.0.1Address the control channel listens on. 127.0.0.1 = only this machine can connect. An invalid IP falls back to 127.0.0.1
ControlInstancestring(empty)Label shown in the Server Manager to tell several GameServers apart (for example Sub1)

Log Settings#

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

KeyDefaultLogs
WriteChatLog1Public, whisper, party, and guild chat
WriteCommandLog1Every chat command use (success and denial)
WriteTradeLog1Trade window opens, items exchanged, zen transferred
WriteConnectLog1Login, logout, character enter/leave
WriteHackLog1Hack detections (see Hack Settings)
WriteCashShopLog1Cash shop purchases and gift sends
WriteChaosMixLog1Chaos machine attempts, outcomes, and announce broadcasts
WriteLuckySpinLog1Lucky Spin spins (win/lose, prize, cost, charges left) and reward deliveries — including login redelivery of wins orphaned by a crash/disconnect
WriteMarketLog1Market (personal store) to the Market folder: every deposit, withdraw, price change, open/close (with reason), sale, wallet collect and coin escrow step, plus every refused request as [Market][Reject][<action>] with the reason and item (index, level, serial). Also logs edge cases where an item could go missing: store rows dropped on login (LoadRowLost, with raw item bytes), auto-unlisted rows, dupe serial kicks, coin purchase timeouts and refunds. Rejects are capped at 10 lines per second per player
WriteGameDataSyncLog0GameDataSync 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
WriteItemBagLog1Item bag entries that point at an item not in Item.xml (skipped while loading the bag), plus GM make-item, make-set and drop commands refused for the same reason. Written to the ItemBag log folder
WritePacketRejectLog0Client packets the server refused (unknown opcode or subcode, wrong packet size). Written to the ActionReject log folder
WriteMovementRejectLog0Silent movement rejects and corrections (teleport range, forged path, gate mismatch, snap-back from a blocked tile). Written to the ActionReject log folder
WriteSkillRejectLog0Skill casts and attacks the server refused (out of range, in safe zone, not enough mana/AG, wrong weapon, skill not learned). Written to the ActionReject log folder. Not in the shipped file - add the line to turn it on
WriteItemRejectLog0Item actions the server refused (equip requirement not met, wrong slot, trade refusals). Written to the ActionReject log folder. Not in the shipped file - add the line to turn it on

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.

KeyTypeDefaultAction on triggerEffect
CheckAutoPotionHack0 or 11Silently reject the potion (no disconnect, no hack log)Prevents potion spam by enforcing a minimum gap between consumes.
CheckAutoPotionHackToleranceint ms250-Minimum gap between potion consumes. A use within this window is ignored.
MoveSpeedGuardMode0-32See belowMovement speed guard. 0 = off, 1 = log-only ([MoveSpeed] lines, move still applied), 2 = refuse the move and snap the player back to the server position, 3 = as 2 plus disconnect at the 5th refused move within a rolling 60-second window.
MoveSpeedGuardToleranceint %35-Extra leniency over the character's own walk speed. 35 = a player may cover 1.35x the distance his walk speed allows.
MoveSpeedGuardSlackint tiles3-Extra distance always allowed on top of that (network lag, the client being a tile or two ahead of the server).

Common Settings#

KeyTypeDefaultEffect
MaxItemOptionint 0-157Cap on item option bonus (+0 to +15). Most legacy clients expect 7; raising it requires a compatible client
JewelryLevelEnable0 or 111 = elemental rings and pendants keep the item level they roll from every source (drops, item bags, chaos mix, shops, GM create, saved items), and Jewel of Bless / Jewel of Soul work on them. 0 forces every elemental ring and pendant to +0 on all of those paths and makes both jewels refuse them, which disables elemental resistance entirely
JewelryLevelMaxint 0-157Highest level an elemental ring or pendant may reach, applied on every creation path. It also lowers the Jewel of Bless (+6) and Jewel of Soul (+9) ceilings when set below them
MaxIpConnectionint 0-N10Concurrent game connections allowed from one source IP. Distinct from ConnectServer's cap of the same name
MaxPacketsPerSecondint 0-100000250Packets one game connection may send per second. A short burst of up to 4 seconds' worth is allowed, so a lag spike does not trip it. Over the limit the connection is closed and a line is written to the Hack log. A normal client sends about 15-45 per second while hunting and up to about 140 with the heaviest skills. 0 = no limit
PersonalCodeCheck0 or 10Require a personal passcode (second password) on character entry
SetItemAcceptHarmonySwitch0 or 101 allows Jewel of Harmony bonuses on set items
MainChecksumint0Optional client main-binary checksum demanded at handshake. 0 disables the check; non-zero values force every client to report this exact checksum
JewelSocketPentagram0 or 101 allows Jewel of Socket to apply on Pentagram items
KeepBonusBelowItemReq0 or 101 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. The value is sent to the client at login so its stat panel and the ancient set option list keep the same items the server applies. 0 = an item whose requirements are no longer met stops granting bonuses (default)
KeepSkillBelowLearnReq0 or 10The skill counterpart of KeepBonusBelowItemReq. 1 keeps a learned skill castable after the character no longer meets its stat requirements (again, typical after a reset). Learning the skill still enforces every Require* column in Skill.txt. 0 = the requirements are re-checked on every cast and the skill fails while they are unmet (default)

Elemental jewelry levels#

JewelryLevelEnable and JewelryLevelMax control the level an elemental ring or pendant may carry. That level is what makes the item's resistance do anything: the resistance granted is the item's *Res value multiplied by its level, so a +0 ring grants nothing no matter how its *Res columns are set in Item.xml.

Resistance translates into a chance to nullify the matching elemental effect:

Item levelNullify chance
+00%
+150%
+267%
+375%
+480%
+583%
+686%
+788%

Movement / Warp Level Requirements#

KeyTypeDefaultEffect
SpecialClassMoveLevelDiscount0 or 111 = vanilla: Magic Gladiator, Dark Lord and Rage Fighter need only two-thirds of a gate's or teleport's MinLevel on every map except Swamp of Calmness. 0 = all classes pay the full level requirement

The per-destination level requirements themselves live in Gate.txt and Move.txt; this key only decides whether the three special classes get a discount on them.

PC Point Currency#

Monster Settings#

KeyTypeDefaultEffect
MonsterLifeRateint %100Global HP multiplier applied after all other monster modifiers

Health Bar#

KeyDefaultEffect
MonsterHealthBarSwitch11 shows monster HP bars to clients
UserHealthBarSwitch11 shows player HP bars to clients

PK Settings#

KeyTypeDefaultEffect
NonPK0 or 101 disables all PK kills from counting toward outlaw status
PKLimitFree0 or 101 removes the per-day PK count cap
PKDownTime1seconds3600Cooldown between second-tier and first-tier PK level
PKDownTime2seconds3600Cooldown between first-tier PK level and clear
PKDisableShop0 or 101 blocks PK characters from opening personal shops
PKDisableTrade0 or 101 blocks PK characters from trading

Trade Settings#

KeyDefaultEffect
TradeSwitch1Master toggle for player-to-player trade

Personal Shop Settings#

KeyDefaultEffect
PersonalShopSwitch1Master toggle for personal shops

Duel Settings#

KeyTypeDefaultEffect
DuelSwitch0 or 11Master toggle for duel arena
DuelArenaAnnounceSwitch0 or 11Broadcasts duel results to the server
DuelArenaDisableRestoreHP0 or 101 prevents HP restore during duel
DuelArenaDisableRestoreSD0 or 101 prevents SD restore during duel
DuelMaxScoreint10Score needed to win a duel
DuelBetint zen0Mandatory bet amount. 0 = free duels

Guild Settings#

KeyTypeDefaultEffect
GuildDeleteSwitch0 or 11Allow guild deletion
GuildCreateMinLevelint100Minimum character level to create a guild
GuildInsertMaxUser1int40Base guild member cap
GuildInsertMaxUser2int80Expanded guild member cap after guild level-up
GuildAllianceMinUserint1Minimum members required to form or join an alliance
GuildAllianceMaxCountint5Maximum guilds in an alliance
GuildOwnerDestroyLimit0 or 111 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).

Key groupDefaultEffect
ElfBufferMaxLevel_AL0-31000 / 220 / 220 / 220Character level cap below which Elf buff still applies
ElfBufferMaxReset_AL0-310000 eachReset cap below which Elf buff still applies
ElfBufferDamageConstA50Damage buff linear term
ElfBufferDamageConstB5Damage buff quadratic term
ElfBufferDefenseConstA45Defense buff linear term
ElfBufferDefenseConstB3Defense 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 groupDefaultEffect
AddExperienceRate_AL0-3100000Base XP multiplier for normal kills. 100000 equals 100x the baseline. Large values simulate high-rate servers
AddMasterExperienceRate_AL0-3100000Master XP multiplier
MinMasterExperienceMonsterLevel_AL0-395Monster level below which no master XP is granted
AddEventExperienceRate_AL0-31000XP multiplier inside event maps (Blood Castle, Devil Square, etc.)
AddQuestExperienceRate_AL0-31000XP multiplier for quest kills
OffAttackExperienceRate_AL0-31000Replaces AddExperienceRate (not stacked on it) for normal-level characters while Off Attack is active. Missing key = same as AddExperienceRate for that tier (older builds used 0, so offline characters got no XP)
OffAttackMasterExperienceRate_AL0-3100000Replaces AddMasterExperienceRate for master-level characters while Off Attack is active. Missing key = same as AddMasterExperienceRate

Monster Kill EXP Formula#

The base EXP a monster gives before any rate above is applied. Defaults equal the vanilla formula, so leaving them alone changes nothing.

KeyDefaultEffect
ExpBaseOffset25Base = (MonsterLevel + offset) x MonsterLevel / divisor
ExpBaseDivisor3See above. Minimum 1
ExpLevelGapFree10How many levels a player may be above the monster before the penalty starts. Past that, base x (MonsterLevel + gap) / PlayerLevel. Master characters use Level + MasterLevel
ExpHighLevelBonusFrom65Monsters at this level or above give a bonus
ExpHighLevelBonusDivisor4Solo bonus = (MonsterLevel - (From - 1)) x (MonsterLevel / divisor). Minimum 1
ExpFinalRate125% applied to the base at the end (vanilla x1.25)
ExpPartyLowLevelSupport200In a party, members more than N levels below the top member count as Level + N toward the party average
ExpPartyHighLevelBonusBase200Party bonus for monsters at ExpHighLevelBonusFrom+ = base - PartyAverageLevel / divisor
ExpPartyHighLevelBonusDivisor5See above. Minimum 1

The party bonus uses the party's average level. Older builds used the killer's level for every member.

Death Penalty#

Dying to a monster costs EXP. Never zen and never items. On by default.

KeyDefaultEffect
DeathExpPenaltySwitch10 turns the penalty off
DeathExpPenaltyMinLevel11Characters below this level lose nothing
DeathExpPenaltyRate10Per mille of the current level's EXP span lost on death. 10 = 1%
DeathExpPenaltyMasterRate7Same for master-level characters (0.7%)
DeathExpPenaltyPKRate1-330 / 40 / 50Replaces the normal rate for PK level 4, 5 and 6 (murderer stages)
DeathExpPenaltyInDungeon01 also applies the penalty inside dungeon runs

EXP never drops below the start of the current level, so nobody loses a level. No penalty for PvP deaths (killed by a player or a player's summon), event maps (Blood Castle, Devil Square, Chaos Castle, Illusion Temple, Doppelganger, Imperial Guardian, Custom Arena), or Crywolf during the battle. The player sees a notice and the new EXP arrives with the respawn.

Item Drop Settings#

KeyTypeDefaultEffect
ItemDropTimeseconds30Lifetime of dropped items on the ground before despawn
ItemDropRate_AL0-3int out of 10000100Drop chance per kill, out of 10000. 100 = 1%

Money Drop Settings#

KeyTypeDefaultEffect
MoneyDropTimeseconds30Lifetime of dropped zen piles
MoneyAmountDropRate_AL0-3int multiplier1Per-tier multiplier applied on top of base monster zen

Monster Stat Multipliers#

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

KeyDefaultEffect
MonsterLifeMultiplier100Scales monster HP
MonsterDamageMinMultiplier100Scales minimum monster damage
MonsterDamageMaxMultiplier100Scales maximum monster damage
MonsterDefenseMultiplier100Scales monster physical defense
MonsterMagicDefenseMultiplier100Scales monster magic defense

Monster Hit Damage Reset Settings#

Controls the damage credit table, which decides who owns a monster's drop and EXP. This is not aggro — clearing it does not make a monster stop chasing.

KeyTypeDefaultEffect
MonsterHitDamageResetOnDeath0 or 101 clears damage records when the monster dies. Runs after the drop is awarded, so this is cleanup only and changes nothing in play
MonsterHitDamageResetTimeseconds30Seconds without a hit before a player's damage record expires
MonsterHitDamageResetDistancesteps0Steps from spawn point before all records clear. 0 disables the check

Monster Leash Settings#

Vanilla MU has no leash. Once a monster is aggroed, ActionState.Emotion is set and the wander-radius check is skipped entirely, so the monster can be dragged across the whole map. Aggro also re-arms every time the target is re-found in view range, so a kiting player drags it indefinitely. When aggro finally lapses, the monster stands frozen wherever it stopped, because its wander targets are still measured from its spawn tile and all of them now fail.

KeyTypeDefaultEffect
MonsterLeashDistancetiles0Extra tiles allowed beyond the spawn's own wander radius before the monster drops aggro. 0 disables the leash (vanilla). Suggested 15
MonsterLeashReturnHome0 or 111 walks the monster back to its spawn tile, refusing aggro the whole way. 0 drops aggro and lets it settle where it stopped, adopting that tile as its new wander home
MonsterLeashHealOnReturn0 or 111 restores full HP/Mana and wipes damage credit once the monster gives up

Leave MonsterLeashHealOnReturn at 1: without it a player can tag a monster, drag it past the leash, and still own the drop when someone else finishes the healed monster.

If the spawn tile turns out to be unreachable (walled off, built over), the walk home is abandoned after 30 seconds and the monster resumes normal behaviour where it stands. The original spawn tile is restored on death like always.

Why the distance is relative#

MonsterLeashDistance is added to the monster's own wander radius; it is not an absolute distance from spawn. That radius is the per-spawn Dis in Data/Monster/MonsterSetBase/*.xml, or 30 for invasion-spawned monsters.

Dis is wildly inconsistent across the spawn files:

DisSpawn entriesWhere
304096Kanturu, Devil Square, Vulcanus, Land of Trials, Crywolf, Elbeland, Karutan, Raklion, all event maps
10267Lorencia and other classic maps
05655most common on classic maps
07 / 03 / 153scattered
00326NPCs and guards - never leashed

An absolute leash would have to exceed 30 to avoid firing on Dis="30" spawns during normal wandering, which would make it nearly useless on the Dis="05" spawns that make up most of the classic maps. Relative gives every spawn the same chase room: with the suggested 15, a Dis="05" spawn leashes at 20 tiles and a Dis="30" spawn at 45.

Invasions#

Invasion monsters (InvasionManager) are spawned outside MonsterSetBase and get WanderRange 30, or the boss ClusterRadius when the invasion uses cluster mode. They are leashed like anything else, measured from the random tile each one spawned on. With 15 an invasion mob gives up 45 tiles from where it appeared; cluster trash gives up at ClusterRadius + 15, so a tight ClusterRadius also tightens that invasion's leash.

Not affected#

These keep vanilla behaviour entirely:

  • NPCs, guards and traps (Dis="00", no wander radius)
  • Stationary monsters (MoveRange 0)
  • Summons (Attribute 100) and monster-summoned adds
  • Every monster on Blood Castle, Chaos Castle, Devil Square, Kalima, Illusion Temple, Doppelganger, Imperial Guardian and Castle Siege maps - those events need monsters to chase players anywhere on the map

The event-map exclusion is by map number, not by spawn type. Blood Castle, Chaos Castle and Devil Square monsters are ordinary MonsterSetBase entries carrying Dis="30", so nothing else would have caught them.

Advanced Money Drop Settings#

Chooses how the base zen amount for a monster kill is derived. Player bonuses are applied on top of whichever base is used.

KeyTypeDefaultEffect
MoneyValue_AL0-3int100000Base zen per monster level: MoneyValue * MonsterLevel. Set to 0 to use the baseline formula (MonsterZen * MoneyAmountDropRate%)

Full order of operations:

base   = MoneyValue > 0 ? (MoneyValue * MonsterLevel)
                        : (MonsterZen * MoneyAmountDropRate / 100)
amount = base * PlayerZenBonus% / 100     <- item options, item implicits, master skill tree
amount = amount * (100 + CatchUpBonus%) / 100

Item Durability Settings#

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

KeyDefault
WeaponDurabilityRate100
ArmorDurabilityRate100
WingDurabilityRate100
GuardianDurabilityRate100
PendantDurabilityRate100
RingDurabilityRate100
PetDurabilityRate100

Trade Item Block Settings#

Each flag blocks a category from being traded when 1.

KeyDefaultBlocks
TradeItemBlock0All items (master switch)
TradeItemBlockExc0Excellent items
TradeItemBlockSet0Set items
TradeItemBlockHarmony0Harmony-enhanced items
TradeItemBlockSell0Items whose sell flag is set
TradeItemBlockLucky1Lucky items

Level Up Settings#

KeyTypeDefaultEffect
MaxLevelUpint1Levels granted per normal kill
MaxLevelUpEventint1Levels granted per event kill
MaxLevelUpQuestint1Levels granted per quest reward
MaxStatPoint_AL0-3int2000000000Stat point cap per tier
DWLevelUpPointint5Stat points per level for Dark Wizard
DKLevelUpPointint5Dark Knight
FELevelUpPointint5Fairy Elf
MGLevelUpPointint7Magic Gladiator
DLLevelUpPointint7Dark Lord
SULevelUpPointint5Summoner
RFLevelUpPointint7Rage Fighter
PlusStatPointint1Bonus points per level applied to every class
LevelUpRestoreLife0 or 111 = HP filled to max on level up (normal and master)
LevelUpRestoreMana0 or 111 = MP filled to max on level up
LevelUpRestoreShield0 or 111 = SD filled to max on level up
LevelUpRestoreBP0 or 111 = AG filled to max on level up

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.

KeyEffect
CharacterCreateSwitchMaster toggle for all character creation
<CLASS>CreateType0 = another character on the account must meet the requirement. 1 = apply the requirement to the creating character
<CLASS>CreateLevel_AL0-3Minimum character level
<CLASS>CreateReset_AL0-3Minimum reset count
<CLASS>CreateMasterReset_AL0-3Minimum master reset count

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

Shield Gauge Settings#

KeyTypeDefaultEffect
ShieldGaugeRateint %90Baseline shield damage absorption rate
ShieldGaugeConstAint12Shield formula linear term
ShieldGaugeConstBint15Shield formula quadratic term
ShieldGaugeAttackRateint2Shield consumption rate per attack
ShieldGaugeAttackComboMiss0 or 101 consumes shield on combo misses too
ShieldGaugePvE0 or 101 = SD also absorbs monster hits, using the same ShieldGaugeRate split. 0 = SD only takes player damage (vanilla)

Master Skill Tree Settings#

KeyDefaultEffect
MasterSkillTree01 enables the master skill tree
MasterSkillTreePoint1Skill points per master level
MasterSkillTreeMaxLevel400Master level cap

Gens System Settings#

Faction-vs-faction contribution system.

KeyTypeDefaultEffect
GensSystemSwitch0 or 11Master toggle
GensSystemGuildLock0 or 101 locks faction per guild (all members share one faction)
GensSystemPartyLock0 or 101 prevents parties mixing factions
GensSystemInsertMinLevelint50Minimum level to join a faction
GensSystemContributionFloodTimeseconds30Minimum gap between contribution-earning kills
GensSystemVictimContributionDecreaseint3Base contribution lost per death to a rival
GensSystemKillerContributionIncreaseint500Base contribution gained per rival kill
GensSystemVictimMinContributionDecreaseint1Lower bound on victim loss
GensSystemVictimMaxContributionDecreaseint15Upper bound on victim loss
GensSystemKillerMinContributionIncreaseint1Lower bound on killer gain
GensSystemKillerMaxContributionIncreaseint15Upper bound on killer gain
GensSystemStartRewardDayint1First day of the weekly reward window
GensSystemFinalRewardDayint7Last day of the weekly reward window

Helper Settings (MuHelper)#

KeyTypeDefaultEffect
HelperSwitch0 or 11Master toggle for MuHelper
OffAttackSwitch0 or 11Master 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
HelperActiveLevelint80Minimum level to use MuHelper
HelperActiveDelayminutes5Zen charge interval
HelperActiveMoney1zen20Cost tier 1 (baseline level)
HelperActiveMoney2zen50Cost tier 2
HelperActiveMoney3zen80Cost tier 3
HelperActiveMoney4zen100Cost tier 4
HelperActiveMoney5zen120Cost tier 5 (high level)
HelperMaxLevelint0Global fallback maximum combined level (Level + Master Level) allowed to run MuHelper. 0 = no maximum. Used by any map whose HelperMaxLevel is *
HelperExpRateint %100Global fallback XP percentage earned while MuHelper is active. 100 = full XP, 50 = half. Used by any map whose HelperExpRate is *
OffAttackMinLevelint0Minimum character level allowed to enter the /offattack chat command or MuHelper Offline bridge. 0 = no minimum. Global fallback for any map whose OffAttackMinLevel is *
OffAttackMaxLevelint0Maximum 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 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 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 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 configUsed in offline mode?
Primary attack skill (Skill 1 in the UI)Yes — used as the single skill /offattack cycles
OffLine checkboxYes — 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
ComboNo
Buff skills picked in MuHelper UINo — see "Built-in defaults" below
Auto Heal / Drain Life thresholdsNo
Hunting range, targeting mode (nearest / lowest HP)No — picks first valid target in viewport
Long-range counter-attack, return-to-position, max seconds awayNo
Pickup options (Zen, Jewels, Ancient, Excellent, Extras)Yes - offline mode walks to and picks up ground items matching the saved pickup filters
Auto RepairYes - 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 / guildNo
Auto Reset checkbox in MuHelperNo (MuHelper-side flag); the Reset System plugin 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 the CustomAttack* keys. Most live in this file; the auto-potion cooldown lives in Custom.dat:

BehaviorSource / tunable
Single-skill attack on nearest viewable mobSkill from MuHelper Skill 1; range / animation from Skill.txt
Auto HP potion below 50% LifeInventory slots (14,3) Big -> (14,2) Middle -> (14,1) Small; cooldown CustomAttackAutoPotionDelay (Custom.dat)
Auto Mana potion below 50% ManaInventory slots (14,6) -> (14,5) -> (14,4); cooldown CustomAttackAutoPotionDelay (Custom.dat)
Stay within 5 tiles of start positionAuto-stops if dragged outside
Per-AccountLevel time limitCustomAttackTime_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 rate while offlineOffAttackExperienceRate_AL0-3 (normal level), OffAttackMasterExperienceRate_AL0-3 (master level). Both REPLACE the online rate, not multiply it
Stop on safezone / trade / duelHardcoded

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#

GateFileBlocks chat /offattack?Blocks MuHelper Offline bridge?
OffAttackSwitch=0this fileYesYes
Per-map Attack flagMapManager.xmlYesYes
Per-AccountLevel Enable on /offattackCommand.xml Index 67YesNo — the bridge calls handlers directly, it does not go through CommandManager
CustomAttackTime_AL{N}=0this fileNo (means "no time limit")No (same)
HelperSwitch=0this fileNo (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.

Cash Shop Settings#

KeyTypeDefaultEffect
CashShopSwitch0 or 11Master toggle
CashShopGoblinPointDelayminutes0Interval between automatic Goblin Point grants. 0 disables the timer
CashShopGoblinPointValue_AL0-3int0Goblin Points granted per tick, per tier

Event Inventory and Mu Rummy#

Party Settings#

Party XP distribution for party sizes 1-5. A party never has more than 5 members.

KeyDefaultEffect
PartyMaxMembers5Maximum slots in a party
PartyReconnectTime300 secondsWindow to rejoin a party after disconnect. Also the window after a GameServer start in which clients may restore their parties (members must list each other, normal party map and Gens rules apply). 0 = both off
PartyGeneralExperience1-5100 / 80 / 75 / 65 / 60Percentage share per party size N (generic party). Keys 6-10 are no longer read
PartySpecialExperience1-5100 / 80 / 75 / 65 / 60Share when 3 or more different classes are in range of the kill
PartyDisablePK01 prevents PK characters from joining parties
PartyExperienceDistance0Tiles a party member may be from the dying monster and still get a share of the experience. Straight line, same map only. 0 = vanilla 10. Does not affect party heal/buff range, which stays at 10
PartyExperienceRequireLOS01 also requires a clear line of sight: a wall between the monster and the member blocks that member's share. 0 = vanilla, walls ignored

Potion Settings#

Per-potion restore rates, percent of max pool.

KeyDefaultEffect
ApplePotionRate10Apple: % of max HP restored
SmallLifePotionRate20Small Healing
MidleLifePotionRate30Medium Healing
LargeLifePotionRate25Large Healing
SmallManaPotionRate20Small Mana
MidleManaPotionRate30Medium Mana
LargeManaPotionRate40Large Mana
SmallShieldPotionRate25Small Shield
MidleShieldPotionRate35Medium Shield
LargeShieldPotionRate45Large Shield
SmallCompoundPotionRate1/210 / 5Small Compound: HP / MP (both restored)
MidleCompoundPotionRate1/225 / 10Medium Compound
LargeCompoundPotionRate1/245 / 20Large Compound
EliteLifePotionRate100Elite Healing
EliteManaPotionRate100Elite Mana
EliteShieldPotionRate65Elite Shield

Transformation Ring Settings#

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

KeyDefaultRing slot
TransformationRing12Slot 1
TransformationRing27Slot 2
TransformationRing314Slot 3
TransformationRing48Slot 4
TransformationRing59Slot 5
TransformationRing641Slot 6

Jewel Settings#

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

Key groupDefaultEffect
SoulSuccessRate_AL0-3100Jewel of Soul on item +level up
LifeSuccessRate_AL0-350Jewel of Life on item +option
HarmonySuccessRate_AL0-350Jewel of Harmony enhancement
SmeltStoneSuccessRate1_AL0-350Harmony Refining Stone purification
SmeltStoneSuccessRate2_AL0-370Harmony Refining Stone smelt
AddLuckSuccessRate1_AL0-325Lucky option roll attempt 1
AddLuckSuccessRate2_AL0-320Lucky option roll attempt 2

Fruit Settings#

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

KeyDefaultEffect
FruitAddPointMin1Minimum stat points added per fruit
FruitAddPointMax3Maximum added
FruitAddPointSuccessRate_AL0-3-1Success rate override. -1 keeps engine default
FruitSubPointMin1Minimum subtracted per fruit
FruitSubPointMax9Maximum subtracted
FruitSubPointSuccessRate_AL0-3-1Subtract success rate override. -1 keeps engine default

HP Bonus System#

Grants bonus HP per master reset.

KeyDefaultEffect
HpBonus_AL0-31HP added per master reset, per tier
HpBonus_MAX1Absolute cap on total bonus HP. Missing key = 0

Bonus HP = master resets x HpBonus_ALn, cut down to HpBonus_MAX. The shipped cap of 1 makes the system almost do nothing (at most +1 HP). Raise HpBonus_MAX to use it.

Die System#

Chat announcements on death.

KeyDefaultEffect
DieUserSwitch1Broadcasts when a player dies
DieMonsterSwitch1Broadcasts when a notable monster dies

Online User System#

KeyDefaultEffect
OnlineGmSwitch1Announces GM login/logout
OnlineUserSwitch1Announces player login/logout

Experience Message#

KeyDefaultEffect
DisableExpMessage01 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.

KeyDefaultRemoves pushback from
DisableLightningEffect1Lightning
DisableCycloneEffect1Cyclone
DisableTwistEffect1Twisting Slash
DisableLungEffect1Lunge
DisableFallingEffect1Falling Slash
DisableUpperCutEffect1Uppercut

Wing Class Mix Restrictions#

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

KeyDefaultEffect
DisableWingMixDL01 prevents Dark Lord from mixing wings
DisableWingMixSU01 prevents Summoner from mixing wings
DisableWingMixRF01 prevents Rage Fighter from mixing wings

PK Event Access#

KeyDefaultEffect
PkCanEnterBC01 allows PK characters into Blood Castle
PkCanEnterCC01 allows PK into Chaos Castle
PkCanEnterDS01 allows PK into Devil Square

PK Item Drop#

Controls item drops from PKed characters.

KeyTypeDefaultEffect
PkItemDropSwitch0 or 10Master toggle
PkItemDropEnable_AL0-30 or 11 eachPer-tier enable
PkItemDropMinLevelint0Minimum character level before drops trigger
PkItemDropMaxLevelint15Maximum level at which drops still trigger
PkItemDropExecellent0 or 11Include Excellent items in the drop pool
PkItemDropSocketItem0 or 11Include Socket items
PkItemDropSetItem0 or 11Include Set items
PkItemDropHarmony0 or 11Include Harmony-enhanced items
PkItemDropRateint out of 10000100Drop chance per eligible item. 100 = 1%

Disconnect Online Account#

KeyDefaultEffect
DisconnectOnlineAccount1On duplicate login, kick the existing session instead of rejecting the new one

Castle Siege Skills#

KeyDefaultEffect
EnableCsSkillsAllMaps11 enables Castle Siege skill effects outside the CS map

Combo System#

KeyDefaultEffect
EnableComboToAllSwitch11 enables combo skills for every class
ComboEnablePushEffect11 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.

KeyDefaultEffect
OnlineRewardOfflineSystems01 applies rewards even while offline
OnlineRewardCoin1Delay60 minInterval for Coin1
OnlineRewardCoin1Value_AL0-30Amount per interval for each tier
OnlineRewardCoin2Delay60 minInterval for Coin2
OnlineRewardCoin2Value_AL0-30Amount per interval
OnlineRewardCoin3Delay60 minInterval for Coin3
OnlineRewardCoin3Value_AL0-30Amount 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
KeyDefaultEffect
MaxAttackSpeed290Cap on the speed a character reaches from stats alone. 0 = no cap
AttackSpeedOvercap50How much speed items, potions and buffs may add beyond MaxAttackSpeed. Stat (agility) speed alone can never exceed MaxAttackSpeed; bonuses stack on top of it and are clamped to this value. Absolute ceiling = MaxAttackSpeed + AttackSpeedOvercap. 0 = vanilla behavior, where bonuses cannot push past the cap
BaseSkillDelay1000Starting delay in ms (delay at speed 0)
SpeedGrowthFactor23APS gain per speed point. Higher = faster scaling
MinSkillDelay100Minimum delay in ms. Absolute floor

At the shipped defaults, stat speed caps at 290 (130 ms delay, 7.69 casts/sec) and bonuses may carry a character to 340.

Cross-File Dependencies#

Setting hereDepends on or affects
EnableCastleSiegeEvery Castle Siege schedule/reward block in Event.dat is inert when 0
WriteChaosMixLogGates log rows produced by ChaosMix plugin recipes
WriteLuckySpinLogGates log rows produced by the LuckySpin plugin (Data/Plugins/LuckySpin/ wheels)
GameDataOverlayPath of the overlay folder shadowing shared Data/ - see Data Overlays
Create Character SettingsCombines with Character.dat class availability
<CLASS>LevelUpPoint, PlusStatPointFeed stat growth curves in Character.dat
ServerMinReset, ServerMaxReset, ServerMinMasterReset, ServerMaxMasterResetCap reset limits defined per-command in Command.dat
EnableComboToAllSwitch, ComboEnablePushEffectCombo definitions live in CustomCombo plugin; this switch is the master gate
Skill Timing block (MaxAttackSpeed, BaseSkillDelay, SpeedGrowthFactor, MinSkillDelay)Per-skill scaling in SkillTweaks plugin
HelperSwitch, HelperActive*Pickup whitelist in MuHelperPickup plugin
CashShopSwitch, CashShopGoblinPointDelay, CashShopGoblinPointValue_AL*Cash shop catalog in Cash Shop
MasterSkillTree, MasterSkillTreePoint, MasterSkillTreeMaxLevelTree definitions in MasterSkillTree

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 hack log for [MoveSpeed] lines; raise MoveSpeedGuardTolerance/MoveSpeedGuardSlack, or set MoveSpeedGuardMode to 1 (log-only) while you look into it
  • Cannot create Rage Fighter - RFCreateLevel_AL* set to 250 (known bug)
  • Castle Siege schedule does nothing - EnableCastleSiege = 0

Last updated October 9, 2026