The major player-facing change this update is the ability for players to opt-out of PvP combat. For the past few months 105 has had guild/shield-only PvP activated, allowing players to opt-in if they wanted to PvP while the server was growing. The new opt-out system will restore world PvP while allowing those players who really do not wish to participate in PvP to play the game without being attacked or killed. These players will have some restrictions – notably they cannot enter guild halls even if guilded, and cannot get faction shields, and future PvP-related items may be unavailable to them. Guild-only PvP will remain in effect for a few days following the update to give those who wish to opt-out a chance to visit the Temple of Shal’ille to obtain the new quest which sets them as non-combatants.
Behind the scenes there were significant changes to the server code and to Meridian 59’s scripting language, ‘kod’. Server performance was increased ~25% with changes to how the scripting language is interpreted, and those changes lay the groundwork for many future optimisations and increased flexibility when adding new game content. The kod language changes will make kod more familiar to new developers who have programmed in more common languages (C, C# etc.).
New forums for servers 105 and 112 were also launched in July, available at https://www.meridiannext.com/phpbb3/. We would like to make these forums accessible from inside the game client eventually, and move longer-term and game discussion from the newsglobes to the forums.
- Mummy speed lowered slightly, previous patch made them a bit too fast (hotfixed).
- Mummy shillings drop increased from 1-20 shils to 50-100 shils (hotfixed).
- Raza has been added as an Elusion teleport location. Elusion calculation adjusted so that it still takes 84 spellpower to reach the Island (i.e. 7 locations at 84 spellpower).
- Elusioning to a Guild Hall now only requires 60 spellpower instead of 70.
- Animate now creates spectral mummies instead of zombies for the 2nd tier of monster, as zombies cannot be controlled by players and instead attack the caster.
- Seduced mobs now lose their controlled status if the caster logs or phases, but can be reclaimed if the caster returns and the enchantment has time remaining.
- Added Raza as a hometown option in the Cor Noth hall of Genealogy. All players will also be able to change their hometown once more (i.e. just one time) if one had already been picked.
- Removed mana cost for sending tells, send group and guild messages.
- The spellblade weapon enchantment (mark of dishonor, evil twin, etc.) no longer requires 50HP to use.
- Re-enabled collision checks on non-combatant players due to minions trying to stand on top of these players.
- Angeled players can now use the CV crate, but the crate will teleport the player off after they have checked it (no botting the crate).
- Avar node can now be reactivated without requiring all players to leave the room first.
- Orcs raised from 45HP to 50HP to match the mobs they are often paired with (50+).
- Raised thrasher difficulty from 7 to 8, and changed the damage type of the spin attack to absolute (non-resisted) to counter 70-100HP players being able to kill them.
- Server bytecode interpreter refactored, giving ~25% better server performance (see developer section for more info).
- Added a new quest, given by Shal’ille priestess. Quest is triggered by a player saying “abstain from violence” to the priestess, the player then has 5 minutes to confirm they wish to opt-out of PvP.
- Opting out is done per-character, and is permanent. Players can opt-out at any HP, but must be innocent (white-named).
- Players who have opted-out will show up on the map/minimap as a white dot (no name color change for now).
- These players cannot attack or be attacked, cannot wear soldier shields or interact with faction flags and flagpoles, cannot pick up PvP-tagged loot, enter guild halls or participate in Justicar elections.
- Opt-out players can still join guilds (and still not be attacked) but can’t enter guild halls.
- Opt-out players can pick up tokens, turn them in and receive token deaths while holding the token.
- NPCs in towns will randomly remind players this option exists.
- Players must now wait 7 days after their last murder before becoming eligible for a pardon.
- Fixed the ‘update loop’ on 112 caused by multiple string files (hotfix 1.6.1).
- Fixed some remaining mob aggro issues that were preventing some players being chased by monsters rarely (hotfix 1.6.2).
- Fixed lighting effects from some radius enchantments not wearing off when the spell ends (hotfix 1.6.2).
- Fixed rare cases where reflections and evil twins (ETs) wouldn’t teleport back to the master if they were in combat.
- Fixed players rarely being unable to take the main UW portal back to Ko’catan after dying on the Island.
- Raza gate now draws correctly in the software renderer, as do the trees in Forest of Farol.
- Fixed an error preventing one atmospheric sound (an eagle call) from ever being played.
- Fix client crashes when reconnecting after being disconnected with the client minimised.
- Misc German translations fixed/updated.
- Fixed some keys (e.g. END, down) not working correctly in the chatbox on 112.
- Fix potential client crash caused by receiving mail from players with extra-long names.
- Add distance check to looking into chests – the server already distance-checks removing items, but players could still look at the contents from across a room.
- Fixed tank top/undershirt colors not showing up correctly if a player is wearing armor on top.
- Having safety on now prevents area attacks (e.g. Ice Nova) from hitting faction NPC soldiers (faction loss was removed from these attacks last update).
For Developers – kod language version 8
- Replaced the %-style comments with // single line and /**/ multi-line comments (multi-line comments can nest).
- Removed the MOD keyword – modulus now uses the % operator.
- Added assignment operators +=, -=, *=, /=, %=, |= and &=.
- Kod compiler now checks that C calls which return a value are correctly assigned to a variable, throwing an error if the return is not stored. Only checks C calls where discarding the return would be nonsensical.
- Compiler now verifies that all declared German (or any other language) resources have a matching English resource, and that resource types match in all languages.
- Compiler now checks that all kod messages, message headers and message/C calls are below the allowed limit of locals, parameters and arguments. Some of these checks are no longer necessary in the interpreter, giving a modest performance boost.
- Refactored the kod interpreter to remove as many branches as possible, increasing the number of kod opcodes but decreasing the amount of underlying code necessary to execute each one. Results in ~25% performance boost for the server. Also sets up the ground work for future performance improvements.