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,SIGHUPandSIGUSR1) - better handling of configmanager class
- better handling of item attribute types
- improved dispatcher performance
- improved OTBM loader performance
- improved loading
items.xmlperformance - 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
overrideattribute wherever applicable - adjusted code formatting
- adjusted construction of messages for dealt/received damage
- anonymous namespaces are now being used wherever applicable
- chaseMode uses
boolnow 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/setcode - improved
LightInfohandling - map search for types and effects
- monster loot now accepts count higher than
100 ProtocolGame::loginnow loads players by id instead of name- removed a lot of unused and unnecessary code
- removed
finalattribute fromfinalclass methods - removed unused parameter
manafrom monsters and NPCs - replaced
forward_listwithvectorin creature walking - replaced
protectedvisibility withprivateforfinalclasses sendInventoryItemsnow uses aforloop- singletons now use return by reference
- skill cache is no longer used as
powperformance 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
Partymethods - monsters drop loot in lua
- monsters walkback to spawn
- more getters for
ItemTypeclass - 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
/attrtalkaction 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
allowWalkthroughclassicAttackSpeedcleanProtectionZonesdefaultWorldLightdepotFreeLimitdepotPremiumLimitforceMonsterTypesOnLoadhouseDoorShowPricehouseOwnedByAccountluaItemDesconlyInvitedCanMoveHouseItemsremoveChargesFromPotionsremoveOnDespawnremoveWeaponAmmunitionremoveWeaponChargesserverSaveCleanMapserverSaveCloseserverSaveNotifyDurationserverSaveNotifyMessageserverSaveShutdownshowPlayerLogInConsolevipFreeLimitvipPremiumLimityellMinimumLevelyellAlwaysAllowPremium
New enums
Ammo
AMMO_NONEAMMO_BOLTAMMO_ARROWAMMO_SPEARAMMO_THROWINGSTARAMMO_THROWINGKNIFEAMMO_STONEAMMO_SNOWBALL
Condition
CONDITION_PARAM_DRUNKENNESSCONDITION_PARAM_SPECIALSKILL_CRITICALHITCHANCECONDITION_PARAM_SPECIALSKILL_CRITICALHITAMOUNTCONDITION_PARAM_SPECIALSKILL_LIFELEECHCHANCECONDITION_PARAM_SPECIALSKILL_LIFELEECHAMOUNTCONDITION_PARAM_SPECIALSKILL_MANALEECHCHANCECONDITION_PARAM_SPECIALSKILL_MANALEECHAMOUNT
Magic effect
CONST_ME_EARLY_THUNDERCONST_ME_RAGIAZ_BONECAPSULECONST_ME_CRITICAL_DAMAGECONST_ME_PLUNGING_FISH
Fight mode
FIGHTMODE_ATTACKFIGHTMODE_BALANCEDFIGHTMODE_DEFENSE
Item attribute
ITEM_ATTRIBUTE_DECAYTOITEM_ATTRIBUTE_WRAPIDITEM_ATTRIBUTE_STOREITEMITEM_ATTRIBUTE_ATTACK_SPEEDITEM_ATTRIBUTE_CUSTOM
Item group
ITEM_GROUP_GROUNDITEM_GROUP_CONTAINERITEM_GROUP_WEAPONITEM_GROUP_AMMUNITIONITEM_GROUP_ARMORITEM_GROUP_CHARGESITEM_GROUP_TELEPORTITEM_GROUP_MAGICFIELDITEM_GROUP_WRITEABLEITEM_GROUP_KEYITEM_GROUP_SPLASHITEM_GROUP_FLUIDITEM_GROUP_DOORITEM_GROUP_DEPRECATED
Item ids
ITEM_SHOPPING_BAGITEM_MAGICWALL_NOPVPITEM_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_ELECTRICPURPLETEXTCOLOR_PASTELRED
WieldInfo
WIELDINFO_NONEWIELDINFO_LEVELWIELDINFO_MAGLVWIELDINFO_VOCREQWIELDINFO_PREMIUM
Zone
ZONE_PROTECTIONZONE_NOPVPZONE_PVPZONE_NOLOGOUTZONE_NORMAL
New XML attributes
Monster
canwalkonenergycanwalkonfirecanwalkonpoisonchallengeableignoreSpawnBlockisBoss
items.xml
imbuements related:
criticalhitchancecriticalhitamountlifeleechchancelifeleechamountmanaleechchancemanaleechamount
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:
ActionCreatureEventGlobalEventMonsterTypeMoveEventPartySpellTalkActionWeapon
Events
- Added event callbacks. They're hooks for things located in
data/eventsfolder. 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 returnsfalseinstead ofnilisValidMoney(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,maxandstringGame.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/