Releases: opentibiabr/canary
Canary - Version 1.3.1 (Patch)
Release version: Stable 1.3.1 (Patch) - e06dd7f
Download Tibia Client 12.86.11871
Download OTClient 1.0, thanks for @mehah
Fixes
- Crash related to creature death (@dudantas, 03e8e09)
The crash happened in a specific scenario, when the creature was removed (and recreated) and the target reference was not removed, when it tried to target another creature, it crashed. - Market issue related to stash items and gold duplication (@marcosvf132, 7082aff)
There is an issue on the market that was making the item remove count 0 when accepting buy offer.
Issue reported by @Sparkz023
Changes from Major Release version: stable 1.3.0 - 80908fd
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 pro...
Canary - Version 1.3.0
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 t...
Canary - Version 1.2.0
Support client 12.85.11525 (author: @marcosvf132, commits: e9c85a5, 3144b16, cc98f40)
Modified:
- [Lua/Pack]: Remove lua tests, the files no longer exist (author: @omeranha, commit: 9a21ad4)
- [Source]: Enhancement - Automatically unzip world.zip in world folder if otbm file doesn't exist on server start (author: @omeranha, commit: 6b23e6f)
This change will allow the server to automatically extract the map from the zip (to the global server) in case the .otbm file is not found.
In this commit is need new liblibzippp
, uses./vcpkg install libzippp
Fixed problems:
-
[Source]: Npc Shop Enhancement - Allow an item of the same id to be added multiple times for the same npc (author: @dudantas, commit: 9c257da)
Set for use name of the item instead of id in the ShopInfoMap vector
This will allow adding items with the same item ids and customizing the item name
Fixed somes npcs shop bugs -
[Source]: ConfigManager - fix (#208) typo from "freeQuests" to "toggleFreeQuest" (author: @dudantas, commit: 0c08898)
-
[Source]: Added new method ```vocation:getBaseAttackSpeed```` for offline training and exercise training script (author: @Rechdan, commit: 8315cf5)
-
[Source]: Added new Lua method
configManager.getFloat
(author: @Rechdan, commit: 2811015)
Fix nil value in the offline training and exercise training script -
[Source]: Fix support rates regen, removed multiplication and modified to use getBaseAttackSpeed instead of getAttackSpeed (author: @dudantas, commit: 29846fa)
-
[Source]: Set item tier bytes from "0" to "1" from protocol 12.85 (author: @dudantas, commit: cc98f40)
Modified item tier byte to be 1 by default.
Added onestatic_cast<uint8_t>
in the function "item->getImbuementSlot()", for resolve review check from CodeQL.
What's Changed
- Rope fix by @hiPirate in #6
- New spells functions and others fixes/improvements by @beats-dh in #21
- [OTBR compatibility] Factions source code, pulled from: opentibiabr/otservbr-global#2334 by @beats-dh in #22
- Added the vocation base id and the functions to manage it instead of the "client id" by @beats-dh in #11
- Fix Numbered Depot Boxes + Add passwordType to config.lua.dist for MyAAC by @hiPirate in #4
- Gain stamina from training and pz by @beats-dh in #10
- Set build release to release with debug information by @dudantas in #37
- Fix windows GHA build by @dudantas in #43
- Prevents the loop of player from pushing another player by @dudantas in #34
- Disable the force close button (ensure a secure close) by @dudantas in #33
- Door fix by @hiPirate in #8
- Fix supply stash exploit by @beats-dh in #14
- Fix hungry conditions by @beats-dh in #12
- Fix item charge description in shop by @beats-dh in #17
- Fix restart prey after kick from beds by owner in house by @beats-dh in #20
- Fix all random crashes generated by protocolgame.cpp by @beats-dh in #23
- Fix wrong handling of spectator crashes when using "talk" from npcs menu by @dudantas in #40
- Fix summons and familiars bug by @dudantas in #36
- Add jiddo npc lib by @dudantas in #48
- Better handling of the Game::checkCreatures function by @dudantas in #44
- Add nullptr pointers (fix sonar checks) by @dudantas in #51
- Add pointers to check if player or charm is nullptr by @dudantas in #49
- Fix Creature:onTargetCombat(target) function and stamina gain event by @dudantas in #50
- Sort loot of monsters to try most rare itens first by @gtkatakura in #31
- Fixed combat.cpp pointers, the caster sometimes comes null by @dudantas in #137
- Added correct behavior and improved function for gain stamina on trainer by @beats-dh in #134
- Add open stash, open imbuement scripts and registered new items by @dudantas in #42
- Fix on target combat and experience stage by @dudantas in #152
- Bug Solution: Magic Wall not decaying by @Aerwix in #153
- [Feature] Save server by interval time by @beats-dh in #13
- HotFix: Items (Magic Wall & Wild Growth) decaying to 0 by @Aerwix in #155
- Fix frag time by @beats-dh in #15
- Fix recompile.sh build by @beats-dh in #18
- Fix monster loot items stages display on bestiary by @ArturKnopik in #24
- Remove definition of "ITEM_TYPE_MAGICFIELD" from items.xml "field" tag by @dudantas in #47
- Fix stored regeneration condition not using updated vocation values by @beats-dh in #27
- [Market] Add pointers to check if container and item is nullptr on "sendMarketEnter" by @dudantas in #132
- Better handling on create summon talkaction and fix summon icon by @beats-dh in #135
- Fix potential crash in Player::getClientIcons by @beats-dh in #136
- Fix backpacks positions on login by @omeranha in #144
- Fix monster retarget chance by @gerotib in #149
- Fixed crash generated by access "player" without checking if is nullpointer by @dudantas in #156
- Fix vcpkg/libmariadb package by @thatmichaelguy in #163
- [Feature] Add imbuement system and somes fixes by @dudantas in #150
- Decouple parses item attributes in it own file by @beats-dh in #140
- Added name for no longer unknown inspection type by @Zbizu in #166
- Fixed sale in the market to create offer by stash and adjust indentation to tab 4 by @dudantas in #165
- Added "if" check to verify if tables are null on reload talkaction by @dudantas in #168
- Cherry pick otbr commits by @dudantas in #170
- Register news items and movements/weapons unscripted by @dudantas in #173
- [Enhancement] Rework of the imbuement system and conversion to c++ by @dudantas in #164
- [Enhancement] - Optimize decay by @beats-dh in #54
- Fix market information by @victorrequia in #171
- [Improvement] - rework on exercise weapons system by @beats-dh in #180
- Fix double remove money on create market offer by @beats-dh in #181
- Add webhook expansion by @beats-dh in #16
- Check if player exist on useStamina function and fix drop loot script by @dudantas in #158
- Create familiars lib by @beats-dh in #182
- Removed requirement of initial city (dawnport) by @dudantas in #185
- Decouple config manager in true singleton by @dudantas in #190
- Support rates for regen, spell, speed and trainings by @gtkatakura in #32
- Sincronizations with otservbr-global by @dudantas in #191
- Add free quest system (for compatibility with otbr-global) by @dudantas in #193
- Bug fix that allowed to clone items in the market by @dudantas in #195
- [Compatibility] - Support for Canary with otbr-global, conversion from npcs to revscriptsys and rework on jiddo npc lib by @dudantas in #192
- [Protocol Bytes] - Support to client 12.85.11525 by @marcosvf132 in #167
- [Fix/Update] Items .xml and .otb update + Item tier registration fix by @marcosvf132 in #203
- [Npc Shop Enhancement] - Allow an item of the same id to be added multiple times for the same npc by @dudantas in #207
- Remove lua tests, the files no longer exist by @omeranha in #210
- [ConfigManager] - fix typo from "freeQuests" to "toggleFreeQuest" by @dudantas in #211
- [Enhance...