• 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 Spell damage formula

sick

Member
Joined
Feb 5, 2009
Messages
258
Reaction score
6
Location
Lithuania, Vilnius
Hello,

This is Utori San based script, instead of costant 150 damage each turn I'd like it to scale based on your level and magic level. Could someone assist please :)

Lua:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SMALLHOLY)
local condition = createConditionObject(CONDITION_DAZZLED)
setConditionParam(condition, CONDITION_PARAM_DELAYED, 1)
addDamageCondition(condition, math.random(7,11), 3000, -150)
setCombatCondition(combat, condition)
function onCastSpell(cid, var)
    return doCombat(cid, combat, var)
end

function onCastSpell(cid, var)
        if exhaustion.check(cid, 23005) == false then
                exhaustion.set(cid, 23005, 15)
                return doCombat(cid, combat, var)
        else
                doPlayerSendCancel(cid, "Cooldown[" ..exhaustion.get(cid, 23005).."]")
        end
end
 
Code:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SMALLHOLY)
setAttackFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 5, 5, 4, 6)
local condition = createConditionObject(CONDITION_DAZZLED)
setConditionParam(condition, CONDITION_PARAM_DELAYED, 1)
setCombatCondition(combat, condition)
function onCastSpell(cid, var)
    return doCombat(cid, combat, var)
end
function onCastSpell(cid, var)
        if exhaustion.check(cid, 23005) == false then
                exhaustion.set(cid, 23005, 15)
                return doCombat(cid, combat, var)
        else
                doPlayerSendCancel(cid, "Cooldown[" ..exhaustion.get(cid, 23005).."]")
        end
end

You must balance it as you want ;p
 
Code:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SMALLHOLY)
setAttackFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 5, 5, 4, 6)
local condition = createConditionObject(CONDITION_DAZZLED)
setConditionParam(condition, CONDITION_PARAM_DELAYED, 1)
setCombatCondition(combat, condition)
function onCastSpell(cid, var)
    return doCombat(cid, combat, var)
end
function onCastSpell(cid, var)
        if exhaustion.check(cid, 23005) == false then
                exhaustion.set(cid, 23005, 15)
                return doCombat(cid, combat, var)
        else
                doPlayerSendCancel(cid, "Cooldown[" ..exhaustion.get(cid, 23005).."]")
        end
end

You must balance it as you want ;p
Thank you, could you edit it as well to repeat damage ticks. According to this part:

addDamageCondition(condition, math.random(7,11), 3000, -150)

Currently it shoots just one hit and it supposed to tick from 7 to 11 times.

Thanks a lot in advance!
 
add this to your global functions lib
Code:
function createCondition(dmg, ticks, delay, condition)
    ticks = ticks ~= nil and ticks or 0
    delay = delay ~= nil and delay or 1000
    condition = condition ~= nil and condition or "CONDITION_POISON"
    local condition = createConditionObject(condition)
    setConditionParam(condition, CONDITION_PARAM_DELAYED, 1)
    if ticks > 0 then
        addDamageCondition(condition, ticks, delay, -dmg)
    else
        for i=dmg, 0, -1 do
            addDamageCondition(condition, 1, delay, -i)
        end
    end
    return condition
end

then you use it inside onCastSpell like this
condition = createCondition(dmg, math.random(7,11), 3000, CONDITION_DAZZLED)
doAddCondition(var, condition)
 
add this to your global functions lib
Code:
function createCondition(dmg, ticks, delay, condition)
    ticks = ticks ~= nil and ticks or 0
    delay = delay ~= nil and delay or 1000
    condition = condition ~= nil and condition or "CONDITION_POISON"
    local condition = createConditionObject(condition)
    setConditionParam(condition, CONDITION_PARAM_DELAYED, 1)
    if ticks > 0 then
        addDamageCondition(condition, ticks, delay, -dmg)
    else
        for i=dmg, 0, -1 do
            addDamageCondition(condition, 1, delay, -i)
        end
    end
    return condition
end

then you use it inside onCastSpell like this
condition = createCondition(dmg, math.random(7,11), 3000, CONDITION_DAZZLED)
doAddCondition(var, condition)

Where the hell are those global functions.lib :D i don't think my server has one or i can't find it lol
 
Back
Top