Releases: otland/forgottenserver
The Forgotten Server 1.6
Version 1.6 represents our latest stable protocol 13.10 release.
What's Changed
- fix Items::getItemIdByName by @yamaken93 in #3588
- Reduce broadcast range for container updates by @Erza in #3664
- Optimize IOLoginData::saveItems by reducing number of allocations by @marksamman in #3176
- new method: itemType:getRuneSpellName() by @Zbizu in #3666
- Server save script improvements by @omarcopires in #3192
- Remove 'else' from last return by @ramon-bernardo in #3678
- Create ring attribute for monster spells by @soul4soul in #3691
- RevScriptSys Monster enhanced attack conditions by @soul4soul in #3499
- Use client viewport in hardcode-range by @ramon-bernardo in #3706
- Fix white and double spaces by @ramon-bernardo in #3711
- Fix copyright year by @ramon-bernardo in #3710
- Fix level and condition check for yell by @ramon-bernardo in #3690
- Sync monster can see with client viewport by @ramon-bernardo in #3708
- Sync creature say with client viewport by @ramon-bernardo in #3709
- Add missing separator in deathlist talkaction by @ramon-bernardo in #3715
- Add Wand combat origin type by @EPuncker in #3683
- added isKey itemtype by @emil92b in #3679
- Add minimum level to send private by @ramon-bernardo in #3689
- critical problem in revscriptsys globalevent think by @lyuz1n in #3674
- Move minimum skill level by @ramon-bernardo in #3721
- Fix summons always spawning by @ramon-bernardo in #3724
- Fix reload log order by @ramon-bernardo in #3728
- Lock vcpkg & cmake workflow actions at commits by @marmichalski in #3743
- add notepad++ backups to gitignore by @Zbizu in #3682
- Replace boost::adaptors::reverse with std::vector::reverse by @ramon-bernardo in #3738
- Send distance effect to spectators on other floors by @ramon-bernardo in #3723
- Move player task-delay by @ramon-bernardo in #3717
- Show atk and def for dist weapons without ammo by @ramon-bernardo in #3751
- gm access doors by @emil92b in #3716
- added fluid enums by @emil92b in #3726
- fix potential crash by @Diego-OT in #3732
- Use TFS code style on comparison and boolean check by @ramon-bernardo in #3725
- Improve Monster::getDanceStep cache by @ramon-bernardo in #3733
- Improve Npc::getRandomStep cache by @ramon-bernardo in #3734
- Move party exp-share range by @ramon-bernardo in #3720
- Fix memory leak on luaPlayerShowTextDialog - double ref by @ramon-bernardo in #3752
- fixed levitate and parcel walking accuracy by @Zbizu in #3681
- Minor map and loot fixes by @BahamutxD in #3764
- Use min skill level on Vocation::getReqSkillTries by @ramon-bernardo in #3730
- updating login message time format by @Zbizu in #3769
- fix disappearing backpack during trade by @Zbizu in #3750
- Fix appveyor builds by @Znote in #3777
- Fix invalid NPC items on trade by @lucasgrizante in #3782
- #3768 - Fixing use of item on the house door by @ArturKnopik in #3786
- Update modules.lua to use the 'it' variable instead by @EPuncker in #3792
- Added/Removed spaces where needed by @EPuncker in #3796
- Remove trailing whitespace by @omarcopires in #3800
- Change default value to NULL for conditions by @nekiro in #3799
- More Readable EventCallback Lib by @MillhioreBT in #3697
- Bumped engine version to 1.5 by @EPuncker in #3749
- Reset idle time on reconnect by @nekiro in #3805
- Don't allow ammo to be dressed in weapon slot by @Zbizu in #3806
- The equivalent of #3609 but for the onItemMoved event by @MillhioreBT in #3804
- Protocol 12.72 update by @EPuncker in #3797
- [12.00] Adding support for colored loot by @omarcopires in #3771
- [12.30] Increase the carpet pile limit by @omarcopires in #3775
- [12.70] Premium players can store 15,000 in depot by @omarcopires in #3774
- [12.20] The cooldown for shooting Paralyse Runes was changed from 2 to 6 seconds by @omarcopires in #3773
- [12.31] The duration of the Stamina bonus hours was increased from 2 to 3 hours by @omarcopires in #3772
- [12.20] The maximum Market fee has been raised from 1,000 to 100,000 gold. by @omarcopires in #3770
- Show OTB version on loading by @EPuncker in #3808
- Added beginner-friendly methods for ItemType by @Zbizu in #3807
- Set default values on initialization instead of constructor body by @ranisalt in #3776
- Add config for length player name by @ramon-bernardo in #3760
- Fixed wrong const at isBoots() by @EPuncker in #3814
- Possibility of defining currencies by @MillhioreBT in #3699
- new methods: itemType:isTwoHanded(), itemType:isMissile() by @Zbizu in #3813
- Fix condition update stats by @ArturKnopik in #3826
- Send world light level only when it has changed by @marmichalski in #3832
- Fix hungry condition by @omarcopires in #3827
- Fix parameters count check in luaPlayerAddItem by @marmichalski in #3831
- Use nextUseStaminaTime only on gain experience by @ramon-bernardo in #3779
- Remove dead code (loadAccount) by @nekiro in #3841
- Update to game protocol 12.81 by @omarcopires in #3840
- Fix the client crash when you open the missions window by @MillhioreBT in #3844
- feat: special magic level by @ArturKnopik in #3843
- Miscellaneous datapack related changes/additions by @EPuncker in #3810
- Update clay_lump.lua by @EPuncker in #3802
- Updated Visual Studio project file by @EPuncker in #3794
- send cooldown to action bars when using items by @EPuncker in #3823
- Fixed capacity display for GMs by @EPuncker in #3849
- Added missing ammoTypeNames by @EPuncker in #3741
- [11.80] Added new monster 'ink' race and fluid type by @EPuncker in #3795
- Updated message types to match client settings by @EPuncker in #3839
- Add missing message to warn the player that he can't accept his own offer by @Diego-OT in #3702
- New lua functions for houses by @ramon-bernardo in #3753
- Adding haze mount by @omarcopires in #3846
- Adding addon items from the Poltergeist Outfit by @omarcopires in #3847
- feature: kill tracking by @ArturKnop...
The Forgotten Server 1.4.2
Version 1.4.* represents our latest stable protocol 10.98 release.
What's Changed
Full Changelog: v1.4.1...v1.4.2
The Forgotten Server 1.4.1
Version 1.4.* represents our latest stable protocol 10.98 release.
What's Changed
- 1.4.1 release candidate in #3765
This release contains some bugfixes.
Full Changelog: v1.4...v1.4.1
The Forgotten Server 1.4
Engine
- added support for POSIX signals (new:
SIGINT
,SIGTERM
,SIGHUP
andSIGUSR1
) - better handling of configmanager class
- better handling of item attribute types
- improved dispatcher performance
- improved OTBM loader performance
- improved loading
items.xml
performance - improved getSpectators performance
- improved XTEA performance
- private RSA key is now being loaded from a PEM file
- scheduler ignores empty tasks now
Source code
- added
override
attribute wherever applicable - adjusted code formatting
- adjusted construction of messages for dealt/received damage
- anonymous namespaces are now being used wherever applicable
- chaseMode uses
bool
now instead of enumeration - corrected many typos in strings and variable names
- events (actions, talkactions, movements, etc.) use smart pointers now
- guild rank now uses
shared_ptr
- improved blessings
get
/set
code - improved
LightInfo
handling - map search for types and effects
- monster loot now accepts count higher than
100
ProtocolGame::login
now loads players by id instead of name- removed a lot of unused and unnecessary code
- removed
final
attribute fromfinal
class methods - removed unused parameter
mana
from monsters and NPCs - replaced
forward_list
withvector
in creature walking - replaced
protected
visibility withprivate
forfinal
classes sendInventoryItems
now uses afor
loop- singletons now use return by reference
- skill cache is no longer used as
pow
performance is fast enough - standardized class and variable names
- standardized client viewport
- STL algorithms are now being used for vocation search by id
Project tools
- now compiling with C++17 by default
- added appveyor
- added docker
- improvements to cmake and visual studio project files
- moved from tfssdk to vcpkg
- fixed various compiling issues across all supported platforms
- new icon
New features
- account storage key/value
- buy with backpacks
- classic attackspeed
- configurable depot and vip limits
- custom item attributes
- customizable world light
- event callbacks
- hotkey equip
- improved bank system
- lua item description (disabled by defeault)
- lua
Party
methods - monsters drop loot in lua
- monsters walkback to spawn
- more getters for
ItemType
class - NPC trade using bank account
- NPC voice module (npc saying random lines, see #2932 for details)
- player direction is now stored in the database
- reintroduced
/attr
talkaction known from0.4
- separated group flags in
groups.xml
(no longer a single number) - spawns can now be set to create random monsters (see #3605 for details)
- special skills (leech and crit)
- store inbox
- towns are now cached in the database
- vocation specific kick times in case of lost connection
New options in config.lua
allowWalkthrough
classicAttackSpeed
cleanProtectionZones
defaultWorldLight
depotFreeLimit
depotPremiumLimit
forceMonsterTypesOnLoad
houseDoorShowPrice
houseOwnedByAccount
luaItemDesc
onlyInvitedCanMoveHouseItems
removeChargesFromPotions
removeOnDespawn
removeWeaponAmmunition
removeWeaponCharges
serverSaveCleanMap
serverSaveClose
serverSaveNotifyDuration
serverSaveNotifyMessage
serverSaveShutdown
showPlayerLogInConsole
vipFreeLimit
vipPremiumLimit
yellMinimumLevel
yellAlwaysAllowPremium
New enums
Ammo
AMMO_NONE
AMMO_BOLT
AMMO_ARROW
AMMO_SPEAR
AMMO_THROWINGSTAR
AMMO_THROWINGKNIFE
AMMO_STONE
AMMO_SNOWBALL
Condition
CONDITION_PARAM_DRUNKENNESS
CONDITION_PARAM_SPECIALSKILL_CRITICALHITCHANCE
CONDITION_PARAM_SPECIALSKILL_CRITICALHITAMOUNT
CONDITION_PARAM_SPECIALSKILL_LIFELEECHCHANCE
CONDITION_PARAM_SPECIALSKILL_LIFELEECHAMOUNT
CONDITION_PARAM_SPECIALSKILL_MANALEECHCHANCE
CONDITION_PARAM_SPECIALSKILL_MANALEECHAMOUNT
Magic effect
CONST_ME_EARLY_THUNDER
CONST_ME_RAGIAZ_BONECAPSULE
CONST_ME_CRITICAL_DAMAGE
CONST_ME_PLUNGING_FISH
Fight mode
FIGHTMODE_ATTACK
FIGHTMODE_BALANCED
FIGHTMODE_DEFENSE
Item attribute
ITEM_ATTRIBUTE_DECAYTO
ITEM_ATTRIBUTE_WRAPID
ITEM_ATTRIBUTE_STOREITEM
ITEM_ATTRIBUTE_ATTACK_SPEED
ITEM_ATTRIBUTE_CUSTOM
Item group
ITEM_GROUP_GROUND
ITEM_GROUP_CONTAINER
ITEM_GROUP_WEAPON
ITEM_GROUP_AMMUNITION
ITEM_GROUP_ARMOR
ITEM_GROUP_CHARGES
ITEM_GROUP_TELEPORT
ITEM_GROUP_MAGICFIELD
ITEM_GROUP_WRITEABLE
ITEM_GROUP_KEY
ITEM_GROUP_SPLASH
ITEM_GROUP_FLUID
ITEM_GROUP_DOOR
ITEM_GROUP_DEPRECATED
Item ids
ITEM_SHOPPING_BAG
ITEM_MAGICWALL_NOPVP
ITEM_WILDGROWTH_NOPVP
Message types
MESSAGE_GUILD
- White message in channel (+ channelId)MESSAGE_PARTY_MANAGEMENT
- White message in channel (+ channelId)MESSAGE_PARTY
- White message in channel (+ channelId)
Textcolor
TEXTCOLOR_ELECTRICPURPLE
TEXTCOLOR_PASTELRED
WieldInfo
WIELDINFO_NONE
WIELDINFO_LEVEL
WIELDINFO_MAGLV
WIELDINFO_VOCREQ
WIELDINFO_PREMIUM
Zone
ZONE_PROTECTION
ZONE_NOPVP
ZONE_PVP
ZONE_NOLOGOUT
ZONE_NORMAL
New XML attributes
Monster
canwalkonenergy
canwalkonfire
canwalkonpoison
challengeable
ignoreSpawnBlock
isBoss
items.xml
imbuements related:
criticalhitchance
criticalhitamount
lifeleechchance
lifeleechamount
manaleechchance
manaleechamount
other:
forceserialize
/forcesave
- saves unmoveable items like beds and carpets when put in housestoreitem
- allows putting the item in store inboxinitdamage
- damage dealt when stepping on fieldattackspeed
- attack speedelementholy
- holy resistanceelementdeath
- death resistance
Quests.xml
ignoreendvalue
- boolean for mission field. Enabling it will keep the mission displayed when mission storage is higher than endvalue.
Vocations.xml
allowPvp
- (boolean) some vocations can have pvp disabled nownoPongKickTime
- (unsigned int) amount of seconds to kick the player in case he loses the connection
RevScriptSys
A new way to create scripts has been implemented. It allows the developers to create mods they can drag and drop to data/scripts
. Example mods can be found in the same folder. Every file from that folder will load automatically. To disable loading a certain file, add a #
symbol at the beginning of file.
Supported constructors:
Action
CreatureEvent
GlobalEvent
MonsterType
MoveEvent
Party
Spell
TalkAction
Weapon
Events
- Added event callbacks. They're hooks for things located in
data/events
folder. Examples can be found indata/scripts/eventcallbacks
.
New events
Creature:onHear(speaker, words, type)
Monster:onDropLoot(corpse)
Monster:onSpawn(position, startup, artificial)
Player:onItemMoved(item, count, fromPosition, toPosition, fromCylinder, toCylinder)
Player:onTradeCompleted(target, item, targetItem, isSuccess)
Player:onWrapItem(item, position)
New functions
isNumber(str)
- same astonumber(str)
but returnsfalse
instead ofnil
isValidMoney(money)
getLootRandom()
getMoneyCount(string)
getMoneyWeight(money)
getSubTypeName(subType)
logCommand(player, words, param)
- logs talkaction to a filesetWorldLight(level, color)
New methods
Combat
combat:getPositions(creature, variant)
combat:getTargets(creature, variant)
combat:clearConditions()
combat:getParameter(key)
Condition
condition:getParameter(key)
Container
container:createLootItem(item)
container:getItems(recursive)
Creature
creature:isImmune()
creature:move(direction)
- moves creature to selected directioncreature:hasCondition(conditionType[, subId = 0])
- checks if creature has specified conditioncreature:isContainer()
creature:isTeleport()
creature:setHealth(health)
creature:canAccessPz()
creature:isMovementBlocked()
creature:setMovementBlocked(state)
Game
Game.getClientVersion()
- returns a table with fieldsmin
,max
andstring
Game.getMonsterTypes()
Game.getItemAttributeByName(name)
Game.getAccountStorageValue(accountId, key)
Game.setAccountStorageValue(accountId, key, value)
Game.saveAccountStorageValues()
Group
group:hasFlag(flag)
House
house:getItems()
house:save()
house:getDoorIdByPosition(position)
house:canEditAccessList(listId, player)
house:kickPlayer(player, targetPlayer)
Item
item:isLoadedFromMap()
item:isMonster()
item:isNpc()
item:isStoreItem()
item:setStoreItem(bool storeItem)
itemType:isStoreItem()
item:getCustomAttribute(key)
item:setCustomAttribute(key, value)
item:removeCustomAttribute(key)
item:getSpecialDescription()
ItemType
itemType:isBlocking()
itemType:isGroundTile()
itemType:isMagicField()
itemType:isUseable()
itemType:isPickupable()
itemType:getAmmoType()
itemType:getCorpseType()
itemType:getGroup()
itemType:getAbilities()
itemType:hasShowAttributes()
itemType:hasShowCount()
itemType:hasShowCharges()
itemType:hasShowDuration()
itemType:hasAllowDistRead()
itemType:getWieldInfo()
itemType:getDuration()
itemType:getLevelDoor()
itemType:getVocationString()
itemType:getMinReqLevel()
itemType:getMinReqMagicLevel()
Monster
monster:rename(name[, nameDescription])
NetworkMessage
networkMessage:seek(position)
...
The Forgotten Server 1.2
This is the third stable release of The Forgotten Server in the 1.x series. Precompiled Windows binaries are provided for the convenience of Windows users. Users of other operating systems are advised to build the source code on their system by following our compiling instructions: https://github.com/otland/forgottenserver/wiki/Compiling
For more information, see the release announcement on OTLand: https://otland.net/threads/the-forgotten-server-1-2.246641/
The Forgotten Server 1.1
This is the second stable release of The Forgotten Server in the 1.x series. Precompiled Windows binaries are provided for the convenience of Windows users. Users of other operating systems are advised to build the source code on their system by following our compiling instructions: https://github.com/otland/forgottenserver/wiki/Compiling
For more information, see the release announcement on OTLand: https://otland.net/threads/the-forgotten-server-1-1.232064/
The Forgotten Server 1.0
This is the first stable release of The Forgotten Server in the 1.x series. Precompiled Windows binaries are provided for the convenience of Windows users. Users of other operating systems are advised to build the source code on their system by following our compiling instructions: https://github.com/otland/forgottenserver/wiki/Compiling
For more information, see the release announcement on OTLand: http://otland.net/threads/the-forgotten-server-1-0.223775/