• 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 [TFS 1.2] Ultimate Eplosion & Poison Storm

Exedion

Active Member
Joined
Jun 11, 2007
Messages
628
Reaction score
30
Hello, i remake my olds scripts based in deprecated but legendarys spells of tibia

Only one thing: i need help to add poison condition to poison storm's rain, but i get error and TFS crash, please some help to fix (i will include credits)

Ultimate Eplosion:
Code:
function spellCallbackUE(cid, position, count)
    if Creature(cid) then
        if count > 0 or math.random(0, 1) == 1 then
            position:sendMagicEffect(CONST_ME_FIREAREA)
            doAreaCombatHealth(cid, COMBAT_PHYSICALDAMAGE, position, 0, -50, -100, CONST_ME_EXPLOSIONHIT)
        end
        if count < 1 then
            count = count + 1
            addEvent(spellCallbackUE, math.random(500, 1000), cid, position, count)
        end
    end
end

function onTargetTile(creature, position)
    spellCallbackUE(creature:getId(), position, 0)
end

local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONAREA)
combat:setArea(createCombatArea(AREA_CIRCLE6X6))

function onGetFormulaValues(player, level, maglevel)
    local min = (level / 5) + (maglevel * 4) + 225
    local max = (level / 5) + (maglevel * 10) + 300
    return -min, -max
end

combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
combat:setCallback(CALLBACK_PARAM_TARGETTILE, "onTargetTile")

function onCastSpell(creature, variant, isHotkey)
    return combat:execute(creature, variant)
end

Poison Storm Bugged Edition(you can deleted the condition part and will work):
Code:
local poison = Condition(CONDITION_POISON)
poison:setParameter(CONDITION_PARAM_DELAYED, true)
poison:setParameter(CONDITION_PARAM_MINVALUE, 20)
poison:setParameter(CONDITION_PARAM_MAXVALUE, 70)
poison:setParameter(CONDITION_PARAM_STARTVALUE, 50)
poison:setParameter(CONDITION_PARAM_TICKINTERVAL, 6000)
poison:setParameter(CONDITION_PARAM_FORCEUPDATE, true)

function spellCallbackStorm(cid, position, count)
    local origin = Position(position.x - 8, position.y - 8, position.z)
    if Creature(cid) then
        if count > 0 or math.random(0, 1) == 1 then
            position:sendMagicEffect(CONST_ME_GREEN_RINGS)
            origin:sendDistanceEffect(position, CONST_ANI_POISON)
            doAreaCombatCondition(cid, position, 0, poison, 0)
        end
        if count < 2 then
            count = count + 1
            addEvent(spellCallbackStorm, math.random(500, 2000), cid, position, count)
        end
    end
end

function onTargetTile(creature, position)
    spellCallbackStorm(creature:getId(), position, 0)
end

local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_GREENSMOKE)
combat:setArea(createCombatArea(AREA_CIRCLE6X6))

function onGetFormulaValues(player, level, maglevel)
    local min = (level / 5) + (maglevel * 4) + 225
    local max = (level / 5) + (maglevel * 10) + 300
    return -min, -max
end

combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
combat:setCallback(CALLBACK_PARAM_TARGETTILE, "onTargetTile")

function onCastSpell(creature, variant, isHotkey)
    return combat:execute(creature, variant)
end

Thanks in advance if any help me
and Enjoy!
 
Poison Storm working 100%:
Code:
-- SpellCreator generated.

-- =============== COMBAT VARS ===============
-- Areas/Combat for 0ms
local combat0_Brush = createCombatObject()
setCombatParam(combat0_Brush, COMBAT_PARAM_EFFECT, CONST_ME_POISONAREA)
setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatArea(combat0_Brush, createCombatArea(AREA_CROSS6X6))
function getDmg_Brush(cid, level, maglevel)
    local formulA = (((level*1.0)+(maglevel*1.5))*4)
    min = -formulA*0.8
    max = -formulA*1.0
    return min, max
end
setCombatCallback(combat0_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")

local con_poisonar__combat0_Brush = createConditionObject(0+CONDITION_POISON)
addDamageCondition(con_poisonar__combat0_Brush, 5, 1000, -100)
setCombatCondition(combat0_Brush, con_poisonar__combat0_Brush)

-- =============== CORE FUNCTIONS ===============
local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
    if (isCreature(cid)) then
        doCombat(cid, c, var)
        if (dirList ~= nil) then -- Emit distance effects
            local i = 2;
            while (i < #dirList) do
                doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
                i = i + 2
            end       
        end
    end
end

function onCastSpell(cid, var)
    local startPos = getCreaturePosition(cid)
    RunPart(combat0_Brush,cid,var)
    return true
end
 
Back
Top