Skip to content

Imbuement

Imbuement System

Imbuements are temporary enhancements applied to equipment.

Imbuement Class

Constructor

Imbuement(name)

Methods

MethodReturnsDescription
getName()stringImbuement name
getId()numberImbuement ID
getDescription()stringDescription
getCategory()numberCategory
isPremium()booleanRequires premium
getBase()tableBase imbuement
getBoost()tableBoost values
getItems()tableRequired items
getPrice()numberGold cost
getProtectionPrice()numberProtection cost
getDuration()numberDuration in seconds
getElementDamage()numberElement damage
getCombatType()numberCombat type

Item Imbuement Methods

-- Check imbuement slots
local slots = item:getImbuementSlots()
local free = item:getFreeImbuementSlots()
-- Add imbuement
if item:canImbue() then
item:addImbuement(imbuement)
end
-- Check imbuements
if item:hasImbuements() then
local imbues = item:getImbuements()
for slot, imbue in pairs(imbues) do
print(slot, imbue:getName())
end
end
-- Check specific type
if item:hasImbuementType(IMBUEMENT_FIRE) then
print("Has fire imbuement!")
end
-- Remove
item:removeImbuement(slotId)

Examples

Check Item Imbuements

local function describeImbuements(item)
if not item:hasImbuements() then
return "No imbuements"
end
local desc = "Imbuements:\n"
local imbues = item:getImbuements()
for slot, imbue in pairs(imbues) do
desc = desc .. string.format(" Slot %d: %s\n", slot, imbue:getName())
end
return desc
end

Add Imbuement with Check

local function addImbuementToItem(item, imbuement, player)
if item:getFreeImbuementSlots() == 0 then
player:sendCancelMessage("No free imbuement slots.")
return false
end
local price = imbuement:getPrice()
if player:getMoney() < price then
player:sendCancelMessage("Not enough gold.")
return false
end
-- Check required items
local items = imbuement:getItems()
for _, req in ipairs(items) do
if player:getItemCount(req.id) < req.count then
player:sendCancelMessage("Missing required items.")
return false
end
end
-- Remove cost
player:removeMoney(price)
for _, req in ipairs(items) do
player:removeItem(req.id, req.count)
end
-- Apply imbuement
item:addImbuement(imbuement)
player:sendTextMessage(MESSAGE_INFO_DESCR,
"Imbuement applied: " .. imbuement:getName())
return true
end