Commit graph

45 commits

Author SHA1 Message Date
Eduardo Dantas
5e357d8a81
feat: add Way of the Monk quest and monk-related content (#3794)
feat: add Way of the Monk quest, monster updates, and core data improvements

This commit introduces the complete implementation of the Way of the Monk quest, along with multiple updates to monsters, bosses, items, and core gameplay data.

Quest:
• Added full quest definition for Way of the Monk, including mission flow, shrine tracking, and storage handling.
• Registered the new quest module in the quest catalog.
• Introduced new storage keys related to monk quest progression and items.
• Added a sample monk player migration (DB version 55) for testing purposes.
• Added Blue Valley to the towns list to support quest locations.

Monsters and Bosses:
• Added new monster Tame Terror Bird with complete stats, behaviors, and loot.
• Reworked Mitmah Vanguard boss with updated events, attributes, attacks, defenses, elemental modifiers, loot, and lifecycle hooks.
• Expanded loot tables for bosses such as The Brainstealer and The Monster, including monk-related items and potions.

Items and Loot:
• Updated frazzlemaw and guzzlemaw loot to drop traditional sai instead of sai.
• Added monk-related item IDs to destruction scripts and Dawnport cleanup logic.

Gameplay:
• Added Monk’s Apparition to the Soul War quest apparition list.
• Introduced a new combat formula for fist fighting skill.
• Removed legacy fist fighting attack speed configuration from server settings.

Workflow:
• Improved GitHub Actions workflow to ensure reusable checks run on the correct branch.
2026-02-12 23:03:25 -03:00
Eduardo Dantas
6777872e4e
feat/improve: create "custom loot" for monsters (#3080)
This update introduces several enhancements to the loot system, allowing
for more flexible loot management across different monsters without the
need to modify each monster's individual script. A global loot option
has been added, which is disabled by default, to assign items that any
monster can drop. This feature simplifies the addition of common loot
across multiple monsters, enhancing the modularity of loot management.

The "registerLoot" function has been improved to eliminate code
duplication and enhance efficiency. The "closeContainer" function has
been updated to remove problematic code that could cause crashes when
"container" used before "erase". Additionally, a new Lua function,
"getMonsterTypeByName", has been introduced to facilitate getting
monster types.
2025-10-30 18:19:31 -03:00
Luis Pablo
5ab2147fd0
feat: azzilon (#3634) 2025-08-20 14:08:33 -03:00
Eduardo Dantas
acdba2cdad
feat: protocol 14.12 (#3524)
feat: add client and server features for gameplay and UI improvements

- Renamed Supply Stash to Stash and removed depot slot limit count
- Added advanced filters for Stash item categories
- Reworked Cyclopedia Combat Stats into Offense, Defense, and Misc Stats
- Added detailed tooltips and integrated stats into Skills widget
- Introduced Magical Archive interface for spells and runes with filters
- Overhauled Quest Log and Tracker with pinning, search, sort, compact display, and notifications
- Enhanced Exaltation Forge with boots tier bonus and Dust management
- Redesigned Charms System with new Major and Minor charms and balance changes
- Added new mounts and outfits for customization
- Improved server and client behavior with advanced stash, spell archive, detailed stats, and enhanced tier systems
- Verified features through manual and in-game testing
2025-06-08 16:12:15 -03:00
Guilherme
3e06551ca4
fix: mass healing area aug II wheel of destiny (#3391) 2025-02-23 05:54:29 -03:00
Felipe
7a51fdb71d
feat: soul pit arena/animus mastery/soul core (#3230)
SoulPit fighting arena along with Animus Mastery Logic.

---------

Co-authored-by: Pedro Henrique Alves Cruz <phac@cin.ufpe.br>
2025-01-28 14:33:54 -03:00
Eduardo Dantas
eebff8794c
fix: revert some onSpawn monstertype callbacks (#3194) 2025-01-12 05:55:43 -03:00
murilo09
142aafbfdf
fix: balancing 13.40 (#3206) 2025-01-02 13:30:17 -03:00
Eduardo Dantas
f2750bb8ea
fix: hazard spawn initialization (#3184)
Fixes bugs introduced here:
https://github.com/opentibiabr/canary/pull/3076

By mistake I removed the onSpawn from the hazard and didn't realize it.
2024-12-20 23:58:41 -03:00
Pedro Cruz
1382b77679
fix: wheel bonuses (#3058)
This fixes all vocations wheel spell and gem bonuses, const references
and refactors.

Fixes #3032 
Fixes #2150 
Fixes #2039
2024-11-12 22:06:10 -03:00
Eduardo Dantas
ceace165cf
perf: remove unnecessary event callbacks (#3076)
Removed Lua callbacks from `MonsterType` of various monsters. These
callbacks were empty, which meant the functions were still being
"called" by the monsters without performing any action, creating a
significant performance bottleneck.

Removed the `onHear` event callback, which had a significant impact on
the server and was not used anywhere. It executed the `onHear` callback
for each spectator, causing an unnecessary overload without any real
benefit, especially as we have other methods to check for these events.

Additionally, the `monsterOnSpawn` event callback was removed and
replaced with `MonsterType::onSpawn`, which is much more efficient since
it only needs to be declared in the script for each monster that
actually uses it.

Finally, the way `setRewardBoss` was handled was improved. Previously,
it was executed in an `onSpawn` event callback, but now it is done
directly during the parsing of each monster script, marking them as
reward bosses at the time of script loading, improving efficiency.
2024-11-08 01:44:09 -03:00
Leonardo
e71a259f6c
fix: handle nil value for soul war to prevent errors with custom data (#2964) 2024-10-11 10:44:02 -03:00
Eduardo Dantas
5bcbc39e5f
feat: full soul war quest (#2535)
Remember that for this quest to work properly, it is necessary to delete
the old Soul War scripts (the repository had the quest divided into
parts, and I completely redid it using modern features and systems, such
as BossLever, Zones, EventCallback, and others).

It is also necessary to update the soul war map, the new map is in the
releases

I won’t document all the changes here for obvious reasons; the quest is
mostly written in Lua, so there are many monster scripts and other
elements that were added or modified, making this a large pull request
as a result. I thought about separating the pull request into smaller
commits, but I came to the conclusion that this could cause confusion,
since the quest would depend on several other commits to work correctly,
so I decided to keep everything in one to avoid future "problems".

Added talkactions:
/distanceeffect (for testing distance effects)
/testtaintconditions (for testing taint icons on player inventory bar)

• The "Missing configuration for identifier" log has set to debug, since
in cpp there are default values ​​already to avoid putting all the
values ​​in lua
• Fixed some EventCallbacks that were not properly passing arguments as
references (using std::ref)
• Added a check for EventCallbacks with the same names, improving the
resource management of callbacks. Each time a callback was called, a new
element was created in the vector. Now there will only be one and it
will be reused with each execution
• Passed some vectors from CreatureVector for copying, thus avoiding
possible crashes when changing the vectors, it was necessary due to the
change of maps in ebb and flow in real time (so the player can be in the
creature vector during the vector reading and be removed)
• Added new callback for MonsterType (lua scripts) called "onSpawn",
which will execute whenever the creature is created
• Added new callback for MonsterType (lua scripts) called
"onPlayerAttack", which will be executed whenever a player attacks the
monster, it should be used with care as the same callback will be valid
for all instances of the same monster
• Added new EventCallback called "playerOnThink", thus facilitating
players' onThink
• Added new EventCallbacks called "creatureOnCombat" and "mapOnLoad", to
facilitate the development of the quest
• Added a new function argument on the CreatureEvent
"executeOnPrepareDeath" called "realDamage"
• The Lua function "monster:setType" now includes a new argument called
"restoreHealth" (boolean). This argument determines whether the function
will restore the monster's health after setting its type.
• The Lua function "player:addOutfit" now accept the "outfit name" and
includes new argument called "addon" for setting the outfit's addon
• New Lua function "player:sendCreatureAppear" to update the creature's
appearance to the client (necessary for changing the ebb and flow maps,
same reason I mentioned above, the player is on the map during the
change, so it is necessary to send the update to the client)
• Removed the exception for the message: "The map in folder 'x' is
missing or corrupted", this prevents the console from stopping loading
and closing the server, as in the case of a misconfigured worldchange.

Co-authored-by: Pedro Henrique Alves Cruz <phac@cin.ufpe.br>
2024-09-11 19:32:24 -03:00
Majesty
0f8929d614
fix: price mismatch between NPCs and typo in the rent house message (#2830)
Monitoring feature to alert whenever there's a price mismatch between NPCs for item transactions.
This ensures any instance where an item is sold for less than its purchase price, or vice versa, is promptly identified and reported.

Co-authored-by: Leilani A. <168607226+kaleohanopahala@users.noreply.github.com>
2024-08-29 08:55:41 -03:00
Marco
65c58b0964
fix: register actions quests compatibility (#2799)
Libs must be independent, given that errors are returned due to storage checks and other forms.
2024-08-22 10:49:05 -03:00
Matico
dadf8fbf77
feat: added preyable and isPreyExclusive flags to prey monsters (#2785)
Introduced two new monster flags: isPreyable and isPreyExclusive to enhance prey system interactions. isPreyable, when set to false, excludes the monster from prey slot selections and updates dialogues to reflect this unavailability. isPreyExclusive, when true, prevents the monster from appearing in standard (free/gold) rerolls but allows it to be chosen via the 5 preycard option. This update affects 168 monsters, aligning with the prey system specifications outlined on the Tibia Fandom page.
2024-08-19 11:11:08 -03:00
HT Cesta
645237babf
fix: quests from version 8.00 to 8.74 revised (#2765) 2024-08-16 18:17:44 -03:00
Guilherme
a9c9020dae
fix: revised some quests (#2675) 2024-07-25 12:16:15 -03:00
Eduardo Dantas
caa35461ea
improve: move wheel scrolls to kv (#2637) 2024-05-24 00:46:48 -03:00
Elson Costa
c9d1035379
fix: missing achievements (#2590) 2024-05-14 17:57:10 -03:00
Elson Costa
af7126a27f
fix: hazard mount and achievement (#2431) 2024-03-16 00:21:24 -03:00
Eduardo Dantas
bdc3387ce3
fix: hireling say only inside a house and other adjusts (#2360)
Resolves #2357

Set some logs to trace
Change from "ipairs" to "pairs" from achievements.
2024-03-02 17:10:47 -03:00
Elson Costa
2d707eed05
feature: streak level and checks improvements (#2289) 2024-02-23 17:47:29 +00:00
Elson Costa
520a539a4f
fix: scripts and achievements (#2301)
Co-authored-by: Jonyrewind <jonyrewind@gmail.com>
2024-02-22 17:43:45 +00:00
Eduardo Dantas
530595ad1c
fix: achievement migration and highscore categories (#2260)
Fix initialization of vector and map from category and others small
things.

---------

Co-authored-by: Elson Costa <elsongabriel@hotmail.com>
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2024-02-21 04:32:02 +00:00
Marco
e8977d2cc6
fix: adjust handling of null variable in Player.addAchievementProgress (#2253)
This pull request addresses an issue where the
Player.addAchievementProgress function was not properly handling null
values, leading to arithmetic errors. The fix ensures that the function
behaves as expected and correctly increments the achievement progress.
Additionally, adjustments were made to the logic to enhance the overall
functionality.
2024-02-16 19:50:54 +00:00
Eduardo Dantas
93f362fd13
fix: achievement progress (#2238)
Complement of pr: #2215

Removed duplicated files from data-canary.
2024-02-15 12:56:16 +00:00
Eduardo Dantas
f535a93579
feat: achievements system and cyclopedia informations (#2215)
Full achievements system in cpp and send cyclopedia informations. Thanks
for @marcosvf132 to the original pr:
https://github.com/opentibiabr/canary/pull/425/files

---------

Co-authored-by: Marcos <66353315+marcosvf132@users.noreply.github.com>
2024-02-14 20:19:59 +00:00
Luan Luciano
5248cf0e40
fix: Spdlog error (#2192)
Co-authored-by: Eduardo Dantas <eduardo.dantas@hotmail.com.br>
2024-02-09 12:02:48 +00:00
Eduardo Dantas
f221c75ba9
fix: bestiary mitigation and move libs to core folder (#2175)
Resolves #2145 


![image](https://github.com/opentibiabr/canary/assets/8551443/c9b86476-0d7e-4468-8383-726726848db0)
2024-02-05 20:15:42 +00:00
Eduardo Dantas
6c924ebc9b
[Enhancement] rework for enable choosing of a custom datapack name (#572)
With this modification, we will be able to focus on just one repository (the canary), and archive otservbr-global repository.

The intention is that we can have two datapacks in the same repository, being able to easily switch from one to the other, just change in config.lua the "dataPackDirectory" from "data-otservbr-global" to "data-canary" or vice versa.

The main purpose is to facilitate our development, at the same time that the community will be able to contribute in a single repository, but keeping the choice of using a "clean" datapack.

I made some more modifications, such as removing the unused C++ gamestore, I also removed the "allowPickupable" tag, which was duplicated, and I made some other adjustments.

Folder structure changes
Now we have the following structure:
• data = this will be the "core" folder, it is where the files that are absolutely necessary for the executable to open correctly, such as libs, xmls, etc. Here we will have files that both the global and the canary datapack will share with each other
• data-otservbr-global = here will be the global datapack files, some libs and folders that are only for the global server, such as scripts, monsters, npcs, world.
• data-canary = a "clean" datapack as far as possible, with only the scripts and files necessary for the server to work.

• NOTE: The "data" folder is actually the "core" of the server, we didn't rename it to avoid having to make changes to the sites and login.php, since they read the "data/xml". The other two folders, data-otservbr-global and data-canary can be changed in config.lua, which one you want the executable to read, by default we'll point to the global one, as that's what most use. If you want to start a custom server with "as few files and scripts as possible", then switch to "data-canary".

We also added a boolean in config.lua that allows choosing another name for the datapack, by default we will also keep this disabled, since we will only maintain support for these two datapacks, it is up to each one to know what they are doing in case they want to change it.

So, in the end, we have the reorganization in the folders:
![58855](https://user-images.githubusercontent.com/8551443/202463807-c0902611-4d6e-493d-b72d-8d85d5009d55.jpg)

Note that we made few real changes to the files, the abundance of modified files is due to moving from one folder to another and also adding the global datapack to this repository (with an abundance of files). If you want to migrate your datapack to the global one, you should know what you're doing, if you don't know, just pass your modifications to the "new files" or get in touch on our discord group so we can help you: https://discord.gg/X3mSnMH8jg
2022-11-18 22:32:44 -03:00
Eduardo Dantas
4580324c18
Move client version from config.lua to definitions.h (#355)
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.
2022-04-27 02:57:01 -03:00
Gabriel Pedro
93d9d981db
Convert destroy field rune ids to client id and remove unused corpses table (#283) 2022-04-18 17:30:59 -03:00
Eduardo Dantas
c45f1d247f
Add missing librarys; daily reward, modal windows and reward boss (#294)
Added somes missing librarys: daily reward, modal window, reward boss
Added new scripts for: monsters and spells

Resolves #276
2022-04-17 16:23:31 -03:00
Eduardo Dantas
caf0a97036
Complete rework on npcs shop add item functions (#228) 2022-02-25 13:29:12 -03:00
Aerwix
9f37c02ad4
[Register Npc Type] add missing currency method for npcs revscriptsys (#222) 2022-02-19 02:14:18 -03:00
Marcos
e9c85a5a08
[Protocol Bytes] - Support to client 12.85.11525 (#167)
Added the bytes for the item classification upgrade (item tier)
2022-02-08 03:34:06 -03:00
Eduardo Dantas
0397d0c97e
[Compatibility] - Support for Canary with otbr-global, conversion from npcs to revscriptsys and rework on jiddo npc lib (#192)
Description:
NPCS converted to revscriptsys and removed the npcs xml
Changed jiddo lib to work with revscriptsys npcs, also making several improvements to the lib. And several other functions that have been improved or rework. We also removed all the code from the lib that parse/handle the npcs xml.

Module shop has been removed (a big improvement was made where the shop is now in npcType, more easily and is called directly from source).

Added back storage of npcs spawns in the world folder (there was also a reorganization, where npcs and monsters will be in separate files from now on, as it will be possible to see npcs on the map).

Several other modifications and adaptations to make compatibility possible.

Fix: https://github.com/opentibiabr/otservbr-global-datapack/issues/2

NOTE: This commit will work directly with the pull https://github.com/opentibiabr/otservbr-global-datapack/pull/1 from the otservbr-global repository.
After this commit, the OTServBR-Global will use the Canary Engine, there will no longer be source code in global.

NPCS Lib modifications:
Added new callbacks:
- onCloseChannel (CALLBACK_ON_CLOSE_CHANNEL)
- onMove (CALLBACK_ON_MOVE)
- FocusModule.tradeCallback
- NpcsEvent_t enum: NPCS_EVENT_PLAYER_CLOSE_CHANNEL

Lua functions:
- NpcHandler:getKeywordHandler()
- NpcHandler:getEventDelayedSay(playerId)
- NpcHandler:setEventDelayedSay(playerId, newEventDelayedSay)
- NpcHandler:getEventSay(playerId)
- NpcHandler:setEventSay(playerId, newEventSay)
- NpcHandler:getTalkStart(playerId)
- NpcHandler:setTalkStart(playerId, newTalkStart)
- NpcHandler:getTopic(playerId)
- NpcHandler:setTopic(playerId, newTopic)
- NpcHandler:checkInteraction(npc, player)
- NpcHandler:updateInteraction(npc, player)
- NpcHandler:setInteraction(npc, player)
- NpcHandler:removeInteraction(npc, player)
- NpcHandler:tradeRequest(npc, player, message)
- NpcHandler:onMove(npc, player, fromPosition, toPosition)
- NpcHandler:sendMessages(message, messageTable, npc, player, useDelay, delay)
- FocusModule:setTradeCallback(callback)
- Npc:sayWithDelay(npcId, text, messageType, delay, event, playerId)
- Npc:sendMessage(player, text)
- Npc:isMerchant()
- Npc:closeShopWindow(player)
- Npc:isInTalkRange(playerPosition)
- Npc:move(direction)
- Npc:turn(direction)
- Npc:follow(player)
- Npc:getId()
- Npc:sellItem(player, itemid, amount, <optional> subtype, <optional> actionid, <optional: default: 1> canDropOnMap)
- Npc:getDistanceTo(uid)
- NpcType:getSpeechBubble()
- NpcType:setSpeechBubble()
- Player:getItemIdByCid(itemId)
- Item:getClientId()
- LuaFunctionsLoader::getErrorDesc(ErrorCode_t code) new callback: LUA_ERROR_NPC_TYPE_NOT_FOUND

CPP functions:
- Npc::onPlayerCloseChannel(creature)
- Game::loadCustomMap(name)
- Iomap: loadMonstersCustom(map), loadNpcsCustom(map), loadHousesCustom(map)

Cpp definitions:
- ITEM_FILLED_BATH_TUBE, ITEM_SWORD_RING, ITEM_CLUB_RING, ITEM_DWARVEN_RING, ITEM_RING_HEALING, ITEM_STEALTH_RING, ITEM_TIME_RING, ITEM_PAIR_SOFT_BOOTS, ITEM_PAIR_SOFT_BOOTS_ACTIVATED, ITEM_DEATH_RING, ITEM_DEATH_RING_ACTIVATED, ITEM_PRISMATIC_RING, ITEM_PRISMATIC_RING_ACTIVATED.

Othes:
- Added bank system lib (bank_system.lua)
- TalkAction: /addmoney playername, moneycount

Modified callbacks:
- FROM: CALLBACK_CREATURE_APPEAR, TO: CALLBACK_ON_APPEAR
- FROM: CALLBACK_CREATURE_DISAPPEAR, TO: CALLBACK_ON_DISAPPEAR
- FROM: CALLBACK_CREATURE_SAY, TO: CALLBACK_ON_SAY
- FROM: CALLBACK_ONTHINK, TO: CALLBACK_ON_THINK
- FROM: CALLBACK_PLAYER_ENDTRADE, TO: CALLBACK_PLAYER_END_TRADE
- FROM: CALLBACK_PLAYER_CLOSECHANNEL, TO: CALLBACK_CLOSE_CHANNEL
- FROM: CALLBACK_ONADDFOCUS, TO: CALLBACK_SET_INTERACTION
- FROM: CALLBACK_ONRELEASEFOCUS, TO: CALLBACK_REMOVE_INTERACTION
- FROM: CALLBACK_ONTRADEREQUEST, TO: CALLBACK_ON_TRADE_REQUEST
- FROM: SHOP_TRADEREQUEST, TO: FOCUS_TRADE_MESSAGE

Modified functions:
- From: player:removeMoneyNpc(), to: player:removeMoneyBank(cost)
- From: NpcHandler.eventSay[focus] = nil, to: NpcHandler:setEventSay(playerId, nil)
- From: NpcHandler.eventDelayedSay[focus] = nil, to: NpcHandler:setEventDelayedSay(playerId, nil)
- From: NpcHandler.talkStart[focus] = nil, to: NpcHandler:setTalkStart(playerId, nil)
- From: NpcHandler.topic[focus] = nil, to: NpcHandler:setTopic(playerId, nil)
- From: NpcHandler:onCreatureAppear, to: NpcHandler:onAppear
- From: NpcHandler:onCreatureDisappear, to: NpcHandler:onDisappear
- From: NpcHandler:onCreatureAppear, to: NpcHandler:onAppear
- From: NpcHandler:onCreatureSay, to: NpcHandler:onSay
- From: NpcHandler:onPlayerCloseChannel, to: NpcHandler:onCloseChannel
- From: NpcHandler.topic[playerId] = topicId, to: NpcHandler:setTopic(playerId, topicId)
- From: NpcHandler.topic[playerId] == topicId, to: NpcHandler:getTopic(playerId) == topicId
- From: Charm:cancelMessage(), to: charm:messageCancel()
- From: Charm:logMsg(), to: Charm:messageServerLog()
- msgcontains(message, keyword) = It was refactored so that it identifies the entire string and does not read just one word, generating this issue: https://github.com/opentibiabr/otservbr-global/issues/2736

Removed callbacks:
- NpcHandler: focuses, idleTime, talkRadius, shopItems, MESSAGE_ONBUY, MESSAGE_BOUGHT, MESSAGE_SELL, MESSAGE_ONSELL, MESSAGE_SOLD, MESSAGE_IDLETIMEOUT
- Voice modules
- Shop module
- NpcSystem (It was used to parse XML npcs information)

Removed Lua functions:
- NpcHandler:isFocused
- NpcHandler:releaseFocus
- NpcHandler:onPlayerEndTrade
- NpcHandler:onSell
- doNpcSellItem
- doCreatureSayWithDelay
- doPlayerSellItem
- doPlayerBuyItemContainer
- doPlayerRemoveMoney
- getPlayerMoney
- closeShopWindow

Removed CPP functions:
- Npc:getCurrencyTrading()

Others modifications:
- Changed configkey = From: MAP_CUSTOM_ENABLED, to: TOGGLE_MAP_CUSTOM
- Fixed the load of the custom map, which is now directly in the source and works as a complement to the main map.
- Removed ConfigKey: MAP_CUSTOM_FILE and MAP_CUSTOM_SPAWN
- Some functions are capitalized to indicate that they are global functions, for example: MessageContains(), GetCount(), and others.
2022-02-07 18:39:02 -03:00
Beats
ad7a35b14e
Create familiars lib (#182)
Somes familiars fixes and adjusts

Rename from "pet/Pet" to "familiar/Familiar"
Removed "familiar = false" from monsters, this is false by default
Renamed from "mtype:isPet" to "mtype:familiar"

Co-authored-by: @dudantas <eduardo.dantas@hotmail.com.br>
2022-01-10 00:37:11 -03:00
Eduardo Dantas
3a68c29039
[Enhancement] Rework of the imbuement system and conversion to c++ (#164)
NOTE: The pull request of optimization and enhancement of ItemAttributes is needed for this commit: 419dbd6dbd. If don't use the "ItemAttributes enhancent" commit, the imbuement will crash!

Thanks to @lgrossi for the reviews made and for helping to solve several problems.
Thanks @Glatharth for provide the script for convert tables lua in items.xml: https://gist.github.com/dudantas/548fdbc3c521327c7d5320e27adba8fb

The system has been completely converted to c++
Fixed bugs and adapted the operation to be the same as global tibia
Possibility to imbue the equipped item
Added config.lua key for enable/disable the use of storages by the imbuement system (togleImbuementShrineStorage)

The imbuement of each item is now configured in items.xml in the following settings:
<attribute key="imbuementslot" value="3">
	<attribute key="elemental damage" value ="3"/>
	<attribute key="life leech" value ="3"/>
	<attribute key="mana leech" value ="3"/>
	<attribute key="critical hit" value ="3"/>
	<attribute key="elemental protection death" value ="3"/>
	<attribute key="elemental protection earth" value ="3"/>
	<attribute key="elemental protection fire" value ="3"/>
	<attribute key="elemental protection ice" value ="3"/>
	<attribute key="elemental protection energy" value ="3"/>
	<attribute key="elemental protection holy" value ="3"/>
	<attribute key="increase speed" value ="3"/>
	<attribute key="skillbost axe" value ="3"/>
	<attribute key="skillbost sword" value ="3"/>
	<attribute key="skillbost club" value ="3"/>
	<attribute key="skillbost shielding" value ="3"/>
	<attribute key="skillbost distance" value ="3"/>
	<attribute key="skillbost magic level" value ="3"/>
	<attribute key="increase capacity" value ="3"/>
</attribute>

Where the "imbuementslot" value is from 1 to 3 and the imbuement name values are also from 1 to 3, which is the imbuement level (basic, intricate or powerful), the name must be placed as above, as it is from the name that the value of each imbuement is called by ItemParse.
2021-12-15 22:02:26 -03:00
gtkatakura
b58eac26dc
Sort loot of monsters to try most rare itens first (#31)
* Sort loot of monsters to try most rare itens first

* fix register functions
2021-10-04 02:20:11 -03:00
Beats
367deeced7
[OTBR compatibility] Factions source code, pulled from: opentibiabr/otservbr-global#2334 (#22)
Pull from: opentibiabr/otservbr-global#2334

Cherry pick to maintain compatibility between canary/otservbr-global

Credits to the author: @hyresu
2021-08-30 03:43:00 -03:00
pirate
a30eaf1edc
Rope id fix (#6)
* Provide correct item ids for rope spots

* Remove unused RopeSpots table
2021-08-24 06:57:26 -03:00
Eduardo Dantas
e7acbce5a2
Removed unnecessary files and converted to client id (#1)
Removed several files and other unnecessary things
Converts ids to client id
2021-04-27 18:37:05 -03:00
dudantas
da96e1fe14 Initial commit 2021-04-26 21:04:01 -03:00