Welcome! The OpenTibiaBR team is deeply committed to continuously enriching this project with new features and fixes. Your support, either financial or through code contributions and issue reports, is vital for our ongoing work.
-
To contribute code or report problems, join our Discord community.
-
If you'd like to financially support the project, please consider making a donation.
-
For tutorials and additional resources, visit our documentation.
A Brief Introduction Before the Changelog
Before diving into the changelog, let's take a moment to recap what has changed since our last release in December 2022.
We felt the project needed a fresh direction, something unprecedented in the OpenTibia community. Thus, we've focused on enhancing the security and stability of the server to deliver a superior experience for everyone!
Canary's Progress Since December 20, 2022 (v2.6.1)
-
722 Commits: A sizeable portion of these commits addressed chronic issues in OpenTibia and pushed the performance and security of our project to new heights. To highlight a few:
- Memory Management: Most of the critical raw pointers have been converted to use automatic memory management (
shared_ptr
andunique_ptr
). - Optimized Systems: Heavy systems like the dispatcher, thread pool, and spectators have been revamped for better performance.
- Memory Management: Most of the critical raw pointers have been converted to use automatic memory management (
-
Community Contributions: We've fixed dozens of crashes and critical bugs, all thanks to the feedback and assistance from the community and server owners. Special thanks to Douglas @QuebradaZN, whose server recently supported (nearly) four hundred concurrent players using our latest release (without any type of problem).
To each of you who has contributed, whether through code or feedback, thank you sincerely. Your contributions are pivotal to our progress, and we are committed to making Canary the best MMORPG engine in the OpenTibia community.
Download Tibia Client 13.21.13839
Download OTClient Redemption, thanks for @mehah
What's Changed
- improve: replace boost::asio with asio, fix some include and CMakeList.txt by @beats-dh in #721
- enhance: change boost::iostreams::mapped_file_source by mio library by @dudantas in #723
- enhance: remove boost-variant by @dudantas in #722
- fix: upload artifacts in GHA from Ubuntu by @beats-dh in #706
- fix: custom attribute serialize function by @dudantas in #727
- enhance: remove boost lexical and algorithm by @dudantas in #724
- fix: include lua jit in pch.hpp by @dudantas in #728
- improve: refactored code and fixes compilation warn from Ubuntu 23.04 by @beats-dh in #726
- improve: change all file headers to canary project by @dudantas in #730
- fix: global result table to Result by @dudantas in #731
- ci/cd: update SonarCloud GHA by @Costallat in #725
- fix: handling nullptr in Game::internalMoveItem and other functions by @dudantas in #737
- improve: rework in pugi::cast and others fixes by @dudantas in #734
- improve: refactor loadScripts function to improve readability and performance by @dudantas in #739
- fix: clone items in market, checking if item exists in depot before creating an offer by @carlospess0a in #736
- fix: create market offer by @dudantas in #749
- fix: player auto id (fixing 65536 player id max size) by @dudantas in #754
- fix: imbued item does not start the imbuement timer countdown by @dudantas in #475
- fix: forge skill chance bug by changing data type from int to double by @murilo09 in #761
- fix: add skill talkaction from canary pack by @dudantas in #745
- improve: clean and update docker by @Costallat in #716
- improve: rework on Player::getStorageValue for return storage value by @dudantas in #573
- improve: changing concatenation to fmt::format by @murilo09 in #767
- fix: blackboard description by adding 'allowDistRead' flag by @murilo09 in #766
- feat: methods to set factions into player by @carlospess0a in #693
- refactor: remove old XML interface by @dudantas in #740
- fix: remove target without accessing freed memory by @dudantas in #786
- fix: out of bounds memory access in setValue function by @dudantas in #785
- fix: setLootContainer without accessing freed memory by @dudantas in #787
- fix: added player nullpointer check (function updateCreatureType) by @dudantas in #791
- fix: added condition argument to wait calls in threadMain functions by @dudantas in #790
- fix: close server console after done message by @dudantas in #796
- fix: some combat nullpointers by @dudantas in #788
- improve: upgrade curl to use TLS version 1.2 by @beats-dh in #705
- fix exception handling, switch/if chain and others by @dudantas in #798
- cd/ci: removal of actions that are not working correctly by @dudantas in #801
- feat: add function for loading/unloading OTBM files per offset by @Glatharth in #436
- improve: adding script name in lua scripts errors logs by @dudantas in #800
- fix: weapons, reverting some changes from XML pr by @dudantas in #784
- fix: loop when opening server without database by @murilo09 in #807
- fix: assigning negative value to unsigned integer (getSkillLevel) by @murilo09 in #769
- fix: imbuement decay time by @dudantas in #818
- feat: introducing configurable minimum level for house purchases by @elsongabriel in #814
- improve: enabling checksum sequence method/compression in OTClient by @mehah in #821
- fix: party hunt analyzer prices from leader by @ElimarCosta in #817
- fix for door not opening/closing by @PeachieDude in #809
- fix: speed attribute when looking items by @ElimarCosta in #828
- fix: distance weapons shouldn't hit with fists when without ammo by @ElimarCosta in #755
- fix: stow all stowable items by moving depot above stash by @ElimarCosta in #822
- fix: display imbuement damage reductions in cyclopedia by @ElimarCosta in #819
- fix: charm/leech conditions, wound cleanse & life leech amount fix by @ElimarCosta in #753
- fix: summons move items off the way and follow correct moving pattern by @ElimarCosta in #823
- fix: server shutdown in ubuntu, resolves main thread loop by @beats-dh in #838
- fix: monster target list erasing after player died by @dudantas in #839
- fix: add missing items on unscripted equipments by @carlospess0a in #782
- fix: compilation with latest version mio library from vcpkg by @dudantas in #832
- fix: Canary NPC example addModule missing parameters by @Aerwix in #842
- improve: rework of Item Attributes for better stability/maintability by @dudantas in #827
- fix: client debug and show not targeting player when dying near temple by @dudantas in #841
- fix: some errors in lua scripts by @dudantas in #830
- feat: added outfit and mount preview feature to the store by @murilo09 in #773
- fix: using a shovel on a stone pile should move to downstairs by @ElimarCosta in #757
- fix: NPC Ongulf by @murilo09 in #759
- fix: remove money lua function should remove money from bank too by @murilo09 in #760
- fix: players shouldn't pathfind through fields by @ElimarCosta in #756
- fix: change curl version to 1.3 by @dudantas in #847
- fix: set target when convince creature by @ElimarCosta in #845
- ci: remove action build for drafts by @ElimarCosta in #844
- build: deactivate build windows debug by @beats-dh in #843
- feat: standardize lever functionality by @Glatharth in #648
- fix: high CPU usage issue on linux by @beats-dh in #849
- fix: house clean-up and item wrap issues by @ElimarCosta in #840
- fix: Wrath of the Emperor teleport by @jacksonie in #792
- fix: "towns" table database fill issue by @gpedro in #743
- fix: rate experience stages by @beats-dh in #720
- fix: loop in movement "stepin/out" and "addItem/remove" events by @dudantas in #742
- improve: added clang format using GHA for code format by @beats-dh in #775
- fix: prevent bugs in transfer coins by @carlospess0a in #714
- fix: general fixes, npc "poff" on hit and walk on fields, window projectile blocking and npc speech bubble by @ElimarCosta in #853
- fix: attribute integer not working by @dudantas in #854
- fix: empty reward bags should disappear after closing/opening reward chest by @ElimarCosta in #846
- fix: add migrations to create "towns" table by @dudantas in #859
- feat: implementing bosstiary system by @dudantas in #700
- fix: player auto id (fixing 65536 player id max size) by @dudantas in #763
- fix: gamestore purchase history on ARM architecture by @Peixonauta2 in #812
- fix: remove shared_ptr from reward by @dudantas in #860
- fix: monsters/summons can walk no-walkable items after set unique id by @ElimarCosta in #856
- feat: new lua event "onInventoryUpdate" by @carlospess0a in #751
- fix: depot items not saving by @dudantas in #868
- improve: handling of modal window helper by @omarcopires in #794
- feat: add example script for modal window by @dudantas in #855
- improve: canary datapack functionality with bug fixes and adjust by @beats-dh in #665
- fix: dangerous depth entrance (change from aid to position) by @LeoTKBR in #863
- improve: fixes cyclopedia and market items description by @murilo09 in #826
- fix: interaction with fields and removal of unused flag by @ElimarCosta in #865
- fix: delete unnecessary script check_inbox.lua by @dudantas in #866
- fix: duplicated active events warning and log by @beats-dh in #768
- fix: canary datapack loading by @dudantas in #873
- fix: item not decaying duration and related bugs by @dudantas in #869
- fix: children of the revolution teleport by @jacksonie in #874
- fix: custom trainer exits teleport and other things by @dudantas in #872
- fix: remove old XML npcs parameter by @Felps18 in #835
- fix: item loaded by map decays duration when moved by player by @dudantas in #875
- fix: druid familiar mana and cooldown by @PeachieDude in #880
- improve: serverinfo command display by @thunerm in #858
- fix: unload on map custom by @Glatharth in #881
- fix: training with distance/missile item, advancing club skill by @elsongabriel in #887
- fix: prevent crash on monster spell by @carlospess0a in #888
- fix: check possible nullpointer on stash by @ElimarCosta in #895
- fix: convert cookbook script to client id by @RCP91 in #889
- fix: lever create item convert to client id by @RCP91 in #893
- fix: enables opening monster corpse post-reward collection by @ElimarCosta in #885
- feat: missing factions by @ElimarCosta in #886
- fix: npc idle check interactions by @ElimarCosta in #892
- fix: remove unused parameter by @dudantas in #894
- fix: revert some teleportTo things by @dudantas in #900
- fix: validation of protocol info received from client by @ElimarCosta in #902
- fix: imbuement shrine uses on non-item objects by @marcosvf132 in #905
- fix: update donate link and add canary logo png files by @dudantas in #903
- fix: check if tile exists on forgotten knowledge death by @dudantas in #909
- fix: mail bug by @ElimarCosta in #914
- fix: protocol validation on selling items by @ElimarCosta in #910
- fix: cleaning external backpacks on death by @marcosvf132 in #904
- fix: server motd from config.lua by @elsongabriel in #897
- fix: speed when mounting from outfit window by @ElimarCosta in #923
- fix: remove light effects for god/gm by @travisani in #920
- fix: player pathfind range and blocked tiles by @ElimarCosta in #916
- fix: powerful imbuement price by @PeachieDude in #915
- fix: clone of items on market by @dudantas in #927
- improve: experience display configuration by @omarcopires in #899
- fix: elementalist, dream courts and Grizzly Adams npc quest log by @sebbesiren in #925
- fix: convert data-canary tools to client id by @Aerwix in #406
- fix: arboreal ring id on primal bag by @Aerwix in #928
- improve: add a rate for points received in "the killing in the name of" by @sebbesiren in #929
- feat: add several missing bosses by @guispiller in #708
- fix: curl TLS version to same of discord webhook by @dudantas in #933
- fix: monster loot chance according to tibia global by @sebbesiren in #935
- feat: access to dream scar added to do bosses by @sebbesiren in #936
- fix: oberon boss fight mechanics according to global tibia by @sebbesiren in #940
- fix: default buttons for modal windows using new lib by @omeranha in #937
- improve: added access to bounac area by @sebbesiren in #934
- fix: spell cooldowns according to global tibia by @sebbesiren in #939
- fix: wrap stackable/charges items by @ElimarCosta in #944
- fix: quest system set container items attributes by @majestyotbr in #948
- fix: add "isRemoved" creature check for avoid memory freed by @travisani in #938
- fix: familiar nil storage and others familiar bugs by @dudantas in #947
- improve: adding missing bosstiary info by @murilo09 in #950
- build: remove SonarCloud cache/threads as it is now offered by default by @mpaladin in #952
- fix: skills rates stages by @PeachieDude in #951
- fix: ignore items missing id from assets (appearances.dat object) by @dudantas in #954
- improve: small improvements and fixes by @elsongabriel in #919
- fix: added missing boss points persistence when saving player by @lucascebertin in #957
- fix: thais exhibition levers conflicting with door quests by @sebbesiren in #958
- improve: add visual studio solution by @dudantas in #959
- feat: shortcut to rascacoon, access to the wreckoning and others fixes by @sebbesiren in #953
- fix: remove duplicate lines in freequests.lua by @mpgmateus in #967
- improve: boss cooldown timer by @duuh30 in #963
- fix: combat type wrong order from earth and fire damage by @dudantas in #961
- build: update lib mio and vcpkg commit id by @majestyotbr in #974
- fix: removing "error" message when using asuraMirror to teleport by @mpgmateus in #972
- fix: error handling to date formatting functions by @dudantas in #960
- feat: add access to Kilmaresh catacombs by @sebbesiren in #973
- fix: duplication of npcs shop (Hireling) by @dudantas in #971
- fix: hireling conflicted with an existing npc by @dudantas in #976
- fix: missing tiles under temple thais columns on custom map by @majestyotbr in #975
- build: fix sonar cloud GHA by @beats-dh in #978
- fix: improve "issue tag" in pull request template by @dudantas in #977
- build: resolve warn by using set-output in GHA and clear not used code by @beats-dh in #980
- fix: remove restriction for god account characters not open reward chest by @dudantas in #979
- fix: add missing Gaffir loots by @dudantas in #985
- fix: Morguthis teleport tomb access and poison field damage by @dudantas in #982
- improve: charm price rate config and monster spawns/drops/damage by @sebbesiren in #962
- fix: npc cassino position on custom map by @majestyotbr in #991
- fix: shutdown program in the linux S.O by @beats-dh in #992
- fix: banuta, prison surface and prison monsters by @sebbesiren in #993
- feat: improve to loads all maps in custom folder by @sebbesiren in #988
- fix: add missing items on boss drop by @carlospess0a in #999
- fix: remove white skull if no disconnect on death by @dudantas in #1003
- fix: possible nil table on useStamina function by @dudantas in #1002
- fix: better logic of load boosted boss function by @dudantas in #1000
- improve: inbox items can't be moved by @duuh30 in #983
- fix: icon id imbuement backpack and remove server log message empty by @duuh30 in #1006
- improve: oberon responses by @duuh30 in #1004
- fix: crash related to invalid boss race id by @dudantas in #1005
- fix: unexpected behavior on reward by @ElimarCosta in #997
- fix: gamestore exhaustion by @dudantas in #1008
- fix: crash related to load custom maps with canary datapack by @dudantas in #1009
- feat: protocol update to 13.16 by @marcosvf132 in #1010
- improve: init lua environment in the otserv.cpp by @dudantas in #1016
- fix: clone of items related to player death (duplication of player) by @dudantas in #1018
- feat: imbuement tracker system from 13.00 version by @dudantas in #1012
- fix: missing returns on bosses levers by @Glatharth in #1022
- improve: conversion of levers to new standard by @Glatharth in #1021
- fix: give party leader dust and share regardless of damage by @luan in #1020
- fix: warning in the distro at creature dead with corpse id 0 by @dudantas in #1024
- fix: crash related to remove items from stash by @dudantas in #1023
- fix: not remove some conditions on death by @dudantas in #1028
- feat: multiprotocol compatibility with client 11.00 (10x) by @marcosvf132 in #516
- fix: forge fuse items without core by @dudantas in #1034
- fix: hireling debug in client 11.00 by @dudantas in #1033
- improve: update bosstiary cooldown time at monster creation by @dudantas in #1030
- fix: wrong monsters race id by @dudantas in #1038
- fix: shop debug on client 13.16 by @dudantas in #1045
- fix: debug on 13.16 related to bestiary podium by @dudantas in #1051
- fix: some prices to hireling items by @dudantas in #1050
- fix: imbuements decaying in backpack by @dudantas in #1058
- fix: reward container crash by @dudantas in #1046
- fix: add player skill wrong displaying to client by @dudantas in #1066
- fix: hireling female enum by @duuh30 in #1073
- improve: added runes cooldown system by @duuh30 in #1072
- feat: sound effects system by @marcosvf132 in #1017
- improve: better checks to miscellaneous lua scripts by @jacksonie in #1079
- fix: store boost experience calculation by @bruno3794 in #1064
- fix: error ferumbras ascendant habitats by @jacksonie in #1076
- fix: crash related to getName methods with deleted creature by @dudantas in #1080
- fix: crash caused by wrapping hangable items on invalid tiles by @dudantas in #1075
- improve: better player group flags management by @dudantas in #942
- fix: emote spells validation and storage conflict by @elsongabriel in #1062
- fix: crash when teleporting summons to master by @jacksonie in #1084
- feat: items, outfits and mounts from version 13.x by @fellipe005 in #660
- improve: lady tenebris ultimate spell by @jacksonie in #1093
- fix: lever tiles by @Glatharth in #1100
- fix: otclient login by @mehah in #1105
- improve: refactor of boosted creature function to avoid infinity loop by @mehah in #1107
- feat: fear condition by @bosmak in #542
- fix: faceless bane kick time by @carlospess0a in #1098
- fix: prevent crash on addThing/internalAddThing by @mehah in #1106
- fix: dreamer's challenge quest by @luan in #1104
- fix: crash related to unsafe "getTile" by @dudantas in #1095
- feat: hazard system by @dudantas in #1091
- feat: update gamestore offers by @majestyotbr in #1085
- feat: transferable coins system by @carlospess0a in #1096
- fix: improve player already login check (fix reconnect crash) by @beats-dh in #1108
- fix: hotkey equip quiver/shielding by @duuh30 in #1086
- fix: hazard check nullpointer by @dudantas in #1111
- fix: gamestore init and other improvements by @elsongabriel in #1115
- feat: added lua get vocation string function to itemtype by @carlospess0a in #1113
- feat: reward chest collect system by @dudantas in #1065
- fix: deeper fibula quest teleport by @travisani in #1089
- feat: adding new bosses by @PeachieDude in #966
- fix: distance weapon elemental damage by @carlospess0a in #655
- fix: missing create combat area by @dudantas in #1118
- fix: faceless bane immunity by @carlospess0a in #1119
- fix: check target exists on exercise training script by @carlospess0a in #1120
- fix: add check for nullptr player in "addBless" function by @dudantas in #1121
- fix: clone exit and not removing the player on the death screen by @beats-dh in #1117
- fix: lever return (fixes summon loop bug) by @Glatharth in #1129
- fix: remove drop loot from zamulosh summons by @travisani in #1128
- fix: familiar scripts indentation by @elsongabriel in #1132
- fix: storages usage and typos by @elsongabriel in #1133
- fix: coins transaction from store and market by @dudantas in #1134
- fix: update vcpkg dependencies and update to fmt 10.0.0 by @dudantas in #1136
- fix: remove invalid ids from the maps by @majestyotbr in #1145
- fix: goshnar's spite corpse by @mpgmateus in #1146
- fix: speed from scarlett etzel by @Valleze in #1157
- fix: crash on closed server by @beats-dh in #1144
- feat: creature setspeed function to LuaScriptInterface by @Corlyone in #1138
- fix: client display and gain experience by @beats-dh in #1137
- fix: gold pouch validations by @duuh30 in #1160
- fix: helmets and hats by @Valleze in #1159
- fix: reward collect loop by @dudantas in #1149
- fix: chivalrous and challenge creature cooldown by @Glatharth in #1163
- fix: Syntax error by @Glatharth in #1166
- fix: crash on logout player by @beats-dh in #1164
- fix: amulets attributes by @Valleze in #1170
- fix: wands and rods attributes by @Valleze in #1172
- fix: gold pouch validations by @duuh30 in #1168
- fix: distance weapons attributes by @Valleze in #1167
- fix: in service of yalahar quest small adjustment by @Glatharth in #1174
- fix: lookTypeEx to boosted boss by @beats-dh in #1173
- fix: allow stow all items of this type from loot/gold pouch by @dudantas in #1165
- fix: shadow nexus inquisition item decay by @andrelcb in #1150
- fix: rings attributes by @Valleze in #1175
- feat: gnomprona monsters and npcs by @murilo09 in #1013
- improve: refactor recompile script for improve build process by @beats-dh in #1176
- fix: debug on kill creature using old protocol (11.00) by @dudantas in #1182
- feat: make stack size configurable per item by @luan in #1116
- fix: shields and spellbooks attributes by @Valleze in #1180
- fix: swords attributes by @Valleze in #1186
- fix: boots attributes by @Valleze in #1188
- fix: legs attributes by @Valleze in #1189
- fix: armors attributes by @Valleze in #1191
- fix: clubs attributes by @Valleze in #1193
- fix: axes attributes by @Valleze in #1194
- build: update luajit and vcpkg builtin-baseline by @beats-dh in #1190
- fix: npc trade item tier bug by @duuh30 in #1200
- fix: duplicate event logic by @beats-dh in #1187
- fix: hazard system debug move creature by @duuh30 in #1209
- fix: hireling vial item to correct id by @duuh30 in #1210
- fix: monster runAwayHealth respects multiplier by @luan in #1208
- improve: refactor bit-based enumeration to standard enum by @beats-dh in #1207
- fix: add nargor destination to npc sebastian by @carlospess0a in #1206
- feat: quickloot only gold pouch by @luan in #1211
- feat: loyalty system by @luan in #1213
- feat: otcv8 detection, custom features packet by @Corlyone in #1114
- improve: area-based hazard activation by @luan in #1216
- fix: adding izcandar loot by @carlospess0a in #1220
- feat: authenticate using session id by @luan in #1178
- feat: wheel of destiny by @dudantas in #1109
- fix: use player ids to safely check party events by @luan in #1230
- fix: use correct manaSpent value when calculating loyalty by @luan in #1232
- fix: use executeQuery on update query by @luan in #1233
- fix: party crash issue and imbuement by @carlospess0a in #1234
- fix: add wheel of destiny includes on visual studio solution by @majestyotbr in #1231
- fix: fishing skill by @pess0a in #1221
- improve: change to gha build windows use visual studio solution by @dudantas in #1235
- feat: enhance attackspeed based on fist fighting skill by @Corlyone in #1218
- feat: concoctions system by @luan in #1223
- fix: forgotten knowledge soulcatcher mechanic by @Valleze in #1199
- fix: the secret library quest and gaz'haragoth issue by @Gtravisani in #1238
- feat: ingol + iksupan monsters by @luan in #1224
- fix: use/move/trade/add/remove item from house logic by @dudantas in #1239
- feat: authentication support using argon2id by @beats-dh in #1217
- build: fix gha windows upload artifacts by @beats-dh in #1261
- fix: remove old lootcontainer flag by @luan in #1253
- fix: duplicate storage id by @luan in #1268
- fix: intialize participants as empty table by @luan in #1267
- fix: player "client" validation to avoid addEvent crash by @dudantas in #1249
- feat: boss specific multipliers by @luan in #1266
- feat: higher HP and mana on status bars by @ThiagoNBCoding in #1272
- fix: izcandar life by @carlospess0a in #1248
- feat: consider the currency when selling items npc by @carlospess0a in #1243
- feat: Morshabaal boss by @Sorairei in #1254
- fix: click "ok" button clone character using otcv8 by @dudantas in #1240
- fix: reward collect crash related to remove money by @dudantas in #1237
- feat: specialized magic level, cleave and perfect shot (systems) by @dudantas in #529
- feat: add build unity cmake module for speed up compilation time by @dudantas in #1274
- improve: move chaining to cpp by @luan in #1244
- fix: enter on depot by all directions by @dudantas in #1241
- fix: return true by default on combats by @luan in #1278
- build: fix gha/workflows by @beats-dh in #1277
- build: fix docker build, change to ubuntu 23.04 by @dudantas in #1281
- feat: protocol update for 13.20 by @marcosvf132 in #1269
- improve: refactor waiting list logic and fix windows shutdown by @beats-dh in #1280
- fix: loop related to creature destination inside a teleport item by @dudantas in #1288
- fix: cyclopedia debug related to client 13.20 by @dudantas in #1289
- fix: error in spell of arachnophobica and add neutral damage enum by @dudantas in #1282
- fix: check for player before using variable by @luan in #1297
- improve: rework in solution build by @dudantas in #1292
- fix: bestiary betterment counting cumulatively by @luan in #1307
- fix: tick down prem days by @luan in #1303
- fix: prevent special characters in house list by @Glatharth in #1306
- improve: a few content fixes by @luan in #1301
- fix: force clean map when loading custom overlay by @luan in #1299
- fix: magic effects on old protocol by @hyresu in #1294
- feat: add elemental concoctions by @luan in #1304
- fix: default parameter for challenge creature's lua function by @beats-dh in #1296
- feat: register sanguine items by @Sorairei in #1298
- fix: urmahlullu concurrency by @luan in #1302
- feat: introduce db transaction guard for muto-managed transactions by @beats-dh in #738
- fix: use loot modifiers correctly when creating loot by @luan in #1310
- feat: new beds behavior by @luan in #1291
- fix: safer iteration over reward containers by @luan in #1305
- feat: vip system by @elsongabriel in #1063
- fix: use db transaction guard and return toBeExecuted() by @beats-dh in #1313
- fix: random mount debug (add missing getByte) by @Gtravisani in #1319
- improve: unnecessary files in data-canary by @luanluciano93 in #1320
- fix: crazed winter rearguard corpse wrong id by @RCP91 in #1321
- fix: vip system by @elsongabriel in #1330
- improve: add position:toString lua function by @dudantas in #1324
- feat: implementation of lua/c++ event callback system by @dudantas in #1317
- fix: some content adjustments by @luan in #1334
- improve: VS Solution by @mehah in #1331
- fix: missing magic shield WOD boost by @luan in #1333
- fix: typo spdlog by @Gtravisani in #1326
- fix: vip system skill bonus boost by @elsongabriel in #1335
- fix: warnings in naga due to incorrect props by @luan in #1337
- feat: add addon on death of king zelos by @QuebradaZN in #1290
- improve: compatibility update for some lua scripts by @luanluciano93 in #1316
- improve: re-write loot rolls to share code and use callbacks by @luan in #1323
- fix: add missing loot function by @luan in #1342
- feat: sell all loot with pouch by @luan in #1315
- fix: don't chain through walls/pz by @luan in #1339
- improve: better loot container management by @dudantas in #1344
- fix: stash crashes and duplicates item by @luan in #1346
- fix: Spiritthorn Helmet epiphany imbuement by @Sorairei in #1345
- fix: sonarcloud by @beats-dh in #1353
- fix: use mana potions in pz by @luan in #1354
- clean: move loot log to debug by @luan in #1360
- feat: configurable npc talk ranges by @luan in #1359
- improve: content fixes by @luan in #1358
- improve: extract duplicate calls into variables by @luanluciano93 in #1349
- fix: incorrect variable name in Result.free by @luanluciano93 in #1351
- feat: game store search by @luan in #1356
- fix: don't remove reward containers on open/close reward chest by @dudantas in #1364
- fix: show correct fluid names by @luan in #1355
- fix: use item and use with for guests in houses by @dudantas in #1338
- fix: npc archery prices and wrong mounts id in gamestore. by @Sorairei in #1361
- fix: config usage and clang sort by @elsongabriel in #1366
- feat: rework in talk action for better functionality by @dudantas in #1363
- feat: add wheel extra points and new storage system (xml) by @dudantas in #1373
- feat: add event callback to "on rotate item" and simplify callbacks by @dudantas in #1370
- feat: aol and bless fee config by @elsongabriel in #1368
- improve: std::map to btree_map and std::set to btree_set by @mehah in #1376
- fix: combat nullpointers by @dudantas in #1377
- improve: add "debug unity build" to vs solution by @mehah in #1375
- fix: missing path separator in reload by @elsongabriel in #1380
- feat: add podium of tenacity and fix bugs related to podium by @dudantas in #1379
- feat: adjusts talkactions and insert command logs by @elsongabriel in #1328
- feat: add fundamental concepts for future improvements by @lgrossi in #1385
- fix: send only valid monsters to prey data by @dudantas in #1387
- feat: move bank to c++ and add bank commands by @luan in #1371
- feat: move all global behind di by @lgrossi in #1389
- docs: add support from JetBrains by @dudantas in #1398
- build: fix solution compilation and loading server (debug) by @dudantas in #1399
- fix: transfer talkaction groupType typo by @lgrossi in #1401
- feat: set up log level by @lgrossi in #1400
- fix: remove debug log pattern, disable lua log config in debug mode by @lgrossi in #1402
- fix: wheel of destiny damage buff leaking into immunity by @luan in #1381
- fix: apply elemental imbument correctly by @luan in #1388
- feat: move event callback to data/scripts folder by @dudantas in #1406
- fix: prevent nullptr reference by @carlospess0a in #1404
- feat: improve tasks and schedulers by @lgrossi in #1391
- feat: organize main and loaders by @lgrossi in #1392
- fix: debug bosstiary related to wrong enum and add bosses by @dudantas in #1407
- fix: cast boss race to uint8_t properly by @luan in #1412
- fix: show bosstiary slots when they're empty by @luan in #1414
- fix: wheel of destiny revelation perks to lua by @luan in #1413
- improve: rework boss cooldowns and migrate some levers by @luan in #1300
- fix: condition and combat immunities/suppression/damage by @dudantas in #1405
- improve: enable build debug mode using cmake by @beats-dh in #1396
- fix: compilation using solution (build debug) by @dudantas in #1422
- fix: prey rolls with 0% chance by @luan in #1424
- fix: brainstealer wrong decayTo by @Sorairei in #1427
- feat: add SharedObject class for smart pointer management by @beats-dh in #1428
- fix: monster spells and duplicated monster bosstiary by @majestyotbr in #1430
- feat: smart map loader by @mehah in #1395
- fix: count kills on analyzer / avoid double reward bag by @luan in #1432
- feat: Introduce thread pools by @lgrossi in #1421
- improve: remove spdlog completely from pch by @lgrossi in #1437
- improve: run webhook within a dedicated thread by @dudantas in #1384
- fix: build from vs solution (adjusting wrong includes) by @dudantas in #1435
- fix: hash collision on smart map loader by @mehah in #1439
- fix: race condition and infinite loop in quickloot/autoloot by @luan in #1429
- fix: item mapcache unique id by @mehah in #1441
- fix: wrong id in some monster loot by @Sorairei in #1440
- fix: delete duplicated files from the first dragon quest by @RCP91 in #1336
- fix: wrong message types (error message type does not exist) by @luanluciano93 in #1444
- improve: check duplicated monster types by @dudantas in #1434
- improve: upsert prey/hunting tasks to avoid data loss by @luan in #1348
- fix: called c++ object pointer is nullptr by @beats-dh in #1443
- fix: add missing includes for linux full build by @lgrossi in #1447
- improve: replace raw pointers with std::shared_ptr in some classes by @beats-dh in #1408
- fix: bugs related to podium by @dudantas in #1442
- feat: refactor db tasks for simplicity by @lgrossi in #1431
- feat: add command !flask and fix eradicator name by @LeeoMacedo in #1448
- feat: send wheel promotion scroll item id to the client by @dudantas in #1451
- fix: typo in getMonsterTypeByBossRaceId function by @dudantas in #1452
- feat: add "script name" to the "LuaTimerEventDesc" struct by @dudantas in #1449
- improve: separation of IOLoginData into smaller functions by @beats-dh in #1048
- feat: break src/CMakeLists into smaller chunks by @lgrossi in #1438
- fix: don't refresh action cooldown if action failed by @luan in #1453
- improve: change "Mounts*" pointer to use std::shared_ptr by @beats-dh in #1416
- improve: change "Outfit*" pointer to use std::shared_ptr by @beats-dh in #1417
- fix: adjust dynamic linking for cmake builds by @lgrossi in #1454
- improve: change some raw pointers to use std::shared_ptr by @beats-dh in #1418
- improve: change "CreatureEvent*" pointer to use std::shared_ptr by @beats-dh in #1419
- improve: change "RaidEvent*" pointer to use std::shared_ptr by @beats-dh in #1420
- improve: change "EventCallback*" pointer to use std::shared_ptr by @beats-dh in #1425
- improve: change "GlobalEvent*" pointer to use std::shared_ptr by @beats-dh in #1426
- fix: re-add windows icon to executable by @lgrossi in #1456
- improve: change "MoveEvent*" pointer to use std::shared_ptr by @beats-dh in #1433
- improve: minor enhancements in utils functions by @lgrossi in #1457
- feat: zones system by @luan in #1397
- feat: add bosstiary tracker and fix bestiary tracker by @dudantas in #1455
- fix: small bosstiary tracker issues by @luan in #1463
- fix: remove checking empty map tile by @mehah in #1466
- feat: Move CMake sources to subdirectories by @lgrossi in #1458
- feat: add "logger" lua function support for brace formatting by @dudantas in #1464
- feat: introduce soft singleton instance tracker by @lgrossi in #1468
- refactor: simplify map file reading (removed tree nodes) by @mehah in #1467
- feat: automatic corner carpets (for free!) by @luan in #1450
- fix: charger spawn event conflicting with function name by @LeoTKBR in #1462
- fix: add quotes to config.lua.dist default logLevel by @RCP91 in #1470
- improve: trigger source builds only when source files are modified by @dudantas in #1475
- fix: schema.sql db_version, add missing table and fix typos by @elsongabriel in #1469
- fix: raids announce messages string break by @dudantas in #1474
- fix: add missing item ids from addons by @Sorairei in #1465
- fix: not add "Position" type to the lua types vector by @dudantas in #1476
- fix: di container functions return type by @lgrossi in #1471
- fix: glow inventory working as global behavior and custom by @omeranha in #1461
- improve: tweaks in talkactions by @luanluciano93 in #1445
- feat: implement docker-compose by @Glatharth in #1252
- improve: CombatType enum handling with magic enum by @dudantas in #1279
- fix: identation files .h/.hpp, move "h" to "hpp" and "ifndef" to "pragma once" by @beats-dh in #1322
- fix: revert from phmap btree to std functions by @dudantas in #1477
- fix: Guarantees that canary_lib is always static by @lgrossi in #1483
- fix: clang formatter by @elsongabriel in #1482
- fix: revert wrong area direction calculation by @lgrossi in #1484
- fix: action to buy premium/vip time by @elsongabriel in #1423
- fix: remove commented code by @elsongabriel in #1485
- fix: quest system unique id by @dudantas in #1488
- feat: teleport player to room vocation by @elsongabriel in #1487
- feat: executioner throw chain by @jarrodpjohnston in #1479
- fix: remove prey slot crash by @dudantas in #1489
- feat: agony damage by @luan in #1492
- fix: premdays and lastday updater by @elsongabriel in #1495
- improve: enable clang format to add braces and new line (EOF) by @dudantas in #1490
- fix: addEvent, adjusted loadItems function and player wheel log by @dudantas in #1499
- improve: parallel map loading and cleanup by @mehah in #1486
- feat: Improve test flexibility with runtime injection by @lgrossi in #1497
- fix: inject g_logger from interface not impl by @lgrossi in #1503
- improve: rework creature icon system by @luan in #1480
- fix: reload all clear monster types and other adjusts by @dudantas in #1501
- fix: client debug due to undefined element by @luan in #1504
- fix: load map npcs and monsters from main map by @dudantas in #1507
- improve: change shared_ptr from reference to value by @dudantas in #1506
- improve: move DI out of the pch by @lgrossi in #1510
- fix: spectral bolts attack and raid draptor update by @Sorairei in #1511
- feat: fireworks rocket by @Glatharth in #1498
- feat: primal menace mechanics by @sebbesiren in #1415
- improve: correct functioning of the daily reward by @luanluciano93 in #1491
- feat: more flexible house pricing by @luan in #1500
- feat: add player exhaust functions. by @luanluciano93 in #1367
- fix: show vip xp bonus on exp rate at skills by @ruansvictor2 in #1496
- improve: lua format from EmmyLuaCodeStyle by @luan in #1513
- clean: run lua formatter on remaining files by @luan in #1518
- fix: plunder patriarch corpse and sanguine imbuements by @Sorairei in #1519
- fix: disable map async load by @luan in #1517
- fix: misc script errors by @luan in #1520
- fix: argon must return false on failure by @lgrossi in #1514
- feat: non-aggressive imbuements during fight only by @luan in #1512
- improve: set some lua variables properly to local by @luanluciano93 in #1521
- feat: more robust zone handling by @luan in #1524
- fix: webhook race condition crash by @lgrossi in #1525
- feat: magma bubble full mechanics by @luan in #1481
- fix: npc captain dreadnought by @elsongabriel in #1528
- fix: improved stability of primal menace boss by @sebbesiren in #1529
- fix: conflict in unchained fire by @luan in #1530
- fix: items.xml indentation by @dudantas in #1531
- feat: reward collect crash on move items by @dudantas in #1460
- fix: inverted panel and shrine in daily reward by @luanluciano93 in #1538
- improve: account refactor by @Costallat and co-authored by @lgrossi in #1508
- fix: load premdays_purchased correctly by @luan in #1545
- fix: correctly handle coin market transactions by @luan in #1546
- fix: query vip for accountId by @lgrossi in #1547
- feat: automatically share exp when starting party by @luan in #1558
- feat: review global datapack monster basic details by @luan in #1548
- feat: various talkaction upgrades by @luan in #1549
- fix: many npc fixes (quests/traders/etc) by @luan in #1550
- feat: many, many variety datapack improvements by @luan in #1551
- feat: stronger influenced/fiendish monsters by @luan in #1555
- fix: add oberon mechanics back by @luan in #1562
- fix: syntax error in some monster scripts by @luan in #1564
- fix: sell all from pouch shouldn't take from other containers by @luan in #1557
- fix: small fixes by @elsongabriel in #1567
- fix: add missing offer type to store by @luan in #1570
- feat: non-binary pronouns by @luan in #1552
- fix: inverted bit in daily reward by @luanluciano93 in #1542
- feat: tibia coin item by @luan in #1553
- fix: premium time update shouldn't change last day by @lgrossi in #1574
- fix: decay items loaded from map by @mehah in #1569
- improve: misc src refactors/utilities by @luan in #1556
- fix: add race to "Training Machine" by @luan in #1576
- improve: remove some usage of compat in Player/Creature by @luanluciano93 in #1383
- feat: general purpose key-value store by @luan in #1540
- feat: improve task log by @lgrossi in #1575
- fix: bad syntax in remorseless wave spell by @luan in #1577
- feat: show list and teleport to active players by @elsongabriel in #1568
- feat: option in config to not showing home value if already purchased by @luanluciano93 in #1543
- feat: primary type in items.xml by @luan in #1526
- fix: items xml loading (wrong attributes) by @dudantas in #1584
- fix: store xp and gold pouch by @luan in #1583
- improve: 'OutputMessagePool::sendAll' to hasTraceableContext by @luanluciano93 in #1586
- fix: missing commas in traceable context list by @luan in #1587
- improve: switch to Stylua formatter by @luan in #1582
- feat: chain improvements for lower range by @luan in #1554
- fix: equipping ammo to quiver correctly by @luan in #1559
- fix: start server with visual studio solution by @mehah in #1593
- feat: protocol 13.21 by @dudantas in #1523
- feat: multiple creature icons by @luan in #1585
- fix: depot/Inbox manipulation using parcel by @marcosvf132 in #1598
- improve: silence a few more noisy tasks by @luan in #1589
- improve: enforce LF (unix-style) line endings by @luan in #1588
- fix: repeated events on monsters by @luanluciano93 in #1594
- fix: reward collect crash by @dudantas in #1602
- fix: add premium and daily reward by @sebbesiren in #1600
- fix: load conditions properly into player by @luan in #1601
- fix: podium of renown rotates removing addon by @dudantas in #1606
- fix: refresh bosstiary tracker kills on boss death by @dudantas in #1605
- fix: add item:isContainer() function by @dudantas in #1609
- feat: new outfits and mounts by @luanluciano93 in #1608
- fix: use house size from XML by @luan in #1561
- fix: save stateful items in houses by @luan in #1539
- fix: ladder 9116 not working by @carlospess0a in #1616
- fix: container:addLoot warnings by @dudantas in #1613
- improve: migrate Thing and derivatives to shared_ptr by @luan in #1592
- feat: option for enable mount in protection zone by @luanluciano93 in #1599
- improve: convert NetworkMessage and Combat to shared_ptr by @mehah in #1627
- fix: reward container adds charges to the items on boss death by @dudantas in #1629
- feature: imbuements get slot items by @duuh30 in #1628
- feat: update talkactions ( add_addons and add_mounts ) by @daanyx in #1612
- fix: ammotype sanguine crossbow by @RCP91 in #1624
- fix: some getUserdataShared and transfer house (sell) by @dudantas in #1632
- fix: transfer house item by @dudantas in #1633
- fix: house transfer owner only in startup by @dudantas in #1621
- docs: add TNT Cloud support by @dudantas in #1639
- fix: attr condition enums (subid foods and others) by @dudantas in #1641
- fix: move store items only to house tile by @dudantas in #1642
- fix: wong prey race ids and trashholder items by @dudantas in #1643
- improve: optimize house/kv saves by @luan in #1634
- feat: benchmark tools by @mehah in #1649
- feat: adding training shield and exercise shields by @luanluciano93 in #1607
- improve: zstream static by @mehah in #1644
- improve: ensure players are removed from zones on death by @luan in #1650
- fix: questlog message by @un000000 in #1648
- improve: revision of codes in data/ by @luanluciano93 in #1374
- fix: add back missing method by @luan in #1655
- feat: cyclopedia highscore cache by @beats-dh in #1660
- fix: safer zone refreshes by @luan in #1657
- fix: scoped KV, save KV to DB, boolean values by @luan in #1661
- fix: remove save player function by @dudantas in #1667
- refactor: spectators system by @mehah in #1645
- improve: migrate ChatChannel | PrivateChatChannel and derivatives to shared_ptr by @beats-dh in #1630
- improve: AreaCombat::areas to array by @mehah in #1653
- docs: fix url of tools in readme by @SRNT-GG in #1675
- fix: fungus wrong id reference by @carlospess0a in #1676
- improve: migrate Weapon and derivatives to shared_ptr by @beats-dh in #1659
- fix: allow players to send in bug reports by @luan in #1666
- fix: fury gates maps/teleport by @luan in #1669
- feat: reward durable exercise weapon by @elsongabriel in #1566
- fix: suppress compilation warning by @dudantas in #1684
- feat: monster critical chance and multipliers refactor by @luan in #1679
- fix: fluid type must be within enum by @un000000 in #1678
- fix: bug reports for players with spaces in their name by @luan in #1694
- fix: fluid clamp by @luan in #1698
- improve: using parallel_flat_hash on connections by @mehah in #1695
- refactor: dispatch system by @mehah in #1685
- fix: wrong method to check cask item by @carlospess0a in #1696
- fix: stack overflow in bug report by @lamonato29 in #1704
- feat: vector-sort by @mehah in #1690
- feat: fully async saves by @luan in #1560
- feat: Arraylist, fast new container to add front and back by @mehah in #1677
- fix: fire axe quest by @luancolombo in #1717
- improve: createItemBatch by @luan in #1714
- fix: house_lists version column in database with wrong type by @lamonato29 in #1716
- feat: datapack improvements by @luan in #1713
- improve: ip cache by @mehah in #1691
- build: fix visual studio solution by @majestyotbr in #1708
- fix: divine grenade by @luan in #1715
- fix: missing john (bounac) script by @luan in #1722
- improve: removing -1 values in gameStorages from cache by @luanluciano93 in #1670
- improve: remove unused attribute targetTicks from Monster class by @luanluciano93 in #1671
- fix: spell upgrade in wheel of destiny by @sebbesiren in #1681
- fix: home offers linking correctly by @FenaLerin in #1723
- fix: stop loop on internalDecayItem function by @dudantas in #1725
- feat: implement OTBM Zones, encounters, and raids systems by @luan in #1712
- fix: koshei door wrong id and positions by @luancolombo in #1682
- fix: Oberon to recognize only talktype say messages by @Glatharth in #1693
- fix: transform foreshock and aftershock by @RCP91 in #1635
- fix: gamestore adjustment by @luanluciano93 in #1720
- feat: add ancient lion knight spawn by @lamonato29 in #1709
- fix: earth protection parsing by @luan in #1706
- ci/cd: cancel previous workflows for same branch by @dudantas in #1726
- fix: correct function of hasTraceableContext by @luanluciano93 in #1711
- feat: migrate boss cooldowns to KV by @luan in #1724
- fix: damage with mana shield on impact tracker by @Gtravisani in #1654
- fix: unable to get promotion by @luan in #1727
- fix: workflows not run on the main branch by @dudantas in #1728
- feat: add again remove reward containers if is empty by @dudantas in #1610
- feat: update public and internal server versions by @dudantas in #1729
New Contributors
- @elsongabriel made their first contribution in #814
- @ElimarCosta made their first contribution in #817
- @PeachieDude made their first contribution in #809
- @jacksonie made their first contribution in #792
- @Peixonauta2 made their first contribution in #812
- @omarcopires made their first contribution in #794
- @LeoTKBR made their first contribution in #863
- @Felps18 made their first contribution in #835
- @RCP91 made their first contribution in #889
- @sebbesiren made their first contribution in #925
- @mpaladin made their first contribution in #952
- @lucascebertin made their first contribution in #957
- @mpgmateus made their first contribution in #967
- @duuh30 made their first contribution in #963
- @luan made their first contribution in #1020
- @bruno3794 made their first contribution in #1064
- @fellipe005 made their first contribution in #660
- @bosmak made their first contribution in #542
- @Valleze made their first contribution in #1157
- @andrelcb made their first contribution in #1150
- @pess0a made their first contribution in #1221
- @Gtravisani made their first contribution in #1238
- @ThiagoNBCoding made their first contribution in #1272
- @Sorairei made their first contribution in #1254
- @hyresu made their first contribution in #1294
- @luanluciano93 made their first contribution in #1320
- @QuebradaZN made their first contribution in #1290
- @LeeoMacedo made their first contribution in #1448
- @jarrodpjohnston made their first contribution in #1479
- @ruansvictor2 made their first contribution in #1496
- @daanyx made their first contribution in #1612
- @un000000 made their first contribution in #1648
- @SRNT-GG made their first contribution in #1675
- @lamonato29 made their first contribution in #1704
- @luancolombo made their first contribution in #1717
- @FenaLerin made their first contribution in #1723
Full Changelog: v2.6.1...v3.0.0