local evoleWeapons = {
-- axe to vile axe
[2386] = { level = 100, toId = 7388 }
}
local degradeWeapons = {
-- vile axe to axe
[7388] = { level = 100, fromId = 2386 }
}
-- reward by level up
local rewards = {
[100] = {
{itemId = 2152, count = 1},
},
[200] = {
{itemId = 2152, count = 10},
}
}
local storage = 150000
local function getWeapons(player)
return {
player:getSlotItem(CONST_SLOT_RIGHT),
player:getSlotItem(CONST_SLOT_LEFT),
player:getSlotItem(CONST_SLOT_AMMO)
}
end
local creatureEvent = CreatureEvent("rewardAndEvoleWeapons")
function creatureEvent.onAdvance(player, skill, oldLevel, newLevel)
if skill ~= SKILL_LEVEL then
return true
end
if newLevel > oldLevel then
for _, item in pairs(getWeapons(player)) do
local evole = evoleWeapons[item:getId()]
if evole and newLevel >= evole.level then
item:transform(evole.toId)
player:sendCancelMessage("Your weapon has evolved.")
end
end
local value = player:getStorageValue(storage)
for level = oldLevel + 1, newLevel do
local reward = rewards[level]
if reward and value < level then
local redBag = player:addItem(1993)
for _, item in pairs(reward) do
redBag:addItem(item.itemId, item.count)
end
player:sendTextMessage(MESSAGE_EVENT_ADVANCE, string.format("You have received: %s", redBag:getContentDescription()))
end
end
player:setStorageValue(storage, newLevel)
return true
end
return true
end
creatureEvent:register()
local creatureEvent = CreatureEvent("rewardAndEvoleWeaponsLogin")
function creatureEvent.onLogin(player)
player:registerEvent("rewardAndEvoleWeapons")
return true
end
creatureEvent:register()
local ec = EventCallback
function ec.onLoseExperience(player, exp)
local level = player:getLevel()
local oldLevel = level
local experience = player:getExperience()
if player:getVocation():getId() == 0 or level > 7 then
experience = experience - exp
end
while level > 1 and experience < Game.getExperienceForLevel(level) do
level = level - 1
for _, item in pairs(getWeapons(player)) do
local degrade = degradeWeapons[item:getId()]
if degrade and level <= degrade.level then
item:transform(degrade.fromId)
player:sendCancelMessage("Your weapon has degraded.")
end
end
end
return exp
end
ec:register(1)