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

Spell New Ultimate Explosion 1.2 & Poison Storm

Exedion

Active Member
Joined
Jun 11, 2007
Messages
628
Reaction score
30
Well i'm making new spells for my serv, and i remake a new animated version of the most powerfull spells what cipsoft made sometime...

Code:
local arr = {

{
{0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},
{0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
{0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
{0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},
},

{
{0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},
{0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0},
{0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0},
{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
{1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1},
{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
{0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0},
{0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0},
{0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}
}
}

local combat = {}
for i = 1, 3 do
        combat = createCombatObject()
end

        setCombatArea(combat[1], createCombatArea(arr[1]))
        setCombatParam(combat[1], COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
        setCombatParam(combat[1], COMBAT_PARAM_BLOCKSHIELD, false)
        setCombatParam(combat[1], COMBAT_PARAM_BLOCKARMOR, false)
        setCombatArea(combat[2], createCombatArea(arr[2]))
        setCombatParam(combat[2], COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
        setCombatParam(combat[3], COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)

function spellCallbackUltimate(param)
    if param.count > 0 or math.random(0, 1) == 1 then
        doSendMagicEffect(param.pos, CONST_ME_EXPLOSIONHIT)
        addEvent(doSendMagicEffect, 50, param.pos, CONST_ME_EXPLOSIONAREA)
    end

    if(param.count < 3) then
        param.count = param.count + 1
        addEvent(spellCallbackUltimate, math.random(0, 500), param)
    end
end

function onTargetTile(cid, pos)
    local param = {}
    param.cid = cid
    param.pos = pos
    param.count = 0
    spellCallbackUltimate(param)
end

function onTargetTile2(cid, pos)
    doCombat(cid, combat[3], positionToVariant(pos))
end

function onGetFormulaValues(cid, level, maglevel)
    local min = -((level/5)+(maglevel*15))
    local max = -((level/5)+(maglevel*18))
    return min, max
end

setCombatCallback(combat[1], CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
setCombatCallback(combat[1], CALLBACK_PARAM_TARGETTILE, "onTargetTile")
setCombatCallback(combat[2], CALLBACK_PARAM_TARGETTILE, "onTargetTile2")

function onCastSpell(cid, var)
    doCombat(cid, combat[1], var)
    doCombat(cid, combat[2], var)
    return true
end

*1.0 -> Renew Animated Spell
*1.1 -> New Balanced Formula and animation time
*1.2 -> Fixed Animations (one are bugged and add ring animation for make and idea of the spell range.

Lua:
local arr = {

{
{0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},
{0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
{0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
{0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},
},

{
{0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},
{0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0},
{0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0},
{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
{1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1},
{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
{0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0},
{0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0},
{0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}
}

}

local combat = {}
for i = 1, 3 do
        combat = createCombatObject()
end

        setCombatArea(combat[1], createCombatArea(arr[1]))
        setCombatParam(combat[1], COMBAT_PARAM_TYPE, COMBAT_POISONDAMAGE)
        setCombatArea(combat[2], createCombatArea(arr[2]))
        setCombatParam(combat[2], COMBAT_PARAM_EFFECT, CONST_ME_POISONAREA)

function spellCallbackStorm(param)
    if param.count > 0 or math.random(0, 1) == 1 then
        doSendMagicEffect(param.pos, CONST_ME_HITBYPOISON)
        doSendDistanceShoot({ x = param.pos.x - 7, y = param.pos.y - 7, z = param.pos.z}, param.pos, CONST_ANI_POISON)
        addEvent(doSendMagicEffect, 50, param.pos, CONST_ME_GREEN_RINGS)
    end

    if(param.count < 3) then
        param.count = param.count + 1
        addEvent(spellCallbackStorm, math.random(0, 500), param)
    end
end

function onTargetTile(cid, pos)
    local param = {}
    param.cid = cid
    param.pos = pos
    param.count = 0
    spellCallbackStorm(param)
end

function onTargetTile2(cid, pos)
    doCombat(cid, combat[3], positionToVariant(pos))
end

function onGetFormulaValues(cid, level, maglevel)
    local min = -((level/5)+(maglevel*15))
    local max = -((level/5)+(maglevel*18))
    return min, max
end

setCombatCallback(combat[1], CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
setCombatCallback(combat[1], CALLBACK_PARAM_TARGETTILE, "onTargetTile")
setCombatCallback(combat[2], CALLBACK_PARAM_TARGETTILE, "onTargetTile2")

function onCastSpell(cid, var)
    doCombat(cid, combat[1], var)
    doCombat(cid, combat[2], var)
    return true
end

*1.0 -> Almost features of UE(legends in tibia says this spells have the same force of UE, no true but fun ^^), nice poisoned rain effect.

here a short video how look the animation.

YouTube - New Ultimate Explosion 1.2 & Poison Storm

Enjoy! please, rep++
 
Last edited:
you can make a change to me, based in this formulavalues:

function onGetFormulaValues(cid, level, maglevel)
local min = -((level/5)+(maglevel*8))
local max = -((level/5)+(maglevel*9))
return min, max
end
setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
 
you can make a change to me, based in this formulavalues:

function onGetFormulaValues(cid, level, maglevel)
local min = -((level/5)+(maglevel*8))
local max = -((level/5)+(maglevel*9))
return min, max
end
setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

and this work with physical damage? when i make a formula with physical damage for sorc/druids, they hit weak
 
and this work with physical damage? when i make a formula with physical damage for sorc/druids, they hit weak

function onGetFormulaValues(cid, level, maglevel)

this is the formula of hell's core spell.
 
Dude thanks, I was looking for a poison spell like that. Nice release!

Edit:
Where is the poison storm spell? They are both the same spells o.0.
 
Last edited:
How I can make Poison spell heal, not atk?

I changed:
Code:
setCombatParam(combat[1], COMBAT_PARAM_TYPE, COMBAT_POISONDAMAGE)
with
Code:
setCombatParam(combat[1], COMBAT_PARAM_TYPE, COMBAT_HEALING)
And don't works :D Help me plax!11!!!11!
 
Back
Top