Skip to content

Canary - Version 1.3.0

Compare
Choose a tag to compare
@dudantas dudantas released this 27 Apr 07:19
· 1324 commits to main since this release
80908fd

Release version: stable 1.3.0 - 80908fd

Download Tibia Client 12.86.11871

Download OTClient 1.0, thanks for @mehah

Features/Enhancements

  • Complete rework on npcs shop add item functions (@dudantas, caf0a97)
  • Experience tracker (@marcosvf132, 990da24)
    On the oldest protocols, the client was handling the experience changes by it's own, now on the new protorocol (12.72+), we need to send to the client the right amount of experience that the player has gainned so it can update it's tracker
  • Auto Loot, Quick Looting in stack and Auto Bank function (@omeranha, 5cb9ff7)
    Auto loot using your manage loot containers quick loot categories and items filter, can be enabled in config.lua!
    Quick loot in stack, up to 30 corpses, enabled using client option.
    Auto Bank function, the dropped coins from monsters will be automatically deposited to your bank account, can be enabled in config.lua.
  • No disconnect on death (@omeranha, 4f8667a)
    no more disconnection when player dies
  • Solved incompatibility problem with otclient redemption (@marcosvf132, c46f64d)
    Readjust protocolgame to follow the right pattern. Changing hardcoded expected bytes on OnRecvFirstMessage to follow the cip client and fix incompatible with otclient protocolgamesend.
  • Decouple g_game in true singleton (@dudantas, @lgrossi, 126e7df)
    Game class decoupled in a true singleton, thus allowing direct calls without needing to instantiate in each file.
    Credits to @lgrossi for made the decouple logic.
  • Fix build to not use asan on relase mode (@Costallat, 87edf62)
    Not use ASAN for release build
    Remove cmake settings(replaced with presets)
    Adjust GitHub Actions triggers
  • Cmake features and update workflows to use gcc 11 (@dudantas, 905f774)
    Update sonarcloud version and sonar/codeql/ubuntu build to use gcc 11
    Added gcc minimum version 8 in cmakelists.txt
    Reorganized find_packages
    Fix possible bug in the spdlog link library
  • Add tag serverSaveTime on config.lua (@beats-dh, e848604)
    With this modification, the configuration of the global server save can be done directly in config.lua, thus centralizing configurable things in a single place
  • Add missing librarys; daily reward, modal windows and reward boss (@dudantas, c45f1d2)
    Added somes missing librarys: daily reward, modal window, reward boss
    Added new scripts for: monsters and spells
  • Party hunt analyzer. (@marcosvf132, c17279a)
    Adding the "new" feature Party Hunt Analyzer. There is one thing that you must know before you start testing it, so please read the entire PR commentary.
  • Added not moveable action function (@dudantas, 9c49c95)
    Not moveable action id = 100
    So that the item cannot be moved, just put this action id in the item
  • Add windows relelease build with address sanitizer (@Costallat, 8552c10)
    Adds new release build with asan enabled to help tracking problems
  • Added missing effects from version 12: soulwar/tentugly/supreme cube (@Aerwix, 371f116)
  • Added a new method to register scripts by the map position and rework on "registerLuaEvent" function (@dudantas, a7e6426)
    See all description on the commit
    With this modification, we can register action scripts without needing the action id/unique id or the item being on the map, as there is also a second parameter that creates the item (if it doesn't exist).
  • Decouple all global variables from extern in true singleton (@beats-dh, @lgrossi, b87372f)
    All the global variables * g_* were decoupled to true singletons, reducing the dependencies between the objects and simplifying the amount of calls and instances. They used to be partial singletons mixed with global variables, that way we have one, and only one instance that is accessed via the getInstance methods, that are now the * g_* functions.
  • Prey system rework (CPP) + Hunting task system (@marcosvf132, 42af88d)
    Complete rewrite of old prey system from LUA to CPP and implementation of Hunting Tasks system;
    Do not test with GOD char or with low amount of creatures registered on bestiary. The PR already include the necessary amount of then;
    Addition of hunting task system and entire rework of prey system. All working on CPP with few LUA integration.
  • Check for message type parameter wrong (@dudantas, ea7fbce)
    How to test: Add a message with a wrong or none parameter, such as:
    player:sendTextMessage(MESSAGE_WRONG, "Message")
  • Rework on fluids colors and new monster race type (INK) (@marcosvf132, ce36520)
    Description
    Full rework on the way that the server handles the fluids, to use one single ENUM and remove all the garbage functions and maps that used to store the same values for fluids over and over again.
    Add new creature race type named INK. This new race type is used mostly on creatures on the tibia "The Secret Library". Attacking those creatures or slain then will now create the proper type of blood pool/splash.
    Resolves #123
    OTServerBr-Global PR: opentibiabr/otservbr-global#544
  • Add script casks and kegs (store item for refill potions) (@lucasgrizante, 256a6ee)
  • Move client version from config.lua to definitions.h (@dudantas, 4580324)
    It's a tag that works at the compilation level and shouldn't be in config.lua, because the version is always just one and cannot be modified at the configuration level.
  • Rework on items to extinquish OTB file and use client 12 protobuf instead (@marcosvf132, 68d0475)
    See the commit description for more information

New Lua functions

  • Added container:getItems() function and option stash moving items to supply stash and depot (@omeranha, 844530b)

Fix

  • Register Npc Type - add missing currency method for npcs revscriptsys (@Aerwix, 9f37c02)
  • Bestiary tracker list loader (@marcosvf132, 9a02596)
  • Reverting item tier to 0 + Market/Cyclopedia item tier (@marcosvf132, 4c7a35a)
  • Life and mana leech amount/chance attribute (@guispiller, 56ddcf2)
    Fix to correct the item tags of mana leech and life leech items attributes.
    Extra: added attributes missing on some soulwar weapons.
  • "allowpickupable" tag on items.xml, resolves trashholder items (@dudantas, e3df583)
  • Ring transformation on creation (@marcosvf132, 0eacb35)
    Rings was transforming into wrong itemIDs on creation.
  • Add missing duration timestamp attribute for decay system (@beats-dh, 1527549)
  • logout message connection lost on bed and offline training and remove unused tag on druid familiar (@omeranha, e6abcc8)
    Fixes connection lost message when using an bed or offline training statues, added a check to identify when a player was "forced" removed
  • Auto Bank not removing coins from monster corpse (@omeranha, 0059314)
  • docker-compose: add env to correct mysql host (@bruno-costa, 611a44e)
  • Few hireling issues (@marcosvf132, 3808591)
    Fix hireling outfit change client crash.
    Fix hireling server crash when saying 'hi - lamp - yes'.
    Convert hireling itemids from serverID to clientID.
  • 'wound' bestiary charm register (@marcosvf132, deeb21f)
    Wound bestiary charm was not showing on the cyclopedia charm store due to one miss config on the Lua file.
  • Multiple purchase of the same mount from store. (@Corlyone, 3e94dc2)
    When buying a mount, it was possible to buy it indefinitely, causing the player to lose coins.
  • Not be able to accept offer if you are a character on the same account (@dudantas, 65b5348)
    Fix for player selling offer not receiving money if offline (thanks and credits for @gccris)
    Added verification to prevent transactions with characters of the same account
  • [Fx] Rework of checkCreatureAsKnown and fix of client debug (@beats-dh, @lgrossi, 77f152e)
    Before, if you moved with the char diagonally for a while or even normally at a certain time, the debug client "closes unexpectedly" with this fix it doesn't happen anymore.
    Note: walking diagonally forces the client to debug faster.
    Credits fix code: @mrianura
  • crash on buy own offer in market (@dudantas, d488fae)
    Removed some unnecessary delete pointers
  • Added check to ensure the item is not imbued twice with the same imbuement (@dudantas, dd03479)
  • Add decayImbuementTime function for use of updateInventoryImbuement (@dudantas, 8559f3c)
    Function to avoid sending the message "imbuement already exists" when equipping/unequipping and deterioration of the item's imbue time
  • Quiver checking for ammunition level (@andersonfaaria, f50096b)
    Description
    Added check for minReqLevel of ammunitions in quiver both for total count of arrow as well as to select which ammunition to use
    Actual behaviour
    Quiver ignore level requirement as stated in #77
    Expected behaviour
    Quiver actually doesn't throw ammunitions which has higher level requirement than player level
  • Fixed on death events for monsters that don't have corpses (@dudantas, 6db7c30)
    onDeath events not working for corpseless monsters
    Added a sanity check to ensure the corpse is not used by monsters that don't have a corpse
  • Fix green skull from party (653c65a)
    Fix missing green skull on current character
  • Fix crash of invalid discord url and wrong player death event name typo (@beats-dh, 5714e14)
    Fixed player death event name typo (from "Player Death" to "PlayerDeath"), on login.lua is: player:registerEvent("PlayerDeath")
    Fixed a bug that we have in the discord webhook in the project, and the bug happens when the server can't access the discord because of an invalid url or a lack of connection from the discord itself
    Behaviour actual:
    Server crash "closes unexpectedly" if invalid url is set in "config.lua" or "discord_webhook.lua"
    Expected:
    The server has to work normally regardless of whether the url is correct or not and whether discord receives it or not
  • Remove increment rune name to item name (@dudantas, 08087b0)
    Item name was being replaced by rune name in "register" function
    Added the condition to only replace if the item name is empty, so that some system that checks the name of the pre-established item cannot be bugged
  • Fixed bug where quickloot would only looting the first corpses (@dudantas, 0e75d7b)
  • Convert destroy field rune ids to client id and remove unused corpses table (@gpedro, 93d9d98)
  • Fix exercise training and somes nil scripts (@dudantas, 1f81077)
  • Conversion of server id to client id on gamestore.lua and init.lua and indent file gamestore.lua (@dudantas, f81f904)
  • Add 'non-aggresive' tag on healing 'doTargetCombatHealth' (@marcosv132, 6f42a91)
    Missing check to make the combat 'non-aggresive' when healing a player's mana, by potion or any script that uses doTargetCombatHealth(...)
  • Remove unsafe addEvent from gamestore (@andersonfaaria, 1330cef)
  • Fix crash related to reload scripts and fix reload npcs not working correctly and others fixes (see description) (@dudantas, 5141874)
    This is intended to:
    Resolve critical issues.
    See all description on the commit.
  • Fixed rune that was only used in the tile and added to set for no-moveable item for action by position (@dudantas, 1da1ac1)
    Moved the check inside the iterator, making the rune no longer access the tile check and can be used inside the backpack
    Modified so if the item set to be crafted is a moveable item, then the script will set the unmovable flag to prevent any player from moving the item.
  • Add missing function and fix nil values scripts (@dudantas, fa74d67)
    Added function for summon familiar and fixed somes wrong functions
  • Fixed halved healing spells, changed overtime healing color from blue to red (@soderlight, d58c242)
  • Fix typo on config tags from "togle" to "toggle" and somes others fixes (@dudantas, c921c87)
    Added the "global" in the tags of the global save server, and some synchronizations with the global repository: https://github.com/opentibiabr/otservbr-global
  • Fix drowning logic (@lucasgrizante, 5c42078
  • Fix rune "id" method incrementing item id in the items.xml (@dudantas, 0ea8dd6)
    Method "spell:id()" is of use only of spell instant, to set the cooldown sprite
  • Fix convert daily reward ids to client id (@lucasgrizante, 1ca7847)

GitHub

  • Set workflows branch from "master" to "main" (@dudantas, 46cf35b)

  • Update GitHub actions (@Costallat, a9cd5c7)
    Update and improve Github Actions
    Add new forms
    Update bug form
    Fix labels

  • Add issue auto label (@Costallat, 76fd4f6)

  • Set windows default build as release (@Costallat, 657db93)
    Refactor cmake presets to keep windows release as the default preset to
    help newcomers

  • Fix build docker, missing include header (@dudantas, c02a492)
    Added the proper checks in the addImbuement function
    The setImbuement Function has been set to private, to prevent someone from using it and making the bug again
    Added clearImbuement function to clear imbuement

  • [Remove] Removed benchmark from storage duplication (@andersonfaaria, 0b21858)
    This was something I have added back then to show the function wasn't heavy and it's already something proven. In one of the commits someone put the processed message inside the condition which removed its purpose and would spam server console with a line that is not relevant as the goal was to show total process time and not individual time for each duplicate found.

Closed issues:

#58, #60, #61, #64, #65, #76, #77, #78, #79, #83, #85, #87, #90, #92, #93, #123, #159, #216, #229, #240, #241, #243, #244, #245, #246, #252, #256, #257, #258, #260, #265, #267, #275, #276, #277, #285, #288, #304, #311, #312, #313, #314, #315, #320, #340