• 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 Help updating spell

Sunset

Member
Joined
Jun 3, 2009
Messages
26
Reaction score
8
Location
Uruguay
Found this spell:

Lua:
function onCastSpell(player, var)
    local cPos = getCreaturePosition(getCreatureTarget(cid))
    
    local hp = player:getMaxHealth()
    local basedmg = ((level / 5) + (maglevel * 2.3) + 200)
    local hppercent = 10
    local totaldmg = basedmg+(hp/100)*hppercent
    
    if hp > (hp/100)*hppercent then
        doSendDistanceShoot(getCreaturePosition(cid), cPos, CONST_ANI_FIRE)
        doTargetCombatHealth(cid, getCreatureTarget(cid), COMBAT_FIREDAMAGE, -totaldmg, -totaldmg, CONST_ME_FIREAREA)
        player:addHealth(cid, -(hp/100)*hppercent)
    else
    return false
    end
    return true
    end

That I need updated for tfs 1.3 for a 10.98 project.

Can anyone help me out with this? I've already tried using modern spells as reference but couldn't manage to do it.
Help is greatly appreciated!

Credits to the spell creator:
 
Solution
Lua:
local config = {
    -- Requirements
    level = 100,
    mana = 0,
    manaPercent = 0,
    healthPercent = 10,
    vocations = {"sorcerer", "master sorcerer"},
    spellId = 4,
    cooldown = 1000,
    groupCooldown = 1000,
    group = "attack",
    words = "exevo health",
    name = "Extreme Health Damage",
    premium = true,

    -- Damage Formula
    divLevel = 1,
    multiplierMagicLevel = 1,
    baseDamage = 200,
    getHppc = function (player, percent) return (player:getMaxHealth() / 100) * percent end
}

local combat = Combat()
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_SLEEP)
combat:setArea(createCombatArea(AREA_CIRCLE3X3))

function onTargetCreature(player, target)
    local removeHealth = config.getHppc(player...
data/scripts/exevo_health.lua
Lua:
local config = {
    -- Requirements
    level = 100,
    mana = 0,
    manaPercent = 0,
    healthPercent = 10,
    vocations = {"sorcerer", "master sorcerer"},
    spellId = 4,
    cooldown = 1000,
    groupCooldown = 1000,
    group = "attack",
    words = "exevo health",
    name = "Extreme Health Damage",
    premium = true,

    -- Damage Formula
    divLevel = 1,
    multiplierMagicLevel = 1,
    baseDamage = 200
}

local spell = Spell("instant")
function spell.onCastSpell(player, variant)
    local target = player:getTarget()
    if not target then
        player:sendCancelMessage("No target!")
        return false
    end
   
    local maxHealth = player:getMaxHealth()
    local removeHealth = (maxHealth / 100 ) * config.healthPercent
    if removeHealth >= player:getHealth() then
        player:sendCancelMessage("You no have health.")
        return false
    end

    local baseDmg = ((player:getLevel() / config.divLevel) + (player:getMagicLevel() * config.multiplierMagicLevel) + config.baseDamage)
    local totalDmg = baseDmg + removeHealth
    player:getPosition():sendDistanceEffect(target:getPosition(), CONST_ANI_FIRE)
    doTargetCombat(player, target, COMBAT_FIREDAMAGE, -totalDmg, -totalDmg, CONST_ME_FIREAREA)
    player:addHealth(-removeHealth)
    return true
end

spell:name(config.name)
spell:words(config.words)
spell:group(config.group)
spell:vocation(unpack(config.vocations))
spell:id(config.spellId)
spell:cooldown(config.cooldown)
spell:groupCooldown(config.groupCooldown)
spell:level(config.level)
spell:mana(config.mana)
spell:manaPercent(config.manaPercent)
spell:isPremium(config.premium)
spell:register()
 
Hey! This worked like a charm! Thank you very much.
I don't want to abuse your generosity, but is there any way this can be done as an aoe spell too? Like exori mas?
Thanks.
 
Lua:
local config = {
    -- Requirements
    level = 100,
    mana = 0,
    manaPercent = 0,
    healthPercent = 10,
    vocations = {"sorcerer", "master sorcerer"},
    spellId = 4,
    cooldown = 1000,
    groupCooldown = 1000,
    group = "attack",
    words = "exevo health",
    name = "Extreme Health Damage",
    premium = true,

    -- Damage Formula
    divLevel = 1,
    multiplierMagicLevel = 1,
    baseDamage = 200,
    getHppc = function (player, percent) return (player:getMaxHealth() / 100) * percent end
}

local combat = Combat()
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_SLEEP)
combat:setArea(createCombatArea(AREA_CIRCLE3X3))

function onTargetCreature(player, target)
    local removeHealth = config.getHppc(player, config.healthPercent)
    local baseDmg = ((player:getLevel() / config.divLevel) + (player:getMagicLevel() * config.multiplierMagicLevel) + config.baseDamage)
    local totalDmg = baseDmg + removeHealth
    player:getPosition():sendDistanceEffect(target:getPosition(), CONST_ANI_FIRE)
    doTargetCombat(player, target, COMBAT_FIREDAMAGE, -totalDmg, -totalDmg, CONST_ME_FIREAREA)
end

combat:setCallback(CALLBACK_PARAM_TARGETCREATURE, "onTargetCreature")

local spell = Spell("instant")
function spell.onCastSpell(player, variant)
    local removeHealth = config.getHppc(player, config.healthPercent)
    if removeHealth >= player:getHealth() then
        player:sendCancelMessage("You no have health.")
        return false
    end

    return combat:execute(player, variant) and player:addHealth(-removeHealth)
end

spell:name(config.name)
spell:words(config.words)
spell:group(config.group)
spell:vocation(unpack(config.vocations))
spell:id(config.spellId)
spell:cooldown(config.cooldown)
spell:groupCooldown(config.groupCooldown)
spell:level(config.level)
spell:mana(config.mana)
spell:manaPercent(config.manaPercent)
spell:isPremium(config.premium)
spell:register()

GIF 01-12-2021 07-37-04 p. m..gif
 
Solution
Back
Top