OpenTibiaBR - Canary Project is a free and open-source MMORPG server emulator written in C++.

Related tags

Miscellaneous canary
Overview

OpenTibiaBR - Canary Project

Discord Channel GitHub issues GitHub pull request Contributors GitHub

GitHub repo size

Codacy Badge CodeQL Quality Gate Status

Builds

Build status

Build on Ubuntu Build on Windows

Docker

docker pull opentibiabr/canary:latest

Automation Image Size Pulls Build

Project

OpenTibiaBR - Canary Project is a free and open-source MMORPG server emulator written in C++. It is a fork of the OTServBR-Global project. To connect to the server and to take a stable experience, you can use our own client or tibia client and if you want to edit something, check our customized tools.

You are subject to our code of conduct, read at this link.

Getting Started

Issues

We use the issue tracker on GitHub. Keep in mind that everyone who is watching the repository gets notified by e-mail when there is an activity, so be thoughtful and avoid writing comments that aren't meant for an issue (e.g. "+1"). If you'd like for an issue to be fixed faster, you should either fix it yourself and submit a pull request, or place a bounty on the issue.

Pull requests

Before creating a pull request please keep in mind:

  • Do not send Pull Request changing the map, as we can't review the changes it's better to use our Discord to talk about or send the map changes to the responsible for updating it.
  • Focus on fixing only one thing, mixing too much things on the same Pull Request make it harder to review, harder to test and if we need to revert the change it will remove other things together.
  • Follow the project indentation, if your editor support you can use the editorconfig to automatic configure the indentation.
  • There are people that doesn't play the game on the official server, so explain your changes to help understand what are you changing and why.
  • Avoid opening a Pull Request to just update one line of an xml file.

Special Thanks

Sponsors

If you want to sponsor here, join on discord and send a message for one of our administrators.

Partners

Supported by OTServ Brasil

Protected by ServerCore

Comments
  • [Feature] Item tiers and new skills (Onslaught, Ruse and Momentum) from 12.80

    [Feature] Item tiers and new skills (Onslaught, Ruse and Momentum) from 12.80

    The forge system part will be completed in another pull request, and focused after I finish these! Continuation of this pull request will be in the forge, follow the link: #543

    New Item Tiers and classifications

    image image Added functions item:getTier() item:addTier(tier)

    need a tiered item? use the commited script, you can copy to OTservBR-Global datapack if you want

    New skills

    All informations avaliable in Tibia Fandom Onslaught(Fatal): https://tibia.fandom.com/wiki/Onslaught Ruse(block hits): https://tibia.fandom.com/wiki/Ruse Momentum(cooldown reduction): https://tibia.fandom.com/wiki/Momentum

    Missing

    • [x] Missing some item tier bytes.
    • [x] Market saving tier attribute. and more, much more things.

    Type of change

    • [X] New feature (non-breaking change which adds functionality)
    Area: Source Area: Datapack Global 
    opened by omeranha 36
  • [Feature/Enhancement] - No disconnect on death

    [Feature/Enhancement] - No disconnect on death

    Description

    Credits: 0.1% @Nekiro for being so awesome.

    no more disconnection when player dies

    Type of change

    • [X] Bug fix (non-breaking change which fixes an issue)
    • [X] New feature (non-breaking change which adds functionality)
    Area: Source Area: Datapack Global 
    opened by omeranha 25
  • Crash in Weapons

    Crash in Weapons

    What happened?

    I do not know!

    How to Reproduce?

    I do not know!

    Relevant log output

    I do not know!
    

    Attach any relevant file

    https://i.imgur.com/2GO4zcR.jpg

    Version

    12.x (Default)

    What OS are you seeing the problem on?

    Ubuntu 18.04

    Code of Conduct

    • [X] I agree to follow this project's Code of Conduct
    Type: Bug Priority: Critical Type: Info Area: Source Status: Pending Review Status: Pending Test 
    opened by helenarubra 20
  • Adjust and enhancement prey system

    Adjust and enhancement prey system

    Resolves #544 Fixed duplication on prey bonus attack (damage) Fixed the percentage formula for each bonus, thanks to @murilo09 for calculating the formula. Fixed reload bonus and bonus percentage order (was reloading before the percentage and after the bonus, which generated an unexpected behavior)

    Area: Source 
    opened by dudantas 16
  • Items multiplying and crashing server

    Items multiplying and crashing server

    Priority

    Critical

    Area

    • [ ] Datapack
    • [X] Source
    • [ ] Map
    • [ ] Other

    What happened?

    I have this one player that has a problem with depot V on his depot....items are multiplying on that box when they are moved, even if he tries to sell them or post them on the auction house and crashes the server every time he manipulates an item on that box

    GDB says the following:

    image image image

    What OS are you seeing the problem on?

    Linux

    Code of Conduct

    • [X] I agree to follow this project's Code of Conduct
    Type: Bug Priority: Critical Status: Pending Test source map 
    opened by AdversarioV 14
  • [Bug]: current canary/otservbr-global master branches crash server on attacking monster

    [Bug]: current canary/otservbr-global master branches crash server on attacking monster

    What happened?

    current canary/otservbr-global master branches crash server on attacking monster

    How to Reproduce?

    attack any monster

    Relevant log output

    2022-03-22 20:23:12 -  scriptId: [/home/ubuntu/server69/bagno_live/data/scripts/creaturescripts/others/boss_reward_chest.lua:callback]
    2022-03-22 20:23:12 -  timerEvent: []
    2022-03-22 20:23:12 -   callbackId:[]
    2022-03-22 20:23:12 -  function: [Scripts Interface]
    2022-03-22 20:23:12 -  error [Creature not found
    2022-03-22 20:23:12 -  stack traceback:] 
    2022-03-22 20:23:12 -  [2022-22-03 20:23:12.032] [error] Lua script error: 
    2022-03-22 20:23:12 -  scriptInterface: [Scripts Interface]
    2022-03-22 20:23:12 -  scriptId: [/home/ubuntu/server69/bagno_live/data/scripts/creaturescripts/quests/cults_of_tibia/leiden_heal.lua:callback]
    2022-03-22 20:23:12 -  timerEvent: []
    2022-03-22 20:23:12 -   callbackId:[]
    2022-03-22 20:23:12 -  function: [Scripts Interface]
    2022-03-22 20:23:12 -  error [Creature not found
    2022-03-22 20:23:12 -  stack traceback:] 
    2022-03-22 20:23:12 -  [2022-22-03 20:23:12.032] [error] Lua script error: 
    2022-03-22 20:23:12 -  scriptInterface: [Scripts Interface]
    2022-03-22 20:23:12 -  scriptId: [/home/ubuntu/server69/bagno_live/data/scripts/creaturescripts/quests/cults_of_tibia/pillar_health.lua:callback]
    2022-03-22 20:23:12 -  timerEvent: []
    2022-03-22 20:23:12 -   callbackId:[]
    2022-03-22 20:23:12 -  function: [Scripts Interface]
    2022-03-22 20:23:12 -  error [Creature not found
    2022-03-22 20:23:12 -  stack traceback:]
    

    Attach any relevant file

    No response

    Version

    12.x (Default)

    What OS are you seeing the problem on?

    Linux

    Code of Conduct

    • [X] I agree to follow this project's Code of Conduct
    opened by ghost 14
  • Fix remove imbuing from item

    Fix remove imbuing from item

    Description

    Fix remove imbuing from item

    Behaviour

    Actual

    When one imbuing end, all imbuing from item will be removed

    Expected

    Only one imbuing removed

    Fixes

    https://github.com/opentibiabr/otservbr-global-archived/issues/2649

    Type of change

    Please delete options that are not relevant.

    • [x] Bug fix (non-breaking change which fixes an issue)
    • [ ] New feature (non-breaking change which adds functionality)
    • [x] Breaking change (fix or feature that would cause existing functionality to not work as expected)
    • [ ] This change requires a documentation update
    Area: Source 
    opened by beats-dh 14
  • Creaturescript Bestiary Causing Lag

    Creaturescript Bestiary Causing Lag

    Priority

    Critical

    Area

    • [ ] Datapack
    • [X] Source
    • [ ] Map
    • [ ] Other

    What happened?

    When killing creatures in 8+ units at the same time, the ping goes up.

    You can test, summoning about 20 creatures and kill them all with 1 attack and you will see the ping rise considerably.

    After that remove the creaturescript bestiary script and rerun the test. Without the bestiary you can kill 200 creatures together and you will not receive lag or ping increase.

    Linux

    Code of Conduct

    • [X] I agree to follow this project's Code of Conduct
    Type: Bug Priority: Critical Status: Pending Test source map 
    opened by tutbarao 13
  • Fixed remove items from stash on create market offer

    Fixed remove items from stash on create market offer

    Resolves #470

    Created the Player::requestLockerItems function to avoid code repetition, it can be used in ProtocolGame and Game class improved the way locker items were read and stored

    Game::getMarketItemList function has been replaced by Player::requestLockerItems Small modification in ProtocolGame::sendMarketEnter function to avoid code repetition, it will read Player::requestLockerItems function

    Added some error logs for market functions so that we can identify where the problem was, in future tests. And if there is a problem during the processing of the offer, it will not be created, making it impossible to have an item or money clone.

    Added some logs (debug) to make it easier to find problems in the future

    Area: Source 
    opened by dudantas 13
  • Crash using reload in spells

    Crash using reload in spells

    Describe the bug

    The "/reload spell" command can cause server crash. This happens because monsters will begin to cast random spells and if one of those random spells require a player structure, the server will crash. This bug also happens if using revscripts spells and then reloading scripts.

    How to Reproduce?

    Set a monster to use any registered spell. NOTE: The spell needs to be a registered spell (spells.xml or revscript spell) and not a configured spell at monster's file. If the monster is using a register spell, such as sudden death rune, for example: {name ="sudden death", interval = 2000, chance = 16, minDamage = -450, maxDamage = -550, range = 7, target = true} It will begin to cast another spell. If the monster is using a configured spell, such as a recreation of sudden death rune, for example: {name ="combat", interval = 2000, chance = 16, type = COMBAT_PHYSICALDAMAGE, minDamage = -450, maxDamage = -550, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = true} It will not cast another spell.

    Give us all details to reproduce the behavior:

    1. Make sure that the monster that you are using to test it have a registered spell
    2. Use /reload spell (if using spells.xml to register the spell) or /reload scripts (if using revscripts to register the spell)
    3. The monster will begin to cast another spell
    4. Crash if the random spell requires a player structure

    Screenshots

    First, the monster is using sudden death rune, as it should (before using /reload): image

    image

    After using /reload scripts: image

    Different spell than sudden death, which is the one registered: image

    Environment

    • Windows 10
    • Last commit

    Additional context

    Found a way to "fix" it, but I don't really know if it is effective: reload monsters scripts after reloading scripts on game.cpp image (Sorry, I'm new on github and don't really know how to use it properly, just want to contribute a little.)

    Type: Bug Priority: Critical Area: Source Status: Pending Review 
    opened by Peixonauta2 13
  • hirelings after serv save reset  their names.     Canary, TFS 1,3      12.86

    hirelings after serv save reset their names. Canary, TFS 1,3 12.86

    Priority

    High

    Area

    • [X] Datapack
    • [x] Source
    • [x] Map
    • [x] Other

    What happened?

    A bug happened! ohh happend. Test just now, with multiple hirelings come bug after reset server their name get reset. So all of them have same name.

    What OS are you seeing the problem on?

    Windows

    Code of Conduct

    • [X] I agree to follow this project's Code of Conduct
    Type: Bug Priority: High Status: Pending Test source map 
    opened by CzajaTwitch 12
  • Change migrations and schema

    Change migrations and schema

    Description

    It works with: https://github.com/opentibiabr/canary/commit/f81054009592060754f6c5931a12d5d6c3aec353 https://github.com/opentibiabr/canary/pull/509

    opened by dudantas 1
  • Fix maxViewportY to the correct value

    Fix maxViewportY to the correct value

    Description

    Complement of the pr https://github.com/opentibiabr/canary/pull/640 Commit: https://github.com/opentibiabr/canary/commit/785f26f162aa485477217681a35134c7d2d22eba Some monsters didn't attack in certain scenario

    Behaviour

    Actual

    Some monsters didn't attack in certain scenario

    Expected

    All monsters attacking player

    Type of change

    • [x] Bug fix (non-breaking change which fixes an issue)
    Area: Source 
    opened by dudantas 1
  • Fix experience rate stages

    Fix experience rate stages

    Description

    Fix for use callback rateUseStages = false/true

    Behaviour

    Actual

    Changing the "rateUseStages" does not influence anything, as the stages continue to be used

    Expected

    When setting "rateUseStages" to false, experience stages stop working

    Type of change

    • [x] Bug fix (non-breaking change which fixes an issue)

    How Has This Been Tested

    Already specified in the Behaviour

    Test Configuration:

    • Server Version: 1291
    • Client: 1291
    • Operating System: Windows 11

    Checklist

    • [x] My code follows the style guidelines of this project
    • [x] I have performed a self-review of my own code
    • [x] I checked the PR checks reports
    • [x] I have commented my code, particularly in hard-to-understand areas
    • [x] I have made corresponding changes to the documentation
    • [x] My changes generate no new warnings
    • [x] I have added tests that prove my fix is effective or that my feature works
    Area: Datapack 
    opened by dudantas 1
  • Standardize levers

    Standardize levers

    A new function has been created to standardize the way the levers will work; I already have converted Ferumbras' Ascendant Quest to this new function.

    Area: Datapack Global 
    opened by Glatharth 2
  • Added parse resource balance byte

    Added parse resource balance byte

    Description

    When opening the prey window, for example, the money that the player got after logging in was not updated. Only when rerolling a monster or interacting with a window button (or after relog). This way we will update the resource balance by the client's request, client side

    Type of change

    • [x] Bug fix (non-breaking change which fixes an issue)

    How Has This Been Tested

    Log in the char, add some money, for example 1kk, open the prey window. Money will not appear in the prey window, unless the player interacts with any of the prey buttons, such as reroll.

    Test Configuration:

    • Server Version: 1291
    • Client: 1291
    • Operating System: Windows 11

    Checklist

    • [x] My code follows the style guidelines of this project
    • [x] I have performed a self-review of my own code
    • [x] I checked the PR checks reports
    • [x] I have commented my code, particularly in hard-to-understand areas
    • [x] I have made corresponding changes to the documentation
    • [x] My changes generate no new warnings
    • [x] I have added tests that prove my fix is effective or that my feature works
    Area: Source 
    opened by dudantas 1
Releases(v1.5.0)
  • v1.5.0(Sep 15, 2022)

    Download Tibia Client 12.91.12329

    Download OTClient 1.0, thanks for @mehah

    Closed issues:

    #318, #386, #449

    What's Changed

    • Fix show attributes look on de equip item by @dudantas in https://github.com/opentibiabr/canary/pull/450
    • Fix crash related to on look item by @dudantas in https://github.com/opentibiabr/canary/pull/456
    • Fixed crash when creating specific offers with certain amount from inbox by @dudantas in https://github.com/opentibiabr/canary/pull/453
    • Fixed buying more than 1 item with only one free slot by @dudantas in https://github.com/opentibiabr/canary/pull/454
    • Fix clone items and crash if classicEquipmentSlots is true by @dudantas in https://github.com/opentibiabr/canary/pull/464
    • Add exhaustion to npc say and sell/buy item by @dudantas in https://github.com/opentibiabr/canary/pull/459
    • Fixed clone depot items by @dudantas in https://github.com/opentibiabr/canary/pull/460
    • Fix random client debug by @dudantas in https://github.com/opentibiabr/canary/pull/463
    • [Enhancement] Replace all std::unordered with phmap::flat_hash by @beats-dh in https://github.com/opentibiabr/canary/pull/420
    • Improvement of teleportTo function log by @dudantas in https://github.com/opentibiabr/canary/pull/466
    • Fix faction target logic by @dudantas in https://github.com/opentibiabr/canary/pull/473
    • Fix Protocol::getIP nullptr message by @dudantas in https://github.com/opentibiabr/canary/pull/478
    • [Fix] Client debug on depot search (255+ items) by @marcosvf132 in https://github.com/opentibiabr/canary/pull/496
    • Fix readme links by @majestyotbr in https://github.com/opentibiabr/canary/pull/512
    • [Enhancement] Protocol update to 12.91 by @marcosvf132 in https://github.com/opentibiabr/canary/pull/443

    New Contributors

    • @majestyotbr made their first contribution in https://github.com/opentibiabr/canary/pull/512

    Full Changelog: https://github.com/opentibiabr/canary/compare/v1.4.2...v1.5.0

    Source code(tar.gz)
    Source code(zip)
    canary-v1.5.0-windows-x64-executable+dlls.zip(28.65 MB)
    canary-v1.5.0-windows-x64-server+executable+dlls.zip(36.74 MB)
    otservbr.otbm(166.59 MB)
  • stable-v1.4.0(Jul 19, 2022)

    Download Tibia Client 12.86.11871

    Download OTClient 1.0, thanks for @mehah

    Fixes

    • Fix cmake warning (wrong boost dir on library) (#362, d2279bf, @dudantas)

    • Resolves the issue of killing some monsters giving error on distro (#370, 8686cd9, @dudantas)

    • Fix typo on daily reward, from addItemId to addU16 (#371, 9da46a7, @dudantas)

    • Fix item name register from appearances protobuf (#376, a4073d7, @marcosvf132) It was missing the item name register on the function void Items::loadFromProtobuf() on the Items map. This map is used to identify a item by it's name instead of ID. This is largely used on the SRC and LUA environments.

    • Fix removing unnecessary warn on item creation when id equal 0 (#368, 48ab545, @marcosvf132) Add a check on the SPDLOG::WARN to prevent when itemID is equal 0. This happens a lot when slain a creature that has no body registered. (Regular creatures/summons/boss)

    • Fix protobuf error on server loading (#380, 5ad63c1, @beatsdh and @marcosvf132) Change all 'strings' to 'bytes' This wrong behavior on the items name register was affecting only items who had their names on the appearances.dat protobuf file but was not registered on the items.xml file

    • Fix magic wall and wild growth rune bug (#388, f5fb255, @dudantas) Created a new function to set the min/max duration of an item, id to decay and whether or not to show the duration Fixed mw being walkable, fixing a small typo in blocking parse Usage of setDuration: item:setDuration(minduration, maxduration = 0, decayid = 0, showDuration = true)

    • Fixed bug summon not searching player target and icons update (#395, 6b56fbf, @dudantas) Fixed the bug when the player was attacking a creature and summoned, the summon would not attack the creature until the player stopped attacking and attacked again Fixed the icon of creatures that use the "creature:addSummon" function Added Game::reloadCreature functions Rework on function "Creature::setMaster", somes functions were centralized within the setMaster, avoiding repetitions: Creature::setTarget Creature::setFollowCreature Creature::setDropLoot Creature::setSkillLoss

    • Fix non-unique item name registration (#390, 63b30ca, @marcosvf132) Fix an issue related to items that have a non-unique name on the register. This problem was breaking some monster's loot.

    • Fix unexpected behavior on connection send and disconnect (#408, 4f1dbaf, @dudantas) Added nullptr check for validate connection Renamed protocol variable from connection to connectionPtr to avoid shadowing with the other connection variable added to check nullptr

    • Fix magic wall and wild growth on retro-pvp and no-pvp logic (#400, dc5c868, @dudantas) The magic wall/wild growth rune should only be removed when stepping if it's no-pvp and if it's not blocking

    • Few prey/task hunting fixes and improvements (#385, b1786d5, @marcosvf132)

    • Fix null function on daily reward (#375, 1960d49, @dudantas) Resolves #374

    • Fix "nil item" on daily reward (#423, 0b65754, @dudantas) Resolves #421

    • Fix checks on player death, player speed breakpoint and misc enhancements (#378, e5cc80a, @omeranha) Added tag in config.lua for: Max critical chance of imbuements Adventurers blessing level Inventory glow on five bless Fixes Set default maxSpeed for 70000 Still blessed after dead for work with "no disconnect on death" Player targetting after dead for work with "no disconnect on death" Adventurer blessing logic for work with "no disconnect on death"

    • Fix some npcs bugs and change behaviour (#396, 5b25b43, @dudantas) Total cost for custom currencys Bank npcs depot, transfer and withdraw logic Changed: MsgContains behaviour, added new function "MsgFind" so that we avoid some bugs in messages that have the same words Added debug log for assistant with debug build

    • Fix Callback fromPosition of some lua scripts that were registered by position (#441, 723f378, @dudantas) Some scripts registered through position didn't work the fromPosition callback because it was lost between the two functions (with and without the callback item)

    • Fix build of docker and linux (#440, 90e7561, @beats-dh) Fixed the compilation in the docker environment and the error that occurred with linux when it was going to compile on a new "VM" machine. What happened is that the protobuf was updated and our proto files were generated in an old version, with this change they are ready to work with the latest version of the protobuf made available by vcpkg Note: vcpkg needs to be updated to the most current version for it to work properly

    • [CMake] fix warning build, add flag /EHsc to target compile options (#442, afab2af, @beats-dh)

    • Fix remove summon bug and added new config tag for teleport summon (#428, 5bd86e6, @beats-dh) Added new config.lua tag: teleportSummons = false Usage: if false, the summon will not teleport when the player goes up/down stairs and moves far away, if true, it will teleport the summon Fixed the bug that did not remove the summon when the player leaves the summon range, thus preventing the player from summoning a new monster

    • [Fix] Bestiary unlocked creature (#438, e033f83, @beats-dh)

    • [Fix] convert burst and poison arrow to client id (#405, 647b005, @Aerwix)

    Features/Enhancements

    • Some small improvements to gha (#363, 44c8e82, @costallat) Improves the GHA overall performance Disable ccache for Windows as it doesn't work Add sscache for Windows Adjust some cmake flags to work with sscache
    • Rework and fix event scheduler (#239, 526ef51, @beats-dh)
    • [CrashFix] fix monster type name overriding and some improvements (#389, 86e4a90 @dudantas) The real name of the monster was replaced by the name of the look, generating unexpected behavior and in a very specific scenario a crash (when two different monsters had the same "name") Some improvements related to the creation of monsters and the verification of the monster name in getMonsterType, also preventing any unexpected behavior New function: Creature::getTypeName(), for get real monster type name
    • Rework in MoveEvent and MoveEvents class for fix memory leak (#398, 4771913, @dudantas) Movements completely redone to remove a memory leak related to the registration of movements, in the luaMoveEventRegister function, where the memory was fread and then used. We also added some pointer sanity checks, preventing future crashes and fixing some known ones. Removed old XML load Passed some objects as a reference, to avoid nullpointer and unecessary pointer checks Added nullpointer checks in some places and the code was redone to work better Added some logs to help in case of errors Fixed crash related to replaceable magic fields Notes: MoveEvent::onRemoveItem function from now on it will no longer have the "tileitem" argument
    • [Enhancement] Changed rsa to use gmp lib instead of cryptopp (#391, b0538c4, @beats-dh and @dudantas) Thanks and credits to @saiyansking for the original code This pull request has modifications from the optimized forgottenserver: https://github.com/opentibiabr/optimized_forgottenserver Added function in otserv.cpp to load default RSA key if it fails to load key.pem Rework on connection.cpp and improvement of some functions Removed some "reinterpret_cast", added in place "static_cast" which avoid overflows or undefined behavior Improved connection and protocol code for QT client
    • Change luajit to install by vcpkg manifest (#403, 5fc2834, @dudantas) Remove appveyor build Remove build windows 2019 and ubuntu 18 Added ubuntu 22.04 build
    • Improve monster loot log (#372, 116cc9e, @dudantas)
    • Disabled install LuaJit for processor ARM (#416, 6ad0268, @beats-dh) Disabled installation of LuaJit by vcpkg.json, solving the problem of compatibility with ARM processors. The installation of LuaJit will have to be done by apt Linux with the command: sudo apt install libluajit-5.1-dev
    • [Enhancement] Set teleport position talkaction for use in all teleport types (b996fbe, @dudantas)
    • [Enhancement] - Automatically download world otbm in folder if file doesn't exist on server start (#437, 5e42475, @omeranha) If toggleDownloadMap if false, then the mapDownloadUrl will not be used If a map with the name already exists in the world folder, the map will not be downloaded even if the toggleDownloadMap is true
    • [Feature/Enhancement] - New objects; Lever, Spawn and Spectators to assistant with boss/quest scripts and others (#360, 0d9d3a1, @Glatharth) The new objects will help us with boss scripts, quests, and spectator checks, reducing the complexity and size of a lot of code. Added an example of how the mechanics work in the lever of threatened dreams quest.
    • [Feature] Depot search system (#411, a02d5a5, @marcosvf132) Enabling and implementing client 12x feature named 'Depot search'. This system can be used to make it easier to find, organize and manipulate players depot/inbox/stash. The systems already include support for a future implementation of item tier system. The tier system is being implemented on PR #366

    New Lua functions

    • item:setDuration(minduration, maxduration = 0, decayid = 0, showDuration = true)

    GitHub

    • Enable cache for sonarcloud (33dff84, @costallat) It's disable by default now so we need to enable it

    Closed issues:

    #374, #421

    Source code(tar.gz)
    Source code(zip)
    canary-v1.4.0-ubuntu-22.04-executable.zip(64.91 MB)
    canary-v1.4.0-ubuntu-22.04-server+executable.zip(72.66 MB)
    canary-v1.4.0-windows-x64-executable+dlls.zip(28.13 MB)
    canary-v1.4.0-windows-x64-server+executable+dlls.zip(35.87 MB)
    canary.kmap(52.73 MB)
  • patch-v1.3.1(Apr 29, 2022)

    Release version: Stable 1.3.1 (Patch) - e06dd7ff

    Download Tibia Client 12.86.11871

    Download OTClient 1.0, thanks for @mehah

    Fixes

    • Crash related to creature death (@dudantas, 03e8e09e) 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, 7082aff3) 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 - 80908fd4

    Features/Enhancements

    • Complete rework on npcs shop add item functions (@dudantas, caf0a970)
    • Experience tracker (@marcosvf132, 990da240) 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, 5cb9ff7b) 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, 4f8667a6) no more disconnection when player dies
    • Solved incompatibility problem with otclient redemption (@marcosvf132, c46f64d2) 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: https://github.com/opentibiabr/otservbr-global/pull/544
    • Add script casks and kegs (store item for refill potions) (@lucasgrizante, 256a6ee)
    • Move client version from config.lua to definitions.h (@dudantas, 4580324c) 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, 68d0475c) 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, 844530b7)

    Fix

    • Register Npc Type - add missing currency method for npcs revscriptsys (@aerwix, 9f37c02a)
    • Bestiary tracker list loader (@marcosvf132, 9a02596f)
    • Reverting item tier to 0 + Market/Cyclopedia item tier (@marcosvf132, 4c7a35a3)
    • Life and mana leech amount/chance attribute (@guispiller, 56ddcf2f) 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, e3df5835)
    • Ring transformation on creation (@marcosvf132, 0eacb35b) Rings was transforming into wrong itemIDs on creation.
    • Add missing duration timestamp attribute for decay system (@beats-dh, 15275499)
    • logout message connection lost on bed and offline training and remove unused tag on druid familiar (@omeranha, e6abcc8f) 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, 0059314e)
    • docker-compose: add env to correct mysql host (@bruno-costa, 611a44ef)
    • Few hireling issues (@marcosvf132, 3808591d) 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, deeb21ff) 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, 3e94dc2b) 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, 65b53485) 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, 77f152e3) 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, 0b218582) 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

    Source code(tar.gz)
    Source code(zip)
    canary-ubuntu-20.04-exe.zip(65.91 MB)
    canary-ubuntu-20.04-full.zip(73.78 MB)
    canary-windows-x64-exe+dlls.rar(15.74 MB)
    canary-windows-x64-full.rar(22.39 MB)
  • stable-v1.3.0(Apr 27, 2022)

    Release version: stable 1.3.0 - 80908fd4

    Download Tibia Client 12.86.11871

    Download OTClient 1.0, thanks for @mehah

    Features/Enhancements

    • Complete rework on npcs shop add item functions (@dudantas, caf0a970)
    • Experience tracker (@marcosvf132, 990da240) 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, 5cb9ff7b) 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, 4f8667a6) no more disconnection when player dies
    • Solved incompatibility problem with otclient redemption (@marcosvf132, c46f64d2) 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: https://github.com/opentibiabr/otservbr-global/pull/544
    • Add script casks and kegs (store item for refill potions) (@lucasgrizante, 256a6ee)
    • Move client version from config.lua to definitions.h (@dudantas, 4580324c) 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, 68d0475c) 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, 844530b7)

    Fix

    • Register Npc Type - add missing currency method for npcs revscriptsys (@aerwix, 9f37c02a)
    • Bestiary tracker list loader (@marcosvf132, 9a02596f)
    • Reverting item tier to 0 + Market/Cyclopedia item tier (@marcosvf132, 4c7a35a3)
    • Life and mana leech amount/chance attribute (@guispiller, 56ddcf2f) 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, e3df5835)
    • Ring transformation on creation (@marcosvf132, 0eacb35b) Rings was transforming into wrong itemIDs on creation.
    • Add missing duration timestamp attribute for decay system (@beats-dh, 15275499)
    • logout message connection lost on bed and offline training and remove unused tag on druid familiar (@omeranha, e6abcc8f) 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, 0059314e)
    • docker-compose: add env to correct mysql host (@bruno-costa, 611a44ef)
    • Few hireling issues (@marcosvf132, 3808591d) 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, deeb21ff) 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, 3e94dc2b) 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, 65b53485) 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, 77f152e3) 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, 0b218582) 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

    Source code(tar.gz)
    Source code(zip)
    canary-ubuntu-20.04-exe.zip(65.85 MB)
    canary-ubuntu-20.04-full.zip(73.73 MB)
    canary-windows-x64-exe+dlls.rar(15.58 MB)
    canary-windows-x64-full.rar(22.39 MB)
  • stable-1.2.0(Feb 17, 2022)

    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 lib libzippp, 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 one static_cast<uint8_t> in the function "item->getImbuementSlot()", for resolve review check from CodeQL.

    What's Changed

    • Rope fix by @hiPirate in https://github.com/opentibiabr/canary/pull/6
    • New spells functions and others fixes/improvements by @beats-dh in https://github.com/opentibiabr/canary/pull/21
    • [OTBR compatibility] Factions source code, pulled from: opentibiabr/otservbr-global#2334 by @beats-dh in https://github.com/opentibiabr/canary/pull/22
    • Added the vocation base id and the functions to manage it instead of the "client id" by @beats-dh in https://github.com/opentibiabr/canary/pull/11
    • Fix Numbered Depot Boxes + Add passwordType to config.lua.dist for MyAAC by @hiPirate in https://github.com/opentibiabr/canary/pull/4
    • Gain stamina from training and pz by @beats-dh in https://github.com/opentibiabr/canary/pull/10
    • Set build release to release with debug information by @dudantas in https://github.com/opentibiabr/canary/pull/37
    • Fix windows GHA build by @dudantas in https://github.com/opentibiabr/canary/pull/43
    • Prevents the loop of player from pushing another player by @dudantas in https://github.com/opentibiabr/canary/pull/34
    • Disable the force close button (ensure a secure close) by @dudantas in https://github.com/opentibiabr/canary/pull/33
    • Door fix by @hiPirate in https://github.com/opentibiabr/canary/pull/8
    • Fix supply stash exploit by @beats-dh in https://github.com/opentibiabr/canary/pull/14
    • Fix hungry conditions by @beats-dh in https://github.com/opentibiabr/canary/pull/12
    • Fix item charge description in shop by @beats-dh in https://github.com/opentibiabr/canary/pull/17
    • Fix restart prey after kick from beds by owner in house by @beats-dh in https://github.com/opentibiabr/canary/pull/20
    • Fix all random crashes generated by protocolgame.cpp by @beats-dh in https://github.com/opentibiabr/canary/pull/23
    • Fix wrong handling of spectator crashes when using "talk" from npcs menu by @dudantas in https://github.com/opentibiabr/canary/pull/40
    • Fix summons and familiars bug by @dudantas in https://github.com/opentibiabr/canary/pull/36
    • Add jiddo npc lib by @dudantas in https://github.com/opentibiabr/canary/pull/48
    • Better handling of the Game::checkCreatures function by @dudantas in https://github.com/opentibiabr/canary/pull/44
    • Add nullptr pointers (fix sonar checks) by @dudantas in https://github.com/opentibiabr/canary/pull/51
    • Add pointers to check if player or charm is nullptr by @dudantas in https://github.com/opentibiabr/canary/pull/49
    • Fix Creature:onTargetCombat(target) function and stamina gain event by @dudantas in https://github.com/opentibiabr/canary/pull/50
    • Sort loot of monsters to try most rare itens first by @gtkatakura in https://github.com/opentibiabr/canary/pull/31
    • Fixed combat.cpp pointers, the caster sometimes comes null by @dudantas in https://github.com/opentibiabr/canary/pull/137
    • Added correct behavior and improved function for gain stamina on trainer by @beats-dh in https://github.com/opentibiabr/canary/pull/134
    • Add open stash, open imbuement scripts and registered new items by @dudantas in https://github.com/opentibiabr/canary/pull/42
    • Fix on target combat and experience stage by @dudantas in https://github.com/opentibiabr/canary/pull/152
    • Bug Solution: Magic Wall not decaying by @Aerwix in https://github.com/opentibiabr/canary/pull/153
    • [Feature] Save server by interval time by @beats-dh in https://github.com/opentibiabr/canary/pull/13
    • HotFix: Items (Magic Wall & Wild Growth) decaying to 0 by @Aerwix in https://github.com/opentibiabr/canary/pull/155
    • Fix frag time by @beats-dh in https://github.com/opentibiabr/canary/pull/15
    • Fix recompile.sh build by @beats-dh in https://github.com/opentibiabr/canary/pull/18
    • Fix monster loot items stages display on bestiary by @ArturKnopik in https://github.com/opentibiabr/canary/pull/24
    • Remove definition of "ITEM_TYPE_MAGICFIELD" from items.xml "field" tag by @dudantas in https://github.com/opentibiabr/canary/pull/47
    • Fix stored regeneration condition not using updated vocation values by @beats-dh in https://github.com/opentibiabr/canary/pull/27
    • [Market] Add pointers to check if container and item is nullptr on "sendMarketEnter" by @dudantas in https://github.com/opentibiabr/canary/pull/132
    • Better handling on create summon talkaction and fix summon icon by @beats-dh in https://github.com/opentibiabr/canary/pull/135
    • Fix potential crash in Player::getClientIcons by @beats-dh in https://github.com/opentibiabr/canary/pull/136
    • Fix backpacks positions on login by @omeranha in https://github.com/opentibiabr/canary/pull/144
    • Fix monster retarget chance by @gerotib in https://github.com/opentibiabr/canary/pull/149
    • Fixed crash generated by access "player" without checking if is nullpointer by @dudantas in https://github.com/opentibiabr/canary/pull/156
    • Fix vcpkg/libmariadb package by @thatmichaelguy in https://github.com/opentibiabr/canary/pull/163
    • [Feature] Add imbuement system and somes fixes by @dudantas in https://github.com/opentibiabr/canary/pull/150
    • Decouple parses item attributes in it own file by @beats-dh in https://github.com/opentibiabr/canary/pull/140
    • Added name for no longer unknown inspection type by @Zbizu in https://github.com/opentibiabr/canary/pull/166
    • Fixed sale in the market to create offer by stash and adjust indentation to tab 4 by @dudantas in https://github.com/opentibiabr/canary/pull/165
    • Added "if" check to verify if tables are null on reload talkaction by @dudantas in https://github.com/opentibiabr/canary/pull/168
    • Cherry pick otbr commits by @dudantas in https://github.com/opentibiabr/canary/pull/170
    • Register news items and movements/weapons unscripted by @dudantas in https://github.com/opentibiabr/canary/pull/173
    • [Enhancement] Rework of the imbuement system and conversion to c++ by @dudantas in https://github.com/opentibiabr/canary/pull/164
    • [Enhancement] - Optimize decay by @beats-dh in https://github.com/opentibiabr/canary/pull/54
    • Fix market information by @victorrequia in https://github.com/opentibiabr/canary/pull/171
    • [Improvement] - rework on exercise weapons system by @beats-dh in https://github.com/opentibiabr/canary/pull/180
    • Fix double remove money on create market offer by @beats-dh in https://github.com/opentibiabr/canary/pull/181
    • Add webhook expansion by @beats-dh in https://github.com/opentibiabr/canary/pull/16
    • Check if player exist on useStamina function and fix drop loot script by @dudantas in https://github.com/opentibiabr/canary/pull/158
    • Create familiars lib by @beats-dh in https://github.com/opentibiabr/canary/pull/182
    • Removed requirement of initial city (dawnport) by @dudantas in https://github.com/opentibiabr/canary/pull/185
    • Decouple config manager in true singleton by @dudantas in https://github.com/opentibiabr/canary/pull/190
    • Support rates for regen, spell, speed and trainings by @gtkatakura in https://github.com/opentibiabr/canary/pull/32
    • Sincronizations with otservbr-global by @dudantas in https://github.com/opentibiabr/canary/pull/191
    • Add free quest system (for compatibility with otbr-global) by @dudantas in https://github.com/opentibiabr/canary/pull/193
    • Bug fix that allowed to clone items in the market by @dudantas in https://github.com/opentibiabr/canary/pull/195
    • [Compatibility] - Support for Canary with otbr-global, conversion from npcs to revscriptsys and rework on jiddo npc lib by @dudantas in https://github.com/opentibiabr/canary/pull/192
    • [Protocol Bytes] - Support to client 12.85.11525 by @marcosvf132 in https://github.com/opentibiabr/canary/pull/167
    • [Fix/Update] Items .xml and .otb update + Item tier registration fix by @marcosvf132 in https://github.com/opentibiabr/canary/pull/203
    • [Npc Shop Enhancement] - Allow an item of the same id to be added multiple times for the same npc by @dudantas in https://github.com/opentibiabr/canary/pull/207
    • Remove lua tests, the files no longer exist by @omeranha in https://github.com/opentibiabr/canary/pull/210
    • [ConfigManager] - fix typo from "freeQuests" to "toggleFreeQuest" by @dudantas in https://github.com/opentibiabr/canary/pull/211
    • [Enhancement] - Automatically unzip world.zip in world folder if otbm file doesn't exist on server start by @omeranha in https://github.com/opentibiabr/canary/pull/205
    • Exposed vocation->getBaseAttackSpeed by @Rechdan in https://github.com/opentibiabr/canary/pull/217
    • Fix call to configManager.getFloat in lua by @Rechdan in https://github.com/opentibiabr/canary/pull/213
    • Fix support rates regen by @dudantas in https://github.com/opentibiabr/canary/pull/218
    • [Fix] item tier bytes by @dudantas in https://github.com/opentibiabr/canary/pull/219
    • Set server version for 1.2.0 by @dudantas in https://github.com/opentibiabr/canary/pull/209

    New Contributors

    • @hiPirate made their first contribution in https://github.com/opentibiabr/canary/pull/6
    • @gtkatakura made their first contribution in https://github.com/opentibiabr/canary/pull/31
    • @ArturKnopik made their first contribution in https://github.com/opentibiabr/canary/pull/24
    • @gerotib made their first contribution in https://github.com/opentibiabr/canary/pull/149
    • @thatmichaelguy made their first contribution in https://github.com/opentibiabr/canary/pull/163
    • @Zbizu made their first contribution in https://github.com/opentibiabr/canary/pull/166
    • @victorrequia made their first contribution in https://github.com/opentibiabr/canary/pull/171
    • @Rechdan made their first contribution in https://github.com/opentibiabr/canary/pull/217

    Full Changelog: https://github.com/opentibiabr/canary/commits/stable-1.2.0

    Source code(tar.gz)
    Source code(zip)
    canary-v1.2.0-ubuntu-20.04-executable.zip(15.72 MB)
    canary-v1.2.0-ubuntu-20.04-server+executable.zip(23.25 MB)
    canary-v1.2.0-windows-x64-executable+dlls.zip(19.53 MB)
    canary-v1.2.0-windows-x64-server+executable+dlls.zip(27.06 MB)
Owner
OpenTibiaBR
OpenTibiaBR
SynapseOS is a free and open source 64x operating system written in FASM and C

SynapseOS SynapseOS is a free and open source 64x operating system written in FASM and C Documentation Documentation Build To build SynapseOS you need

Synapse OS 103 Nov 22, 2022
Sourcetrail - free and open-source interactive source explorer

Sourcetrail Important Note: This project was archived by the original autors and maintainers of Sourcetrail by the end of 2021. If you want to know mo

Coati Software 13.1k Nov 27, 2022
The main repository for the Darkflame Universe Server Emulator project.

Darkflame Universe Introduction Darkflame Universe (DLU) is a server emulator for LEGO® Universe. Development started in 2013 and has gone through mul

null 478 Nov 28, 2022
Khepri is a Cross-platform agent, the architecture and usage like Coblat Strike but free and open-source.

Khepri Free,Open-Source,Cross-platform agent and Post-exploiton tool written in Golang and C++ Description Khepri is a Cross-platform agent, the archi

Young 1.4k Nov 24, 2022
SDR++ is a cross-platform and open source SDR software with the aim of being bloat free and simple to use.

SDR++ is a cross-platform and open source SDR software with the aim of being bloat free and simple to use.

AlexandreRouma 2.1k Dec 5, 2022
Free and Open Source API and drivers for immersive technology.

OpenHMD This project aims to provide a Free and Open Source API and drivers for immersive technology, such as head mounted displays with built in head

null 1.1k Nov 28, 2022
The FLIP Fluids addon is a tool that helps you set up, run, and render high quality liquid fluid effects all within Blender, the free and open source 3D creation suite.

FLIP Fluids The FLIP Fluids addon is a tool that helps you set up, run, and render liquid simulation effects. Our custom built fluid engine is based a

Ryan Guy 1.4k Nov 29, 2022
Single source file ASTC texture decompression in C++ (derived from Google's open source Android project)

astc_dec astc_dec is a single source file ASTC texture decompressor with the Apache 2.0 license, derived from Google's open source Android sources. Th

Rich Geldreich 30 Oct 22, 2022
"Sigma File Manager" is a free, open-source, quickly evolving, modern file manager (explorer / finder) app for Windows, MacOS, and Linux.

"Sigma File Manager" is a free, open-source, quickly evolving, modern file manager (explorer / finder) app for Windows, MacOS, and Linux.

Aleksey Hoffman 1k Dec 1, 2022
Free and open source CSGO hack

Csgo Very short and commented source aimed for legit gameplay Information In development, not every feature may work perfectly. Features: BunnyHop Cha

Bartis 121 Nov 30, 2022
A free and open-source cross-platform application to control your Philips hue compatible lightsđź’ˇ

?? OpenHue ?? A cross platform application to control your Philips hue compatible lights. licensed under the gpl 3.0 license. Currently in super early

BOB450 3 Dec 19, 2021
Blender is the free and open source 3D creation suite

Blender is the free and open source 3D creation suite. It supports the entirety of the 3D pipeline-modeling, rigging, animation, simulation, rendering, compositing, motion tracking and video editing.

Blender 7.2k Nov 30, 2022
SomeSmile - a free, open source and not yet cross-platform

SomeSmile - a free, open source and not yet cross-platform Table Of Contents For What? Structure Start Usage Guide How To Build Screenshots End For Wh

SonicTheHedgehog 3 Aug 3, 2022
Cutter is a free and open-source reverse engineering platform powered by rizin

Cutter is a free and open-source reverse engineering platform powered by rizin. It aims at being an advanced and customizable reverse engineering platform while keeping the user experience in mind. Cutter is created by reverse engineers for reverse engineers.

Rizin Organization 12.3k Nov 29, 2022
Feather is a free, open-source Monero wallet for Linux, Tails, macOS and Windows

Feather is a free, open-source Monero wallet for Linux, Tails, macOS and Windows. It is written in C++ with the Qt framework.

Feather Wallet 117 Nov 28, 2022
A self made free, open source internal cheat for Overwatch

Overwatch-Cheat A self made free, open source internal cheat for Overwatch How to use the Valorant Internal [+] - Download it, then compile the cheat

xEnething 4 Aug 25, 2022
A free, open-source compressor for the ZX0 format

salvador -- a fast, near-optimal compressor for the ZX0 format salvador is a command-line tool and a library that compresses bitstreams in the ZX0 for

Emmanuel Marty 34 Nov 18, 2022
OpenFOAM is a free, open source computational fluid dynamics (CFD) software package

acousticStreamingFoam About OpenFOAM OpenFOAM is a free, open source computational fluid dynamics (CFD) software package released by the OpenFOAM Foun

Bruno 3 Oct 28, 2022
A FREE Windows C development course where we will learn the Win32API and reverse engineer each step utilizing IDA Free in both an x86 and x64 environment.

FREE Reverse Engineering Self-Study Course HERE Hacking Windows The book and code repo for the FREE Hacking Windows book by Kevin Thomas. FREE Book Do

Kevin Thomas 1.1k Nov 28, 2022