SabrehavenServer/data/actions/scripts/misc/skinning_dusting.lua
2022-09-10 11:35:07 +03:00

111 lines
2.9 KiB
Lua

local config = {
[5908] = {
-- Minotaurs
[4011] = {value = 25000, newItem = 5878},
[4047] = {value = 25000, newItem = 5878},
[4057] = {value = 25000, newItem = 5878},
[4052] = {value = 25000, newItem = 5878},
-- Low Class Lizards
[4321] = {value = 25000, newItem = 5876},
[4327] = {value = 25000, newItem = 5876},
[4324] = {value = 25000, newItem = 5876},
-- Dragons
[4025] = {value = 25000, newItem = 5877},
-- Dragon Lords
[4062] = {value = 25000, newItem = 5948},
-- Behemoths
[4112] = {value = 35000, newItem = 5893},
-- Bone Beasts
[4212] = {value = 25000, newItem = 5925},
-- Ice Cube
[7441] = {value = 25000, newItem = 7442},
[7442] = {value = 25000, newItem = 7444},
[7444] = {value = 25000, newItem = 7445},
[7445] = {value = 25000, newItem = 7446},
},
[5942] = {
-- Demon
[4097] = {value = 25000, newItem = 5906},
-- Vampires
[4137] = {value = 25000, newItem = 5905}
}
}
function onUse(player, item, fromPosition, target, toPosition, isHotkey)
local skin = config[item.itemid][target.itemid]
if not skin then
player:sendCancelMessage(RETURNVALUE_NOTPOSSIBLE)
return true
end
local random, effect, transform = math.random(1, 100000), CONST_ME_MAGIC_GREEN, true
if type(skin[1]) == 'table' then
local added = false
local _skin
for i = 1, #skin do
_skin = skin[i]
if random <= _skin.value then
if target.itemid == 11343 then
effect = CONST_ME_ICEAREA
local gobletItem = player:addItem(_skin.newItem, _skin.amount or 1)
if gobletItem then
gobletItem:setDescription(_skin.desc:gsub('|PLAYERNAME|', player:getName()))
end
added = true
elseif isInArray({7441, 7442, 7444, 7445}, target.itemid) then
player:addItem(_skin.newItem, _skin.amount or 1)
effect = CONST_ME_HITAREA
added = true
else
player:addItem(_skin.newItem, _skin.amount or 1)
added = true
end
break
end
end
if not added and target.itemid == 8961 then
effect = CONST_ME_POFF
transform = false
end
elseif random <= skin.value then
if target.itemid == 11343 then
effect = CONST_ME_ICEAREA
local gobletItem = player:addItem(skin.newItem, skin.amount or 1)
if gobletItem then
gobletItem:setDescription(skin.desc:gsub('|PLAYERNAME|', player:getName()))
end
elseif isInArray({7441, 7442, 7444, 7445}, target.itemid) then
target:transform(skin.newItem)
effect = CONST_ME_HITAREA
transform = false
else
player:addItem(skin.newItem, skin.amount or 1)
end
else
if isInArray({7441, 7442, 7444, 7445}, target.itemid) then
player:say('The attempt of sculpting failed miserably.', TALKTYPE_MONSTER_SAY)
target:remove()
effect = CONST_ME_HITAREA
transform = false
else
effect = CONST_ME_POFF
end
end
toPosition:sendMagicEffect(effect)
if transform then
target:transform(skin.after or target.itemid + 1)
target:decay()
end
return true
end