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

Lua Adding custom exhoust to potions [TFS 1.3]

Joined
Feb 16, 2017
Messages
53
Solutions
2
Reaction score
9
Hey, I did search whole forum for this but idk...
Can someone help me to add cooldown storage to potion's script or change that I can use potion and cast rune at the same time? [TFS 1.3]
Becouse sometimes potions cant be used for like 2s idk why. ( I did remove os.time check in player.cpp )

My config.lua: (Its set to 1000, becouse when I changed to 100 I can use like 10 potions/s)
timeBetweenActions = 1000
timeBetweenExActions = 1000

My potions.lua:

Lua:
local berserk = Condition(CONDITION_ATTRIBUTES)
berserk:setParameter(CONDITION_PARAM_TICKS, 10 * 60 * 1000)
berserk:setParameter(CONDITION_PARAM_SKILL_MELEE, 15)
berserk:setParameter(CONDITION_PARAM_SKILL_SHIELD, -25)
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, 5)
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, 15)
bullseye:setParameter(CONDITION_PARAM_SKILL_SHIELD, -20)
bullseye:setParameter(CONDITION_PARAM_BUFF_SPELL, true)

local potions = {
    [6558] = { -- concentrated demonic blood
        transform = {7588, 7589},
        effect = CONST_ME_DRAWBLOOD
    },
    [7439] = { -- berserk potion
        condition = berserk,
        vocations = {4, 8},
        effect = CONST_ME_MAGIC_RED,
        description = "Only knights may drink this potion.",
        text = "You feel stronger."
    },
    [7440] = { -- mastermind potion
        condition = mastermind,
        vocations = {1, 2, 5, 6},
        effect = CONST_ME_MAGIC_BLUE,
        description = "Only sorcerers and druids may drink this potion.",
        text = "You feel smarter."
        },
    [7443] = { -- bullseye potion
        condition = bullseye,
        vocations = {3, 7},
        effect = CONST_ME_MAGIC_GREEN,
        description = "Only paladins may drink this potion.",
        text = "You feel more accurate."
    },
    [7588] = { -- strong health potion
        health = {350, 500},
        level = 50,
        flask = 7634,
        description = "Level 50 or above may drink this fluid."
    },
    [7589] = { -- strong mana potion
        mana = {160, 260},
        level = 50,
        flask = 7634,
        description = "Level 50 or above may drink this fluid."
    },
    [7590] = { -- great mana potion
        mana = {235, 390},
        level = 100,
        flask = 7635,
        description = "Level 100 or above may drink this fluid."
    },
    [7591] = { -- great health potion
        health = {640, 860},
        level = 100,
        flask = 7635,
        description = "Level 100 or above may drink this fluid."
    },
    [7618] = { -- health potion
        health = {160, 230},
        flask = 7636
    },
    [7620] = { -- mana potion
        mana = {100, 160},
        flask = 7636
    },
    [8472] = { -- great spirit potion
        health = {260, 520},
        mana = {130, 260},
        vocations = {3, 7},
        level = 100,
        flask = 7635,
        description = "Only paladins of level 100 or above may drink this fluid."
    },
    [8473] = { -- ultimate health potion
        health = {820, 1060},
        vocations = {4, 8},
        level = 200,
        flask = 7635,
        description = "Only knights of level 200 or above may drink this fluid."
    },
    [8474] = { -- antidote potion
        antidote = true,
        flask = 7636,
    },
    [8704] = { -- small health potion
        health = {80, 120},
        flask = 7636,
    },
    [26029] = { -- ultimate mana potion
        mana = {530, 720},
        vocations = {1, 2, 5, 6},
        level = 200,
        flask = 7635,
        description = "Only druids and sorcerers of level 200 or above may drink this fluid."
    },
    [26030] = { -- ultimate spirit potion
        health = {620, 670},
        mana = {250, 400},
        vocations = {3, 7},
        level = 200,
        flask = 7635,
        description = "Only paladins of level 200 or above may drink this fluid."
    },
    [26031] = { -- supreme health potion
        health = {970, 1250},
        vocations = {4, 8},
        level = 300,
        flask = 7635,
        description = "Only knights of level 300 or above may drink this fluid."
    }
}

function onUse(player, item, fromPosition, target, toPosition, isHotkey)
    if type(target) == "userdata" and not target:isPlayer() then
        return false
    end

    local potion = potions[item:getId()]
    if 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_MONSTER_SAY)
        return true
    end

    if potion.condition then
        player:addCondition(potion.condition)
        player:say(potion.text, TALKTYPE_MONSTER_SAY)
        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(0, target, COMBAT_HEALING, potion.health[1], potion.health[2])
        end

        if potion.mana then
            doTargetCombat(0, target, COMBAT_MANADRAIN, potion.mana[1], potion.mana[2])
        end

        if potion.antidote then
            target:removeCondition(CONDITION_POISON)
        end

        player:addAchievementProgress("Potion Addict", 100000)
        target:say("Aaaah...", TALKTYPE_MONSTER_SAY)
        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

Much love for help <3
 
Back
Top