Changelog 1.0 - RodrigoOt/forgottenserver GitHub Wiki
=====================
Engine
- Complete invisibility for monsters (no longer visible to client when they are invisible)
- Rework damage messages to group elemental damages as secondary in the same damage packet
- Using pugixml (header-only library) instead of libxml2
- Moved global server save code to startup.lua
- Optimized hangables code
- Optimized removeItemOfType (around twice as fast)
- Optimized PropWriteStream allocation strategy and significantly decreased amount of heap allocations done during saves
- Optimized clean map code (~130x speedup)
- Significantly reduced memory footprint (over 15%)
- Removed admin protocol
- Removed exception tracer
- Removed GUI
- Removed ingame account manager
- Removed SimOne's XML NPC system
- Removed relational and binary house storage (no longer configurable, binary-tilebased is always used now)
- Removed unused heal map
- Removed builtin server save each minutes and global server save code and added an example global event for a global server save
- Removed MD5 and plaintext as a password type options
- Rewritten SHA-1 implementation
- Fixed bugs with hangables
- Fixed possible crash with monster spells
- Fixed bug with /reload items
- Fixed memory leak with reload command on script environments
- Fixed client debug assertions with large packets
Features
- Game protocol 10.41 support
- Browse Field
- You can now choose default outfits by unlocking them in outfits.xml
- You can now specify skulls for monsters and NPCs in their xml file
- Party bonus shared experience is now based on amount of unique vocations
- Left hand equipment slot is now only for weapons and right hand for shields, you can use the old setting by changing classicEquipmentSlots to "yes" in config.lua
Security
- Added timestamp and random value to gameworld authentication packet to prevent MITM attacks
- Added protection against packet flood
- maxPacketsPerSecond in config.lua
- Improved protection against connection flood
- Fixed buffer overflow in NetworkMessage
- Fixed issues in the RSA implementation
Source code
- Moved to GitHub
- Using C++11 features
- Improved portability
- Now compiles on FreeBSD and Mac OS X
- Removed libboost_regex dependency
- Removed libboost_thread dependency
- Removed libxml2 dependency
Database
- Added table guild_membership and removed rank_id and guildnick from players table
- New bans structure
- Removed SQLite database driver (only supports MySQL now)
- Storing online players in players_online (online column removed from players)
- Storing player skills in players table instead of player_skills
- Storing player record in database instead of playersRecord.txt
- Storing message of the day data in database instead of lastMotd.txt
- Possibility to use UNIX socket instead of TCP connection to MySQL (mysqlSock in config.lua)
- Recover from CR_SERVER_LOST and CR_SERVER_GONE_ERROR errors in Database (block threads until we're reconnected)
Script interface
- Events
- Party
- onJoin
- onLeave
- onDisband
- Player
- onLook
- onLookInBattleList
- onLookInTrade
- onLookInShop
- onMoveItem
- onMoveCreature
- onTurn
- onTradeRequest
- onTradeAccept
- onGainExperience
- onLoseExperience
- Party
- Global script interface
- Lua 5.2 compatibility
- Chat channel events
- canJoin(cid)
- onJoin(cid)
- onLeave(cid)
- onSpeak(cid, type, message)
- Lua event onPrepareDeath has been enabled for all creatures
- Lua metatables to represent classes
- Combat
- Condition
- Creature
- Monster
- Npc
- Player
- Game
- Group
- Guild
- House
- Item
- Container
- Teleport
- ItemType
- ModalWindow
- MonsterType
- NetworkMessage
- Party
- Position
- Town
- Tile
- Vocation
- New creature events
- onModalWindow(player, modalWindowId, buttonId, choiceId)
- onTextEdit(player, item, text)
- onExtendedOpcode(player, opcode, buffer)
- onHealthChange(creature, attacker, primaryDamage, primaryType, secondaryDamage, secondaryType, origin)
- onManaChange(creature, attacker, manaChange, origin)
- Moved database migrations to scripts in data/migrations/
- Moved old Lua functions to compat.lua and implemented them using the new metatable functions
Data pack
- Added bed modification kits script
- Moved groups from database to data/XML/groups.xml
- Moved almost all commands to talkactions
- Added offline training statues script
- Updated rope scripts
- Updated items
- Updated monsters
- Updated spells