Skip to content

Releases: otland/forgottenserver

The Forgotten Server 1.6

05 Jun 22:09
0986419
Compare
Choose a tag to compare

Version 1.6 represents our latest stable protocol 13.10 release.

What's Changed

Read more

The Forgotten Server 1.4.2

29 Jun 07:08
Compare
Choose a tag to compare

Version 1.4.* represents our latest stable protocol 10.98 release.

What's Changed

  • [1.4] 10.98 forwards compatibility with new OTB and RME in #3866
  • 1.4.2 Release Candidate in #3917

Full Changelog: v1.4.1...v1.4.2

The Forgotten Server 1.4.1

03 Dec 10:09
Compare
Choose a tag to compare

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

17 Sep 23:23
063a6bf
Compare
Choose a tag to compare

Engine

  • added support for POSIX signals (new: SIGINT, SIGTERM, SIGHUP and SIGUSR1)
  • 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 from final class methods
  • removed unused parameter mana from monsters and NPCs
  • replaced forward_list with vector in creature walking
  • replaced protected visibility with private for final classes
  • sendInventoryItems now uses a for 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 from 0.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 house
  • storeitem - allows putting the item in store inbox
  • initdamage - damage dealt when stepping on field
  • attackspeed - attack speed
  • elementholy - holy resistance
  • elementdeath - 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 now
  • noPongKickTime - (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 in data/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 as tonumber(str) but returns false instead of nil
  • isValidMoney(money)
  • getLootRandom()
  • getMoneyCount(string)
  • getMoneyWeight(money)
  • getSubTypeName(subType)
  • logCommand(player, words, param) - logs talkaction to a file
  • setWorldLight(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 direction
  • creature:hasCondition(conditionType[, subId = 0]) - checks if creature has specified condition
  • creature:isContainer()
  • creature:isTeleport()
  • creature:setHealth(health)
  • creature:canAccessPz()
  • creature:isMovementBlocked()
  • creature:setMovementBlocked(state)

Game

  • Game.getClientVersion() - returns a table with fields min, max and string
  • 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)...
Read more

The Forgotten Server 1.2

22 Oct 01:58
Compare
Choose a tag to compare

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

14 May 20:57
Compare
Choose a tag to compare

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

01 Nov 14:40
Compare
Choose a tag to compare

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/