local antidote = Combat()
antidote:setParameter(COMBAT_PARAM_TYPE, COMBAT_HEALING)
antidote:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
antidote:setParameter(COMBAT_PARAM_TARGETCASTERORTOPMOST, true)
antidote:setParameter(COMBAT_PARAM_AGGRESSIVE, false)
antidote:setParameter(COMBAT_PARAM_DISPEL, CONDITION_POISON)
local exhaust = Condition(CONDITION_EXHAUST_HEAL)
exhaust:setParameter(CONDITION_PARAM_TICKS, (configManager.getNumber(configKeys.EX_ACTIONS_DELAY_INTERVAL)))
-- 1000 - 100 due to exact condition timing. -100 doesn't hurt us, and players don't have reminding ~50ms exhaustion.
local t = {
-- Supreme health potion
[26031] = {empty = 7635, vocArray = {4, 8}, level = 200, str = "knights", func = function(p) return doTargetCombatHealth(0, p, COMBAT_HEALING, 875, 1125, CONST_ME_MAGIC_BLUE) end},
-- Ultimate spirit potion
[26030] = {empty = 7635, vocArray = {3, 7}, level = 130, str = "paladins", func = function(p) return doTargetCombatHealth(0, p, COMBAT_HEALING, 420, 680, CONST_ME_MAGIC_BLUE), doTargetCombatMana(0, p, 150, 250, CONST_ME_MAGIC_BLUE) end},
-- Ultimate health potion
[8473] = {empty = 7635, vocArray = {4, 8}, level = 130, str = "knights", func = function(p) return doTargetCombatHealth(0, p, COMBAT_HEALING, 650, 860, CONST_ME_MAGIC_BLUE) end},
-- Great health potion
[7591] = {empty = 7635, vocArray = {3, 4, 7, 8}, level = 80, str = "knights", func = function(p) return doTargetCombatHealth(0, p, COMBAT_HEALING, 425, 575, CONST_ME_MAGIC_BLUE) end},
-- Great spirit potion
[8472] = {empty = 7635, vocArray = {3, 7}, level = 80, str = "paladins", func = function(p) return doTargetCombatHealth(0, p, COMBAT_HEALING, 250, 350, CONST_ME_MAGIC_BLUE), doTargetCombatMana(0, p, 100, 200, CONST_ME_MAGIC_BLUE) end},
-- Strong health potion
[7588] = {empty = 7634, vocArray = {3, 4, 7, 8}, level = 80, str = "paladins and knights", func = function(p) return doTargetCombatHealth(0, p, COMBAT_HEALING, 250, 350, CONST_ME_MAGIC_BLUE) end},
-- Ultimate mana potion
[26029] = {empty = 7635, vocArray = {1, 2, 5, 6}, level = 130, str = "sorcerers and druids", func = function(p) return doTargetCombatMana(0, p, 425, 575, CONST_ME_MAGIC_BLUE) end},
-- Great mana potion
[7590] = {empty = 7635, vocArray = {1, 2, 5, 6}, level = 80, str = "sorcerers and druids", func = function(p) return doTargetCombatMana(0, p, 150, 250, CONST_ME_MAGIC_BLUE) end},
-- Strong mana potion
[7589] = {empty = 7634, vocArray = {1, 2, 3, 5, 6, 7}, level = 50, str = "sorcerers and druids", func = function(p) return doTargetCombatMana(0, p, 115, 185, CONST_ME_MAGIC_BLUE) end},
-- Mana potion
[7620] = {empty = 7636, func = function(p) return doTargetCombatMana(0, p, 75, 125, CONST_ME_MAGIC_BLUE) end},
-- Health potion
[7618] = {empty = 7636, func = function(p) return doTargetCombatHealth(0, p, COMBAT_HEALING, 125, 175, CONST_ME_MAGIC_BLUE) end},
-- Small health potion
[8704] = {empty = 7636, func = function(p) return doTargetCombatHealth(0, p, COMBAT_HEALING, 60, 90, CONST_ME_MAGIC_BLUE) end},
-- Antidote potion
[8474] = {empty = 7636, func = function(p) return antidote:execute(p, numberToVariant(p:getId())) end}
}
function onUse(player, item, fromPosition, target, toPosition, isHotkey)
if not target:getPlayer() then
return true
end
if player:getCondition(CONDITION_EXHAUST_HEAL) then
player:sendTextMessage(MESSAGE_STATUS_SMALL, Game.getReturnMessage(RETURNVALUE_YOUAREEXHAUSTED))
return true
end
local tmp = t[item.itemid]
if tmp then
local level = tmp.level or 0
if tmp.vocArray and (not isInArray(tmp.vocArray, target:getVocation():getId()) or target:getLevel() < level) and not getPlayerFlagValue(player, PlayerFlag_IgnoreSpellCheck) then
player:say(string.format("This potion can only be consumed by %s of level %d or higher.", tmp.str, level), TALKTYPE_MONSTER_SAY)
return true
end
-- local exhausted_storagevalue = 7000 -- Storage Value to store exhaust. It MUST be unused! --
-- local exhausted_seconds = 1
-- if(os.time() > player:getStorageValue(exhausted_storagevalue)) then
if not tmp.func(target) then
return false
end
-- player:setStorageValue(exhausted_storagevalue, os.time() + exhausted_seconds)
target:say("Aaaah...", TALKTYPE_MONSTER_SAY)
item:remove(1)
--else
player:addCondition(exhaust)
--end
player:addItem(tmp.empty, 1)
end
return true
end