Changelog 1.1 - RodrigoOt/forgottenserver GitHub Wiki
=====================
Engine
- Non-blocking SQL queries
- The following item attributes can now be customized using setAttribute for items: name, article, pluralname, weight, attack, defense, extradefense, armor, hitchance and shootrange
- Improved XML error handling to show line number, line and a caret pointing at the character where parsing failed
- Increased accuracy of scheduled events
- Optimized dispatcher and scheduler code
- Moved drop loot code from the engine to data/creaturescripts/scripts/droploot.lua
- Breaking change: Moved ammoaction and breakchance from items.xml to weapons.xml, ammoaction is now just referred to as action and works for any type of weapon
- Using integers instead of floating point numbers for item weight and player capacity
- Using max packet length from MySQL in DBInsert class to know when it is appropriate to execute the query
- Rewritten skills code to handle 64-bit tries for magic level and skills properly
- Removed config variable noDamageToSameLookfeet as it can be implemented using onHealthChange and onManaChange
- Removed stackpos from position tables sent to onUse and onCastSpell for performance reasons as stackpos is rarely used and can be fetched using Tile.getThingIndex when necessary
- Fixed a rounding bug with the formula for magic level offline training
- Fixed a bug allowing players to equip two-handed weapons with a shield when using classic equipment slots
- Fixed a bug where stamina wouldn't be consumed for some players in a party with shared experience enabled
- Fixed a bug where using magic field runes would give the player protection zone lock regardless of PVP engagement
Features
- Game protocol 10.76 support
- Mana drain now counts as damage
- Weapon action (previously called ammoaction in items.xml, now action in weapons.xml) can now be applied to any weapon
Source code
- Use of more C++11 features:
- final/override
- emplace for map insertions
- Updated pugixml to version 1.5
- Removed XPath from pugixml
- Removed virtual specifier from all functions that aren't being overridden
- Fixed linking with LuaJIT on Mac OS X
Script interface
- Breaking change: Creature userdata (creature) is now passed to every event callback instead of creature id (cid)
- This also applies for all subclasses; Monster, NPC and Player
- Items passed to Lua event callbacks can now be utilized directly as userdata. You can still access itemid, uid, actionid and type by accessing them as table properties.
- Functions getSkull() and setSkull() can now be called for any creature (previously only for players).
- Events
- Creature
- onChangeOutfit
- onAreaCombat
- onTargetCombat
- Player
- onGainSkillTries
- Creature
- New functions
- Game.createContainer(itemId, size[, position])
- Item.hasAttribute(self, key)
- Item.getWeight(self)
- ItemType.getClientId(self)
- ItemType.getCharges(self)
- ItemType.getHitChange(self)
- ItemType.getRequiredLevel(self)
- ItemType.getShootRange(self)
- ItemType.getLastLogout(self)
- Monster.isInSpawnRange(self[, position])
- Removed function
- Monster.despawn(self)
- removed in favor of Monster.isInSpawnRange
- Monster.despawn(self)
Data pack
- Moved compat.lua and core Lua API functions into data/lib/ (data/lib/compat/ and data/lib/core/) from global.lua
- Updated scripts to utilize userdata objects more efficiently
- Removed function="default" from weapons.xml
- Moved ammoaction and breakchance from items.xml to weapons.xml