• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

Solved Adding new mana potion.

God Triaca

New Member
Joined
Dec 13, 2008
Messages
23
Reaction score
1
[I solved creating a new potion on object editor and updating itemeditor with my data/spr.
thanks.]

Hello guys and ladyes.

1. I duplicated ultimate mana potion using ItemEditor and I get this ItemID: 32255.

2. I added this line on actions.xml:
Code:
    <action itemid="32255" script="other/potions.lua" />

3. I added the new potion on actions/scripts/other/potion.lua
Code:
local config = {
    -- strong health potion
    [7588] = {health = {min = 250, max = 350}, vocations = {3, 4}, text = 'paladins and knights', level = 50, emptyId = 7634},
    -- strong mana potion
    [7589] = {mana = {min = 115, max = 185}, vocations = {1, 2, 3}, text = 'sorcerers, druids and paladins', level = 50, emptyId = 7634},
    -- great mana potion
    [7590] = {mana = {min = 150, max = 240}, vocations = {1, 2}, text = 'sorcerers and druids', level = 80, emptyId = 7635},
    -- great health potion
    [7591] = {health = {min = 425, max = 575}, vocations = {4}, text = 'knights', level = 80, emptyId = 7635},
    -- health potion
    [7618] = {health = {min = 130, max = 200}, emptyId = 7636},
    -- mana potion
    [7620] = {mana = {min = 75, max = 135}, emptyId = 7636},
    -- great spirit potion
    [8472] = {health = {min = 250, max = 350}, mana = {min = 100, max = 200}, vocations = {3}, text = 'paladins', level = 80, emptyId = 7635},
    -- ultimate health potion
    [8473] = {health = {min = 650, max = 780}, vocations = {4}, text = 'knights', level = 130, emptyId = 7635},

    -- POT NOVOS

    -- ultimate mana potion 26029
    [26029] = {mana = {min = 430, max = 550}, vocations = {1, 2}, text = 'sorcerers and druids', level = 130, emptyId = 7635},

    -- super mana potion 32255
    [32255] = {mana = {min = 2000, max = 2500}, vocations = {1, 2}, text = 'sorcerers and druids', level = 130, emptyId = 7635},

    -- Supreme Health Potion 26031
    [26031] = {health = {min = 800, max = 950}, vocations = {4}, text = 'knights', level = 200, emptyId = 7635},

    -- Ultimate Spirit Potion 26030
    [26030] = {health = {min = 400, max = 550}, mana = {min = 140, max = 250}, vocations = {3}, text = 'paladins', level = 130, emptyId = 7635},


    -- antidote potion
    [8474] = {antidote = true, emptyId = 7636},
    -- small health potion
    [8704] = {health = {min = 60, max = 85}, emptyId = 7636}
}

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))
-- 1000 - 100 due to exact condition timing. -100 doesn't hurt us, and players don't have reminding ~50ms exhaustion.

function onUse(player, item, fromPosition, target, toPosition, isHotkey)
    local potion = config[item.itemid]
    if not potion then
        return true
    end

    if target.itemid ~= 1 or target.type ~= THING_TYPE_PLAYER then
        return false
    end

    if (item:getId() >= 26029 and item:getId() <= 26031 and player:getStorageValue(warPrivate_storage) > 0) then
        player:say("This potion can't be used in War Anti-Entrosa!", TALKTYPE_MONSTER_SAY)
        return false
    end

    if player:getCondition(CONDITION_EXHAUST_HEAL) then
        player:sendTextMessage(MESSAGE_STATUS_SMALL, Game.getReturnMessage(RETURNVALUE_YOUAREEXHAUSTED))
        return true
    end

    if potion.antidote and not antidote:execute(target, Variant(target.uid)) then
        return false
    end

    if (potion.level and player:getLevel() < potion.level)
            or (type(potion.vocations) == 'table' and not isInArray(potion.vocations, player:getVocation():getBase():getId()))
            and not (player:getGroup():getId() >= 2) then
        player:say(string.format('This potion can only be consumed by %s of level %d or higher.', potion.text, potion.level), TALKTYPE_MONSTER_SAY)
        return true
    end

    if type(potion.health) == 'table' and not doTargetCombatHealth(0, target, COMBAT_HEALING, potion.health.min, potion.health.max, CONST_ME_MAGIC_BLUE) then
        return false
    end

    if type(potion.mana) == 'table' and not doTargetCombatMana(0, target, potion.mana.min, potion.mana.max, CONST_ME_MAGIC_BLUE) then
        return false
    end

    player:addAchievementProgress('Potion Addict', 100000)

    player:addCondition(exhaust)

    player:setStorageValue(38412, player:getStorageValue(38412)+1)
    doCreatureSayWithRadius(target, 'Aaaah...', TALKTYPE_MONSTER_SAY, 2, 2)

    local topParent = item:getTopParent()
    if topParent.isItem and (not topParent:isItem() or topParent.itemid ~= 460) then
        local parent = item:getParent()
        --if not parent:isTile() and (parent:addItem(potion.emptyId, 1) or topParent:addItem(potion.emptyId, 1)) then
             item:remove(1)
            return true
        --end
    end

    Game.createItem(potion.emptyId, 1, item:getPosition())
    item:remove(1)

    return true
end

4. also added this code on item.xml
Code:
        <item id="32255" article="an" name="super mana potion">
        <attribute key="weight" value="1" />
        <attribute key="description" value="This potion can only be consumed by sorcerers and druids of level 130 or higher." />
    </item>

When I use this mana potion on HK at an normal char I receive this msg:
1548365668608.png

When I use this mana potion at a game master chars its works
1548365724792.png

This potion works fine when I click on potion and click on my char
1548365752675.png



What I need to do to works with hotkeys?
 
Last edited:
-- super mana potion 32255
[26029] = {mana = {min = 2000, max = 2500}, vocations = {1, 2}, text = 'sorcerers and druids', level = 130, emptyId = 7635},

you just forgot to change the id rsrs , should be like this
-- super mana potion 32255
[32255] = {mana = {min = 2000, max = 2500}, vocations = {1, 2}, text = 'sorcerers and druids', level = 130, emptyId = 7635},
 
Last edited:
I saw that after I posted it.
but still not working with hotkeys...

When I use on normal char appear this msg: sorry, not possible
1548364736346.png

If I use it clicking on potion and on my char its works fine
1548365427365.png


but when I use on game master acc appear this:
1548364808168.png

also this is my itemeditor print

1548364987701.png
 
Last edited:
Back
Top