For the complete documentation index, see llms.txt. This page is also available as Markdown.

Changelog

See what's new added, changed, fixed, improved or updated

Upcoming - V2

V2 is not released yet. This is the full list of what it brings, so you can prepare configs and the database before it ships. Read Upgrading from V1 first.

Upgrading from V1
  • Client and GameServer must be updated together. The game data sync protocol went from v27 to v50, and many packets changed

  • DataServer and GameServer must be updated together (guild notice, Market, Talent Tree, Dungeons, Achievements, Bestiary, entry limits, Inscriptions, Kill Log, loot filter all use new DataServer packets)

  • New V2 installs get every table from the V2 MuOnline.bak. A V1 database upgraded by hand needs these scripts, in this order, before the V2 DataServer will start:

    1. DataServer\SQL\DatabaseObjects\dbo.TalentTree.Table.sql (file is UTF-16)

    2. dbo.DungeonProgress.Table.sql (or DataServer\migrations\dungeon_progress.sql, safe to re-run)

    3. dbo.AchievementProgress.Table.sql

    4. dbo.ItemExt.Table.sql

    5. dbo.PvPKillLog.Table.sql

    6. dbo.HelperLoot.Table.sql

    7. SQL\Migrations\add_resetsystem_missing_columns.sql - fixes Invalid column name 'ResetDay' and AutoReset settings never saving on databases made from the original script

    8. SQL\Migrations\add_luckyspin_missing_columns.sql - fixes spin charges and pending rewards not saving

    9. SQL\Migrations\add_optiondata_changeskin.sql - fixes Invalid column name 'ChangeSkin' and option rows never saving

    10. SQL\Migrations\0001_axiom_schema_version.sql

    11. SQL\Migrations\0002_market.sql - adds the Market columns and drops the old PShopItemValue table

    12. SQL\Migrations\0003_golden_archer.sql - adds the GoldenArcher table (Rena counts)

    13. SQL\Migrations\0004_bestiary.sql - adds the BestiaryProgress table (Bestiary kill counts)

    14. SQL\Migrations\0005_entry_limit.sql - adds the EntryLimit table (event and dungeon entry counts per account)

  • The DataServer now refuses to start on an old database. It reads dbo.AxiomSchemaVersion; if the table is missing or below version 5 it logs [Schema] NOT STARTING and never opens its port. An older database would otherwise make saves fail silently on missing columns

  • The boss list moved out of the Bridge config into Data\Plugins\BossClasses.xml. The <BossClasses> block in Plugins\Bridge\Config.xml is no longer read - copy your own entries into the new file. If the file is missing, no boss kills are announced or counted

  • The Launcher now reads Data\Local\UpdateConfig.ini instead of the .axiom files. Re-run ConfigEncoder and ship the new UpdateConfig.ini with the client. Without it the Launcher skips updates ([Update] Enabled reads as 0) and cannot show server status

  • Ship the new Skill.txt with both GameServer and client (weapon requirements moved into it)

  • Re-encode ClientConfig with the new ConfigEncoder. The client now only accepts a config of exactly the expected size; an old one is rejected, every setting falls back to built-in defaults, and the reason is written to the log. Bad values (zero divisors, zero frustum, broken fog values) are corrected and logged

  • Ship the new UI files under Data\Interface\UI\ with the client

  • Ship the new Data\Local\MapWater.xml with the client. Without it, water on normal maps stays vanilla (the Kalima sea shader still works)

  • EventTimerInfo.xml: the old <Section Header> tooltip format is no longer read (see Event Timer below)

  • ItemLevelCurve.xml ships turned ON and makes +10..+15 weapons and armor stronger than vanilla. Set Enable="0" to keep vanilla numbers

  • Creating a Summoner or RageFighter now needs its character card (sold in the cash shop), on by default. Characters that already exist are not affected. Set SUCreateType = 0 and RFCreateType = 0 in GameServerInfo - Common.dat to keep V1 behaviour (both classes free)

  • Dying to a monster now costs EXP (never zen or items), on by default. Set DeathExpPenaltySwitch = 0 in GameServerInfo - Common.dat to keep V1 behaviour (see Characters & combat)

  • ItemOption.xml no longer ships the leftover TEST block (option slots 14-28 on every weapon from +1 to +15: elemental damage, double damage, ignore defense, SD, PvP damage, PvP attack rate, BP, excellent and critical damage). Weapons lose those extra lines. Keep your old rows if you relied on them

  • The dead custom events (GvG, TvT, Kill All, PvP 1x1, Run and Catch, Russian Roulette, Hide and Seek, Quickly, EventStart) were removed. Ship the new Command.xml (their commands are gone); TvTEvent.dat and GvGEvent.dat are no longer read

  • Ship the new Move\Move.txt (Custom Arena entries) and Plugins\Events\CustomArena.xml

  • Movement speed guard settings changed in GameServerInfo - Common.dat: MoveSpeedGuardBurst and MoveSpeedGuardDeadzone are gone, MoveSpeedGuardSlack is new (default 3), MoveSpeedGuardTolerance default is now 35, and MoveSpeedGuardMode defaults to 2 (snap back, no kick). See Characters & combat

  • GameServer, DataServer and JoinServer must be updated together (cash shop purchases and Lucky Coin exchange changed between GameServer and DataServer)

  • New MaxPacketsPerSecond in GameServerInfo - Common.dat (default 250, 0 = off): a connection that sends more packets than this is disconnected and logged

  • New failed-login limits in JoinServer.ini: LoginFailAccountMax (5), LoginFailIpMax (20), LoginFailWindowSeconds (300), LoginFailBlockSeconds (300). 0 turns a limit off

  • Ship the new Item\ItemMove.xml: the Blood Castle weapon and the Cursed Castle Water can't go into a personal store or the guild vault

New systems
  • New UI engine (AxiomUI) with two skins: "classic" looks like vanilla, "axiom" is new painted art. Pick it with UI_Skin in ClientConfig.xml. Moved to the new engine: login, server select, character select and create, options, Esc menu, message boxes, character info and detailed stats, Resets, VIP, Guild info and create, Jewels Bank, Window Menu (U), Quick Command, Move (M), Commands (D), Party (P), Duel HUD, Help (F1), Pet info, Gens, Event Timer (H), quest log, Kanturu, Imperial Guardian, Doppelganger, Illusion Temple, Blood Castle / Devil Square / Chaos Castle entry, Lucky Coin, guild war / soccer score, Castle Siege gate lever, gatekeeper, guardsman, catapult, castle lord (Senatus) and battle map, duel spectator screens, invasions, the top-left map plate, the chat window, Sell Posts (S), Lucky Spin (K), the Lucky Item box (Jerridon), the Add Points popup, NPC dialogue, quest progress, the class quest NPC, the NPC shop, Julia, the inventory, extended inventory, vault, trade, chaos mix box, the X cash shop and all its popups, the Talent Tree, the Golden Archer, the MU Helper window (with its settings page and skill picker), the message boxes (NPC menus, event results, duel, progress bars, amount input, warehouse PIN keypad, item confirms, jewel combine / split), and the HUD overlays (buff icons, Pets card and low-durability icons, Hunting Log, party card, quest tracker, system messages, scrolling notice). In the axiom skin Resets, VIP and Guild are tabs of one "Character Services" panel. The layout XML files under Data\Interface must ship with the client

  • Talent Tree (free). A new skill tree window (N key) built entirely from the server's Data\Plugins\Characters\TalentTree.xml, so owners design the tree in XML with no client patch

    • Up to 3 categories. Nodes have tiers, max rank (up to 20), per-rank values, required nodes, "points spent in this category" gates and class filters. Some nodes only work with a given wing, full armor set, shield or weapon type

    • About 60 node effects: stats, HP/MP/SD/AG, defense, rates, crit/exc/double/triple, reflect, regen, resists, damage for a single skill, upgrading a skill to its Improved/Enhanced form, granting a skill, exp/master exp/drop/zen %, and lower reset level requirement

    • Points come from master levels by default (PointSource="MasterLevel"), or from Level, Reset or Manual

    • "Reset Tree" gives all points back for zen (Respec, RespecZen, default 10,000,000)

    • TalentTree.vanilla.xml is the vanilla S6 master tree converted to talents - copy it over TalentTree.xml to use it. Vanilla nodes that grant a skill the client cannot cast are left out

    • Tooltips show units, next/max rank and unmet requirements in red. GM command /talent points <n>. Saved per character on the DataServer

  • Item Tiers (paid). Group items into named quality tiers (e.g. "Legendary") by index range in Data\Plugins\Items\ItemTiers.xml. Each tier multiplies the bonuses an item already has, with a separate multiplier per type: excellent, +option, luck, item options, implicits, ancient set, set stats, sockets, harmony, 380, and optionally base damage/defense. Nothing is stored on the item, so existing items are tiered the moment the file loads and go back to normal when a tier is removed. The item name is drawn in the tier colour with the tier name under it, and the tooltip shows the scaled numbers. Ships with example tiers commented out, so nothing changes until you add some

  • Achievements (paid). Achievements window in the Window Menu (U) with one tab per category and a points total

    • Up to 8 tiers per achievement. Each tier gives points and up to 4 rewards (zen, exp, items, item bag, buff, level/master points, WCoin/Goblin points) that the player claims with a Claim button

    • Triggers: monster, boss and player kills, level, resets, NPC talk, maps visited, event wins, chaos mixes, item upgrades, pickups, Lucky Spin, quests, play time, trades, Market sales, rare drops

    • One XML per category in Data\Plugins\Achievements\. Ships 6 categories and 64 achievements. _TEMPLATE file lists every field

    • Unlocks and claims save at once, the rest every AutosaveSec (Settings.xml, default 180). GM commands $achstate, $achset, $achreset, $achreload

  • Dungeons (paid). Timed, instanced runs on normal maps, solo or as a party. Others on the same map cannot see your run, its monsters or its drops

    • Party runs: the party leader presses Enter and the whole party goes in together. The leader pays the entry fee once. Every member must stand near the leader (PartyRange, default 10 tiles), be alive and high enough, and have that level unlocked; if one does not, the leader sees who and why. A party member outside can press Enter to join a run that is already going

    • Dying, leaving, disconnecting or leaving the party takes only that member out. The run ends when the leader leaves. On a clear, every member still inside gets the unlock and their own reward roll. Kill drops can be picked up by the whole party

    • Tier scaling: each tier (or level) sets monster Life, Damage, Defense, EXP and Drop as a % of normal, plus extra % for each extra party member, so Heroic and Mythic are really harder and a 5-player run is harder than a solo one. "Forgotten Depths" ships with Heroic at 160% life / 150% EXP and Mythic at 250% life / 220% EXP

    • New browser layout in both skins: Dungeon, Monsters, Requirements and Rewards as icon grids instead of a text list. Requirements turn green or red (level, unlock, zen, the fee item with have / need), the fee item shows its real model, every entry has a tooltip. Ship the new fragments\dungeon.xml, fragments\axiom\dungeon.xml, both skins and the new skins\axiom\icon\dgn_*.png icons

    • Open the browser with L or at the dungeon NPC (NpcClass). It shows each level as Locked, Open or Cleared, with map, time limit, monster count, death rule, reward, entry fee, min level and schedule

    • Up to 3 tiers of 5 levels. Clearing a level in time unlocks the next. Each level sets map, spawn, walkable areas, time limit, whether death ends the run, zen/item entry fee, monsters and bosses, reward bag and exit gate

    • During a run every way out except Leave is sealed: map portals, the Move window (M), /move, town portal scrolls, party summon and event teleports ("Teleports are sealed during a run. Use Leave to exit."). Only the level's ExitGate still works. A HUD shows the countdown and "Monsters X / Y". If time runs out there is no reward and everyone is moved out after ExpiredGraceSec (default 15 s, time to pick up loot). Before, a failed run never closed and players stayed inside until they left

    • One file per dungeon in Data\Plugins\Dungeons\, with <Schedule> for opening hours. Ships "Forgotten Depths" (Lost Tower, Normal/Heroic/Mythic). GM commands $dgnenter, $dgnleave, $dgnstate, $dgnclear

  • Inscriptions (paid). A new permanent way to power up items

    • The first time a weapon, armor, shield, wing, ring or pendant lands in an inventory, warehouse or chaos box, it rolls a hidden Potential (0-100). Plain items roll high (50-100), excellent/ancient/socket items low (25-45), harmony/380 items in between (35-60)

    • The Chaos Goblin has a new Inscription tab that spends Potential: open a slot (weapons 3, armor/shields/wings 2, jewelry 1), inscribe it (pick the effect with a catalyst jewel, or roll a random one), Forbidden Inscribe (cheap random, failure corrupts the slot forever), and Empower (raise one tier). The tab previews what the mix will do

    • About 110 inscriptions: flat bonuses, "% of a stat as a bonus", bonuses per corrupted slot, and skill changes (more damage, faster cast, shorter cooldown, debuff on hit, use a skill while the item is worn). Some are limited by class

    • Inscriptions are permanent. A failed mix loses the materials, corrupts the slot or destroys the item, per recipe. A recipe can bind the item to the character

    • Tooltips show "Potential X / Y", every slot and "Bound to" plus the character name. Inscriptions follow the item through trade, warehouse, drops, Market and Sell Post

    • Config: Data\Plugins\Inscription\Inscription.xml, Pools.xml, Recipes.xml. GM command /insc info|pot|set|corrupt|clear (item in the first inventory slot). Unlicensed or disabled: nothing happens and nothing is lost

  • Bestiary (paid). Kill counts per monster family unlock permanent bonuses against that family, like Terraria banners. Open it from the Window Menu (U)

    • Families group monsters (e.g. all Skeletons). Each family has up to 8 kill milestones; each milestone gives one bonus against that family: Damage (+% damage dealt), Guard (-% damage taken), Spoils (+% drops and zen) or Hunter's Mark (chance a kill counts twice). Each bonus is capped per family (Cap, default 10%)

    • A kill counts for every player who gets EXP from it, so parties progress together

    • Map mastery: finish every family listed for a map and get +EXP% on that map

    • Window: family list with progress, milestones as cells (green when reached), your current bonuses, the monsters that count and the map mastery state. A toast pops on each milestone (achievement toast spot; click it to open the Bestiary on that family)

    • Config: Data\Plugins\Bestiary\Bestiary.xml (ships a small example: Lorencia, Dungeon and Lost Tower families). GM commands $bststate, $bstset, $bstreset, $bstreload. Needs migration 0004_bestiary.sql

  • Bosses (paid). Any monster class listed in Data\Plugins\World\Bosses.xml becomes a boss, however it spawns (map spawn, invasion, Summon Item, dungeon, /monster)

    • It scales with the players fighting it: +% Life, damage and defense per extra fighter (LifePerPlayer, DamagePerPlayer, DefensePerPlayer, MaxPlayers). ScaleMode="Live" follows the count up and down, "Peak" only rises, so leaving does not weaken it

    • Every player's contribution is tracked: damage dealt, healing done to fighters and damage taken from the boss, each with its own weight

    • When it dies, rewards are personal and by rank: top players, the top party, the top guild and a participation bag, each from an ItemBag, straight into the inventory or dropped owned by that player. The boss's normal loot is not dropped, so nobody can steal the kill. The top 3 are announced to the map or the server

    • Players near it see a boss HP bar at the top centre (boss name on the plaque, HP as numbers and %, and "+40% HP" while extra players have made it stronger), and a contribution card at the lower right with their share and rank, how many are fighting and the top 5. The card drags by its header and remembers where you put it

    • Field bosses: add a <Spawn> to a boss and the server spawns it on a map at a random spot from your list, at server start and again after it dies (random minutes after death like Respawn="60-90", or clock times like Times="12:00,20:00"). It announces "has appeared" and warns N minutes before (Warn), to the map or the whole server

    • Boss scripts: add a <Script> to a boss to give it phases (by HP % or time: more damage or defense, a new set of attacks, a line on screen) and special attacks:

      • Slam: the exact hit area is drawn on the ground (circle, cone, line, or a donut that is safe in the middle) with a timer line, and it lands on whoever is still inside. Damage is a % of each victim's max HP, with optional stun, freeze or knockback

      • Summon adds (a phase can make the boss invulnerable until they die), pull far players in, teleport to a player, heal, say a line

      • Enrage timer after N seconds of fighting

      • Cast any vanilla skill (Type="Skill", e.g. Decay or Meteorite) with its own effect and damage. Vanilla="0" turns off a boss's hardcoded spells (Medusa, Kundun ...) so the script decides every skill

      • Medusa ships with a 3-phase script as an example

    • Bosses never roll affixes. Ships with Medusa and Kundun configured (Selupan as a commented example). Ship the new fragments\bosshud.xml, fragments\bosscontrib.xml, boss\frame.png (all under Data\Interface\UI), shells and skins with the client

  • Monster Affixes (free). Open-world monsters can spawn as Magic, Rare or Champion with 1-4 affixes (over 80 in the default config: Frozen, Venomous, Thorned, Vampiric, Shielded, Volatile, Splitting, Summoner, Blinker, Pack Leader, Fleet, Giant, Wormhole, loot affixes like Jeweller and Golden, and more)

    • The HP bar is coloured and widened by tier, the name reads like "Frozen Brutal Bull Fighter", and a row of affix icons sits under the bar with a hover description

    • The monster gets a tint, glow, size change, a ground ring and an aura per affix. Area attacks are telegraphed: a ring on the ground shows where damage lands about 1s later

    • Rarer tiers give more exp, zen and items, extra loot rolls, and Champions drop a bag (EventItemBag 201-215)

    • Config: Data\Plugins\World\MonsterAffix.xml (tiers, affixes, map and class blacklists). Event maps are excluded. Dungeon monsters can roll affixes with <Rules AllowDungeon="1">. GM commands /affix <tier> <ids>, /affixinfo, /affixreload

  • Custom Skills (paid). New skills are added in Data\Plugins\Characters\CustomSkills.xml with no code changes: icon, tooltip, learn item, requirements, targeting, damage, buffs, debuffs and visual effects. MuHelper can use them and they work in combos. Shipped skills:

    • Meteor Storm (Wizard), Soul Seeker (Wizard)

    • Fire Blow (Knight), Blood Storm (Knight, Magic Gladiator)

    • Focus Shot (Elf), Party Healing (Elf)

    • Havok Spear (Magic Gladiator)

    • Wind Soul (Dark Lord)

    • Learned from new scrolls and orbs in Item.xml (do not drop - hand them out through shops or GM). New attack skills must be added to CustomCombo.xml as Secondary to combo

  • Market (replaces the personal store). Up to 50 items per store, each priced in one currency: Zen, Jewel of Bless, Soul, Chaos, WCoin C, WCoin P or Goblin Points

    • Items left in the old store grid move into store rows on first login

    • Cannot be listed: event items, rental/periodic items, lucky items, items with AllowStore=0 in ItemMove, bound items, /locked items, socketed pentagrams, trade-blocked items

    • Stores cannot open in Chaos Castle, Illusion Temple, the Custom Arena map (40) or maps in <BlockedMaps>. Castle Siege is not blocked unless you add map 30

    • The inventory's store button opens "My Store": drag or right-click items in, set prices, take items back, open or close the store, collect earnings, and see recent sales in the "Sold" tab

    • Clicking another player's shop (or /purchase) opens their store. Buying always asks for confirmation. The seller gets "[Market] X bought your Y" in chat

    • S (or /market) opens Market search for this GameServer: filter by name, excellent, ancient, socket, luck, skill, additional option, min level and currency, sort by newest or price. Search works in safe zones only

    • Prices are 64-bit, so zen prices above 4.29B work

    • Coin purchases use escrow on the DataServer: the buyer's coins are held, then the seller is paid or the buyer is refunded. Coin sales stuck for 10+ minutes (GameServer crash, link drop) are settled automatically every 60s

    • Config: Data\Plugins\Market.xml (MaxRows, OpenMinLevel, SearchSafeZoneOnly, StoreViewRange, SearchPageSize, SaleLogKeep, <BlockedMaps>, per-currency Commission, Min, Max). Needs a restart to change

  • Market offline store. "Go Offline" in My Store closes the game and your character keeps selling in town. A confirmation shows the max time and the cost. It ends on relog, sell-out, MaxMinutes (default 1440), server shutdown, or when the hourly cost cannot be paid (default free). Listings are kept. Cannot run together with the helper or offline attack. <Offline Enabled SafeZoneOnly MaxMinutes CostPerHour> in Market.xml

  • Chaos Goblin Recipe Book. Talking to the Chaos Goblin opens a recipe book first, grouped in category tabs. Each recipe shows its materials, result, required level, max success rate and how many of each material you carry. "Combine" opens the chaos machine with that recipe pinned and lists what is still missing. A "Recipes" button next to Mix goes back. Built from ChaosMix_Recipes.xml (new display attributes Display Category, Display Result, Display ResultRandom, Source Group). A recipe can now have up to 16 materials (was 8)

  • PvP Kill Log (free). "Kill Log" in the Window Menu (U) with Deaths and Kills tabs. Click a fight to see every attacker, damage per skill, HP/SD at death and the last hits with crit/excellent/double/triple/combo tags. A death recap pops up when a player kills you. Covers world PvP, duels, siege, events, Gens and guild wars. Config Data\Plugins\KillLog.xml (KeepPerChar default 50, FightTimeoutSec, MinTotalDamage, which PvP types to record)

  • Drop Codex (free). "Codex" in the Window Menu (U). Type 2+ letters of an item name and the server lists every source that drops it: monster, map, level range, spawn count, item level and chance per kill for your character. No config

  • MuHelper loot filter. A "Loot filter" tab in the Drop Codex (also from new "Codex" / "Filter" buttons in the MuHelper Obtaining tab). Up to 100 Pick up / Ignore rules per character, for one item or a group (any gear, weapons, armor and shields, wings, jewelry), with conditions: min level, excellent count, ancient, skill, luck, additional option, sockets, min drop level, my class. Ignore beats every pick rule and checkbox. Zen and jewels are never blocked by "Any gear". Saved on the server, and the offline helper uses the same rules

  • NPC voices. 63 NPCs say a short line when you open and close them (about 300 clips). Music dips while they talk. Data\Local\NpcVoice.xml (CooldownMs, DuckMusic), clips in Data\Sound\Voice\

  • Item level curve. Owners set how much +1..+15 adds to damage, defense, block rate and magic defense per item range, as a Flat amount plus a Percent of the +0 value. Data\Plugins\Items\ItemLevelCurve.xml, reload with /reload item, players relog to see new values on carried items. Shipped ON: +15 weapons get +110 damage + 45% of base (vanilla about +66). Shields and wings stay vanilla. Item tooltips now show the server's real +level numbers (the old client showed +36 at +15 while the server gave +66)

  • Item Extension layer. Items can now carry extra saved data by serial (DataServer table ItemExt). It follows the item through trade, warehouse, ground, Market and Sell Post, and is deleted when the item is sold to an NPC, used in a mix or despawns. Used by Inscriptions

  • Shared boss list Data\Plugins\BossClasses.xml (31 bosses) used by Bridge announcements and Achievements. Achievements no longer counts any monster as a boss kill

Server Manager & tools
  • New Axiom Server Manager (AxiomServerManager.exe) replaces ServerStartUp

    • Starts servers in order with delays, Stop All in reverse. Restarts crashed servers (AutoRestart, RestartDelayMs). Can hide the server windows

    • Live status, live log, CPU/RAM/disk/network and player graphs for every server

    • Commands tab per server. GameServer: all reload.*, event.start.*, event.start.arena <0-13>, server.close.1m/3m/5m, server.logout.all, server.disconnect.all, notice <text>, user.kick <account>. ConnectServer: reload.serverlist

    • Players tab (online list with kick, players per map), Invasions tab (state, next start, force start, reload)

    • SQL Server window: CPU, requests/s, sessions, memory, blocked and running queries, waits. Uses the DataServer DSN unless SqlConnection is set

    • Settings in ServerManager.xml next to the exe

  • Server Manager updates (from 2.0.1 on). The Updates button turns orange when a new version is out; it never installs by itself. Install checks the package signature, backs up files and database, runs new SQL\Migrations\NNNN_*.sql, keeps your config (new ini keys are added with defaults, edited files stay live and the shipped one is saved as <file>.new), starts everything and checks each server reports the new version. If anything fails, it rolls back. UpdateChannel STABLE or RC

  • Every server (GameServer, DataServer, JoinServer, ConnectServer, BridgeServer) has a control channel for the Manager: ControlPort (0 = off), ControlKey, ControlBind (default 127.0.0.1), ControlInstance. Default ports GS 55990, DS 55991, JS 55992, CS 55993, BS 55994. A second GameServer on the same machine needs its own ControlPort. Set ControlKey before binding to anything other than 127.0.0.1

  • New AXIOM Config Editor (Tools\ConfigEncoder\AxiomConfigEditor.exe). Edit ClientConfig.xml, ServerConfig.xml and MapFog.xml in a form with limits checked. "Save + Run ConfigEncoder" shows the encoder's warnings in a Problems list. It never encrypts by itself

  • AxiomEditor no longer fails to open Item.xml or ChaosMix files with a wrong encoding= header (for example utf-16 on a UTF-8 file copied from another server). The game always ignored that header

  • ConfigEncoder now always writes a plain Data\Local\UpdateConfig.ini ([Update] Enabled/ServerIP/ServerPort/UseHTTPS, [Game] GameServerIP/GameServerPort)

  • Launcher no longer deletes client files when the updater is off. It ran the full update even with Enabled="0", including the step that deletes every file missing from the manifest, which wiped installs. It also no longer deletes anything when the manifest is empty or fails to download. UpdateConfig.ini and LauncherConfig.ini are protected

  • Launcher is no longer Themida-packed and has real version info. Antivirus flags dropped from 40/71 to 1/71 on VirusTotal

Performance & stability
  • Fixed GameServer crashes that could happen when many players log in, log out, change characters or trade at the same time

  • Major performance improvements, GPU now skins bones and particles/effects are batched

  • GameServer now holds far more players on the same hardware (tested: 800 fighting bots stable on a 4 vCPU VM)

    • Outgoing packets are batched per player: one encrypt + one send per flush instead of one per packet per recipient. A player's own replies are never delayed. SendBatchWindow in GameServerInfo - Common.dat (ms, 0-200, default 50, 0 = off, restart to change; not in the shipped file, add the line to change it)

    • Sending no longer puts 64 KB of buffers on the stack per packet; encryption writes straight into the socket buffer

    • Send completions no longer queue behind the global socket lock

    • Nagle is now off on player sockets when send batching is on (the GameServer never actually set it), which lowers ping under load

    • Viewport: empty monster viewport lists are skipped, adding to a full list returns at once, monsters only search players/summons instead of every nearby object, and the spatial grid only clears the cells it used

    • Spawns and item drops are sent right after the viewport tick instead of waiting for the next batch

  • Built-in GameServer profiler: CPU per section and per thread, written once a minute to Perf\YYYY-MM-DD.txt. PerfProfiler in GameServerInfo - Common.dat (default 1; not in the shipped file)

  • Character saves are no longer lost when many players disconnect at once. The GameServer's send buffer to the DataServer was a fixed 512 KB; a mass logout overflowed it, the GameServer cut its own DataServer link and dropped the queued saves. The buffer now grows as needed

  • GameServer now always recovers after a DataServer or JoinServer restart. With several GameServers, one could stay connected but refuse all logins until relaunched. Reconnects are now thread-safe, a clean close by the other side is detected, late close messages no longer kill a fresh link, the JoinServer link re-registers on every reconnect, and logins are re-enabled whenever both links are up

  • Moved or traded items no longer come back after a relog. Since the 4-thread DataServer save queue (V1.0.7), two saves of the same account could run at the same time, and an older full save could finish after a newer one and bring back the old inventory. Every message for one account now runs one at a time, in order. Other accounts still run in parallel

  • Item changes now persist within ~2s: jewel use (vanilla + custom), NPC buy/sell/repair, inventory moves/equip. Previously only saved on 3-min autosave or logout

  • Chaos mix results are no longer lost or duplicated if the window closes while the DataServer is answering. Materials are used up the moment the mix is sent, the result goes to the box if open or to the inventory, and the box stays locked until it arrives (max 30s). If nothing fits it is logged as [ChaosResultLost] so a GM can restore it

  • Items created straight into the inventory (cash shop, /make, jewel mix/unmix, Lucky Coin, Moss, start items) are no longer lost if the inventory filled in the meantime. They drop at the player's feet, owned by the player

  • Ground items no longer vanish or replace each other on busy maps. The client had room for only 1000 ground items, so every drop past that overwrote another one on screen. The limit now matches the server (8000)

  • Object limit raised from 17000 to 32000 (monsters 15000 to 30000) for dungeon instances

  • Crash fixes: splitting a jewel bundle in the extended inventory, durability update for an item in an extended slot. Fixed possible memory corruption in trade with more than 10 matching items, and a one-byte overflow when reading a letter

  • Reload Common no longer breaks plugin items. Reloading Effect.xml wiped the effects the Item Effect plugin adds, so its items did nothing when clicked until a restart. Reloading Item.xml dropped every custom pet and mount, and reloading the Custom Pets plugin then skipped all of them as "collides with Item.xml". Both are re-added after a reload now

  • Monster MoveSpeed, CustomSkills.xml and ItemLevelCurve.xml now reload with their parent configs. Players who log in after the reload get the new values

  • Selupan fight no longer drops from 120 to 50 FPS. His slam decal drew about 40,000 ground tiles one by one every frame; it now draws only the visible tiles in one batch. Helps every ground decal (magic circles, meteor shadows)

  • Ground item names (ALT) are much cheaper to draw (400 labels used to cost about 50 FPS), no longer stack on top of each other, and draw under HP plates, chat bubbles and the system message box

  • Minimized and alt-tabbed clients no longer eat CPU. Skipping rendering while minimized was only wired up for windowed mode, so a minimized fullscreen client still ran the full frame loop. Worse, a fullscreen client that lost focus hit vanilla's anti-multibox path: it called SetForegroundWindow, cycled the window through minimize and maximize to drag itself back in front, and closed the client outright on the second attempt - all inside a loop with no sleep in it, so it held a full CPU core while doing it. Fullscreen clients now behave like windowed ones: minimized or in the background they keep running game logic (helper, network, reconnect) at 25Hz with rendering skipped, they stay minimized, and they do not close themselves. The frame limiter also yields its timeslice instead of spinning through the last couple of milliseconds of each frame, which it was doing once per frame per client

  • Removed a dead packet hex-dump loop that a modified client could use to overflow the stack

  • Imperial Guardian runs much faster. All four Imperial Guardian music slots use the same track, and every frame one map's music code stopped it and the next restarted it, about 8 ms per frame. The music also plays there now (it restarted every frame, so it was never heard)

  • Imperial Guardian torches, fire bowls, smoke, waterfalls and candles no longer spawn 2-5x too many particles at unlocked FPS (they fired once per rendered frame instead of once per game tick)

  • The client no longer closes with "LoadBitmap Failed: Data\World3\mini_map.tga" after Imperial Guardian. It could only use 2 GB of memory and ran out loading the next map; it can now use 4 GB on 64-bit Windows. A minimap that fails to load no longer closes the game

  • The client no longer crashes on exit (access violation right after "Destroy" in MuError.log)

Monsters & world
  • Respawn speed: Data\Plugins\World\RespawnRate.xml scales the Monster.xml RegenTime of normal map monsters. A global % (Rate), a % per map (<Map Index Rate>), and optional crowd scaling: respawn gets faster for each player on the map above From, never faster than Floor %. Event maps, field bosses, invasions, summons and dungeon monsters keep their own timings. Ships unchanged (100%, crowd off)

  • Monsters now leash: dragging one too far makes it give up, walk home, heal and reset damage credit. Configurable via MonsterLeashDistance / MonsterLeashReturnHome / MonsterLeashHealOnReturn in GameServerInfo - Common.dat, disabled by default (MonsterLeashDistance 0). The leash fires at the spawn's wander radius plus MonsterLeashDistance extra tiles (invasion spawns count as 30). Previously an aggroed monster ignored its wander radius entirely and, once aggro lapsed, stood frozen wherever it stopped until it died. A monster that loses its target while outside its wander radius heads home straight away rather than waiting to be dragged the full leash distance first - outrunning a chase used to leave it standing in the field, because a monster past its home radius is not allowed to pick a wander destination either, so it could neither chase, wander nor leash. If the way home turns out to be blocked for good, it settles where it stands after 30s and resumes wandering there instead of retrying forever. Blood Castle, Chaos Castle, Devil Square, Kalima, Illusion Temple, Doppelganger, Imperial Guardian and Castle Siege monsters are excluded, as are event boss waves

  • Monsters now find their way around obstacles instead of getting stuck on them. The router walked greedily toward its target and, after its first step, could only turn 45 degrees at a time and never turn back - so any concave shape (a building corner, a bridge railing, a bend in a wall) trapped it. It also gave up after ten backtracks and refused outright to plan any route longer than fifteen steps. When it gave up the monster did not move at all, and re-failed identically on every tick afterwards, which is why a monster that lost its line to you could stand frozen indefinitely. Movement now uses a breadth-first search: it finds a route whenever one exists nearby, walks the first stretch of a longer route and re-plans as it goes rather than refusing the whole thing, and when you are somewhere it genuinely cannot reach it closes to the nearest tile it can get to instead of stopping dead. The search allocates no memory while it runs and stops as soon as it has a route, rather than scanning the surrounding area every time

  • Monsters now walk on your screen at the same speed they walk on the server. The client moved every monster at one fixed speed (about 400ms per tile), while the server uses each monster's own MoveSpeed from Monster.xml (400 to 1600ms). Slow monsters - the Bloody monsters in Aida are 700 - reached you on screen seconds before they reached you on the server, so close-range skills (Death Stab, Fire Blow) played their animation on a monster that was really still 2-3 tiles away and dealt no damage until you stood still and waited. The server now sends every monster's speed at login and the client walks each one at that pace. Changing MoveSpeed and reloading monsters applies to players who log in afterwards

  • Speed changes on a single monster now show on screen too: the Fleet affix, a pack leader's Hastening aura and the Ice slow. Before, the server walked a Fleet monster 40% faster while the client still drew it at normal speed, so it reached and hit you before it visibly arrived - Fleet was only an icon. The server now tells nearby players whenever a monster's speed differs from normal or changes, and the client walks it at exactly that speed

  • The server now walks characters and monsters at their real configured speed. Movement is checked on a 100ms timer, and every step was counted from the moment the timer noticed it instead of from when it was due, so each tile took up to 100ms longer than configured (400ms ended up nearer 500ms). The server was always behind what players saw on screen - for their own character and for monsters

  • Bosses no longer stand idle or rarely cast (Nightmare, Balgass, Gaion, Imperial Guardian bosses, Kanturu monsters). MonsterSkill.xml "*" was read as 0, which filled empty skill slots with skills that did nothing. Nightmare no longer freezes after summoning (MonsterAIUnit.xml units 68-70). New GM command /aigroup <group> [del|0-3] attaches AI to bosses spawned with /monster

  • Monster HP bar shows the monster's level in grey after its name, e.g. "Bull Fighter [63]"

  • Ground item slots can be set per map with a new MaxItems attribute in MapManager.xml (default 500, max 8000, read at startup only). Players only scan nearby cells for items

  • Removing a monster AI group (Crywolf, Kanturu, Raklion style) no longer deletes unrelated monsters that reused a dead member's slot

  • Monster names longer than 10 characters no longer spill into the next field; "Killed by monster" shows the full name

  • Party experience share range is now configurable. A party member gets a cut of a kill if they are within 10 tiles of the monster, measured as a straight line on the same map - vanilla never checked whether anything stood in between, so members could be fed through walls from a neighbouring room. PartyExperienceDistance in GameServerInfo - Common.dat sets the radius in tiles, and PartyExperienceRequireLOS additionally requires a clear line of sight, blocking the share when a wall sits between the monster and the member. Both default to vanilla behaviour (10 tiles, walls ignored). Party heal and buff range is unaffected and stays at 10

  • Monster spawns reworked on several maps (MonsterSetBase): Dungeon, Lost Tower, Atlans, Tarkan, Icarus and Aida got many more spots; Lorencia, Noria and Kanturu 1 were thinned out; Arena spawns removed

  • Monster damage to players can now be tuned. MonsterDamageRateToDW ... MonsterDamageRateToRF in GameServerInfo - Character.dat set how much damage each class takes from monsters, and a new per-map MonsterDamageRate in MapManager.xml scales it per map. The vanilla rule that a player's defense counts only 50% is now PlayerDefenseRateVsMonster and PlayerDefenseRateVsPlayer (both default 50). All defaults keep vanilla behaviour. Player summons are not affected

  • Monsters can have an element weakness and strength: Weak="Fire" Strong="Ice" in Monster.xml, or a map default with ElementWeak / ElementStrong in MapManager.xml. A skill of that element deals ElementWeakBonus% more or ElementStrongPenalty% less (Character.dat, default 20/20). Element badges sit beside the monster's HP bar, in the same style as the affix icons: the weakness on the left (green rim, up arrow), the strength on the right (red rim, down arrow), with a hover tooltip ("Weak to Fire: Fire skills deal extra damage"). Ship the new Data\Interface\UI\atlas\element.png / element.xml with the client. Skill tooltips show the skill's element ("Element: Fire", from the Skill.txt Type column) so players can pick the skill that matches Monsters can also have Earth, Wind and Water resistance now (Resistance4-Resistance6, optional). The shipped Monster.xml sets no weaknesses yet

  • The monster kill EXP formula is now config: ExpBaseOffset, ExpBaseDivisor, ExpLevelGapFree, ExpHighLevelBonusFrom, ExpHighLevelBonusDivisor, ExpFinalRate, ExpPartyLowLevelSupport, ExpPartyHighLevelBonusBase, ExpPartyHighLevelBonusDivisor in GameServerInfo - Common.dat. Defaults give the same EXP as before

  • Party EXP no longer wraps around at high rates (the shared pool was a 32-bit number, so a level 200 monster at x100000 could pay a tiny or garbage amount). The special party bonus (PartySpecialExperience) now needs 3 different classes in range; it counted duplicate classes before. The party bonus for monsters level 65+ now uses the party's average level instead of the killer's level for every member. PartyGeneralExperience6-10 / PartySpecialExperience6-10 were written past the end of a 5-slot array and are no longer read

  • Kalima 7 monsters (Death Angel, Death Centurion, Bloody Soldier, Aegis, Lord Centurion, Necron, Schriker and Kundun, classes 268-275 and 331-338) now use their skills. A typo (&& instead of ||) meant they never got them - Kundun had no poison, fire slash, summon or immunity

  • Monster HP is capped at 2,000,000,000. Medusa's 78,000,000,000 was silently cut to about 2.1 billion and then turned negative inside the EXP math, so Medusa kills paid wrong EXP. Too-large values are now clamped at load and spawn (also through CustomMonster, affixes and Summon Items) and logged in red at startup

  • Monsters patrol around their spawn again. The patrol target took its Y coordinate from X, so wandering monsters drifted along a diagonal

  • A monster's aggro list no longer fills up with the same player. Each time a player walked back into view they were added again, until the 20-slot list was full

  • Kanturu 2 traps (Laser Trap and Canon Trap) now sit exactly where they are placed. They used the random spawn type, so each one landed up to 3 tiles away from its spot and moved again on every restart and respawn. Laser traps hit players standing away from the beam and missed players standing in it. All 27 now use the fixed type, like the Kanturu 3 traps (038 - Kanturu 2.xml)

Events
  • Kalima 1-7 entry rules can now be set per tier: level, reset, grand reset and master reset ranges. The same rules apply to Lost Map +N and Kalima Ticket. KalimaTier1..7 Min/Max Level/Reset/GrandReset/MasterReset in GameServerInfo - Event.dat (all -1 = vanilla level brackets), and KalimaMasterAnyTier (1 = master characters may enter any tier)

  • Kalima ticket now properly assigns the map (was always 1 tier lower). It sends you to the highest Kalima you qualify for

  • Kalima ticket and Lost Map tooltips show the requirements from Event.dat (they used Illusion Temple brackets), with your highest stage highlighted and a red line if you do not qualify

  • Castle Siege: Gems of Defend and Jewels of Guardian in the extended inventory now count

  • Entry limits per account: Data\Plugins\Events\EntryLimits.xml sets how many times an account may enter Blood Castle, Devil Square, Chaos Castle, Illusion Temple, Imperial Guardian and Doppelganger per day and per week (MaxPerDay, MaxPerWeek, ResetHour, WeekResetDay). Dungeons take MaxPerDay / MaxPerWeek on their <Dungeon>; the dungeon window shows an "Entries 1/3" cell under Requirements (ship skins\axiom\icon\dgn_entries.png and both skins). All characters of an account share the count. A player with no entries left is refused before the ticket is used and told when it resets; in Imperial Guardian and Doppelganger the party goes in without that member. Add EntryLimit="BloodCastle" to an Event Timer row and its tooltip shows "Entries: 2/3 today". Everything ships at 0 (no limit). Needs migration 0005_entry_limit.sql

  • Invasion HUD and map names can be 32 characters (were cut at 24/16)

  • Invasion monsters with RegenType="1" now respawn (after RegenTimeSec, near where they spawned). Before, they never came back once killed. An invasion with respawning monsters ends on its timer, not when all are killed

  • Blood Castle's bridge no longer stays raised after it has opened. The bridge dropping and the gate walls coming down were each announced once, to whoever was registered at that exact moment, and the client played the drop as a short one-shot animation. Any client that could not act on that moment - the map still settling, the world not active yet on that frame - kept the raised bridge model and the closed gate for the rest of the run, while the server had already opened the way and everyone else walked straight through it. The bridge and gate state is now re-sent to each player until it has landed, and the client remembers what the server told it instead of relying on the animation reaching its last frame, so a missed drop is corrected on the next tick rather than never. A side effect of the old behaviour was that the gate posts beside the bridge could be left in their closed pose too, depending on the order the map objects happened to be drawn in

  • Event Timer (H) supports up to 3 tabs, colours, headers and bold lines from EventTimerInfo.xml (<Tabs>, Tab=, NameColor=, <Header Color>, <Line Color Bold>). Tooltips can be about 2000 characters (was 1024). The old <Section Header> format is no longer read. Arena slots 29-33 were mislabelled; fixed

  • Kanturu event HUD no longer shows 0 seconds during the last minute

  • Custom Arena class fights (Survivor, MG vs MG, DW vs DW, DK vs DK, RF vs RF, DL vs DL, Elf vs Elf, SUM vs SUM) can be joined again. They ran on schedule but nothing pointed at their entry gates, so nobody could get in and they never started. Players now join from the Move window (M) while an arena is open ("Arena DW vs DW" and so on, Move.txt 70-77). The open announcement says how to join, and the arenas have English names instead of "GMxGM", "BMxBM"

  • Removed the dead custom events: Guild vs Guild, Team vs Team, Kill All, PvP 1x1, Run and Catch, Russian Roulette, Hide and Seek, Quickly and EventStart. They were switched off but still ran every tick and left hooks in combat, trade, death and respawn code. Their commands (/veloz, /abrirevento, /participar, /pegapega, /queroir, /escesc, /roletarussa, /offpvp, /pvp, /matamata, /starttvt, /startgvg) and GameServer menu items are gone; the TvT and GvG rows in the Event Timer are disabled

  • Golden Archer works again (free plugin, Data\Plugins\Events\GoldenArcher.xml). Talk to him to open the Rena window next to your inventory. "Register" hands in one Rena, "Register All" hands in every Rena you carry, extended inventory included. The count is per account and saved on the DataServer. Rewards (zen, items, event bags, chat message) are set per count in the XML: Every repeats, At fires once. Defaults: 30,000 zen every 10 Renas, a Box of Heaven every 25, jewels at 100/250/500/1000. Window text is in GameStrings.xml (11400-11403). Needs SQL migration 0003

  • Castle Siege battle map: the guild commander now sees guild member positions (never worked), units are coloured by their real team (was random), the battle skill icons no longer break after leaving the castle, and the mouse wheel only switches the battle skill over the skill plate instead of anywhere on screen

  • Selupan's knockback (and any server push while walking) no longer disconnects players through the movement anti-hack. The push was counted as a speed-hack snap, five pushes meant a kick, and the client kept walking its old path after the push. Server position corrections now cancel the walk

  • Fixed a Castle Siege weapon aiming bug

  • Custom Quests: fixed a turn-in bug. Items and costs a quest asks for are always taken before the reward is given. Item objectives can set Level (default -1 = any level). A quest that lists the same item or currency twice is not loaded (logged)

  • Fixed a Castle Siege mark registration bug. Signs of Lord are now taken when you register, and are given back if your guild is not registered for the siege (before, they were lost)

  • Fixed event reward bugs: the Illusion Temple win reward, the Leo the Helper and Santa Claus gifts and the Gens monthly reward are now given exactly once, as intended

Characters & combat
  • Level up can now leave HP, MP, SD and AG as they are instead of always filling them. LevelUpRestoreLife, LevelUpRestoreMana, LevelUpRestoreShield, LevelUpRestoreBP in GameServerInfo - Common.dat, all default 1 (fill, vanilla)

  • SD can now also soak monster damage, not only PvP damage, using the same ShieldGaugeRate. ShieldGaugePvE in GameServerInfo - Common.dat, default 0 (PvP only, vanilla)

  • Damage reflect against monsters now uses the monster's full hit (before your defense), not what was left after defense. Full reflect has its own rate, FullReflectDamageRatePvM in GameServerInfo - Character.dat (default 100). The shipped ReflectDamageRatePvM changed from 100 to 1000. Affix blasts, thorns and damage over time are not reflected

  • Eight master tree bonuses that were calculated but never applied now work, and buff tooltips show them: Mana Shield Mastered, Greater Critical Damage Mastered/Extended, Infinity Arrow Improved, Swell Life Enhanced/Mastered, Magic Circle Improved/Enhanced, Increase Block Enhanced, Dark Spirit attack speed

  • Monsters can no longer stack bonus hits: an ignore-defense hit no longer also doubles, and a double hit no longer also triples

  • Elf normal attack range went from 6 to 7 tiles

  • Auto PK: double-tap Ctrl to lock force-attack on, double-tap again to turn it off. Holding Ctrl still works as before. While on, the cursor shows the attack sword with a red outline. Can be turned off in Options ("Ctrl x2 Auto PK"), saved per PC. The double-tap latch is off on servers marked Non-PvP in the server list

  • Death costs experience. Dying to a monster takes 1% of the current level's EXP (0.7% at master level, 3/4/5% for PK level 4/5/6). You never lose a level, and never lose zen or items. No penalty for PvP deaths, event maps, Crywolf during the battle or dungeon runs. Settings: DeathExpPenaltySwitch, DeathExpPenaltyMinLevel (11), DeathExpPenaltyRate, DeathExpPenaltyMasterRate, DeathExpPenaltyPKRate1-3, DeathExpPenaltyInDungeon in GameServerInfo - Common.dat (rates are per mille, 10 = 1%)

  • Weakness, Innovation and Sleep now follow the same PvP rules as attacks. They used to land on any player, even in town and on Non-PK servers, because they never went through the attack checks. Every area skill that can hit players now checks the Non-PvP setting, safe zones and PK rules first

  • On a Non-PK server, asking for a duel is refused with "Duels are disabled on this server." Before, the duel started but no hit could land. Set map 64 to NonPK="0" in MapManager.xml to keep duels

  • Skill scrolls and orbs now say why they cannot be used ("Requires level X, strength Y, energy Z", already known, list full) instead of doing nothing

  • Hunting log tracks master experience after level 400

  • Bot NPC messages (BotWarper, BotPkClear, BotAlchemist, BotReward) show in chat again

  • Bot Buffer no longer refuses players with more than about 2.1 billion zen

  • Players no longer see each other standing in different places. The server threw away any move that arrived within 100ms of the previous one, and it measured that gap on arrival - network jitter bunches normal clicks together (almost a third of the dropped moves arrived in the same millisecond as the one before), so it was the player's newest path that got discarded. The client had already started walking it and was never told, so from then on the player's own screen and everyone else's disagreed, and hits on that player failed the server's range check even when both clients showed them side by side. Moves are now rate-limited with a small burst allowance instead of a hard gap, a skill's dash packet no longer blocks the move right after it, and the client spaces its own moves at least 120ms apart - a click that comes too early is walked straight away and sent a moment later instead of being lost. Server position corrections can no longer be swallowed by the same gate. Moves still dropped (flooding, or moving while stunned/frozen) are written to the action-reject log as MOVE_THROTTLE / MOVE_STUNNED

  • The server now walks players at the same speed every client draws them. It walked everyone at a flat 400ms per tile (and 1.3x on diagonals), while the client walks 333ms in town, 267ms running or with wings, down to about 211ms on Fenrir - so on every walk the server's position fell behind what everyone saw. Hits failed range checks, and anything the server pushed out about that player (a position correction, someone coming into view) placed them tiles behind, which showed up as players "jumping" back after walking to an NPC. The server now uses the client's own rules: walk/run ramp, wings, Uniria, Dinorant, Dark Horse, Fenrir (faster when excellent), custom mounts, safe zones, Chaos Castle, Ice and Frozen Stab slows, transformation rings, and true diagonal distance

  • Clicking an NPC now walks you right next to it, or opens it at once if you are already close. Before, the character often stopped several tiles short, and the next click made it turn and walk back toward the NPC before going where you clicked. An NPC farther away than one walk is now reached in one click. Holding the mouse button on an NPC or an item no longer opens the NPC while your character is still far away (and no longer makes the next click walk back to it first)

  • The server's map walk and safe-zone data (Data\Terrain\*.att) now match the shipped client maps, including the reworked Lorencia, Arena (the server had an older layout) and Elbeland. To go back to the originals, replace the files with your own copies

  • Your character no longer gets pulled back near some walls and NPCs (Lorencia, Elbeland, Arkania, Arena, Aida, Kubera and a few map edges). The game and the server disagreed about which tiles you can stand on; the server now sends its own map of blocked tiles when you enter a map, so you never walk where it would refuse you

  • Your position no longer drifts from the server when the game moves or stops your character on its own: walking into range for a skill, walking to loot, talking to an NPC, being frozen or stunned mid-walk, MuHelper casts. Any walk or stop the server did not hear about is now sent right away

  • Long clicks no longer end one tile short on the server

  • Movement checks on the server were reworked. The speed check now uses each character's own speed (walk, run, wings, mounts) over the last few seconds, and is on by default: a move that is not possible is refused and the character is put back where the server has it (no kick unless MoveSpeedGuardMode is 3). Legit play, lag, spinning in place, knockbacks, teleports and respawns do not trigger it

  • Fixed a bug where a player could later end up at the wrong spot after a map move was refused (for example with an NPC window open)

  • A teleport the server refuses no longer leaves the Teleport skill unusable until the next map change

  • Fixed several bugs with Teleport, Teleport Ally, gates, Dungeon areas and the Chaos Castle position report while frozen or rooted

  • Other players' run speed no longer depends on your gear. Whether a character breaks from walk into run was also checked against your own boots, so wearing +5 boots made everyone around you run on your screen while they walked on their own

  • Other players' attack and skill animations now play at their own attack speed, not yours. Before, a fast caster seen from a slow character had every swing cut off or idled between casts, and an offline helper looked like it skipped skills and spammed the combo finisher

  • Death Stab and targeted custom skills (e.g. Fire Blow) no longer miss a monster that is still walking to where you see it. The range check now also accepts the tile the monster is walking to (the server's own AI picks it, so it cannot be faked by a client), and your own path end when it is within 2 tiles of where the server has you. Rejected casts log the monster's destination to the SKILL_RANGE action-reject line

  • Ground-aimed custom skills (Soul Seeker, Focus Shot, Blood Storm) no longer land on empty ground when cast on a walking monster. The client aimed them at the tile where it draws the monster; while the monster walked, that could be 2+ tiles from where the server has it, so every hit missed until it stood still. When a monster is under the cursor, the area is now centred on the monster's server position

  • Custom skills can no longer be cast through walls. Like vanilla skills, a cast needs a clear line from you to the target (or to the aimed ground spot); with a wall in between nothing happens

  • Elf bow auto-attack no longer slides into melee range or rubber-bands back. The chase path was never sent to the server, so the server kept you at the start tile. Multi Shot no longer sends extra hit packets with skill 0

  • Combo finisher damage can now be set per class in CustomCombo.xml <ClassScaling><Class Id Str Agi Vit Ene Cmd Divisor DamageMul/>. Before, every class used (STR+AGI+ENE)/2. Shipped: Wizard/Summoner Energy, Knight Strength, Elf Agility, MG Str+Ene, Dark Lord Str+Cmd, Rage Fighter Str+Vit. A class with no row keeps the old formula. Optional <ClassRules Mode> sets the chain rule per class (shipped empty = vanilla)

  • Combo now works on multi-hit skills (Flame, Twister, Evil Spirit, Hellfire, Aqua Beam, Cometfall, Inferno, Triple Shot, Impale, Penetration, Fire Slash, Fire Scream). The combo is decided once per cast and each target gets the combo hit once. Before, these skills never stepped the chain, or the first hit reset it (Penetration gave two combo numbers)

  • Combo hit numbers pulse to 3x size and back while rising

  • Twisting Slash, Rageful Blow, Fire Slash, Strike of Destruction and Flame Strike need a non-staff weapon, as in the vanilla client (ReqWeapon=31 in Skill.txt). The MG helper was casting Twisting Slash with a staff. Impale now requires riding. The hotbar no longer greys out Fire Slash, Ice Arrow, Impale, Mana Rays and Spiral Slash with hardcoded stats and weapon lists the server never used

  • Spells keep their on-foot animation while mounted. A Soul Master on Fenrir cast with a two-handed auto-attack pose. Only physical swings and the 5 spells with real riding versions (Sleep, Chain Lightning, Lightning Orb, Drain Life, Summon) use riding poses

  • Swell Life on a party no longer stacks the class bonus once per member

  • Sending a party invite no longer locks your NPC, trade and warehouse use until the other player answers. Only the invited player is locked

  • Guild notice no longer goes blank after a GameServer restart. The DataServer loaded it but never sent it. Guild masters also get an Edit/Save button for the notice in the guild window (before, only the @>text chat trick). A changed notice now replaces the old one instead of showing under it

  • Fix mount + transform ring animations on teleport. Your character no longer stands on foot under the mount after login, teleport or map change until you walk. A transformation ring skin change no longer dismounts vanilla mounts (Fenrir, Dinorant, Uniria, Dark Horse)

  • Pet/mount health now always shows with a transformation ring equipped, including after teleport (it read the visual mount instead of the equipped slot). It stays hidden in Chaos Castle on purpose

  • Custom mounts no longer stay drawn glued to a monster-model transformation ring skin

  • Dark Horse and Dark Raven no longer show each other's level and experience. The client does not store pet stats on the item - it keeps whatever the server last told it in a single slot shared by both pets, and the server re-sends the equipped pet's stats every time that pet earns experience. With a Raven equipped and a Dark Horse sitting in the inventory, the horse's tooltip therefore printed the raven's level, experience and required level, and kept changing as the raven levelled, because a tooltip is only requested once when the cursor lands on the item and never corrected afterwards. Each pet type now keeps its own entry, and the equipped pet's updates no longer overwrite the pet you are pointing at

  • Blaze Napin (Swamp of Calmness) can now be targeted, damaged and killed, and shows a health bar. Its client-side name literal had been re-encoded at some point and grown to 43 bytes, overflowing the 32-byte CHARACTER::ID field and overwriting the object's server key six bytes past it. With a wrong key the client matched no health-bar, action or damage packet for that monster, so it stood in idle forever and looked invulnerable - the server was applying damage the whole time. Thirteen other monsters had the same overflow reaching less critical fields and are fixed too: Shadow Knight, Ghost Napin, Ice Napin, Shadow Master, Splinter Wolf, Blade Hunter, Kentauros Warrior, Dark Mammoth, Dark Iron Knight, Gateway Machine, Death Centurion, Captain Grizzly and Venomous Chain Scorpion. Name writes that come from data (Npcname list, server CustomMonsterVisual, translated event text) are now length-bounded

  • Rage Fighters can now make a Condor Feather. Cape of Fighter is a 2nd level wing exactly like Cape of Lord, and the server has always accepted it in the Condor Feather mix, but the recipe table decoded from Webzen's own Mix.bmd never listed it - the mix window matched no recipe for it, so the cape could not even be dropped into the chaos box. Cape of Lord was already listed and keeps working. Both still need +9 and at least one option (luck/skill/additional), same as every other 2nd level wing in that mix

  • Follow no longer gets stuck. Following pathed to the leader's exact tile, and the pathfinder refuses a destination another character is standing on - so the moment the leader stopped walking the follower had nowhere legal to go and froze on the spot. The only way to restart it was to walk the leader around the follower until the goal tile happened to come free, which is why it looked like follow only worked while the leader kept moving. Follow now aims at the ring of tiles around the leader and takes whichever one is open, and stops as soon as it is standing within one tile of them - the pathfinder treats occupied tiles as unavailable, including the follower's own, so leaving the "am I there yet" decision to it left a free tile one step sideways every time and the follower shuffled between two tiles next to a stopped leader instead of standing still. It also re-plans at most every 150ms, and only when the leader has actually changed tile or the follower has run out of path - before this it rebuilt and re-sent the whole route 25 times a second, which the server had to throw away and re-plan every time

  • Follow no longer depends on where your mouse is sitting. It ran inside the block that handles clicking on the world, which is skipped whenever the cursor is over any interface. Mouse coordinates only update while the cursor is inside the window, so a client you were not actively using kept whatever position the cursor had when it left - and if that was over the bottom bar or an open window, follow stayed switched off until you moved the mouse back over that client. This is why a second client had to be hovered before it would start moving

  • Background clients no longer answer your keyboard. Key and mouse-button state was read through GetAsyncKeyState, which reports the state of the whole system rather than of one window, and the guard meant to ignore it while a window is not focused sat behind a compile switch that was never turned on. In windowed mode the "we lost focus" flag was never even set, so a client could not have told the difference anyway. With several clients open, any of them sitting under the mouse cursor acted on hotkeys you pressed in the one you were actually playing. Focus is now tracked in windowed mode as well as fullscreen, input is ignored while a client does not have focus, and held keys are cleared on the way out so nothing fires off when you switch back. Unfocused clients also stop holding a stale mouse-over highlight and tooltip from wherever the cursor happened to leave the window, and their character stops head-tracking a cursor that is not theirs - the head-look angle was fed the last known cursor position with no lower bound on it, which bent the neck away from the body

  • Fixed a bug in guild alliance management

  • Guild creation always checks the minimum level, and a character already in a guild can't create another

  • Fixed a bug with support skills (heals and buffs) used without a valid target

  • Character names (new characters and the rename command) can use letters and digits only, the same as the character creation screen. A character in a guild can't be deleted until it leaves the guild

  • Renaming a character in slot 6 or 7 no longer hides it from the character list

  • Fixed guild vault bugs. The vault stays locked to the member who opened it until they close it, log out or change server; others see "in use" until then

  • Fixed a Jewels Bank loading bug. If the bank can't be read from the database it stays "loading" (reopen it to try again) instead of showing an empty bank

  • Fixed bugs in the friend list, guild member removal, character rename and character delete

  • Fixed character loading bugs at character select and when changing server

Items & chaos mix
  • Potion heal rates now come from one server table (*PotionRate in GameServerInfo - Common.dat) that is also sent to the client, so potion tooltips show what the server really heals ("Restores X% HP, Y% SD"). Covers Apple, Life/Mana/SD/Compound potions and Elite potions. The hardcoded elite potion text is gone

  • 9 more jewels stack up to 255: Life, Creation, Guardian, Harmony, Extension, Elevation, Gemstone, Lower and Higher Refining Stone

  • Ancient set fix to match vanilla: Plate Helm and Plate Pants no longer roll the Kantata set (Rave only), Spirit Helm and Spirit Boots can now roll Karis

  • Eternal Wing Stick is no longer treated as a book by the "General Book" option range

  • Extended inventory now has up to 4 grids (was 2). Each expansion item unlocks the next grid, also when used from an extended slot. Items in the extended inventory now work properly: skill scrolls and orbs can be right-clicked to learn, Ctrl+Click Sell Post posts the right item (it posted whatever sat in the same main inventory slot), jewel un-mix no longer crashes, arrows reload, event tickets and quest items are counted, repair-all price includes them

  • Right-click in the extended inventory now uses every item the regular inventory can: stat fruits, Armor of Guardsman, free tickets, Devil's Invitation, Invisibility Cloak, Scroll of Blood, revive and portal charms, Santa invitation, inventory and vault expansion scrolls, inventory-equip rings. Secret potions now refuse when the buff is already on, like in the regular inventory

  • Chaos Castle with the Armor of Guardsman in the extended inventory works (the client crashed). Castle Siege: a single Sign of Lord can be registered from the extended inventory, and "Register All" works when all signs are there

  • HUD arrow / bolt count includes the extended inventory. Ctrl+Q/W/E/R binds potions over the extended inventory too. The extended inventory is locked during a chaos mix and the Lucky Coin window, like the regular one

  • PK drop on death picks from the whole bag including unlocked extended grids. It used to pick from the regular inventory plus the first 12 cells of the first extended grid, even when that grid was still locked

  • Fixed a server loop that could read past the inventory when an event (GvG, TvT, Party vs Party) takes required items with ReqItemLevel=-1. Level -1 now means any level

  • Arrows, bolts and other stacks are never sent for repair (the server always refused them)

  • In repair mode, left-clicking a stack splits one item off it

  • Repair prices now come from the server, so the price shown is the price charged. This covers the repair tooltip, the NPC "Repair All" total, MuHelper auto-repair and the pet trainer. Before, items with luck showed about 18% less than the self-repair actually took

  • Chaos recipe counts fixed: a stack only counts for an ingredient row it fully fits (Chaos read "9/10" while the mix itself matched)

  • Walking away from the Chaos Goblin closes the chaos window and recipe book like other NPC windows. Walking no longer closes the quest log

  • Equipment tooltips show "Item Level: N" (the Level column from Item.xml)

  • Buff tooltips hide lines whose values are all 0

  • Sell Post items show their proper names (Crest of Monarch, Box of Kundun +N and so on)

  • Illusion Temple tickets on the ground show their +level

  • Cash shop: Enter accepts and Esc cancels every popup (buy, option select, gift, use, delete, item info, notices). Before, only the last buy confirmation took them

  • Jewels Bank auto-deposit no longer writes a console line for every pickup

  • Jewels (Bless/Soul/Life/Harmony/refining/custom) sitting in the extended inventory can now be used on items in the regular inventory. The drop was silently ignored before - only the reverse direction and same-grid upgrades worked

  • JewelsBank no longer loses 1x2 items on withdraw. The space check counted 1x1 cells, so extra stacks dropped to the floor

  • Items with +Option above +16 no longer lower the chaos mix success rate (options 5-15 added nothing to item value). NPC prices unchanged

  • A stack of N items now counts as N in chaos mix value

  • The chaos window no longer stays stuck after some mix result codes

  • Cash shop items with Duration="0" now show "Permanent" instead of "-"

  • Cash shop options show the item's +level, so two options of one item no longer look the same at different prices

  • Default CashShop.xml fixes:

    • The 400 WC Talisman of Luck option is now 4 talismans. Before, it sold one Talisman +4, which works the same as +0. Talisman of Luck now stacks up to 10 (ItemStack.xml), the most a chaos mix counts

    • Summoner and RageFighter character cards now give their own cards. The Summoner card unlocked RageFighter, and the RageFighter card gave a Scroll of Strength that ran out at once

    • The bundle packages (Package Box A/B/E/F, the Paid Channel bundles) can be bought. Their Buy button did nothing

    • Removed broken entries: a free "Package Box D", an empty WCoin(P) "Package Box A", "Item 13-97" and the "Dark Lord Character Card" (both gave items nothing uses)

    • The "Paid Channel Access Ticket" bundles are now one "Paid Channel Bundle" per currency, named for what is inside. WCoin listed it twice, and the two WCoin(P) copies had different seals

    • Removed 203 products that no package listed and nobody could buy

  • Reset Fruits stack (up to 50, ItemStack.xml). Each fruit resets 10 points and one is used per click. The cash shop "x20" now gives 20 fruits instead of one fruit that reset 200 points at once. Fruits players already have keep the same total: a fruit that reset 100 points becomes a stack of 10

  • Item Tiers also scale ItemImplicit bonuses (ImplicitMul)

  • Item implicits for other classes show in grey with the class list, e.g. "Wizardry Damage +58% (Dark Wizard, Magic Gladiator)"

  • Socket "Skill attack increase" now shows in the skill tooltip. It always worked on the server

  • Buff skill tooltips show the server's real values (master tree, server config) instead of hardcoded vanilla formulas. Greater Defense showed half the real amount

  • Skill tooltips show "Combo (Step 1)" / "Combo (Step 2 or 3)" for every class when EnableComboToAllSwitch=1

  • Sell Post items show their inscriptions in the chat link and the post list

  • Fixed temporary items tooltip not showing at certain scenarios

  • Item tooltips show "Cannot be dropped" on every item the server refuses to drop: weapons and armor +5 and higher, excellent, ancient and harmony items. Before, only items listed in ItemMove.xml had the line, and +5/+6 items could be dragged out of the inventory with no message while the server quietly refused the drop

  • Fix durability showing 0 in the lucky spin for all items

  • Lucky Spin now checks inventory space before the roll, against the biggest prize on the wheel, instead of after the roll against whatever landed. A rejected spin costs nothing, so the old order let inventory shape act as a free prize filter: leave a single 1x1 gap and every prize larger than 1x1 was silently thrown away and re-rolled until a 1x1 one landed

  • Lucky Spin rewards held back for a full inventory could be lost when more than one was owed at the same time. Item creation is a round trip through the DataServer, so the inventory does not update in the same step it is requested — delivering several rewards in one go space-checked all of them against the inventory as it looked before any of them arrived. With room for one, the rest passed the check, had their saved rows deleted, then failed to fit and fell to the floor at the player's feet, where a full inventory could not pick them back up. Rewards are now handed out one at a time, and a reward's saved row is only cleared once that reward has actually been sent

  • Lucky Spin has its own tick, win and lose sounds

  • A misconfigured ItemBag (/make, /drop, or a monster's event drop bag pointing at a Cat/ItemIndex pair with no matching Item.xml entry) no longer spams the drop sound and re-spawns the broken item every time it triggers. CItemBag/CItemBagEx now validate every configured drop entry against the loaded item table at load time; anything not actually configured is dropped from the bag permanently instead of being rolled and attempted forever. /make, /makeset and /drop reject an unconfigured item code up front instead of sending it to the DataServer at all. Rejections are written once to a new ItemBag\ log next to the GameServer (toggle: WriteItemBagLog in GameServerInfo - Common.dat, on by default) naming the bag file, event name, and the bad Cat/ItemIndex, so a broken bag is easy to find and fix instead of just being loud

  • Fixed a Jewels Bank bug when leaving the game. The bank closes when you return to character select or change server

  • Fixed stack bugs with a full inventory. An NPC purchase that does not fully fit is refused, and picking up a stack takes what fits and leaves the rest on the ground

  • Recipe book: new "Quick Combination" row at the bottom of the list, selected when you talk to the Chaos Goblin. It has no recipe: Combine opens the chaos machine and the machine finds the mix from what you put in. Texts 11390-11391 in GameStrings.xml

Market & trade
  • Shop titles show again after the seller dies and respawns

  • Personal store price table PShopItemValue is gone (replaced by the Market)

  • Duel-stake payout: items drop at the winner's feet when the inventory is full, instead of being lost

  • Fixed a zen bug in trades. If a player no longer has the zen they offered when both press OK, the trade is canceled

  • Fixed several item bugs around trading. While a trade or mix window is open, the Jewels Bank, Lucky Spin, resets, dungeon entry, quest turn-in and Lucky Coin wait until it is closed, and full stacks don't turn into their bundle until then

  • Fixed a Lucky Coin registration bug

  • Fixed zen and item bugs in bet duels (DuelBet). Both stakes are held from the moment the duel starts; the winner gets both, a draw or an aborted duel gives each player their own stake back. During a bet duel only HP, MP and SD potions can be used

  • ItemValue.xml: buy and sell are now set apart. Value + WCoinC/WCoinP/GoblinPoint set the buy price; SellPrice + the new SellCurrency (Zen by default) set what NPCs pay. Items bought with coins now sell for Zen unless SellCurrency says otherwise. The shipped Apple, Horn of Fenrir and Flameberge entries sell for Zen

  • Fixed several guild and party bugs: alliance, rival and guild war answers, and party restore after a GameServer restart (still works within PartyReconnectTime of the server start)

  • Stunned or sleeping characters can't attack or cast until it wears off

  • /classe resets stats to the new class's base and returns all other points as free points (fixes a stat point bug); talent points are refunded too

  • Fixed GM command checks: /talent points, /affix* and /stressbot need GameMaster level 2, the custom quest $q* test commands need level 1. StressBotPlugin.xml ships disabled

  • Fixed a bug in reset item costs. The exact items the reset asks for are taken, and only from the bag: worn items no longer count

  • Castle Siege weapons work as intended again: only your own side's weapon, one shot each time you open it, and the shot now deals damage where it lands

  • Quest World item quests (e.g. bring 5 Apples) now take the items when you finish

  • /info shows VIP level only to GMs

  • Fixed a Rage Fighter skill bug with Beast Uppercut, Chain Drive and Dark Side. Normal hit counts are unchanged

  • Fixed a skill timing bug when switching between skills. All skills now share one cast pace on the server, like on the client; Twisting Slash, Fire Slash, Power Slash, Rageful Blow, Strike of Destruction and Plasma Storm follow the same pace on the client too. GameServer and client must be updated together

  • Skill data (Data\Skill\Skill.txt): the skill type columns now match the original client again. Berserker, Recovery and the Rage Fighter buffs are buffs again, so in Illusion Temple they can be cast on party members. Column 30 is renamed SkillFamily (it was called IsDamage but was never a damage flag)

  • Fixed a damage bug in skills that hit several times per cast (Evil Spirit, Twister, Flame, Penetration, Triple Shot, Fire Slash, Fire Scream and others). Normal hit counts are unchanged

  • Fixed warp bugs. Stunned or frozen players can't use the move window, /move, custom move commands or dungeon entry until it wears off. Custom move commands and dungeon entry don't work inside event maps (leave with the move window). The move window needs the Market store closed, and PK murderers can't enter dungeons

  • Fixed several cash shop bugs. Coin balances update right after a purchase or gift, and other coin purchases see the new balance at once

  • Fixed another cash shop bug. Packages are always sold for the price shown in the shop

MuHelper
  • MuHelper can now use Elite Healing Potions and SD potions. The potion page has two new rows, "Elite Potion" and "SD Potion", each with its own threshold bar (0 = off). Elite Healing Potion has its own HP threshold, so it can be set lower than normal potions as an emergency drink. SD uses Small, Medium, then Large SD Potion when the shield drops below its threshold. One potion per tick, in the order Elite, normal, SD, because the server rejects two potions used back to back. Works the same in the offline helper. Existing helper settings load with both new options off

  • Elf "Recover" (restores SD) for yourself and party members, each with its own SD threshold (0 = off). The helper heals HP first and only casts Recover on a tick with no heal. Members with no shield are skipped. Works offline too

  • The potion/support page uses compact rows: label, value ("HP 40%", "Off") and a bar

  • Hunt range is drawn on the ground as a glowing border while the helper runs. With "Return to original position" it stays around the start spot, otherwise it follows you. "Show range indicator" checkbox, saved per PC

  • New "Event Items" checkbox on the pickup page. The server's extra pickup list (MuHelperPickup.xml) was always on and invisible; now each player can turn it off. On by default. Hovering "Jewel/Gem" or "Event Items" shows the items in that list

  • Summoner curses: a "Curses" button under Combo opens three curse slots (Sleep, Weakness, Innovation, Blind - whichever she has learned). The helper casts them on its target before attacking and again when they wear off. A curse that does not stick (resisted, immune boss) is retried after 4s, at most twice per target, so it never holds up the attack. Works the same offline. Client and GameServer must be updated together; existing helper settings load with no curses

  • Combo and Activation Skill 2 now work for every class (Dark Lord had no 3rd slot). Combo needs only Basic + Activation 1; Activation 2 is an optional 3rd step, and empty steps are skipped

  • Dark Lord "Use Dark Spirit" checkbox removed. The Auto / Together / Cease radio decides alone (Cease = leave the raven alone), and it moved next to the buff icons

  • Hunting zone with "Return to original position": new targets are picked only inside the range, a target that steps out mid-fight is finished up to 3 tiles past the edge, other loot is picked up to 2 tiles past it, and your own drops are picked up wherever they land. A rare drop at the edge used to be left behind

  • Item pickup gives up on a far item only when it stops getting closer for 4s, instead of after a fixed 4s walk

  • Free space in the extended inventory now counts when deciding if an item fits

  • "Pick Excellent" no longer picks up some non-excellent items (it tested the whole option byte)

  • Long-range counter attack now works with "Return to original position". A monster hitting you from outside the range was dropped the same tick it was added. Players never get this exemption

  • PvP counter attack now hits the real attacker. The client guessed the attacker from the last character it saw swing or cast, which was wrong for spells, and buffs from other players could arm it. The server now sends the attacker in the damage packet. Buffs never arm it and party members are never countered

  • PvP counter attack no longer hides the attacker's mount and pet. After the helper countered a Dark Lord on a Dark Horse, your client showed him in the riding pose with no horse and no raven. The helper marked the attacker as a monster to target him, and mounts and pets are removed from anyone who is not a player. It now keeps him a player and only flags him as a counter target

  • Monsters that just walk into view no longer count as attackers (pulled the helper toward far spawns with long-range counter on)

  • MuHelper now attacks monsters that walk into hunting range right away. When a monster started walking, the helper measured its distance against where it was heading before the new path, so a monster walking in was only picked up on its next move - often a second or more later. Monsters that spawned inside the range were never affected, which is why only walking-in monsters felt slow

  • MuHelper no longer locks onto monsters it cannot reach. A target behind a wall, across a gap or on a ledge with no route was picked like any other, and the helper then walked at it forever: the move step kept failing, nothing dropped the target, and the next tick re-picked the same monster. The character stood still looking like it was attacking. Both the online helper and the offline/auto-attack bot now give a target up after the pathfinder has refused it for 1.5s straight, suppress it for 10s so the periodic rescan does not immediately hand it back, and move on to something they can actually hit. One failed lookup is not enough to drop a target, because the pathfinder also treats other characters as obstacles - a player standing in a doorway would otherwise cost you the monster behind them

  • The helper prefers monsters it has a clear line to, and no longer dances back and forth around objects: when a wall is in the way it walks next to the monster and stops on the first tile with a clear line. A chase that stops getting closer for 4s drops the monster

  • Party buff, heal and Recover no longer drag the helper out of its zone. A member is only supported if reachable from inside the zone; others are skipped instead of freezing the rotation

  • Buff rotation fixes: your own character is its own step, "Support Party" no longer turns off self buffs, members who left or warped no longer stall the rotation, and a buff that keeps failing for 5s is skipped

  • The helper no longer walks back to its spot while it still has a target; it finishes the fight first

  • The helper can cast custom skills from CustomSkills.xml, attack skills and buffs

  • Helper casts play the same animations as manual casts (Death Stab and its master versions, Fire Breath while flying, Falling Slash on Fenrir, Fire Scream, Rageful Blow master versions, mounted casts)

  • MuHelper can no longer cast while stunned or asleep. Manual play blocks attack input under Stun/Sleep (the mouse-click attack handler checks for it), but the helper's decision brain - shared by the online client helper and the offline server-side helper - never did, so getting stunned and then flipping helper on let it keep swinging through crowd control in both PvP and PvE. The brain now idles for the tick whenever the character is stunned/asleep (client) or under CheckStunEffect (server: Stun, Sleep, Earth Prison, Pentagram Stun), same as a manually-played character would

  • MuHelper no longer gets stuck on buffs that cannot be used while mounted

  • Auto-repair no longer spams repair on arrows and other stackables every 5s

  • Dying in a duel no longer pops up "MU Helper cannot ..." every round

  • "MuHelper stopped." only shows when a running helper stops, not at login

  • MuHelper pickup item list scrolling would bug out sometimes showing duplicate entries. It now opens at the top

  • Off helper now picks up jewels. "Pick up Jewels" was being tested against a hardcoded list that had actually been filled with potion IDs, so offline it matched nothing - Gemstone, Bless, Soul, Life, Creation, Harmony and both refining stones were all walked past, while the same character online picked them up fine. Offline now reads the same MuHelperPickup.xml jewel list the client does

  • Off helper now has its own master experience rates per account level: OffAttackMasterExperienceRate_AL0.._AL3 in GameServerInfo - Common.dat (missing key = normal AddMasterExperienceRate). A missing OffAttackExperienceRate_ALn now falls back to the normal experience rate instead of 0 (no experience at all)

  • Off helper attack pacing matches the animation speed your client plays. Viewers see full swings, and it does not step mid-swing. Cyclone and Twisting Slash no longer cast on itself, Death Stab sends one hit instead of a double swing, Elf can start offline in buffs-only mode, and it never steps onto safe-zone tiles

  • Off helper is no longer switched off when an affix (Wormhole, Vortex, Gale) throws the character

  • Off helper: support setups (buff/heal only) can go offline, High Elf no longer needs Infinity Arrow to start, a buff it cannot cast or low AG no longer freezes it, and buffs follow the self/party options like online

  • Off helper no longer freezes walking back to its start spot (it counts as arrived within 1 tile, and logs [OffBrain] cannot route back if it cannot get there)

  • Off helper only sees items in its own dungeon instance

  • Every reason the offline helper stops is written to the console, and a character idle for 60s logs an [OffIdle] line once a minute

  • The MuHelperPickup.xml jewel list gained Guardian, Extension, Elevation, all bundles, Loch's Feather and Crest of Monarch

  • Helper no longer stands hitting a Warded monster for 0 forever. Expired guardians never released the parent's immunity

UI
  • Game resolution & Fonts size changes apply instantly without window restart. New "Font Size" selector (Auto, 8-15) in Graphics

  • New hotkeys: S = Market search (was Sell Post, still in the Window Menu U), A = Talent Tree, L = Dungeon browser. The C panel Master button (dead before) opens the Talent Tree

  • Talent Tree: every node has an icon. Nodes that had a "?" now use 62 new painted icons (ids 1000+ in TalentTree.xml, files in Data\Interface\UI\talent\). The window sizes itself to the tree. The old Master Level window is removed (the Talent Tree replaces it)

  • Inventory: ring and pendant slots are their vanilla size again, with the item scaled to fit. Equipped items spin when hovered, like bag items. Broken equipped items get the vanilla red tint. Axiom skin: new equipment slot art

  • X cash shop: the axiom skin no longer leaves an empty gap above the storage list when there is no banner. Switching skin with the shop closed no longer crashes

  • Axiom skin: related windows are grouped into tabbed panels ("Quests", "Character Services"), and most windows can be dragged by the title bar with their position remembered. Classic windows stay at the V1 positions

  • Server owners can restyle the UI without a client rebuild: layouts, skins and shells are plain XML/PNG under Data\Interface\UI\ and reload live when changed

  • UI text is drawn sharp at any resolution, and new windows are drawn in batches

  • Options window has a separate Music volume slider, in game and on the login screen

  • Graphics "World" switches that apply instantly: Atmosphere, Contact Shadows, Enhanced Colors, Glow, Loot Beams, Player Bars, Item Drop Levels. Each only works if the server has that feature on. Graphics and Options settings have hover tooltips

  • Party: one combined SD+HP plate over allies (always on, even with Player Bars off), and the party HUD has a gold SD bar between HP and MP

  • Over-head name, chat, shop title and HP plate no longer overlap. The shop title no longer covers the SD bar with wings or a mount

  • Ground gear names can show their drop level, e.g. "Kris [135]". Graphics > "Item Drop Levels" (on by default)

  • CatchUp is displayed as a buff now in the buff row, instead of taking place in the middle of the screen

  • Debuffs now always render on their own row to not be mixed with buffs

  • Reset panel: stats distribution with autoreset can now be toggled between raw values and % values (saved in ResetSystemSettings.AutoResetMode). % is a share of the points that reset gives, and a live "Allocated X / N" line shows while you type. "Reset Now" also applies your stat allocation. GameServer, DataServer and client must be updated together

  • The stat add popup closes after Add / Enter

  • Player names no longer float 2-4 blank lines above the head

  • System messages start with "[SYSTEM]" and stay until newer ones push them out

  • Item tooltips draw above windows docked beside the inventory

  • Inventory icons no longer show the wrong size or position until hovered

  • Win-key shortcuts (Win+Shift+S, Win+D, ...) no longer trigger any game key

  • Pressing Enter on a confirmation window now presses OK instead of just closing the window. On single-button dialogs the Enter key was wired straight to "close", bypassing whatever the OK button was supposed to do. Worst case was Osbourne in Aida (Lower/Higher Refining Stone): the server had already opened the chaos box and locked the character's inventory, Enter made the dialog vanish without opening the mix window, and nothing was left to send the close notice - the character stayed locked until the game was restarted. Clicking OK with the mouse always worked. Affects every single-button dialog that performs an action

  • Fixed a bug where stuff became unclickable after leaving the party

  • Invasions: the top button now opens a list window (like Move) on click instead of a drop-down on hover. It shows every running invasion with its maps, monsters left per map and time left

  • Quest tracker: click a quest to open the quest log on that quest

  • Scrolling notice at the top moves at the same speed at any FPS (it raced at high FPS) and long notices scroll to the end (the tail was cut once the start left the screen)

  • Buff tooltips no longer have an empty line under the buff name

  • Axiom skin: buttons are darker metal (the light grey face read as washed out on dark windows)

  • Castle Siege battle map shows for everyone in Valley of Loren while the siege battle runs, and only then (TAB toggles it). Before, it showed all week, but only for players who joined the map server there or happened to see a guild member on arrival - most players who teleported in never got it

  • Over-head chat bubbles and the Gens rank mark no longer jitter when players move: overlapping bubbles were pushed in whole steps and the mark was snapped to whole units while the text moved smoothly

  • Chat text in any language shows correctly in the new UI windows (chat lines are UTF-8)

  • Chat box buttons: a lit button now means that kind of message is shown. The whisper button is lit while whispers are allowed. The system button hides or shows the system messages on the right side (before, it blanked the chat log)

  • Chat input: clicking the world or a button no longer stops typing, and Enter puts the cursor back into the chat when another window took the keyboard. The chat log no longer blocks clicks on the world (wheel, right-click on a name and the scroll / resize bars still work there). A chat line only lights up when the pointer is on its text

  • Chat emotes are back: typing words like "hustle", "lol", "clap" or "bye" in chat plays the matching animation again. The new chat window had stopped triggering them

  • Removed the item explanation and set explanation windows: nothing ever opened them, not even in vanilla

  • MU Helper text boxes (item names on the Obtaining tab, the seconds boxes) show what you type. The text was white on a white box

  • Character creation greys out classes the account has not unlocked yet, Rage Fighter included (it always looked available, and creating one silently failed). Using a Summoner or Rage Fighter card says the class is unlocked, or why the card cannot be used (already unlocked, or the level a character must reach first)

  • Item models in the new UI windows (Lucky Coin, Jewels Bank, Market, recipe book, quests, drop codex, achievements, Lucky Spin, Doppelganger and Imperial Guardian NPCs) no longer show through message boxes or windows opened on top of them

  • The password box in the guild delete, vault lock and vault unlock popups no longer sticks out of the popup

  • Chaos Card and Cherry Blossom mix windows: the bottom description lines no longer touch the left border (both skins)

  • Duel spectator: the enemy SD bar trail follows the enemy's SD (it used yours), and enemy bars shrink like yours instead of squashing

  • Character select: the info box above each character also shows the guild name, Master Level and Master Resets, plus Resets and Grand Resets next to the level. Each value only shows when the character has it (in a guild, or above 0). The box grows to fit. GameServer, DataServer and client must be updated together

  • Lucky Coin: the Delgado menu and the exchange window show how many coins you have registered. The exchange window updates after each exchange

Graphics
  • Loot beams: a light pillar over valuable drops (excellent, ancient, socket, jewels), each with its own colour. <LootBeams> in ClientConfig.xml, plus a "Loot Beams" switch in Graphics

  • Bloom (Glow) is now on by default and retuned (threshold 0.72, intensity 0.45, 3 blur passes). Blue spells glow, snow doesn't. Per-map multiplier in MapFog.xml. Graphics switch

  • New depth fog with per-map colour and density in Data\Local\MapFog.xml (EnableFog, Fog_* in ClientConfig.xml). Graphics switch

  • New ambient occlusion (SSAO) and contact shadows (EnableSSAO, SSAO_*). Graphics switch

  • New "Enhanced Colors": sharpen, contrast, saturation, warmth, vignette, per map via Grade* in MapFog.xml. Graphics switch

  • Damage numbers are drawn after post-processing, so they no longer blur

  • Map fog is no longer ~3x too thick. These fog emitters have no self-limit - they keep emitting and their on-screen density is decided by the particle pool, which AXIOM had raised from 3000 to 9000, so the same fog code produced 3x the clouds and could black out the screen (Aida, Karutan). All 33 bulk fog emitters scaled to match, across Aida, Karutan, Chaos Castle, Doppelganger, New Town, Kanturu 1st/2nd/3rd and shared map objects. Also means skill effects stop losing their particle slots to fog in busy areas

  • Spinning fog/cloud particles no longer strobe. Particle rotation advanced once per game tick but was drawn raw, so fast-spinning clouds stepped at 25Hz while everything around them was smooth - it looked like those particular effects were running at low FPS

  • Monster and map effects no longer scale with FPS: particle bursts, footstep smoke, torches, weapon glows, sparks and aura pulses were spawning 3-4x too much at unlocked frame rates because they fired once per rendered frame instead of once per game tick. Also fixes fade/burst durations running too fast (e.g. corpse dissolves) and walk/idle sound chatter

  • Anti-aliasing and Glow are both on by default now. Anti-aliasing runs after the glow pass, so thin bright details (a weapon glint, a spell spark, a distant lamp) still glow instead of being smoothed below the glow threshold first

  • Character shadows now include wings, weapons, shields, Rage Fighter gloves and capes. Before, the shadow was a body-only stand-in, so a winged character cast the shadow of a bare body. Wings cast a see-through shadow (Shadow_WingAlpha in ClientConfig.xml, default 0.35), weapons and capes cast solid ones

  • Shadows follow the ground on sloped or stepped terrain instead of being cut in half at tile edges (e.g. Devias snow). Glowing parts (flames, wing shine, monster auras) no longer cast black slabs

  • Terrain draws much faster. Every tile where two ground textures blend broke the terrain batch and was drawn on its own (7.9 ms down to 0.7 ms on an empty Arena)

  • Fights with Erohim's Fissure are much lighter. Each fissure particle searched every tick for a bone that does not exist

  • Star Fall's star now lands about 0.5s after the cast, when the server applies the damage, instead of well after the hit

  • Wings of Darkness lightning, firework sparkles and Maya's meteors and stones in Kanturu move smoothly instead of blinking or stepping at high FPS

  • +15 helmet eye tendrils no longer wobble when the character turns in place

  • The Chaos Goblin in Noria is easier to click (an invisible wall marker sat on top of it)

  • Skill effects (e.g. the Kanturu laser) no longer randomly render with big blocky pixels until restart. Shared textures kept whichever filter loaded first. Changing "Linear Filter" now applies to already-loaded textures

  • Bright cloud blobs near the screen edges in Karutan are gone

  • Devil's attack lasers no longer hang in the air as yellow X marks

  • Saint Crossbow is pink again

  • Celestial Bow +9 and higher no longer shimmers on the blades

  • Erohim and his Fissure no longer render white outside Land of Trials (invasions, custom events). His textures only loaded when you entered that map

  • Dreadfear no longer smokes forever after death. Its corpse was never actually fading: the dissolve wrote to a value that the character renderer restores every frame, so the body stayed fully visible and the smoke had no stop condition. The fade now runs properly and the smoke ends with it. Same fix applied to the Kanturu 3rd version of the boss

  • New water in Kalima. The sea is now a real water surface: moving ripples, island cliffs visible under the water, the sea gets darker and bluer with depth, foam where it meets the cliffs, a sun glint, and reflections of islands and characters. It keeps the original Kalima textures, so the map still looks like Kalima. Needs post-processing on for the under-water view and reflections; with it off the water still gets the ripples and glint

  • New water on normal maps. Water tiles get moving ripples, a sky tint, a sun glint, foam at the shore, and reflections of trees, hills, buildings and characters. Each map keeps its own water texture and is still lit by spells. The ground texture used for water is lava, sand, ice or mud on many maps, so only maps listed in Data\Local\MapWater.xml get it. On by default: Lorencia, Noria, Battle Castle, Valley of Loren, Elbeland, Loren Market and maps 85, 93, 94, 95. More maps are in the file switched off, to check and turn on. Every setting (ripples, glint, foam, reflection strength, brightness, sky colour) can be set per map. Atlans is unchanged

  • Kalima: item beams, custom skill effects, rain, the MU Helper range border, and glows over the open sea (wings, auras, buffs) are no longer hidden under the water

  • Two players wearing the same wings now both show the wing effects. With Wings of Darkness (and data-driven wing effects from ItemEmitters.xml), only one wearer on screen had the lightning: each player's wings cleared the previous frame's lightning by item type, which erased it from every other wearer of the same wings. All maps

  • Elf Recovery cast glow at the hands no longer flickers at high FPS

  • The glowing orb that Heal, Greater Defense and Greater Damage make on the target now pulses instead of flickering at high FPS

  • Symbol of Kundun glows slowly again instead of flickering at high FPS or with several on screen

  • Wing of Storm, Sword Dancer, Grand Soul Shield and Elemental Shield animate at their original speed at high FPS. Their glow and texture animations ran faster the higher the frame rate (Wing of Storm and Sword Dancer also sped up with each extra wearer on screen)

  • Schriker (Kalima) costs far less FPS: half the blade fire particles, and its body is no longer drawn a second time for glow

  • Kanturu 2 Canon Trap fires its energy ball again. A frame-rate check added to the attack code always failed there, so the ball was never created

  • Kanturu Laser Trap hits now show a lightning bolt from the trap to the player it hit, with a thunder sound. Before, it showed the Lost Tower fire trap's small fire puff and flame sound

  • Monster and trap attack effects now fly at the player who was attacked. The client aimed every monster attack at your own character, so a monster hitting someone else drew its beam or ball at you

Sound
  • Sound is now directional. Monsters, NPCs, skills, effects, map props and item drops pan left/right by where they are on screen, get quieter with distance (full volume within 3 tiles, silent past 15), and far sounds carry a short echo. UI sounds, ambience and your own character stay centred. The same sound can now play from up to 4 sources at once, each with its own side and volume - vanilla only ever had one voice per sound, always centred, always full volume (the blacksmith's hammer across town was as loud as one next to you). Music is unaffected

  • 30 missing music tracks added. Kalima, Aida, Kanturu, Elbeland, Raklion, Crywolf, Balgass, Cursed Temple, Swamp, Duel Arena, PK Field, Imperial Fort, Doppelganger, Karutan, the login screen and others were silent

  • Music playlists: make a folder named after a track (e.g. Data\Music\Devias\) and that zone plays a random .mp3 from it, never the same one twice in a row

  • The music slider no longer changes the volume of every sound; effects have their own setting (effects volume resets to default once). Music goes silent while minimized and fades when the window loses focus. The new wzAudio.dll needs the VC++ 2015-2022 x86 runtime

  • Ambient loops are 10 dB quieter. Charon's energy orbs are no longer heard across all of Noria. Item and jewel drop sounds play again

  • Sounds that shared a slot and played each other's audio depending on map order are fixed: Hanzo's anvil heard in Noria (Lala's harp), Kundun and the Castle Siege door / bow mercenary, Shadow's second attack, Fenrir's second pain sound, Raklion Hell Spider death (file name did not exist), Ax Warrior death (played a woman's voice), Queen Bee death (played the Ax Warrior's), Land of Trials extra bull grunts

  • Crywolf music plays. The tracks were .ogg, which the music player cannot play; they are .mp3 now

  • Music no longer goes silent because another MU client left the music setting off in the registry

  • Monster death sounds no longer replay 3-4 times per kill. The sound was retriggered for the whole corpse lifetime, so any death sound shorter than the corpse restarted every time it finished. Affects Persona, Twin Tale and Dreadfear (Kanturu), and the Fire/Poison Golems (Land of Trials). Other monsters already played theirs once

  • Riding the Dark Horse (or a custom mount that rides like it) no longer plays human footsteps on top of the hoof steps

Security
  • Chaos mix: a client can no longer send a different MixID to run a mix at another recipe's success rate (a mismatch is now refused, not just logged). The box is emptied when the item is sent for creation, so closing the window mid-mix cannot dupe. Mixes must be opened at the right NPC, packet sizes are checked, rate requests are throttled, and refused mixes no longer count for achievements or quests

  • Market: periodic, lucky, pentagram-socket and trade-blocked items cannot be listed, /lock blocks Market actions, actions are limited to one per 150ms, and the DataServer keeps each account's messages in order

  • The action packet no longer echoes 2 stale bytes as the attack target

  • Chaos Castle "stuck at x,y" packets are checked (within 15 tiles and walkable). Before, a client could teleport anywhere in Chaos Castle. Logged as CC_POSITION_INVALID

  • Using a map gate you are not standing in is logged as GATE_MISMATCH. Portals are blocked during a dungeon run

  • An item serial found in both the inventory and the Market store is treated as a dupe: logged and the player is disconnected

  • Path copy into the 15-step buffer is capped, so a long path can no longer write past it

  • Packet sizes are checked more strictly, and leftover data from other packets can no longer be read

  • One connection can no longer flood the server. Repeated Event Timer, Market open/close, Gens join/leave and /info requests are throttled

  • Login: too many wrong passwords block the account or address for a few minutes, and a wrong account name gets the same answer as a wrong password

  • /unlock is blocked for 10 minutes after 5 wrong codes, and lock codes are no longer written to the logs

  • Fixed item and coin bugs in the Jewels Bank, the vault, the cash shop, the Market and Lucky Coin. The DataServer now keeps every account's and character's data in order, so a fast relog can't load old data

  • Fixed bugs in talent points and resets, quest turn-in during a trade, Quest World quests, Castle Siege weapons, guild join and guild create, alliances, Snowman and Julia moves, Doppelganger / Imperial Guardian party entry, and event items taken out of Blood Castle / Illusion Temple

Config & admin
  • New action-reject log in the ActionReject\ folder next to the GameServer, all off by default: WritePacketRejectLog (unknown opcodes, wrong sizes), WriteMovementRejectLog (teleport range, forged path, blocked tile, stuck warp, MOVE_THROTTLE, MOVE_STUNNED, gate mismatch, CC position), WriteSkillRejectLog (incl. SKILL_RANGE), WriteItemRejectLog in GameServerInfo - Common.dat. The last two are not in the shipped file. Capped at 5 lines/s per category per player

  • New Market log in the Market\ folder (WriteMarketLog, default 1): every deposit, withdraw, price change, open/close, buy, collect, refusal with reason, coin escrow step and refund

  • FactoryReset.sql also clears PvPKillLog and HelperLoot

  • Custom Quests have a Repeat="Weekly" mode that resets for everyone at the same moment: WeeklyResetDay (0 = Sunday .. 6 = Saturday, default Monday) at DailyResetHour in Plugins\Quests\Settings.xml. Cooldown with CooldownHours="168" stays a rolling 7 days from each player's own turn-in

  • The server list shows "(Non-PVP)" on the right server again. The ConnectServer packed each server's Non-PvP flag by its position in the group while the client reads it by server code, so groups with gaps in their codes showed the label on the wrong server

  • Scrolling notices: Util/Notice.xml accepts Type="2", a band that scrolls across the top of every player's screen (it existed on the client but nothing on the server could send it). Options: TextColor, Speed (10 slow, 25 default, 60 fast), Count (times it scrolls per broadcast, 1-30) and Delay (seconds between those). New GM command /slide <text> (Command.xml Index 87) sends one right away to every GameServer of the group. Players can hide it with the slide-help option in Options. Ship the new Command.xml

V1.0.71

A repair, durability and pricing hotfix. Repair bans stop being hardcoded item ids and become data in Item.xml, item values no longer overflow into negative or nonsense prices, and two long-standing monster bugs (poison damage percent, resistance clamping) are fixed.

Client

Bug Fixes
  • Items sitting on vanilla non-repairable indexes (Pandora's Pick, mini wings, transform rings) silently refused to repair. The repair ban now follows Repair="0/1" in Item.xml instead of hardcoded item ids.

  • Item durability could display past the 255 cap (255/270) when the item carried an excellent or ancient option.

  • Ancient wings showed 247/255 forever and never repaired - the client granted wings the +20 ancient durability bonus that the server never gives to the wing slot.

  • Repair cost showed -9223372036854775808 on high level items: the item value overflowed 32 bits and the negative value went through a square root.

  • Item prices overflowed to negative values on high DropLevel items such as wings and custom items.

  • The extended inventory showed a client-estimated item price instead of the server price.

  • Item price changed depending on where the item sat (equipped, inventory, extended inventory) and was only correct after reopening the shop.

  • The sell price estimate was three times too high - buy and sell were swapped.

  • Custom pets and mounts now tell you they cannot be repaired instead of the click doing nothing.

GameServer

Bug Fixes
  • Non-repairable items are now data driven through Repair="0/1" in Item.xml instead of hardcoded item ids, matching the client.

  • Item prices overflowed to negative values on high DropLevel items such as wings and custom items.

  • Effect.xml Value1-4 are now 32-bit. Values above 65535 used to silently wrap, turning a poison-per-tick cap of 2000000 into 33920.

  • Monster AI poison casts used the monster's object index as the damage percent instead of 3%, so monsters in high object slots poisoned for hundreds of percent of current HP per tick.

  • Monster resistances 2-7 were clamped against the first resistance value instead of their own.

V1.0.7

The rendering release. Every remaining effect that still ran at the 25Hz logic rate now renders at your real frame rate, item and character effects moved onto shaders, and the systems that were still hardcoded (skill requirements, set options, downgrade rules) became configuration. Adds new systems on both sides: Lucky Spin, custom pets and mounts, the Bridge event exporter, item implicits, item emitters and tooltip expansion.

Client

Rendering and performance
  • All remaining skill and buff effects now render at your real frame rate instead of the 25Hz logic rate: Twisting Slash and Cyclone sword glow, attack and defense-down debuff glow, Summoner curse cast flash, Death Stab ghost sparks, Lightning and Electric Spike sparks, Elf heal and AG sparkles, energy flares, Evil Spirit, screen shakes, Swell Life, Thorns, Berserk and the combo nova - no more strobing.

  • Excellent, ancient, +level glow, oil and chrome item effects are now rendered through shaders, and character and item effect rendering went through a heavy GPU optimization pass.

  • Kalima was heavily optimized.

  • Character turning is no longer choppy, and various animation jitter was fixed.

  • Restored the missing +15 set effect on the character.

  • Dropped items now spin and settle smoothly.

  • All blinking UI elements (chat input caret, announcements) now pulse at full frame rate.

  • Client launch speed improved further.

Features
  • Lucky Spin: configurable prize wheels with charges, weekday recharge schedules, entry gates and per-slot rates.

  • Custom pets and rideable mounts with their own models, animation sets, movement speed and item options.

  • FPS and ping counters on the HUD.

  • Map names are now shown in the top-left panel, read from MapManager.xml.

  • Buff and potion tooltips now show their actual values.

  • Quest UI improvements, including hiding completed quests per quest configuration.

  • ItemSellPost UI reworked with an online indicator and a whisper button.

  • Item tooltip expansion: new tooltips, borders and labels driven by ItemOption.xml filter patterns.

  • Items in equipment slots are auto-scaled and centred the same way as items in the cash shop.

  • Discord Rich Presence.

  • Account creation and "remember account" are now available directly from the login box.

  • The reset window was updated - stat inputs can be moved through with Tab.

  • CustomItemVisual pages gained more operations for item render meshes, including per-page spin and oscillation.

  • Screenshot path is now configurable through ConfigEncoder.

  • Event display can be ordered by how soon each event starts instead of a static list, and the fix for events not showing up at all.

  • Added a "Register All" button for Lucky Coins and Mark of Lord.

  • Entering a stat amount above the cap now autocorrects to exactly the number of points needed to reach the cap, so you can type any large number to fill a stat.

Bug Fixes
  • The combine window listed each required item by the name of one specific piece, even when the recipe accepted a whole range. Tiered crafts read as if only that one piece was valid.

  • Right-clicking anywhere on the UI no longer casts a skill or starts a walk, and closing a window no longer moves your character.

  • Casting past a skill's maximum range now clamps the distance instead of failing, and out-of-range casts no longer play their effects when no damage can land.

  • Percentage-based bonuses now update the character panel instead of being silently dropped from the stat packet.

  • Fixed jewels not being applicable to wing slots - every such check now uses the item slot rather than hardcoded item ranges.

  • Fixed Wings of Fate and some Muun pets (for example Blue Fairy) not rendering when viewed from behind.

  • Custom pets and mounts now appear for other players immediately instead of after a zone change or reconnect.

  • Fixed flying mount and custom wing checks across all zones and boss fights.

  • Fixed Rage Fighter head direction when casting buffs and Dark Side, and restored Impale animations.

  • Fixed a crash when both characters had 0 defense and 0 shield, caused by the health bar.

  • Fixed a UI bug where ground items matching items in an open quest window rendered incorrectly or moved into the UI when picked up.

  • Fixed buff effects not being cleaned up while in a party.

  • Fixed Dark Lord scroll body light being too dark in the inventory.

  • Crywolf scorpions no longer render their shadow above themselves.

  • Fixed the +13 set effect jittering.

  • Fixed wings disappearing after a trade.

  • Fixed a client crash when hovering certain items while certain items were equipped.

  • Personal store names now stay on one line.

  • Screenshot shortcuts no longer open the sell post window.

  • Right-clicking the chat interface without an active chat input no longer autofills the whisper name.

  • Stackable items picked up from the ground now show the amount in the system message.

  • The jewel bank no longer jumps back to page 1 after a deposit or withdrawal.

  • The character delete prompt no longer asks for a password it always accepted empty.

  • Event entry rejection messages now state the real reason.

MuHelper
  • MuHelper and offline mode now respect the same restrictions as manual play: weapon type and ammo rules, and level, energy and charisma requirements per cast.

  • Fixed party healing with an Elf.

  • No longer gets stuck trying to pick up zen at the zen cap.

  • Repair fixes: no repair sound at full durability, and ancient, socket and excellent items now repair correctly.

  • /evo now resets only the helper's skills instead of the whole helper.

GameServer

Features
  • Bridge event exporter (paid add-on): exports gameplay events to the new BridgeServer for website, bot and Discord integration.

  • Skill learning is now validated against every stat, skill requirements are re-checked on each cast, and KeepSkillBelowLearnReq in Common.dat lets learned skills stay castable when a reset drops the character below those requirements.

  • Skill.txt is now heavily data-driven, including two new columns: ReqWeapon (a bitmask of the item groups the skill needs, with an either-hand bit for bows and crossbows) and ReqAmmo. These are what MuHelper and the offline helper now honor.

  • Downgrade configuration: disable classes, NPCs and systems to emulate an earlier season, synced to the client.

  • Set item options now share the same option pool as regular item options in ItemOption.xml, and the pool was extended with 380 options.

  • ItemImplicit: wizardry damage, curse damage, scepter pet damage and book success rate are now configured per class and per item range in ItemImplicit.xml. The MagicDamageRate column was removed from Item.xml - it defined all four at once and only worked on four hardcoded item ranges. Delete it from your Item.xml and move those values into ItemImplicit.xml.

  • ItemEmitters: bone-anchored particle emitters attached to any item, configured in ItemEmitters.xml.

  • CustomMonsterVisual now exposes animation remapping, per-action animation speed and a configurable metal/chrome glow overlay.

  • Mounts and custom mounts now have a configurable flinch chance (*DamageStuckRate in Character.dat, StuckRate in CustomPets.xml). 0 keeps the classic never-flinch behavior.

  • Maximum +additional option level raised to +15, and items can now carry up to 30 options.

  • Skills can be strictly disallowed while mounted, configured in SkillTweaks.xml.

  • NoExp and NoDrop are now Monster.xml attributes instead of hardcoded monster-class lists in the GameServer.

  • Jewelry (rings and pendants) can be configured to allow level-up: Jewel of Bless and Soul work on them, and they drop with levels according to ItemOptionRate.xml. The maximum jewelry item level is configurable and every item source caps at it.

  • Attack speed overcap: equipment options and buffs can now exceed the regular attack speed cap by a configurable amount.

  • SpecialClassMoveLevelDiscount turns off the separate, lower /move level requirements for Dark Lord, Rage Fighter and Magic Gladiator.

  • Quests can be configured to hide once completed.

  • The Trainer NPC now shows items left in his chaos mix inventory, not just the Chaos Goblin.

  • GameStrings.xml: a new server-side text table, sent to the client at login. Any configuration that puts text on screen can now use an id from this file instead of requiring an edited and re-downloaded client. Ids from 10000 upwards come from GameStrings.xml, anything below still reads the client's own text.

  • Chaos mix sources can carry a display name. A recipe that accepts a whole range of items - a full armor tier, every class variant of a piece - can now show one label such as "Manticore Armor Part" instead of naming whichever single item happened to be first in the range.

Bug Fixes
  • Fixed a critical bug where selling an item from a full extended inventory deleted it.

  • Blood Castle gates are now force-opened when they should be - a rare state left a gate marked "Destroyed" but still impassable.

  • Fixed Rage Fighter custom claws dealing no damage with skills.

  • Fixed duplicate Bag Index ids being silently ignored instead of loaded.

  • Fixed a negative overflow in the cash shop currency handling.

  • Chaos mixes now check extended inventory space before mixing, and right-click works for moving results back to the inventory.

  • Lucky item creation now supports right-click to deposit and withdraw cards, and results can go straight to the extended inventory.

  • Fixed the catch-up system using max level-up as the reset weight setting.

  • Login level check now accounts for resets, so resets no longer teleport you to town below level 6.

  • Sell post whisper now has anti-spam protection.

  • Fixed Summoner attack speed occasionally needing a spell change and recast to reapply.

DataServer

Performance
  • Saves are now parallelized, the write-ahead log was fixed, and only changed data is written instead of a full table scan. This should eliminate almost all slow-save warnings.

JoinServer

Features
  • Proper password hashing: PasswordHashMode = 2 stores accounts as PBKDF2-HMAC-SHA256 with a per-account salt and a configurable work factor, replacing plain text and WebZen's non-standard MD5. Existing databases keep working - LegacyPasswordMode decides how not-yet-migrated accounts are read, and each account is re-hashed on its next successful login. Any website or CMS can now produce the same hash with a standard library instead of shipping a compiled WebZen MD5 binary.

Tools

Bug Fixes
  • AxiomEditor no longer corrupts the class field of edited characters.

  • AxiomEditor PK status values are no longer inverted.

V1.0.6

The biggest quality-of-life and stability patch since launch. Two large themes: everything loads and syncs faster, and several long-standing custom systems (quests, sockets, item option names, catch-up) are now fully data-driven.

Client

Performance
  • All monsters are now preloaded when the client launches, removing the disk I/O stutter that happened the first time you walked into a new monster on a map.

  • Massively improved server-to-client syncing, reducing stutters during movement and viewport updates.

  • Massively improved client launch time - startup is faster and more consistent.

  • Monsters and objects now fade in and out instead of popping into and out of existence.

  • Raised the number of items rendered on the ground from 75 to 250.

  • Improved scrolling smoothness across various UI panels.

Features
  • Custom Quests system - server-defined quests with configurable objectives and rewards, opened with the O hotkey.

  • Catch-up rate mechanic - characters behind the top-ranked server progress receive scaled EXP, drop, and Zen bonuses, shown on an always-on HUD.

  • Extended inventory is now shown in shops and the chaos machine, and jewels and items stored there can be used directly inside those interfaces.

  • Party and pet health bars can now be toggled on and off, and the Hunting Log UI was reworked.

  • Trade and party invites are now valid for 30 seconds instead of 5.

  • Added a scrollbar to the MuHelper added-items list and fixed the selected-row background.

Bug Fixes
  • Fixed a bug where withdrawing from the jewel bank with no free inventory space could delete the items.

  • Event eligibility popups now state the exact reason you cannot enter (not enough resets, grand resets, master resets, or level out of range) instead of a vague message.

  • Fixed custom wings not rendering when culled at a distance, and removed item-level glow from small and custom wings.

  • Fixed CustomItemVisual static effects and effects being "stolen" by other effects (spawned without an owner).

  • Fixed Twisting Slash showing a stuck sword when casting and applied proper interpolation so the spinning sword no longer jitters while moving.

  • Fixed part of the Dark Raven rendering on a Dark Lord's back alongside the main-hand weapon.

  • Fixed tooltips rendering behind other UI (for example the event timer window tooltips drawing behind the bottom panel), and fixed skill tooltip placement.

  • Fixed the loading screen not scaling with window size when logging in a character.

  • Fixed party members buffing you being treated as attacking, which triggered the PvP counter.

  • Fixed minor crash paths in MuHelper skill icon rendering.

  • Fixed Marlon spawning - he now moves between his configured MonsterSetBase positions every 3-7 minutes, with corrected spawn points.

  • Stackable boxes now have a 0.5s cooldown before dropping to the ground to prevent spam drops.

GameServer

Features
  • Any item can now be flagged as a socket item, with client support and game data sync so the client recognizes exactly the configured items.

  • ItemDrop.xml can now spawn a stack from a single drop (for example 2-5 Jewels) instead of a single item.

  • Added the ItemOptionNames.xml override system for customizing item tooltip option names.

  • Implemented custom DLL loading (the plugin hooking that was previously missing).

  • Fixed the SetItemType.xml config headers.

Bug Fixes
  • Fixed custom chaos mixing and rewards.

  • Improved anti speed-hack detection with fewer false positives.

  • Config load failures are now logged in red, and the AutoReset debug log was removed.

DataServer

Bug Fixes

Reduced DataServer log spam.

V1.0.5

Focus on offline play, self-serve performance controls, and rounding out the shop and item-visual systems.

Client

Features
  • Full offline helper - a replica of MuHelper that runs in offline mode (some visual glitches for other players will be ironed out over time).

  • Right-click to sell an item while an NPC shop is open. Hold ALT to force-sell without the confirmation popup, and press Enter to confirm the popup on expensive items.

  • Added an FPS limiter in System Settings > Graphics > Render so players can cap their own frame rate.

  • Reworked the experience bar to show absolute progress through the current level instead of a stacking value.

  • Effects can now be canceled by right-clicking, driven by an attribute in Effect.xml.

  • CashShop editing is now built into AxiomEditor, along with WC / WCC / GP editing.

  • Improved the level-up points popup with clearer messages, autofocus, and better hint text.

Bug Fixes
  • Fixed keyboard input being queued and cascading to other applications, which caused lag when keys were pressed.

  • Fixed CustomItemVisuals - the arrow-effect override, Rage Fighter weapons being recognized as gloves with proper left/right variants, and support for capes with no animation (they now use the default cape cloth simulation with a custom texture).

  • Fixed characters not leveling up when a monster gave more experience than needed to level, so experience now carries over correctly.

  • Fixed the Hunting Log experience value capping at roughly 4 billion.

  • Jewel of Life options are now picked at random when multiple are defined.

  • Automatic reconnection now works when the game is minimized to the tray, and the render engine stops when the window is minimized to the taskbar to save resources.

GameServer

Features
  • Added a Common.dat toggle to keep item bonuses when an item is equipped but its requirements are no longer met.

  • Added per-map, per-IP PK limits configured individually for each map in MapManager.xml.

Bug Fixes
  • Max connection count is now checked correctly, with headroom that keeps already-connected accounts online and only drops new connections when full.

Changelog - May

What a month... 2 server launches, 3 patch release (fourth started but not finished)

This month 1.0.4 was launched, biggest and the most "enabling" patch - Some people took it for a spin launching the server.

Client

Performance

Improved inventory rendering performance by caching item poses and optimizing sprite lookup, resulting in higher FPS when viewing items.

Features
  • Right-click inventory items to quickly sell them when the NPC shop is open; hold ALT to bypass the high-value confirmation popup. The confirmation dialog now also supports Enter (confirm) and ESC (cancel) keyboard shortcuts.

  • Added Max FPS setting in Graphics > Render tab (0/30/60/90/120 FPS), simplified experience bar to show percentage, and fixed click-through bug when closing the Graphics settings window.

  • Level-up points popup now autofocuses the amount input and shows clearer error messages; reset panel rewards display one per line for better readability.

  • Players can now right-click to cancel any buff marked as cancellable by the server (seals, scrolls, elixirs, Infinity Arrow, Swell of Magic Power, etc.), replacing the previous hardcoded system that only worked for two specific buffs.

  • Expanded custom item visuals system with cape texture overrides for Dark Lord/Rage Fighter capes, custom glove left/right model variants, BMD-as-texture cape mode for atlas-packed textures, and fixes for high-index item rendering and cape texture persistence when swapping wings.

  • VIP menu now supports dynamic tier configuration from server data (no longer limited to 3 hardcoded tiers), and invasion system capacity increased from 8 to 16 maps

  • Added a stat allocation popup window allowing players to add multiple points at once and configure automatic stat point distribution when leveling up

  • AutoReset feature is now available in the Reset Panel, allowing players to enable automatic character resets and configure stat point distribution (STR/AGI/VIT/ENE/CMD) to apply after each reset

  • Added tooltip in the jewel bank showing Shift+Click applies x10 or the maximum available for faster transfers.

  • Event entry brackets for Devil Square, Blood Castle, Chaos Castle, and Illusion Temple can now be configured server-side with support for level, reset, grand reset, and master reset requirements.

  • Added support for server-defined custom jewel items that can be dragged onto equipment via the inventory interface.

  • Experience values now display with comma separators for better readability (e.g., 1,000,000 instead of 1000000).

Bug Fixes
  • Fixed automatic reconnection not progressing when the game window is minimized to the taskbar.

  • Fixed client lag that could affect input responsiveness for the client and other applications by moving keyboard hook processing to a dedicated thread

  • Fixed chat-triggered emote animations that would fire inappropriately on normal conversation, and added server-authoritative success rate display for lucky item mixes with improved chaos mix filtering.

  • Fixed name clipping bug where the first character of a player's name was missing during trade requests.

  • Fixed MuHelper self-defense to correctly track PvP attackers without attacking nearby party members, and improved party HP bar visibility by pushing overlapping chat bubbles out of the way

  • Fixed connection and reconnection issues by properly managing wire crypto state, reducing connection establishment latency and preventing handle leaks.

  • MU Helper now displays clear error messages for disabled features, level restrictions, and mode conflicts, plus adds offline mode confirmation dialog.

  • Fixed MuHelper anti-lure protection to prevent being tricked into leaving your hunting zone and fixed repeated attempts to pick up unlootable items.

GameServer

Performance

Major performance optimizations including spatial indexing for viewport queries, per-connection send locking to reduce contention, dedicated network receive worker thread, and removal of VM emulation overhead from hot paths.

Bug Fixes
  • Fixed a visual bug where the experience bar would incorrectly show over 100% after leveling up until the next monster kill resynced it

  • Fixed item option generation for wings and custom items, corrected invasion monster drops (e.g. Kundun), and expanded custom item visual customization with cape textures and render templates.

  • Invasion events can now be configured with a 'Never' boss end policy, and boss names now appear in kill announcement messages.

  • Fixed AutoReset stat allocation interfering with the StatPopup window — stats are now applied correctly without resetting the player's active stat point distribution.

  • Reset functionality has been consolidated under the Reset Panel—players must now use the Reset UI instead of /reset, /gr, /mr commands or NPC menus, fixing issues caused by the previous dual-path reset system.

  • Fixed monster AI for Class 459 monsters which were not attacking players

  • Fixed +380 item upgrade eligibility check and chaos mix refunds for misconfigured options; pet mix rate display now works correctly in Trainer interface.

  • Fixed MuHelper auto-reset to properly respect TeleportToBaseMap settings and MuHelper run state.

  • Fixed player names being clipped in the item sell post system when names were exactly 9 characters long

  • Fixed a critical bug where items in the Chaos Box could be lost when closing the Chaos Goblin interface

  • Fixed race condition that could allow the same account to occupy multiple game server slots simultaneously, preventing invalid account errors and connection issues during rapid re-login scenarios.

  • Fixed an issue where monsters with zero item drop rate could still trigger item drop logic

  • Fixed a bug where players could get stuck in a reconnect loop during Crywolf events when the map overlay swaps, now automatically relocating players standing on wall tiles to prevent force-warps.

Features
  • Added configurable per-map PK limiting that restricts how many kills a single IP can commit within a time window, preventing excessive griefing while allowing legitimate account reconnections.

  • Players can now cancel certain buffs by right-clicking them; only effects flagged as Cancelable in Effect.xml can be removed, preventing exploitation.

  • Added stats popup UI allowing players to add stat points by amount and auto-assign stats to reach target values

  • Event entry brackets (Blood Castle, Devil Square, Chaos Castle, Illusion Temple) can now be configured via Event.dat with custom tier ranges based on level, reset, grand reset, and master reset, plus per-IP character limits and master class bypass options.

  • VIP players now receive configurable item drop rate bonuses based on their account level.

  • Added plugin integration support for chaos mix systems, allowing plugins to override success rates and costs for all mix types including items, wings, pets, and socket crafting

  • Added custom jewel data synchronization to clients, enabling proper display and handling of custom jewels defined in CustomJewel.xml.

  • Added map-specific level restrictions, time limits, cost multipliers, and experience rates for MuHelper and Offline Attack modes.

ConnectServer/JoinServer/DataServer

Performance
  • Reduced latency between ConnectServer and GameServer by disabling Nagle's algorithm on inter-server socket connections.

  • Reduced latency in inter-server communication for JoinServer to GameServer socket connections.

Bug Fixes

Fixed a race condition in account connection handling that could cause duplicate logins or incorrect disconnections under high latency

Features

AutoReset settings have been moved to a dedicated ResetSystem module with per-character reset tracking for Normal, Master, and Grand Reset types including day/week/month counters and timestamp tracking

Thank you everyone for your time and motivation to go forward! <3

Changelog - April

This month focused on hardening security across all components, launching the Gold Channel premium system, expanding the plugin ecosystem, and continuing to squash visual and gameplay bugs reported by the community.

Not all changes are listed here, only the most "notable" ones, you can always check our Bugs list and their status in our discord "Bugs" channel.

Client

Performance
  • Added effect culling to prevent performance degradation during rapid-fire spells and mass monster deaths

Visual & Rendering
  • Fixed LevelUP visual effects jittering sideways during player movement

  • Fixed visual jitter and oscillation on pet and mount effects like Dark Spirit level-up animations

  • Fixed Raven pet jittery movement during character motion

  • Fixed RF Increase Health buff visual effect not appearing when the character moves away from its original position

  • Fixed projectile arrows lagging at character's feet due to incorrect position interpolation

  • Fixed jittering of UI overlays including chat bubbles, HP bars, and shop titles to keep them properly aligned with characters

  • Fixed smooth movement for mounts (Fenrir, Dark Horse, Pegasus, Uniria) and pets

  • Fixed multiple visual glitches including teleport trails, monster effect artifacts, and smoke rendering gaps across Battle Castle, Crywolf, Empire Guardian, Swamp of Quiet, and Raklion maps

  • Fixed visual effect and object description issues in Kalima map

  • Fixed character spawns appearing with malformed or incorrect bone data

  • Fixed UI layering issues and corrected rendering during cinematic sequences

UI
  • Added Gold Channel premium server support with ticket-based access and expiration time display on character selection screen

  • Added 6 new quick-access menu options (Event Timers, Jewels Bank, Resets, VIP menu, Detailed Stats, Sell Posts) with keyboard shortcuts (H, J, Y, S)

  • Personal shops now support pricing items in Jewel of Bless, Jewel of Soul, or Jewel of Chaos in addition to Zen, accessible via Tab key when setting prices

  • Middle mouse button now toggles MU Helper, and UI tooltips and gauge numbers display with improved formatting

  • Item tooltips now group and color-code special options by category (Skill, Excellent, Luck, etc.) with fully configurable colors in the client configuration

  • Warehouse now supports pagination with page navigation controls for additional storage pages

  • Added server-synchronized effect buff system for consumables (elixirs, scrolls, seals) with new detailed stats including triple damage rate, flat damage bonuses, and full damage reflect

  • Enabled the cash shop system with server-side catalog sync

  • Fixed character class name shifting left at higher resolutions (1440p/4K) and improved character creation dialog scaling

  • Fixed UI glitches that caused garbled text to appear when items, monsters, or party members were near the edge of the screen

  • Fixed zen cost display in chaos box mixing to match server calculations

  • Improved Invasions UI with pagination and themed styling

Security
  • Upgraded client configuration file encryption from weak XOR to AES-256-GCM, providing stronger protection for server connection settings

  • Added AES-GCM encryption for client-server communication

  • Fixed security vulnerabilities in guard window rendering and UI bitmap resource allocation

Bug Fixes
  • Fixed PvP stats truncation for high-Dexterity characters and improved MuHelper offline mode exit behavior

  • Fixed accuracy of displayed combat stats (damage, defense, attack rating) by using server-calculated values instead of client-side computations

  • Fixed auto-hunter (MuHelper) to no longer attack player-owned summons like Elf Goblin/StoneGolem

  • Fixed item options with values greater than 255 being incorrectly displayed or applied

  • Fixed phantom item tooltips appearing for non-existent items and broken set item option displays

  • Fixed PVP counter-attack not triggering in MuHelper, and activation skills not respecting cooldowns

  • Fixed several skills (Electric Spark, Strike of Destruction, Impale, Swell Life) not working in MuHelper

  • Fixed Drain Life incorrectly classified as healing instead of attack in MuHelper

  • Fixed effect particles spawning excessively causing performance issues, and duplicate restriction text in item tooltips

  • Added auto-reset and auto-accept friend/guild features to MuHelper

  • Fixed picked up items being lost when right-clicking elsewhere in the inventory

  • Fixed players becoming unable to move items after reconnecting to the server

  • Fixed item restriction tooltips now showing server-enforced trade/sell/drop/vault/store bans

  • Fixed Icarus map to prevent unequipping wings or helper without a flying pet

  • Fixed dual-wield weapon switching and enhanced visual effect interpolation during character movement

  • Fixed item pricing display to properly show server-authoritative prices when buying, selling, and navigating shop pages

Reliability
  • Converted item effect system to plugin-based architecture, enabling custom consumable items and buffs via server-side configuration

  • Added Bless of Light consumable items (Low/Middle/Greater grades) providing EXP and Master EXP boosts

  • Added support for custom monster and NPC visual properties configurable via server configuration

  • Server tooltips now show detailed descriptions and load status, with configuration received from ConnectServer instead of local files

GameServer

Security
  • Added AES-GCM wire encryption for client-server communication to protect gameplay data and prevent packet tampering or interception

Features
  • Added Gold Channel system for premium server access and NonPvP server configuration

  • Added ItemEffect plugin system for creating custom item effects and buffs with configurable stat bonuses via XML

  • Added new experience boost items with low, medium, and high tiers that increase both regular and master experience rates

  • Added custom monster and NPC visual plugin allowing customization of model files, scale, and display names via XML

  • Warehouse page switching now uses UI arrows instead of /bau command, with Vault Expansion Certificate items to unlock additional pages

  • Post command now supports configurable Zen cost and custom message prefix

  • MuHelper now supports direct transition to offline attack mode through the OffLine checkbox, eliminating the need for manual /offattack commands

  • Added MuHelper auto-reset support with new AllowMuHelperAutoReset configuration option

  • Added support for custom game data paths via command-line flags or environment variables, with optional overlay directories for deployment-specific overrides

  • Added ReflectDamageCheckOwnerLive configuration option to control whether reflect damage continues after the reflecting player dies

  • Increased custom item description field from 64 to 128 characters

  • Character combat stats are now server-authoritative for improved accuracy

Bug Fixes
  • Fixed server crash when configuration files contain names or text exceeding the maximum allowed length

  • Fixed stat displays to correctly show effect bonuses, resolved class-specific item usage restrictions for Elixir of Leadership

  • Fixed skills learned independently remaining visible in hotbar after unequipping the required weapon

  • Fixed excellent item drop rates not being correctly applied in Config Mode

  • Fixed weapon skill removal to preserve independently learned skills when unequipping weapons

  • Expanded item price capacity to support values above 2 billion Zen

  • Fixed chaos mix recipes to display correct zen cost to players

  • Melee skills with dash functionality now properly teleport players to their target

  • Improved Illusion Temple event teleportation behavior

DataServer

Features
  • Enabled the cash shop system with stability improvements for in-game purchases and gifts

  • Personal shop item management features are now available on all server versions, removing the previous version requirement

ConnectServer

Features
  • Added server group system with dynamic tooltips, configurable positioning, and per-server descriptions sent to clients without requiring client-side file changes

JoinServer

Security
  • Removed global password bypass feature to improve account security and prevent unauthorized access

Features
  • Added Gold Channel support, allowing premium players to access special servers with enhanced gameplay benefits

Changelog - March

This month container Demo server release + continuing fixing bugs & issues focusing on critical - game breaking bugs, improperly working systems, annoying visual glitches.

Not all changes are listed here, only the most "notable" ones, you can always check our Bugs list and their status in our discord "Bugs" channel.

April will be spent focus even more on hunting those critical/game breaking issues and applying community suggestions.

Client

Performance
  • Fixed visual flickering and performance issues with effects and particles at high frame rates via smart throttling, preventing duplicate effect creation between logic and render ticks

  • Improved frame timing accuracy using high-resolution timers, reducing input lag and frame jitter during gameplay

  • Mobs and projectile effects now animate and turn more smoothly at higher frame rates

  • Fixed FPS calculation and reduced excessive visual effect overhead

Visual & Rendering
  • Fixed visual stuttering and position jumping on skill effects during combat

  • Fixed visual artifacts where character eye glow and equipment lights would stutter during movement

  • Fixed item rendering issues including black rectangles on glowing/shimmering effects and incorrect item name colors in inventory

  • Fixed Soul Barrier effect sound/visual reset, summoner book skill visual jitter, and wall collision detection for specific monsters

  • Fixed Dark Lord cloak rendering and flying helper/pet movement to follow owner smoothly

  • Fixed visual strobing/flickering during character level-up effects

  • Added MSAA (anti-aliasing) support and toggles for Chrome, Bright, Oil Sheen, and Wave Distortion effects

  • Added new Graphics Settings window for resolution, filtering, shadows, effects, and world display options

  • Added support for 20+ new maps including Arkania, Nixie Lake, Kubera Mine, Atlans Abyss, and Deep Dungeon

  • Minimap now supports mouse wheel zoom with improved visibility and widescreen support

  • Added smooth camera zoom transitions

UI
  • Added extended inventory system with two unlockable expansions (64 additional slots), supporting gem combination, right-click use, equipment, stacking, and ground dropping

  • Added close button to the extended inventory window

  • Item stack counts now displayed on item names (e.g. Potion x10) in bags and on the ground

  • Added monster spawn points to minimap with server-synchronized NPC, portal, and spawn locations

  • Improved damage number display with comma separators

  • Added configurable bottom UI scaling with 1440p/4K resolution support

  • Increased chat message limit from 90 to 256 characters

  • Added server-configurable item movement permissions - admins can now control which items can be dropped, sold, traded, stored, or listed in personal shops

Security
  • Added DLL integrity verification at startup using SHA-256 hashes to prevent tampering and DLL hijacking

  • Added anti-speedhack protection detecting malformed packets and disconnecting suspicious clients

  • Switched auto-update delivery to HTTPS

Bug Fixes
  • Fixed castle siege gates and structures to work correctly during battle castle events, allowing defense team to properly target and defend them

  • Fixed client crash and items not transferring to extended inventory if it had not been opened previously

  • Fixed MuHelper item pickup to correctly match item names including level, skill, luck, and option suffixes with case-insensitive searching

  • Fixed incorrect stat requirements display for non-equippable items such as scrolls, orbs, and consumables

  • Fixed MuHelper start validation for Elf class to require party buff support when no attack skills are configured

  • Fixed MuHelper buff casting failures when no enemies were nearby and skill resets during class changes

  • Fixed combination system to correctly count stacked items by full stack size instead of treating each stack as a single item

  • Fixed attack and skill timing calculations to prevent negative delays and ensure balanced combat pacing

  • Fixed picked item getting stuck when character dies and improved Blood Castle event compatibility

  • Fixed ring equipment validation to allow different types of special rings to be equipped together

  • Fixed item drop distance clamped to 7 units from character position

  • Fixed weapon requirements for Mana Rays and Spiral Slash skills

  • Fixed incorrect item set option data caused by invalid array access

  • Fixed MuHelper to only target monsters and players

  • Added level 50 requirement for pet durability recovery

Reliability
  • Jewel of Harmony option data is now received from the server, allowing server-side configuration without requiring client BMD file changes

  • Server-synchronized gate and portal data now supports dynamic portal configuration

  • Castle Siege skills can now be used in all maps when enabled via server configuration

  • MuHelper now auto-consumes mana potions and prevents wasted casts from insufficient mana or AG

GameServer

Performance
  • Gate data is now cached and compressed at startup, significantly reducing server load and improving connection times under high player counts

Visual & Rendering
  • Fixed Multi-Shot skill causing duplicate visual effects on both sides instead of only on the correct target

  • Fixed set item data synchronization to ensure set bonuses display correctly on clients

UI
  • Added minimap NPC, portal, and monster spawn location sync to client minimaps

  • Event timer descriptions now support up to 1024 characters (previously 256)

Security
  • Added server-side anti-cheat to detect and disconnect players using speed hacks or bypassing skill requirements

  • Fixed item drop distance validation to prevent coordinate exploit, clamped to within 7 units of player position

Bug Fixes
  • Fixed Castle Siege gates to properly block movement when closed, allow destruction during sieges, and display correct visual state to all players

  • Fixed Sign of Lord registration to use stack count instead of durability

  • Fixed a critical logic bug that could cause the wrong items to be deleted during guild mark registration

  • Fixed player buffs persisting when entering event instances (Blood Castle, Chaos Castle, Devil Square, Illusion Temple, Imperial Guardian)

  • Fixed item drop generation producing incorrect items when processing ItemDrop.xml data

  • Fixed client notifications for experience display and master level updates not being sent correctly

  • Fixed teleport skills being incorrectly processed as attack skills

  • Fixed dying or logging out causing incorrect HP saving and preventing proper character switching

  • Fixed attack speed and skill timing formula to use reciprocal scaling for more balanced progression

  • Fixed Jewel of Harmony option validation bug causing incorrect early returns when adding harmony options

  • Fixed chaos mix success rate calculation to correctly identify the first item level from the recipe

  • Fixed non-equippable items incorrectly showing class requirements in item descriptions

  • Fixed anti-speedhack false positives for legitimate players spinning in place

  • Fixed Dark Horse range bonus not applying to attacks and skills

  • Fixed validation to prevent luck option being applied to incompatible items

  • Fixed lucky item mix handling in ChaosBox and enabled lucky items to be moved into ChaosBox

  • Fixed money overflow by increasing money values from 32-bit to 64-bit, preventing crashes with large Zen amounts

  • Fixed item bags incorrectly adding skill options to items that do not support them

Reliability
  • MuHelper minimum level requirement is now configurable via server settings instead of being hardcoded

  • Zen values now support 64-bit integers, preventing overflow on high-zen servers

  • Jewels Bank withdrawals now automatically fill existing partial stacks in inventory

  • Item bags now support dropping stackable items with configurable quantities

  • Chaos mix failures for 380 options now preserve the equipment item instead of losing it

  • Extended inventory expansion system now properly saves state to database with user notifications on unlock

  • Chat message limit increased to 256 characters across all chat types

DataServer

Bug Fixes
  • Fixed Castle Siege registration when using stackable Sign of Lord items

Demo Server Launch

The demo server is live - create your account, grab the launcher, and jump in.

This is an early build, so bugs are expected and honestly welcomed. If something feels off, breaks, or just doesn't seem right - drop a report in our Discord. Every bug you catch helps us make this better.

Got an idea for a feature or improvement? We have a suggestions channel in Discord for exactly that.

And for those of you putting in the time to test and report - we see you. Beta testers will be eligible for rewards and discounts when official licenses go live, based on contribution. We'll share the details on how that works soon.

See you in-game.

Changelog - February

Did some play testing, finding and squashing bugs, working on modern features MuOnline servers in 2026 require.

Client

Performance
  • Mount and pet animations now render smoothly at 60fps with frame interpolation.

  • Improved bloom post-processing shader for smoother visuals and better performance.

  • Spell and ability animations now use 60fps interpolation for smoother casting visuals.

Features
  • Party Reconnect: Party automatically saved and restored after disconnects or server restarts.

  • Multi-Page NPC Shops: Shops now support up to 8 pages (120 items each) with pagination controls.

  • Invasion HUD: Displays active invasion timers and monster counts in real-time.

  • Item Sell Post System: Ctrl+Click inventory items to broadcast sales to the server. Shift opens a peek window showing recent posts with item tooltips on hover.

  • Post-Processing Effects: FXAA anti-aliasing enabled by default. Optional Bloom and Motion Blur configurable via ClientConfig.xml.

  • Custom Item Visual Plugin: Server-defined item appearances including custom models, colors, glow effects, rotation/scale, custom arrow effects for bows/crossbows, tooltip descriptions, and wing display.

  • Detailed Stats Window now displays Attack Rate and clarified Defense Success Rate label to "Def Rate".

Bug Fixes
  • Fixed pet and mount visual duplication. Added single-click item movement to trade and mix inventories.

  • Fixed socket option names not displaying on socketed items.

  • Fixed summoner book equip effect appearing on wrong wrist, now follows character during movement.

  • Fixed Detailed Stats Panel - reorganized as Inventory sub-window with updated stat categories (actual defense, attack/magic speed, damage increases, elemental resistances, PvP stats).

  • Improved character and monster turning smoothness during pathfinding.

  • Fixed UI overlap where MuHelper, NPC dialogs, shops, storage, quests, and trade windows could stay open behind Jewels Bank or Event Timer.

  • Fixed item price sync with server, Crywolf event crashes, and item rendering in NPC shops.

  • Fixed system message box scrolling and reset panel packet collision causing message corruption.

  • Fixed visual jittering on rising spiral effects (e.g., level up) during movement.

  • Fixed Skeleton pet visual effects (eye glows, lights, flames) stuttering during movement.

  • Smoother fire-based map lighting (torches, candles, lanterns, bonfires) - replaced random per-frame flickering with smooth sine-wave animation across all maps.

  • Fixed character attachment effects (guild marks, team icons, 2D overlays) sliding out of sync during movement.

  • Fixed Summoner orbiting book effects (Sahamut, Neil, Lagul) stuttering while walking.

  • Fixed Raklion spider egg monsters potentially crashing or animating too fast due to triple-rendered copies.

  • Fixed lightning/thunder weapon effects (Storm Blade, etc.) appearing too intense at high FPS - now consistent regardless of framerate.

  • Smoother ambient creature effects - butterflies, fireflies, and crow eye glows now pulse smoothly instead of flickering.

  • Fixed flying creatures (bugs/fireflies) shaking vertically - now smooth wave motion.

  • Added safety guard against rare animation crash from corrupted or uninitialized animation data.

  • Improved player character rendering smoothness with interpolation between server tick positions.

  • Fixed all pet visual effects jittering during movement (Unicorn, Dark Spirit, Rudolf, Panda, Skeleton).

  • Fixed Dark Spirit level-up/level-down particle effects appearing offset while moving.

  • Fixed GM sign and ground effects (magic circles, aurora rings) sliding behind the character during movement.

  • Simplified cloth physics (capes, hair) - removed unnecessary offset calculation causing subtle wobble.

  • Fixed Kanturu 3rd map water splash particles spawning at wrong position during movement.

  • Fixed Aqua Beam flickering.

  • Fixed ring equipment validation.

  • Fixed event timer categorization.

GameServer

Features
  • Party Reconnect: Automatic party reconstruction when members reconnect, preventing disbandment after temporary disconnections.

  • Multi-Page Shops: Up to 8 pages / 960 items per NPC shop. Supports time-limited items via Duration attribute in shop XML.

  • Invasion Timer System: Real-time HUD with monster counts, time remaining, and location info. Automatic invasion completion when all monsters killed.

  • Item Sell Post System: Players broadcast items for sale to all online players. Configurable cooldown and customizable appearance.

  • All Events Included: Blood Castle, Castle Siege, Chaos Castle, Devil Square, Illusion Temple, Crywolf, Kanturu, Imperial Guardian, Raklion, and Invasion Manager now included in the base package.

  • Custom Item Visual Plugin: Configure custom item rendering via Data/Plugins/CustomItemVisual.xml with automatic client synchronization.

  • Extended Shop Currencies: ItemValue.xml now supports WCoinC, WCoinP, and GoblinPoint currencies for shop purchases.

  • Attack Rate added to detailed character stats window.

Bug Fixes
  • Fixed ammunition consumption using durability instead of stack count. Enabled stacking for arrows and bolts. Fixed equipment display sync after trades.

  • Fixed shop price sync - stackable items now display accurate buy/sell prices after purchases.

First "Playable" Build released

A lot of foundational work was done to have a stable, non crashing, visually sound - functional client & game server.

Started to restructure the "architecture" and logic of how GameServer communicates with it's components.

Client

Performance
  • VBO Rendering: Converted legacy immediate-mode OpenGL to modern VBO batching for terrain, UI, blur effects, joints, and BMD mesh rendering. 20-40% frame rate improvement with automatic fallback for unsupported hardware.

  • Chrome LOD System: Distance-based enhancement effect optimization. Close characters render full chrome, medium range caps at +9, far range skips chrome entirely. Configurable via ClientConfig.xml.

  • Frustum Culling Distance Cap: Configurable maximum render distance prevents drawing off-screen characters in zoomed-out views.

  • Particle & Sprite Free-List Allocation: Particle, sprite, effect, and joint creation converted from linear search to O(1) allocation. Major FPS improvement in monster-dense maps.

  • Bone Lookup Caching: Cached bone lookups eliminate repeated expensive searches for per-frame effects.

  • Aida Monster Optimization: Aida glow effects optimized from 19.8ms to 0.8ms per frame (23x faster). FPS with 60 monsters improved from 16.5 → 43.4.

  • Kalima Monster Optimization: Schriker fire particles rate-limited to tick rate, reduced particle iterations. Eliminates FPS drops in Kalima.

  • Ground Items Optimization: Configurable zen copy limit (80 → 30), name distance culling, and chrome skip for normal ground items. Reduced ground item rendering from ~8ms to ~2-3ms.

  • UI Visibility Culling: Inventory 3D rendering skipped when panel is closed. Eliminated ~6ms of wasted rendering.

  • Auto-Updater Caching: File verification data cached to skip redundant CRC32 calculations for unchanged files.

Visual & Rendering
  • Visual Interpolation System: Smooth rendering between 25Hz game logic ticks for characters, particles, effects, joints, camera, cloth/capes, damage numbers, mounts, pets, and guild emblems. Eliminates jerky movement at high frame rates.

  • FPS Decoupling: Render loop separated from game logic. High-FPS mouse/movement sensitivity still being fine-tuned.

  • Camera System: Zoom via F10/F11, terrain corner-culling fix, automatic widescreen aspect ratio compensation (16:9, 21:9). Max 3D camera FOV set to 50.

  • Monster HP Bars: Added lerp animation when updating. Fixed viewport shift when UI windows open.

  • Fixed buff glow particles rendering as black rectangles when mounted on Fenrir and moving.

  • Fixed Elf Triple Shot, Multi Shot, and Penetration arrows rendering at wrong positions.

  • Fixed monster footprint/ground effects jittering with movement interpolation.

  • Fixed weapon bone attachment inversion after equipping (weapons pointing downward).

  • Fixed GENS emblems appearing too large when camera zoomed out.

  • Fixed Kalima water rendering and item jitter due to interpolation.

  • Fixed high attack speed causing skill effects to not display (visual speed caps applied).

  • Fixed Icarus item interpolation jitter (wave effect now only applies to falling items).

  • Fixed character creation preview jitter for Elf, MG, Summoner, RF models.

  • Fixed Dark Lord horse skill showing Rageful Blow visual instead of Earthquake.

  • Fixed Summoner Eternal Wing Stick particles.

  • Fixed inventory item spin speed (slowed down by 50%).

  • Added zen comma separator for thousands.

  • Ground item tooltips now have padding and rounded corners.

MuHelper
  • Full System Port: Complete port of MuHelper from newer MU version to Season 5 codebase - hunting, buffing, healing, item pickup, money charging.

  • Hunting Log / DPS Meter: Real-time combat stats window (DPS, HPS, kills/s, EXP/s, total kills, session time). Auto-shows when MuHelper starts. Collapsible and draggable.

  • Anti-Kite: Stops chasing monsters that move outside hunting range from original position. Prevents luring exploits.

  • Server-Side Effect Rendering: All skill effects now render via server response for both manual and MuHelper casting. Removed inconsistent local effect workarounds.

  • Hunting distance default set to 8.

  • MuHelper continues after reconnect.

  • Elf can start helper without selecting skills (buffer/healer support).

  • Start MuHelper with Home button.

  • MuHelper start/stop system messages added.

  • Castle siege skills removed from helper assignment.

  • Fixed RF combo skills (Beast Uppercut, Chain Drive, Dragon Slasher) - played animation but dealt no damage.

  • Fixed RF buff skills (Ignore Defense, Increase Health, Increase Block) not supported.

  • Fixed Elf buff/recover skills showing bow attack animation instead of magic animation.

  • Fixed Elf bow skills casting but dealing no damage at close range.

  • Fixed arrow auto-equip from inventory. Helper stops gracefully when out of arrows.

  • Fixed Dark Lord Chaotic Diseier not playing animation or showing effects.

  • Fixed Power Slash not handled by MuHelper.

  • Fixed Multi-Shot causing 180° turn and duplicate effects.

  • Fixed Dragon Roar not showing ground shake or volcano effects.

  • Fixed Inferno/Hellfire not casting when standing still with monsters in range.

  • Fixed Dark Side multi-target skill not dealing damage.

  • Fixed Phoenix Shot applying cooldown but not executing.

  • Fixed wrong animation showing before correct skill animation.

  • Fixed PVP self-defense attacking players when disabled.

  • Fixed return-to-position oscillation for melee characters.

  • Fixed item pickup being interrupted by attack commands.

  • Fixed party autoheal settings being overwritten when editing.

  • Fixed buff recasting being inconsistent (e.g., Infinity Arrow).

  • Fixed pet resummoning for Elf.

  • Fixed 4th tab rendering.

  • Fixed current skill corruption due to empty buff slot.

UI
  • Buff Window: Timer display below each icon (compact format: 5m/30s/1h). Icons reduced from 20x28 to 16x22 pixels.

  • System Messages: Separated from chat into dedicated right-side overlay with 5s fade animation and scrollable history (100 messages).

  • Detailed Character Stats Panel: Scrollable panel showing bonus rates, damage, defense, resist, recovery, consumption, and wing/helper stats. Toggle from character panel.

  • Devil Square Widget: Real-time rank, points, and timer display during event.

  • Event Timers Window: Server-configurable event descriptions and tooltips, organized by category. Proper position reset when other windows close.

  • Jewel Bank UI: Full UI with auto-deposit toggle and dynamic server config.

  • VIP Menu: Server-configurable buy VIP interface.

  • System Tray Minimize: F12 to minimize to system tray with character info tooltip. Dynamic window title showing character stats.

  • Character Panel: Now shows regular resets, master resets, and master level. Master experience % for eligible characters (3rd class, 400+).

  • Extended Character Slots: Increased from 5 to 7 to support all classes per account.

  • Pet skills rendered on dedicated UI row.

  • External buttons added for detailed stats, VIP, and resets.

  • Repair hotkey remapped to L (fixed shop/inventory texts).

  • Spacebar pickup range reduced from 300 to 200 units.

  • Fixed disconnect popup OK button doing nothing.

  • Fixed selling expensive items - pressing Enter closing popup instead of confirming.

  • Fixed menu buttons not working after sort/render optimizations.

  • Fixed window title showing stale level data and missing Grand resets.

  • Fixed system messages firing for 3rd class before level 400.

  • Added MuHelper popups for different states (too low level, no skills, not allowed in map).

Bug Fixes
  • Fixed two-handed weapon equip conflict causing items to disappear from inventory until relog.

  • Fixed character deletion rejecting all passwords (was checking wrong field).

  • Fixed kill damage not displaying on 1-shot kills.

  • Fixed periodic items showing "hundreds of years" expiration on 64-bit builds.

  • Fixed crossbow and bolts not equippable at the same time.

  • Fixed Dark Raven crash on re-equip after relog and raised hand animation persisting after unequip.

  • Fixed Raven not appearing on raised hand for other players.

  • Fixed chaos box items unmovable after reconnect with internet crash.

  • Fixed LevelUpPoint overflow for characters with high stat points (WORD → DWORD).

  • Fixed effects creation/deletion leak.

  • Fixed attack speed sync between client and server, and auto attacks "missing" due to wrong formula.

  • Fixed wings and talismans.

  • Fixed +add options counting from level to value requirement.

  • Fixed various crashes: UI font deadlock at Blood Castle start, Dark Lord blur memory corruption, RenderItemName array indexing, SaveOptions overflow, pet repair parameter mismatch.

  • Fixed skill cooldown not checked client-side after GameDataSync port (animation played but server rejected).

  • Fixed Fire Slash working via MuHelper but not manually when mounted.

  • Fixed AOE spell effects (Flame, Twister, Inferno) broken after optimization commit.

  • Fixed character selection glitches (characters flying around, pushing each other, capes disappearing) - partially fixed.

  • Fixed potions not rendering in hotkey bar after relog.

GameServer

Features
  • Server-Authoritative Game Data Sync: Skills now sent from GameServer to Client at login. Eliminates need for duplicate .bmd files.

  • Monster Stat Multipliers: Configurable percentage multipliers for HP, min/max damage, defense, and magic defense. Applied at spawn time.

  • Monster Hit Damage Tracking: Configurable reset conditions - on death, time since last hit, and distance from spawn position. Prevents kiting exploits and damage carryover.

  • Advanced Money Drop System: Per-account-level money formula scaling with monster level. Configurable item bonus rate.

  • Attack Speed Scaling: Per-skill configurable MinDelay and AttackSpeedScale.

  • Item Stacking: Configured via ItemStack.xml. Supports warehouse, shops, trade, chaos machine, item bags, jewel usage, and splitting.

  • Jewel Bank: Full implementation with logging and dynamic config.

  • Persistent Chaos Box Storage: Items in chaos box survive crashes and disconnects. WAL integration for crash recovery. Retrieve mode on login if items exist.

  • Chaos Mix Plugin: Migrated from ChaosMix.bmd to server-configured plugin. All mixes and rewards preserved, easily overwritable. Client displays server-provided success rate.

  • Reset Plugin System: Clean plugin-based /reset command. Configurable required level, stats reset, points-per-reset formula, max resets, and post-reset teleport.

  • Combo Push Effect: Configurable knockback on Blade Knight combo hits via ComboEnablePushEffect.

  • Custom ItemOption System: Support for Level 13-15 and Ancient requirements.

  • Monster Spawn System: Modular map-based XML folder architecture.

  • Per-Map ItemOptionRate: Customize items dropped per map.

  • Event Timers: Server-configurable event descriptions and categories.

  • VIP Menu: Server-configurable purchase interface.

  • MuHelper Server Integration: Start/stop packets, money charging system with hourly rate multipliers.

  • Dev Diagnostics: Watchdog thread (2.5s hang detection), breadcrumb crash logging (64-entry circular buffer).

  • Commands: Added /dropbag for loot testing. /addstr, /addagi, /addvit, /addene, /addcmd now update client stats without relog.

  • Jewels Bank Auto-Deposit: Automatically deposits picked-up jewels when enabled.

  • Increased Zen Limit: From 2 billion to 9 quintillion, removing the economic cap for high-level servers.

  • Full English translation of GameServer protocol messages.

  • Server skill enum standardization for maintainability.

  • GUI simplified to modern console-style interface for GS/JS/CS/DS.

Security
  • Skill Requirement Validation: Server now validates RequireStrength and RequireDexterity for skills (previously client-only).

  • Server-Side Skill Timing Anticheat: Validates cast rate with configurable formula, progressive response (log → block → disconnect), violation decay for lag tolerance.

  • HWID Generation & Licensing: Hardware ID enforcement system.

  • Fixed weapons dropping with skills on unsupported item types (7 files, 8 locations)

Bug Fixes
  • Fixed Excellent items not dropping (drop-rate loader had been disabled by accident).

  • Fixed all timed effects never expiring - monster immunity, player buffs/debuffs lasted forever (XML wildcard parsing bug affecting 9 config loaders).

  • Fixed Death Stab visual effects missing (attack ending before effects could render).

  • Fixed Power Slash visual effects missing (effect creation at wrong point in code).

  • Fixed Dark Side skill not dealing damage (AttackTime never incremented).

  • Fixed Fire Slash not working when manually cast on mount.

  • Fixed Dark Lord horse skill instant damage timing.

  • Fixed RF multi-hit skills (Killing Blow, Beast Uppercut, etc.) not displaying damage numbers when monster died on first hit.

  • Fixed 16-bit stat/damage communication overflow - rewritten to support values above 65k.

  • Fixed packet decryption ignoring calculated size.

  • Fixed GameServer unresponsiveness during Login/Logout/Trading (thread-unsafe logging).

  • Fixed QueueTimerCallback delays under load (RAII LockGuard).

  • Fixed 49.7-day TickCount rollover causing logic breakage.

  • Fixed GameServer crash on post-command.

  • Fixed integer overflow on high-memory systems.

  • Fixed distance checks for Fire Burst, Force, Slash, Spiral Slash, Fire Blast, and Crescent Moon Slash.

  • Fixed Summoner book skills not applying curses/effects (Shamut curse, Lagile slow, Requiem curse).

  • Fixed Summoner book skills ignoring attack speed.

  • Fixed MuHelper hunting distance bug (typo using TargetX twice instead of TargetY).

  • Fixed integer overflow in Zen currency and item durability calculations.

  • Fixed +add options counting requirement.

  • Fixed attack speed formula sync with client.

DataServer

Features
  • Jewels Bank Auto-Deposit: Persistent per-account setting for automatic jewel deposits.

  • Increased Zen Limit: From 2 billion to 90 quintillion to support high-level economies.

  • Persistent Chaos Box Storage: Per-account chaos box table with WAL sequence tracking for crash recovery.

Reliability
  • DSMetrics Instrumentation: Real-time monitoring - queries/sec, queue depths, slow query tracking (>100ms), daily CSV log rotation.

  • ODBC Connection Pooling: Thread-local SQL connections with automatic reconnection.

  • Transaction Wrapping: Character saves wrapped in explicit SQL transactions for atomicity.

  • Write-Ahead Log: Binary WAL with daily rotation and sequence tracking. Safe replay on crash recovery for character and warehouse saves.

  • Queue Expansion: Increased from 2,048 to 65,536 entries (32x buffer capacity).

  • Auto-Save Interval: Reduced from 10 minutes to 3 minutes (max data loss reduced proportionally).

  • Immediate Save: Triggered on item pickup, drop, trade, and chaos mix close.

  • Reconnection System: GameServer↔DataServer reconnection with exponential backoff (1s → 32s). Clean player disconnect on DataServer loss, automatic recovery on reconnect.

  • Backpressure System: At 75% queue capacity, GameServers extend save intervals. At 50%, normal saves resume. Prevents queue overflow under load.

  • Save Acknowledgment: Slow saves (>100ms) and failures logged for debugging.

Infrastructure

Started laying the foundation that favors the deprecation of .bmd files and allowing single point of configuration -> GameServer.

  • Client Reconnection: Backoff-based reconnection with fixed retry counter. Increased initial delay to 8 seconds for clean disconnect processing.

  • Config Encoder: Modern BMD-less client configuration updates via ClientConfig.xml → ConfigEncoder.exe → ClientConfig.bmd.

  • Skill Range Sync Tool: Python tool to extract Range values from client BMD and update server Skill.txt (153 skills updated).

  • Extended Character Slots: Database schema changes for 7 character slots (SQL migration required).

Development Started

Last updated