It has been two months since the last update, and we’ve spent that time working on some significant improvements to the server and also quality of life changes for players. Building on the BSP tree addition to the server in August’s update, monsters will now use this method for determining where they can move which will allow them to move anywhere a player can. The system save time has been reduced to under half a second, and general performance improvements to the server will allow the game to support several times more players than it can now.

The client preferences menu has had some more options added to make setting in-game options much easier, and the “double safety off” bug has been fixed in the process of reworking the preferences. Players can also set the particle density with a slider, allowing less powerful computers to display (hardware renderer) particle effects.

This update brings seasons to the Meridian world, complete with rainstorms and snow in winter. A new vault has been added in Jasper (linked to Barloque) and there is a new spell for players to try out (Unholy Touch, level 1 Qor).

There will be an escaped convict event held on Saturday 17th October at 8pm US Central time/9pm Eastern time in celebration of the update.

General Changes


  • Another lore book has been added to monster drops, detailing some of Meridian’s lost history.
  • Living Statues will now regenerate lost body parts when healing, and their description lists the max HP players can gain by killing them.
  • Added IPv6 support to the server.
  • Bone Priestess will now perform stat changes if given an ancient trinket.
  • Frenzies have been automated and can run without admin intervention.
  • Parrin will now give the insignia quest, so herald shields can be dedicated to Jala.
  • Training points can now go over the 1000 point cap, if the player is awarded TP that will take them over 1000. This does not apply to the logon bonus TP.
  • Added a fireworks particle effect.
  • Lupogg King removed from survival arena. Yeti moved from miniboss to boss category, rat king moved from boss to miniboss, kriipa removed and replaced with giant rat soldier.
  • Players can now choose which map to start a solo or guild survival arena on, by adding the map name after the join command (this already works for public survival).
  • Updated spell descriptions for brittle, vampiric drain, animate and defile.
  • Add the names of previous developers to a list of names that can’t be picked at character selection (or with the name change system).
  • Added pear and orange food types, and pear/orange trees in Marion which can have fruit picked from them.
  • Added a cookie food type which can be given out by admins.
  • Added more statistics tracking; player deaths, suicides, guild disbanding and several other things are now tracked (more info to come).
  • Added a closing mechanism for Konima’s guild hall chest screen. This will now close after a minute of staying open, or can be manually closed by saying the password again.
  • Conveyance can no longer be cast from guild halls.
  • Sweep can no longer sweep items inside a guild hall from the foyer (and vice versa).
  • Removed rose and book as cargo items in several quests (rose was in Parrin’s instrument quest). Books can now be obtained from completing the bar restock or apothecary quests. Rose can still be obtained from completing the hypochondriac quest.
  • Significantly increased server performance (most noticeable in faster system saves).

Weather System


  • Added randomized weather effects throughout the game world. The world is divided into regions (each town is a separate region as are areas such as CV) and each region can have different effects (such as raining or snowing).

Rain

  • Added seasons, which cycle every 20 real life days. Most areas will snow in winter, however Ko’catan will not.
  • Added sound for rain.

Jasper Vaults


  • Added a new vault outlet in West Jasper, next to the tavern and bank.
  • Jasper vaults are linked to the Barloque vaults.

Jasper vault

Client Changes


NOTE: due to the changes to the safety and other flags, all users have had all preferences (safety, tempsafe, grouping, autoloot, autocombine, reagent bag use and spellpower display) set to ON.

Client Preferences

  • Client preferences menu now contains options to flip reagent bag use, autolooting, autocombining of spell items and spellpower display (for spells you cast yourself) on and off.
  • Bugs with safety showing the incorrect value on the client have been fixed. The safety displayed by the client should always reflect the true value.
  • Added a slider bar for particle density on particle effects (snow, sandstorm, rain and fireworks).
  • Client audio has been upgraded. Lag caused on some systems by having the music on has been removed (most noticeable on room change) and directional sound (5.1 surround) has been added.
  • Character creation now contains a link in the statistics section which sends the user to the suggested stats page on the wiki.
  • Added a “time” command in the original client. Users can type “time” or “Zeit” (without the quotes) into the chat box and will be told what time of day it is in Meridian, in addition to the day and year.
  • Added a sound when a player receives a tell or group/guild send.

Spell Rebalancing


If a player cannot obtain the new level of a spell that changes level, they will be awarded the equivalent value of the spell in training points (i.e. spell % * TP per %).

  • Truth moved from Jala level 1 to level 4.
  • Spellbane moved from Jala level 3 to level 5.
  • Jala song range increased for most Jala spells. Warp Time range slightly decreased.
  • Unholy Resolve moved from Qor level 1 to Qor level 3, to match the level of Holy Resolve and provide an easier to work spell at that level.
  • Added Unholy Touch spell to Qor level 1. Does low unholy damage, slightly increased damage against good targets (player and monster). Sold by the elder in Raza and Qor priestess. Requires 1 fairy wing to cast.

Unholy Touch

  • Kara’hol’s Curse hold effect halved in duration and reversed – hold will last 2 seconds at high spellpower, and 8 seconds at low spellpower.
  • Added Spectate spell for DMs, to apply the survival arena spectator effect to themselves or to players.
  • Wands, scrolls and potions are now affected by AmA, dement and mana convergence if the owner of the item is affected.

Monsters/PvE


  • Added “monster patrols” for skeletons in CV main room and trolls in Ukgoth. Monsters will patrol the screen, walking around while looking for a target.
  • Added a reputation system – killing monsters of a given group/faction will increase your reputation with their enemies, and decrease it with that monster’s faction and allies. Reputation is being tracked but is not currently used for anything.
  • Convert monster movement from grid based to using the room’s BSP tree. Monsters can now move wherever players can move.
  • Monsters can now move past changing sectors, e.g. doors that can move up and down such as the entrance to Kraanan Temple.
  • Added four new xeochicatl types: acid, holy, unholy and illusion. These drop new heartstones, which will be required to place a personal chest in a room. All xeos can spawn at node attacks.
  • Added Princess and Duke faction troop mages. Mages wear leather armor or disciple robe, a mace and have a chance of wearing a circlet (all of which can be dropped) in addition to the faction shield. Princess mages cast lightning bolt, Duke mages cast splash of acid.

newmobs

Bug Fixes


  • Tokens dropped by players can no longer end up inside walls.
  • Reagent costs listed in touch spell descriptions now match the actual reagent cost.
  • Faction troop NPCs now able to spawn with all available facial features.
  • Spellpower from necklace of Jala will now stack with spellpower from lutes.
  • Removed ~500ms lag caused on changing rooms with music activated.
  • Fix issues with a cancelled radius enchantment leaving the caster with the light effect after ending.
  • Fix lighting bugs caused by switching between glow weapons, torches and light from radius enchantments.
  • Fix radius enchantments not applying when switching between two rooms with ‘old-style’ radius enchantments active (i.e. winds, AmA, sandstorm and truce).
  • Fixed quest description display errors with fade and disciple robe quests.
  • Fixed players spawning multiple revenants when switching between rooms quickly.
  • Temporary HPs over natural max due to soldier shield are no longer removed when changing stats with the stat reset system.
  • Yeti node can no longer be obtained without killing the yeti first (fix for Ogre client 3rd person mode).
  • Fix issues with zoning from Ports of Barloque to North Barloque.
  • Fixed invalid coordinates in the foyer checks in several guild halls that were incorrectly preventing players from moving around near a hall entrance/exit.
  • Fix German names for illusionary firewall and illusionary wounds.
  • Fix loadout to work correctly with light disciple robes.

For Developers


  • Solution now builds in VS 2015.
  • BOF version incremented to 6.
  • Added JSON handling C library jansson.lib.
  • New admin command “reset highest” which resets the highest timed message in show status.
  • ChaosNight and Qormas now part of the Event System.
  • Added built-in singleton objects for Settings, RealTime and GameEventEngine classes, which work in the same way as the System object. Constants are SETTINGS_OBJECT (1), REALTIME_OBJECT (2) and EVENTENGINE_OBJECT (3).
  • Added a .gitattributes file to force line endings for kod, lkod, c and h files to LF.
  • Finish the existing KOD hash tables implementation, with TAG_TABLE tag. CreateTable() now accepts an integer size parameter for initial table size, and tables will resize if the number of entries is more than half the size of the table. Tables are GCed and saved in the same manner as lists.
  • Save games are now versioned. Pre-update servers cannot load versioned save games, but the versioning will allow future backwards compatibility.
  • Refactored save game code to write as much as possible to a memory buffer before performing a single write to file.
  • Garbage collection now handles cleaning up KOD tables. Object, string and timer GC modified to perform some tasks simultaneously.
  • Add new log file (admin.txt) which logs the output of aprintf.
  • Add AdminChangeUserName message in System to validate and change a player’s name. Add a warning to the admin “create resource” command, directing the to use AdminChangeUserName instead.
  • Added SpawnTestMobs message to Admin to spawn a number of monsters at the position of the admin.
  • All local vars in KOD messages are auto-initiated to $.
  • Removed the TAG_INVALID tag and debug system (no longer needed, all properties/locals init to $).
  • Add * operator to set the value of a local var in a C call by passing the var by reference as *var.
  • Added an admin command to delete unused (i.e. never logged on) accounts (delete unused). This command will kick off all users if run, will delete any accounts that have never been used and then compact the account numbers.
  • * Refactored class message code, message/parameter name lookup, roomdata storage and several other areas of the server for significant performance gains.
  • Monster movement now handled mostly in C, and using the BSP tree for movement checks.
  • Many more KOD list operations (list copying, obtaining an element of a list by match or by class) can be performed with a single C call.