Lua:
Lua Script Error: [Action Interface]
data/actions/scripts/Other/fluids/potions.lua:onUse
data/actions/scripts/Other/fluids/potions.lua:200: attempt to index local 'tile' (a nil value)
stack traceback:
data/actions/scripts/Other/fluids/potions.lua:200: in function <data/actions/scripts/Other/fluids/potions.lua:196>
this is the script
Code:
local berserk = Condition(CONDITION_ATTRIBUTES)
berserk:setParameter(CONDITION_PARAM_TICKS, 10 * 60 * 1000)
berserk:setParameter(CONDITION_PARAM_SKILL_MELEE, 5)
berserk:setParameter(CONDITION_PARAM_SKILL_SHIELD, -10)
berserk:setParameter(CONDITION_PARAM_BUFF_SPELL, true)
local mastermind = Condition(CONDITION_ATTRIBUTES)
mastermind:setParameter(CONDITION_PARAM_TICKS, 10 * 60 * 1000)
mastermind:setParameter(CONDITION_PARAM_STAT_MAGICPOINTS, 3)
mastermind:setParameter(CONDITION_PARAM_BUFF_SPELL, true)
local bullseye = Condition(CONDITION_ATTRIBUTES)
bullseye:setParameter(CONDITION_PARAM_TICKS, 10 * 60 * 1000)
bullseye:setParameter(CONDITION_PARAM_SKILL_DISTANCE, 5)
bullseye:setParameter(CONDITION_PARAM_SKILL_SHIELD, -10)
bullseye:setParameter(CONDITION_PARAM_BUFF_SPELL, true)
--local manaShield = Condition(CONDITION_MANASHIELD_BREAKABLE)
--manaShield:setParameter(CONDITION_PARAM_TICKS, 3 * 60 * 1000)
--local function magicShieldCapacity(player)
-- manaShield:setParameter(CONDITION_PARAM_MANASHIELD_BREAKABLE, math.min(player:getMaxMana(), 300 + 7.6 * player:getLevel() + 7 * player:getMagicLevel()))
--end
local potions = {
[6558] = { -- flask of demonic blood
transform = {7588, 7589},
effect = CONST_ME_DRAWBLOOD
},
[7439] = { -- berserk potion
condition = berserk,
vocations = {
VOCATION_KNIGHT,
VOCATION_ELITE_KNIGHT
},
effect = CONST_ME_MAGIC_RED,
description = "Only knights may drink this potion.",
text = "You feel stronger."
},
[7440] = { -- mastermind potion
condition = mastermind,
vocations = {
VOCATION_SORCERER,
VOCATION_DRUID,
VOCATION_MASTER_SORCERER,
VOCATION_ELDER_DRUID
},
effect = CONST_ME_MAGIC_BLUE,
description = "Only sorcerers and druids may drink this potion.",
text = "You feel smarter."
},
[7443] = { -- bullseye potion
condition = bullseye,
vocations = {
VOCATION_PALADIN,
VOCATION_ROYAL_PALADIN
},
effect = CONST_ME_MAGIC_GREEN,
description = "Only paladins may drink this potion.",
text = "You feel more accurate."
},
--[38219] = { -- magic shield potion
-- condition = manaShield,
-- vocations = {
-- VOCATION_SORCERER,
--- VOCATION_DRUID,
-- VOCATION_MASTER_SORCERER,
-- VOCATION_ELDER_DRUID
--},
--level = 14,
--effect = CONST_ME_ENERGYAREA,
--description = "Only sorcerers and druids of level 14 or above may drink this potion.",
--capacity = magicShieldCapacity
--},
[7588] = { -- strong health potion
health = {250, 350},
vocations = {
VOCATION_PALADIN,
VOCATION_KNIGHT,
VOCATION_ROYAL_PALADIN,
VOCATION_ELITE_KNIGHT
},
level = 50,
flask = 7634,
description = "Only knights and paladins of level 50 or above may drink this fluid."
},
[7589] = { -- strong mana potion
mana = {115, 185},
vocations = {
VOCATION_SORCERER,
VOCATION_DRUID,
VOCATION_PALADIN,
VOCATION_MASTER_SORCERER,
VOCATION_ELDER_DRUID,
VOCATION_ROYAL_PALADIN
},
level = 50,
flask = 7634,
description = "Only sorcerers, druids and paladins of level 50 or above may drink this fluid."
},
[7590] = { -- great mana potion
mana = {150, 250},
vocations = {
VOCATION_SORCERER,
VOCATION_DRUID,
VOCATION_PALADIN,
VOCATION_MASTER_SORCERER,
VOCATION_ELDER_DRUID,
VOCATION_ROYAL_PALADIN
},
level = 80,
flask = 7635,
description = "Only sorcerers, druids and paladins of level 80 or above may drink this fluid."
},
[7591] = { -- great health potion
health = {425, 575},
vocations = {
VOCATION_KNIGHT,
VOCATION_ELITE_KNIGHT
},
level = 80,
flask = 7635,
description = "Only knights of level 80 or above may drink this fluid."
},
[7618] = { -- health potion
health = {125, 175},
flask = 7636
},
[7620] = { -- mana potion
mana = {75, 125},
flask = 7636
},
[8472] = { -- great spirit potion
health = {250, 350},
mana = {100, 200},
vocations = {
VOCATION_PALADIN,
VOCATION_ROYAL_PALADIN
},
level = 80,
flask = 7635,
description = "Only paladins of level 80 or above may drink this fluid."
},
[8473] = { -- ultimate health potion
health = {650, 850},
vocations = {
VOCATION_KNIGHT,
VOCATION_ELITE_KNIGHT
},
level = 130,
flask = 7635,
description = "Only knights of level 130 or above may drink this fluid."
},
[8474] = { -- antidote potion
antidote = true,
flask = 7636
},
[8704] = { -- small health potion
health = {60, 90},
flask = 7636
},
[26029] = { -- ultimate mana potion
mana = {425, 575},
vocations = {
VOCATION_SORCERER,
VOCATION_DRUID,
VOCATION_MASTER_SORCERER,
VOCATION_ELDER_DRUID
},
level = 130,
flask = 7635,
description = "Only druids and sorcerers of level 130 or above may drink this fluid."
},
[26030] = { -- ultimate spirit potion
health = {410, 580},
mana = {150, 250},
vocations = {
VOCATION_PALADIN,
VOCATION_ROYAL_PALADIN
},
level = 130,
flask = 7635,
description = "Only paladins of level 130 or above may drink this fluid."
},
[26031] = { -- supreme health potion
health = {875, 1125},
vocations = {
VOCATION_KNIGHT,
VOCATION_ELITE_KNIGHT
},
level = 200,
flask = 7635,
description = "Only knights of level 200 or above may drink this fluid."
}
}
function onUse(player, item, fromPosition, target, toPosition, isHotkey)
local potion = potions[item:getId()]
local tile = Tile(toPosition)
local items = tile:getItems()
if items then
for i, item in ipairs(items) do
local targetItemType = ItemType(item:getId())
if targetItemType and targetItemType:getType() == ITEM_TYPE_TELEPORT then
return false
end
end
end
if type(target) == "userdata" and not target:isPlayer() then
if potion.health and potion.mana then
Game.createItem(2025, 35, toPosition):decay()
elseif potion.health then
Game.createItem(2025, 10, toPosition):decay()
elseif potion.mana then
Game.createItem(2025, 7, toPosition):decay()
end
if configManager.getBoolean(configKeys.REMOVE_POTION_CHARGES) then
item:remove(1)
if potion.flask and potion.flask > 0 then
player:addItem(potion.flask)
end
end
return true
end
if not player:getGroup():getAccess() and (potion.level and player:getLevel() < potion.level or potion.vocations and not table.contains(potion.vocations, player:getVocation():getId())) then
player:say(potion.description, TALKTYPE_POTION)
return true
end
if potion.condition then
if potion.capacity then
potion.capacity(player)
end
player:addCondition(potion.condition)
player:say(potion.text, TALKTYPE_POTION)
player:getPosition():sendMagicEffect(potion.effect)
elseif potion.transform then
local reward = potion.transform[math.random(#potion.transform)]
if fromPosition.x == CONTAINER_POSITION then
local targetContainer = Container(item:getParent().uid)
targetContainer:addItem(reward, 1)
else
Game.createItem(reward, 1, fromPosition)
end
item:getPosition():sendMagicEffect(potion.effect)
item:remove(1)
return true
else
if potion.health then
doTargetCombat(player, target, COMBAT_HEALING, potion.health[1], potion.health[2])
end
if potion.mana then
doTargetCombat(player, target, COMBAT_MANADRAIN, potion.mana[1], potion.mana[2])
end
if potion.antidote then
target:removeCondition(CONDITION_POISON)
end
player:addAchievementProgress("Potion Addict", 100000)
player:addItem(potion.flask)
target:say("Aaaah...", TALKTYPE_POTION)
target:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE)
end
if not configManager.getBoolean(configKeys.REMOVE_POTION_CHARGES) then
return true
end
item:remove(1)
return true
end
this is the line
Code:
local items = tile:getItems()