• 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 How Edit Spell

Retired

New Member
Joined
Apr 19, 2009
Messages
233
Reaction score
1
Hello,
How edit spell "Rage of the skies" (UE) that work like Ultimate Healing Rune,based on level ond magic level formula.


I need this formula for my UE spell,how it add ??

Code:
function onGetFormulaValues(cid, level, maglevel)
    min = (level * 3.9 + maglevel * 2.4) * 1.1
    max = (level * 4.1 + maglevel * 3.1) * 1.7
    if min < 250 then
        min = 250
    end


Rage of the skies:
Code:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_BIGCLOUDS)
setAttackFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 5, 5, 5, 12)

local area = createCombatArea(AREA_CROSS6X6)
setCombatArea(combat, area)

function onCastSpell(cid, var)
    return doCombat(cid, combat, var)
end

Ultimate Healing Rune:

Code:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false)
setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, true)
setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)

function onGetFormulaValues(cid, level, maglevel)
    min = (level * 3.9 + maglevel * 2.4) * 1.1
    max = (level * 4.1 + maglevel * 3.1) * 1.7
    if min < 250 then
        min = 250
    end
    return min, max
end

setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

function onCastSpell(cid, var)
    if isPlayer(cid) == TRUE then
        if exhaustion.check(cid, 30031) then
            return FALSE
        else
            return doRemoveCondition(cid, CONDITION_PARALYZE), doCombat(cid, combat, var)
        end
    else
        return doRemoveCondition(cid, CONDITION_PARALYZE), doCombat(cid, combat, var)
    end
end
 
Last edited:
Instead of
Code:
setAttackFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 5, 5, 5, 12)
You need to paste onGetFormulaValues and add callback as it is done in Ultimate Healing Rune script.
 
Code:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_BIGCLOUDS)

function onGetFormulaValues(cid, level, maglevel)
min = (level * 3.9 + maglevel * 2.4) * 1.1
max = (level * 4.1 + maglevel * 3.1) * 1.7
if min < 250 then
min = 250
end
return min, max
end

setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

function onCastSpell(cid, var)
if isPlayer(cid) == TRUE then
if exhaustion.check(cid, 30031) then
return FALSE
else
return doRemoveCondition(cid, CONDITION_PARALYZE), doCombat(cid, combat, var)
end
else
return doRemoveCondition(cid, CONDITION_PARALYZE), doCombat(cid, combat, var)
end
end
 
You are missing area lines. You had it in your first script.

Edit
Also, the following thingis not needed, if you dont want to use it:
Code:
if min < 250 then
min = 250
end

And last function can be simply this:
Code:
function onCastSpell(cid, var)
    return doCombat(cid, combat, var)
end

Last thing, add minus before sending min and max:
Code:
return -min, -max
 
Last edited:
Now i have :

Code:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_BIGCLOUDS)

function onGetFormulaValues(cid, level, maglevel)
    min = (level * 3.9 + maglevel * 2.4) * 1.1
    max = (level * 4.1 + maglevel * 3.1) * 1.7
    if min < 250 then
        min = 250
    end
    return min, max
end

local area = createCombatArea(AREA_CROSS6X6)
setCombatArea(combat, area)

function onCastSpell(cid, var)
    return doCombat(cid, combat, var)
end

But no domage
 
Now i have,buut still no domage

Code:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_BIGCLOUDS)

function onGetFormulaValues(cid, level, maglevel)
    min = (level * 3.9 + maglevel * 2.4) * 1.1
    max = (level * 4.1 + maglevel * 3.1) * 1.7
    return -min, -max
end

local area = createCombatArea(AREA_CROSS6X6)
setCombatArea(combat, area)

function onCastSpell(cid, var)
    return doCombat(cid, combat, var)
end
 
It was in your script before:
Code:
if min < 400 then
        min = 400
    end
You need to add it in the right place.
Or you can do it other way: set your formula for min "blahblahblah" + 400. This way it will be always more than 400, example:
Code:
min = (level * 3.9 + maglevel * 2.4) * 1.1 + 400
 
Back
Top