• 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!

How much do you think potions should heal?

samih95

Member
Joined
Dec 11, 2011
Messages
95
Reaction score
6
Im working at my potions and dont know how i should make them "balanced". This is the current stages Im using.

Code:
<stages>
    <world id="0" multiplier="1">
        <stage minlevel="1" maxlevel="150" multiplier="500"/>
        <stage minlevel="151" maxlevel="250" multiplier="250"/>
        <stage minlevel="251" maxlevel="300" multiplier="100"/>
        <stage minlevel="301" maxlevel="401" multiplier="50"/>
        <stage minlevel="401" maxlevel="500" multiplier="25"/>      
        <stage minlevel="501" maxlevel="600" multiplier="10"/>  
        <stage minlevel="601" multiplier="3"/>
    </world>
</stages>

And here is the potions.lua

Code:
local config = {
    removeOnUse = "no",
    splashable = "no",
    realAnimation = "no", -- make text effect visible only for players in range 1x1
    healthMultiplier = 1.0,
    manaMultiplier = 1.0
}

config.removeOnUse = getBooleanFromString(config.removeOnUse)
config.splashable = getBooleanFromString(config.splashable)
config.realAnimation = getBooleanFromString(config.realAnimation)

local POTIONS = {
    [8704] = {empty = 7636, splash = 2, health = {50, 150}, level = 1, vocations = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, vocStr = "sorcerers, druids, knights and paladins"}, -- small health potion
    [7618] = {empty = 7636, splash = 2, health = {230, 280}, level = 1, vocations = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, vocStr = "sorcerers, druids, knights and paladins"}, -- health potion
    [7588] = {empty = 7634, splash = 2, health = {350, 500}, level = 50, vocations = {3, 4, 7, 8, 12, 11}, vocStr = "knights and paladins"}, -- strong health potion
    [7591] = {empty = 7635, splash = 2, health = {700, 900}, level = 80, vocations = {4, 8, 12}, vocStr = "knights"}, -- great health potion
    [8473] = {empty = 7635, splash = 42, health = {1200, 1800}, level = 130, vocations = {4, 8}, vocStr = "knights"}, -- ultimate health potion
  
    [7620] = {empty = 7636, splash = 7, mana = {150, 250}, level = 8, vocations = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, vocStr = "sorcerers, druids, knights and paladins"}, -- mana potion
    [7589] = {empty = 7634, splash = 7, mana = {280, 400}, level = 50, vocations = {1, 2, 3, 5, 6, 7, 9, 10, 11}, vocStr = "sorcerers, druids and paladins"}, -- strong mana potion
    [7590] = {empty = 7635, splash = 7, mana = {640, 1250}, level = 80, vocations = {1, 2, 5, 6, 9, 10}, vocStr = "sorcerers and druids"}, -- great mana potion

    [8472] = {empty = 7635, splash = 3, health = {550, 900}, mana = {310, 710}, level = 80, vocations = {3, 7, 11}, vocStr = "paladins"} -- great spirit potion
}

local exhaust = createConditionObject(CONDITION_EXHAUST)
setConditionParam(exhaust, CONDITION_PARAM_TICKS, (getConfigInfo('timeBetweenExActions') - 100))

function onUse(cid, item, fromPosition, itemEx, toPosition)
    local potion = POTIONS[item.itemid]
    if(not potion) then
        return false
    end

    if(not isPlayer(itemEx.uid)) then
        if(not config.splashable) then
            return false
        end

        if(toPosition.x == CONTAINER_POSITION) then
            toPosition = getThingPos(item.uid)
        end

        doDecayItem(doCreateItem(2016, potion.splash, toPosition))
        doTransformItem(item.uid, potion.empty)
        return true
    end

    if(hasCondition(cid, CONDITION_EXHAUST_HEAL)) then
        doPlayerSendDefaultCancel(cid, RETURNVALUE_YOUAREEXHAUSTED)
        return true
    end

    if(((potion.level and getPlayerLevel(cid) < potion.level) or (potion.vocations and not isInArray(potion.vocations, getPlayerVocation(cid)))) and
        not getPlayerCustomFlagValue(cid, PlayerCustomFlag_GamemasterPrivileges))
    then
        doCreatureSay(itemEx.uid, "Only " .. potion.vocStr .. (potion.level and (" of level " .. potion.level) or "") .. " or above may drink this fluid.", TALKTYPE_ORANGE_1)
        return true
    end

    local health = potion.health
    if(health and not doCreatureAddHealth(itemEx.uid, math.ceil(math.random(health[1], health[2]) * config.healthMultiplier))) then
        return false
    end

    local mana = potion.mana
    if(mana and not doPlayerAddMana(itemEx.uid, math.ceil(math.random(mana[1], mana[2]) * config.manaMultiplier))) then
        return false
    end

    doSendMagicEffect(getThingPos(itemEx.uid), CONST_ME_MAGIC_BLUE)
    if(not realAnimation) then
        doCreatureSay(itemEx.uid, "Aaaah...", TALKTYPE_ORANGE_1)
    else
        for i, tid in ipairs(getSpectators(getCreaturePosition(cid), 1, 1)) do
            if(isPlayer(tid)) then
                doCreatureSay(itemEx.uid, "Aaaah...", TALKTYPE_ORANGE_1, false, tid)
            end
        end
    end

    doAddCondition(cid, exhaust)
    if(not potion.empty or config.removeOnUse) then
        doRemoveItem(item.uid)
        return true
    end

local aidd =
{
  min = 10901,
   max = 10911
    }
     if item.actionid < aidd.min then
      doItemSetAttribute(item.uid, "actionid", aidd.min)
       elseif item.actionid >= aidd.min and item.actionid <= aidd.max then
      doItemSetAttribute(item.uid, "actionid", getItemAttribute(item.uid, "actionid")+1)
     elseif item.actionid >= aidd.max then
    doTransformItem(item.uid, potion.empty)
   return TRUE
  end
return true
end

So how should i make them not over powered but not to low? Give me some examples of what you would like.
 
Potions in their current instant-heal low-exhaust form are fucking abhorrent.
I'd rather slit my wrists than play another second of any game where spamming potions is a key aspect.

In my outspoken opinion, potions should have the following constraints:
- heal over time (e.g. mana potion restores 75-125 mana over 5 seconds)
- long global potion exhaust (e.g. only one fluid/potion can be drank every 20 seconds)
- an overriding maximum amount of fluid (à la food/full) - referred to as 'toxicity' in some games e.g. Witcher

Game content and rates would then naturally be shaped around this fact, knowing that it would be a significantly more difficult game.

But hey, that's just me and I don't play anyway - so take that for what it's worth :p
 
Those values are just way too high. Do you have custom monsters or equipment or something that requires these high values from potions? If you don't have any monsters or quests too overpowered, then these are the values I'd recommend:

Code:
local POTIONS = {
    [8704] = {empty = 7636, splash = 2, health = {40, 90}, level = 1, vocations = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, vocStr = "sorcerers, druids, knights and paladins"}, -- small health potion
    [7618] = {empty = 7636, splash = 2, health = {120, 190}, level = 1, vocations = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, vocStr = "sorcerers, druids, knights and paladins"}, -- health potion
    [7588] = {empty = 7634, splash = 2, health = {250, 390}, level = 50, vocations = {3, 4, 7, 8, 12, 11}, vocStr = "knights and paladins"}, -- strong health potion
    [7591] = {empty = 7635, splash = 2, health = {550, 750}, level = 80, vocations = {4, 8, 12}, vocStr = "knights"}, -- great health potion
    [8473] = {empty = 7635, splash = 42, health = {1000, 1300}, level = 130, vocations = {4, 8}, vocStr = "knights"}, -- ultimate health potion

    [7620] = {empty = 7636, splash = 7, mana = {90, 130}, level = 8, vocations = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, vocStr = "sorcerers, druids, knights and paladins"}, -- mana potion
    [7589] = {empty = 7634, splash = 7, mana = {180, 290}, level = 50, vocations = {1, 2, 3, 5, 6, 7, 9, 10, 11}, vocStr = "sorcerers, druids and paladins"}, -- strong mana potion
    [7590] = {empty = 7635, splash = 7, mana = {450, 650}, level = 80, vocations = {1, 2, 5, 6, 9, 10}, vocStr = "sorcerers and druids"}, -- great mana potion

    [8472] = {empty = 7635, splash = 3, health = {450, 590}, mana = {250, 340}, level = 80, vocations = {3, 7, 11}, vocStr = "paladins"} -- great spirit potion
}

You should probably play around these values, since they're not tested on your server with your (possibly) custom content. I still think these values I provided with are way too high. But apparently you want a bit high values so hope they come to use!
 
Those values are just way too high. Do you have custom monsters or equipment or something that requires these high values from potions? If you don't have any monsters or quests too overpowered, then these are the values I'd recommend:

Code:
local POTIONS = {
    [8704] = {empty = 7636, splash = 2, health = {40, 90}, level = 1, vocations = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, vocStr = "sorcerers, druids, knights and paladins"}, -- small health potion
    [7618] = {empty = 7636, splash = 2, health = {120, 190}, level = 1, vocations = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, vocStr = "sorcerers, druids, knights and paladins"}, -- health potion
    [7588] = {empty = 7634, splash = 2, health = {250, 390}, level = 50, vocations = {3, 4, 7, 8, 12, 11}, vocStr = "knights and paladins"}, -- strong health potion
    [7591] = {empty = 7635, splash = 2, health = {550, 750}, level = 80, vocations = {4, 8, 12}, vocStr = "knights"}, -- great health potion
    [8473] = {empty = 7635, splash = 42, health = {1000, 1300}, level = 130, vocations = {4, 8}, vocStr = "knights"}, -- ultimate health potion

    [7620] = {empty = 7636, splash = 7, mana = {90, 130}, level = 8, vocations = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, vocStr = "sorcerers, druids, knights and paladins"}, -- mana potion
    [7589] = {empty = 7634, splash = 7, mana = {180, 290}, level = 50, vocations = {1, 2, 3, 5, 6, 7, 9, 10, 11}, vocStr = "sorcerers, druids and paladins"}, -- strong mana potion
    [7590] = {empty = 7635, splash = 7, mana = {450, 650}, level = 80, vocations = {1, 2, 5, 6, 9, 10}, vocStr = "sorcerers and druids"}, -- great mana potion

    [8472] = {empty = 7635, splash = 3, health = {450, 590}, mana = {250, 340}, level = 80, vocations = {3, 7, 11}, vocStr = "paladins"} -- great spirit potion
}

You should probably play around these values, since they're not tested on your server with your (possibly) custom content. I still think these values I provided with are way too high. But apparently you want a bit high values so hope they come to use!

Thank you @Kaspar for your answer! The server i downloaded from the beginning was server with much custom content and a much higher exp stage so i guess thats why the potions was to OP. The problem is that it was some years ago i played so i simply forgot how much you should be able to heal with the different potions so i just let it be the same until now, when i found out that pvp is impossible with theese rates.

I will try out your rates and work around with them a little bit to see if it fits my server better!
 
The only thing i was thinking about, since the origin OT that i started working with had manarunes. I dont like manarunes so i deleted them. A elite knight in lvl 400-500 still heals mana with a normal mana potion isnt it kinda low to heal maximum of 130 mana?
 
These are the default values I used for my war project - they might be of use to you.
The 'H' value refers to the highest possible restore, the 'L' value the lowest.

extract from war_config.lua:
Code:
..
    smhpL = 60    -- Small health potion. These values are the lowest and highest possible restores.
    smhpH = 90

    hpL = 125    -- Health potion
    hpH = 175

    mpL = 75    -- Mana potion
    mpH = 125

    shpL = 250    -- Strong health potion
    shpH = 350

    smpL = 115    -- Strong mana potion
    smpH = 185

    gsphL = 270    -- Great spirit potion (health)
    gsphH = 330
    gspmL = 130    -- Great spirit potion (mana)
    gspmH = 170

    ghpL = 425    -- Great health potion
    ghpH = 575

    gmpL = 150    -- Great mana potion
    gmpH = 250

    uhpL = 650    -- Ultimate health potion
    uhpH = 850
..
 
Just to make sure i understand this correct.

Code:
[7590] = {empty = 7635, splash = 7, mana = {450, 650}, level = 80, vocations = {1, 2, 5, 6, 9, 10}, vocStr = "sorcerers and druids"}, -- great mana potion

Is this the values for a level 80? So if im 350 theese values are stronger or am i wrong?


@Kaspar I'm currently trying with your values and i have some problems with a ( 200ek 80/80 7mlvl) blocking 2 grim reapers and almost dying when using UHP. So I'm considering to higher the value of UHP or is this normal?
 
Ah I was quite sure it was like you said @mdwilliams

I dont know really how to solve it this way, maybe ill have to make another potion for 300+ for mages and eks?

Since its not fair that a level 130ek heals as much as a 5-600ek in a battle or is it?
The same goes with mages lvl 80ms heals as much as a 500ms with manas?
 
I don't think that potion restore values should scale on level - it just doesn't make enough sense.
In your scenario I'd suggest having a stronger potion alternative, restricted to players of a higher level
Note that in real Tibia, Cipsoft addressed this by doing exactly that - introducing the ultimate health/mana/spirit potions (ref).
 
I don't think that potion restore values should scale on level - it just doesn't make enough sense.
In your scenario I'd suggest having a stronger potion alternative, restricted to players of a higher level
Note that in real Tibia, Cipsoft addressed this by doing exactly that - introducing the ultimate health/mana/spirit potions (ref).

Olala, I havent seen that they added "supreme" health pot etc! Thank you I will try to implement this to my server =)
 
Back
Top