samuel157
/root
- Joined
- Mar 19, 2010
- Messages
- 518
- Solutions
- 3
- Reaction score
- 71
- Location
- São Paulo, Brazil
- GitHub
- Samuel10M
I wanted him to take normal damage without having to use item 5902
LUA:
local UPGRADE_ITEM_ID = 5902 -- The upgrade item, in this case, the "scary blue eye"
local LIFE_LEECH_INCREMENT = 1 -- Percentage to be added to Life Leech
local MANA_LEECH_INCREMENT = 1 -- Percentage to be added to Mana Leech
local MAX_LEECH_PERCENT = 100 -- Maximum limit for Life Leech and Mana Leech
local FIXED_DAMAGE = 100000000000 -- Fixed damage to be dealt
function onUse(cid, item, fromPosition, itemEx, toPosition)
-- Check if the player is valid
if not isPlayer(cid) then
return false
end
-- Get the weapon the player is holding (left or right hand)
local weapon = getPlayerSlotItem(cid, CONST_SLOT_LEFT)
if weapon.itemid == 0 then
weapon = getPlayerSlotItem(cid, CONST_SLOT_RIGHT)
end
-- Check if the player is holding a weapon
if weapon.itemid == 0 then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_SMALL, "You need to be holding a weapon to upgrade it.")
return false
end
-- Get the current Life Leech and Mana Leech values (if they exist)
local currentLifeLeech = tonumber(getItemAttribute(weapon.uid, "lifeLeech")) or 0
local currentManaLeech = tonumber(getItemAttribute(weapon.uid, "manaLeech")) or 0
-- Accumulate new leech values, limited by the maximum
local newLifeLeech = math.min(currentLifeLeech + LIFE_LEECH_INCREMENT, MAX_LEECH_PERCENT)
local newManaLeech = math.min(currentManaLeech + MANA_LEECH_INCREMENT, MAX_LEECH_PERCENT)
-- Apply the new Life Leech and Mana Leech values to the weapon
doItemSetAttribute(weapon.uid, "lifeLeech", newLifeLeech)
doItemSetAttribute(weapon.uid, "manaLeech", newManaLeech)
-- Modify the weapon's description to show the new leech values
local description = getItemAttribute(weapon.uid, "description") or ""
description = "This weapon now has " .. newLifeLeech .. "% Life Leech and " .. newManaLeech .. "% Mana Leech. The maximum is 100%."
doItemSetAttribute(weapon.uid, "description", description)
-- Send a message to the player informing about the upgrade
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Your weapon has been upgraded! It now has " .. newLifeLeech .. "% Life Leech and " .. newManaLeech .. "% Mana Leech. The maximum is 100%.")
-- Display animated text "+Leech!!!" in green (color 35)
local position = getCreaturePosition(cid)
doSendAnimatedText(position, "+Leech!!!", 35)
-- The line that removed the upgrade item has been removed to allow infinite use
-- doRemoveItem(item.uid, 1) -- REMOVED
-- Combat logic: damage with the weapon
local target = getCreatureTarget(cid)
if isCreature(target) then
-- Check if the weapon has reached the limit for Life Leech and Mana Leech
if newLifeLeech == MAX_LEECH_PERCENT and newManaLeech == MAX_LEECH_PERCENT then
-- Fixed damage from the weapon
local damage = FIXED_DAMAGE
-- Apply the damage to the target
doTargetCombatHealth(cid, target, COMBAT_UNDEFINEDDAMAGE, -damage, -damage, CONST_ME_EXPLOSIONHIT)
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You dealt " .. damage .. " damage with your weapon!")
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_SMALL, "Your weapon has not reached the limit to deal damage.")
end
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_SMALL, "You do not have a valid target to attack.")
end
return true
end