• 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 9.31 Real Spells with Cooldown (works with 8.6)

LucasFerraz

Systems Analyst
Joined
Jun 10, 2010
Messages
2,858
Reaction score
96
Location
Brazil
Today I made this spells with cooldown works with 8.6 version using storages.
Working 100% with dev0.4, 3777 and 3884.

XML:
<?xml version="1.0" encoding="UTF-8"?>
<spells>
	<!-- Attack Spells -->
	<instant name="Strong Flame Strike" words="exori gran flam" lvl="70" mana="60" prem="1" range="3" casterTargetOrDirection="1" blockwalls="1" exhaustion="2000" needlearn="0" event="script" value="attack/strong flame strike.lua"> 
		<vocation id="1"/> 
		<vocation id="5"/> 
	</instant>
	<instant name="Ultimate Flame Strike" words="exori max flam" lvl="90" mana="100" prem="1" range="3" casterTargetOrDirection="1" blockwalls="1" exhaustion="2000" needlearn="0" event="script" value="attack/ultimate flame strike.lua">  
		<vocation id="1"/> 
		<vocation id="5"/>  
	</instant> 
	<instant name="Strong Energy Strike" words="exori gran vis" lvl="80" mana="60" prem="1" range="3" casterTargetOrDirection="1" blockwalls="1" exhaustion="2000" needlearn="0" event="script" value="attack/strong energy strike.lua"> 
		<vocation id="1"/> 
		<vocation id="5"/> 
	</instant>
	<instant name="Ultimate Energy Strike" words="exori max vis" lvl="100" mana="100" prem="1" range="3" casterTargetOrDirection="1" blockwalls="1" exhaustion="2000" needlearn="0" event="script" value="attack/ultimate energy strike.lua"> 
		<vocation id="1"/> 
		<vocation id="5"/> 
	</instant> 
	<instant name="Strong Ethereal Spear" words="exori gran con" lvl="90" mana="55" prem="1" range="5" needtarget="1" exhaustion="2000" blockwalls="1" needlearn="0" event="script" value="attack/strong ethereal spear.lua"> 
		<vocation id="3"/> 
		<vocation id="7"/>  
	</instant> 
<instant name="Annihilation" words="exori gran ico" lvl="110" mana="300" prem="1" needweapon="1" exhaustion="2000" needlearn="0" needtarget="1" event="script" value="attack/annihilation.lua">  
		<vocation id="4"/>               
		<vocation id="8"/> 
	</instant> 
	<instant name="Brutal Strike" words="exori ico" lvl="16" mana="30" prem="1" range="1" needtarget="1" blockwalls="1" needweapon="1" exhaustion="2000" needlearn="0" event="script" value="attack/brutal strike.lua"> 
		<vocation id="4"/> 
		<vocation id="8"/> 
	</instant>
	<instant name="Front Sweep" words="exori min" lvl="70" mana="200" prem="1" needweapon="1" direction="1" exhaustion="2000" needlearn="0" event="script" value="attack/front sweep.lua"> 
		<vocation id="4"/> 
		<vocation id="8"/> 
	</instant> 
	<instant name="Inflict Wound" words="utori kor" lvl="40" mana="30" prem="1" range="3" casterTargetOrDirection="1" blockwalls="1" needweapon="1" exhaustion="2000" needlearn="0" event="script" value="attack/inflict wound.lua">
		<vocation id="4"/>
		<vocation id="8"/>
	</instant>
	<instant name="Ignite" words="utori flam" lvl="26" mana="30" prem="1" range="3" casterTargetOrDirection="1" blockwalls="1" exhaustion="2000" needlearn="0" event="script" value="attack/ignite.lua"> 
		<vocation id="1"/> 
		<vocation id="5"/> 
	</instant>
	<instant name="Lightning" words="exori amp vis" lvl="55" mana="160" prem="1" range="4" casterTargetOrDirection="1" blockwalls="1" exhaustion="2000" needlearn="0" event="script" value="attack/lightning.lua"> 
		<vocation id="1"/> 
		<vocation id="5"/> 
	</instant>
	<instant name="Cursed" words="utori mort" lvl="75" mana="30" prem="1" range="3" casterTargetOrDirection="1" blockwalls="1" exhaustion="2000" needlearn="0" event="script" value="attack/curse.lua"> 
		<vocation id="1"/> 
		<vocation id="5"/> 
	</instant>
	<instant name="Electrify" words="utori vis" lvl="34" mana="30" prem="1" range="3" casterTargetOrDirection="1" blockwalls="1" exhaustion="2000" needlearn="0" event="script" value="attack/electrify.lua"> 
		<vocation id="1"/> 
		<vocation id="5"/> 
	</instant>
	<instant name="Holy Flash" words="utori san" lvl="70" mana="50" prem="1" range="5" casterTargetOrDirection="1" blockwalls="1" exhaustion="2000" needlearn="0" event="script" value="attack/holy flash.lua"> 
		<vocation id="3"/> 
		<vocation id="7"/>
	</instant>
	<instant name="Physical Strike" words="exori moe ico" lvl="16" mana="20" prem="1" range="3" casterTargetOrDirection="1" blockwalls="1" exhaustion="2000" needlearn="0" event="script" value="attack/physical strike.lua"> 
		<vocation id="2"/> 
		<vocation id="6"/> 
	</instant>
	<instant name="Strong Ice Strike" words="exori gran frigo" lvl="80" mana="60" prem="1" range="3" casterTargetOrDirection="1" blockwalls="1" exhaustion="2000" needlearn="0" event="script" value="attack/strong ice strike.lua"> 
		<vocation id="2"/> 
		<vocation id="6"/> 
	</instant>
	<instant name="Ultimate Ice Strike" words="exori max frigo" lvl="100" mana="100" prem="1" range="3" casterTargetOrDirection="1" blockwalls="1" exhaustion="2000" needlearn="0" event="script" value="attack/ultimate ice strike.lua"> 
		<vocation id="2"/> 
		<vocation id="6"/>  
	</instant>
	<instant name="Strong Ice Wave" words="exevo gran frigo hur" lvl="40" mana="170" direction="1" exhaustion="2000" needlearn="0" event="script" value="attack/strong ice wave.lua"> 
		<vocation id="2"/>
		<vocation id="6"/> 
	</instant>
	<instant name="Envenom" words="utori pox" lvl="50" mana="30" prem="1" range="3" casterTargetOrDirection="1" blockwalls="1" exhaustion="2000" needlearn="0" event="script" value="attack/envenom.lua"> 
		<vocation id="2"/> 
		<vocation id="6"/>
	</instant>
	<instant name="Strong Terra Strike" words="exori gran tera" lvl="70" mana="60" prem="1" range="3" casterTargetOrDirection="1" blockwalls="1" exhaustion="2000" needlearn="0" event="script" value="attack/strong terra strike.lua"> 
		<vocation id="2"/> 
		<vocation id="6"/> 
	</instant>
	<instant name="Ultimate Terra Strike" words="exori max tera" lvl="90" mana="100" prem="1" range="3" casterTargetOrDirection="1" blockwalls="1" exhaustion="2000" needlearn="0" event="script" value="attack/ultimate terra strike.lua"> 
		<vocation id="2"/> 
		<vocation id="6"/> 
	</instant>
	

	<!-- Healing Spells -->
	<instant name="Wound Cleansing" words="exura ico" lvl="10" mana="40" aggressive="0" selftarget="1" exhaustion="1000" needlearn="0" event="script" value="healing/wound cleansing.lua">
		<vocation id="4"/>
		<vocation id="8"/>
	</instant>
	<instant name="Intense Wound Cleansing" words="exura gran ico" lvl="80" mana="200" prem="1" selftarget="1" aggressive="0" exhaustion="1000" needlearn="0" event="script" value="healing/intense wound cleansing.lua"> 
		<vocation id="4"/>
		<vocation id="8"/> 
	</instant> 
<instant name="Cure Bleeding" words="exana kor" lvl="30" mana="30" aggressive="0" selftarget="1" exhaustion="1000" needlearn="0" event="script" value="healing/cure bleeding.lua">
		<vocation id="4"/>
		<vocation id="8"/>
	</instant>
	<instant name="Cure Electrification" words="exana vis" lvl="22" mana="30" aggressive="0" selftarget="1" exhaustion="1000" needlearn="0" event="script" value="healing/cure electrification.lua"> 
	 	<vocation id="2"/> 
	 	<vocation id="6"/> 
	</instant>
	<instant name="Cure Burning" words="exana flam" lvl="30" mana="30" aggressive="0" selftarget="1" exhaustion="1000" needlearn="0" event="script" value="healing/cure burning.lua">
		<vocation id="2"/>
		<vocation id="6"/>
	</instant>
	<instant name="Cure Curse" words="exana mort" lvl="80" mana="40" aggressive="0" selftarget="1" exhaustion="1000" needlearn="0" event="script" value="healing/cure curse.lua">
		<vocation id="3"/>
		<vocation id="7"/>
	</instant>
	<instant name="Recovery" words="utura" lvl="50" mana="75" prem="1" selftarget="1" aggressive="0" exhaustion="1000" needlearn="0" event="script" value="healing/recovery.lua"> 
		<vocation id="4"/>
		<vocation id="8"/> 
		<vocation id="3"/> 
		<vocation id="7"/> 
	</instant>
	<instant name="Intense Recovery" words="utura gran" lvl="100" mana="165" prem="1" selftarget="1" aggressive="0" exhaustion="1000" needlearn="0" event="script" value="healing/intense recovery.lua"> 
		<vocation id="4"/> 
		<vocation id="8"/> 
		<vocation id="3"/> 
		<vocation id="7"/> 
	</instant>
	<instant name="Salvation" words="exura gran san" lvl="60" mana="210" prem="1" selftarget="1" aggressive="0" exhaustion="1000" needlearn="0" event="script" value="healing/salvation.lua"> 
		<vocation id="3"/> 
		<vocation id="7"/> 
	</instant>
</spells>

Attack Spells

annihilation
Lua:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, true)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_WEAPONTYPE)
setCombatParam(combat, COMBAT_PARAM_USECHARGES, true)

function onGetFormulaValues(cid, level, skill, attack, factor)
	local skillTotal, levelTotal = skill * attack, level / 5
	return -(skillTotal * 0.0408 + levelTotal)/2, -(skillTotal * 0.0408 + levelTotal)
end

setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")

function onCastSpell(cid, var)
	if getPlayerStorageValue(cid, 3201) <= 0 then
		setPlayerStorageValue(cid, 3201, os.time()+6000)  
		return doCombat(cid, combat, var)
	else
		doPlayerSendCancel(cid, "You are exhausted.")
	end
end

brutal strike
Lua:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, true)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_WEAPONTYPE)
setCombatParam(combat, COMBAT_PARAM_USECHARGES, true)

function onGetFormulaValues(cid, level, skill, attack, factor)
	local skillTotal, levelTotal = skill * attack, level / 5
	return -(skillTotal * 0.0408 + levelTotal)/2, -(skillTotal * 0.0408 + levelTotal)
end

setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")

function onCastSpell(cid, var)
	if getPlayerStorageValue(cid, 3201) <= 0 then
		setPlayerStorageValue(cid, 3201, os.time()+6000)  
		return doCombat(cid, combat, var)
	else
		doPlayerSendCancel(cid, "You are exhausted.")
	end
end

curse
Lua:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_SMALLCLOUDS)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_DEATH)

local condition = createConditionObject(CONDITION_CURSED)
setConditionParam(condition, CONDITION_PARAM_DELAYED, 1)

addDamageCondition(condition, 1, 3000, -45)
addDamageCondition(condition, 1, 3000, -40)
addDamageCondition(condition, 1, 3000, -35)
addDamageCondition(condition, 1, 3000, -34)
addDamageCondition(condition, 2, 3000, -33)
addDamageCondition(condition, 2, 3000, -32)
addDamageCondition(condition, 2, 3000, -31)
addDamageCondition(condition, 2, 3000, -30)
addDamageCondition(condition, 3, 3000, -29)
addDamageCondition(condition, 3, 3000, -25)
addDamageCondition(condition, 3, 3000, -24)
addDamageCondition(condition, 4, 3000, -23)
addDamageCondition(condition, 4, 3000, -20)
addDamageCondition(condition, 5, 3000, -19)
addDamageCondition(condition, 5, 3000, -15)
addDamageCondition(condition, 6, 3000, -10)
addDamageCondition(condition, 10, 3000, -5)
setCombatCondition(combat, condition)


function onCastSpell(cid, var)
	if getPlayerStorageValue(cid, 3202) <= 0 then
		setPlayerStorageValue(cid, 3202, os.time()+50000)  
		return doCombat(cid, combat, var)
	else
		doPlayerSendCancel(cid, "You are exhausted.")
	end
end

electrify
Lua:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYHIT)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY)

local condition = createConditionObject(CONDITION_ENERGY)
setConditionParam(condition, CONDITION_PARAM_DELAYED, 1)
addDamageCondition(condition, 25, 3000, -45)
setCombatCondition(combat, condition)

function onCastSpell(cid, var)
	if getPlayerStorageValue(cid, 3203) <= 0 then
		setPlayerStorageValue(cid, 3203, os.time()+30000)  
		return doCombat(cid, combat, var)
	else
		doPlayerSendCancel(cid, "You are exhausted.")
	end
end

envenom
Lua:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_POISONAREA)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_POISON)

local condition = createConditionObject(CONDITION_POISON)
setConditionParam(condition, CONDITION_PARAM_DELAYED, 1)
addDamageCondition(condition, 5, 3000, -45)
addDamageCondition(condition, 10, 3000, -35)
addDamageCondition(condition, 15, 3000, -25)
addDamageCondition(condition, 20, 3000, -15)
addDamageCondition(condition, 25, 3000, -5)
setCombatCondition(combat, condition)

function onCastSpell(cid, var)
	if getPlayerStorageValue(cid, 3204) <= 0 then
		setPlayerStorageValue(cid, 3204, os.time()+40000)  
		return doCombat(cid, combat, var)
	else
		doPlayerSendCancel(cid, "You are exhausted.")
	end
end

front sweep
Lua:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)

local area = createCombatArea(AREA_WAVE6, AREADIAGONAL_WAVE6)
setCombatArea(combat, area)

function onGetFormulaValues(cid, level, skill, attack, factor)
	local skillTotal, levelTotal = skill * attack, level / 5
	return -(skillTotal * 0.0854 + levelTotal)/2, -(skillTotal * 0.0854 + levelTotal)
end

setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")

function onCastSpell(cid, var)
	if getPlayerStorageValue(cid, 3205) <= 0 then
		setPlayerStorageValue(cid, 3205, os.time()+6000)  
		return doCombat(cid, combat, var)
	else
		doPlayerSendCancel(cid, "You are exhausted.")
	end
end

holy flash
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, -20)
setCombatCondition(combat, condition)

function onCastSpell(cid, var)
	if getPlayerStorageValue(cid, 3206) <= 0 then
		setPlayerStorageValue(cid, 3206, os.time()+40000)  
		return doCombat(cid, combat, var)
	else
		doPlayerSendCancel(cid, "You are exhausted.")
	end
end

ignite
Lua:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)

local condition = createConditionObject(CONDITION_FIRE)
setConditionParam(condition, CONDITION_PARAM_DELAYED, 1)
addDamageCondition(condition, 25, 3000, -45)
setCombatCondition(combat, condition)

function onCastSpell(cid, var)
	if getPlayerStorageValue(cid, 3207) <= 0 then
		setPlayerStorageValue(cid, 3207, os.time()+30000)  
		return doCombat(cid, combat, var)
	else
		doPlayerSendCancel(cid, "You are exhausted.")
	end
end

inflict wound
Lua:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, true)
setCombatParam(combat, COMBAT_PARAM_EFFECT, 0)
setCombatParam(combat, COMBAT_PARAM_USECHARGES, true)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_WEAPONTYPE)

local condition = createConditionObject(CONDITION_PHYSICAL)
setConditionParam(condition, CONDITION_PARAM_DELAYED, 10)
addDamageCondition(condition, 15, 2000, -50)
setCombatCondition(combat, condition)


function onCastSpell(cid, var)
	if getPlayerStorageValue(cid, 3208) <= 0 then
		setPlayerStorageValue(cid, 3208, os.time()+30000)  
		return doCombat(cid, combat, var)
	else
		doPlayerSendCancel(cid, "You are exhausted.")
	end
end

lightning
Lua:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYAREA)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY)

function onGetFormulaValues(cid, level, maglevel)
	local min = -(((level/5)+(maglevel)+(maglevel*10)/2.49))/1.75 -- 1.75
	local max = -(((level/5)+(maglevel)+(maglevel*10)/2.49))
	return min, max
end

setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

function onCastSpell(cid, var)
	if getPlayerStorageValue(cid, 3209) <= 0 then
		setPlayerStorageValue(cid, 3209, os.time()+8000)  
		return doCombat(cid, combat, var)
	else
		doPlayerSendCancel(cid, "You are exhausted.")
	end
end

physical strike
Lua:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_EXPLOSION)

function onGetFormulaValues(cid, level, maglevel)
	local min = -(((level/5)+(maglevel)+(maglevel*10)/6.97))/1.5
	local max = -(((level/5)+(maglevel)+(maglevel*10)/6.97))
	return min, max
end

setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

function onCastSpell(cid, var)
	if getPlayerStorageValue(cid, 3210) <= 0 then
		setPlayerStorageValue(cid, 3210, os.time()+2000)  
		return doCombat(cid, combat, var)
	else
		doPlayerSendCancel(cid, "You are exhausted.")
	end
end

strong energy strike
Lua:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYAREA)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY)

function onGetFormulaValues(cid, level, maglevel)
	local min = -(((level/5)+(maglevel)+(maglevel*10)/2.62))/1.45 -- old: 1.75
	local max = -(((level/5)+(maglevel)+(maglevel*10)/2.62))
	return min, max
end

setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

function onCastSpell(cid, var)
	if getPlayerStorageValue(cid, 3211) <= 0 then
		setPlayerStorageValue(cid, 3211, os.time()+8000)  
		return doCombat(cid, combat, var)
	else
		doPlayerSendCancel(cid, "You are exhausted.")
	end
end

strong ethereal spear
Lua:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, TRUE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ETHEREALSPEAR)


function onGetFormulaValues(cid, level, skill, attack, factor)
	local level = getPlayerLevel(cid)

	local min = -((skill*attack/10)*0.25+(level/5))/1.75 -- 1.75
	local max = -((skill*attack/10)*0.25+(level/5))
	-- local min = -((skill * attack / 10) * 0.25 + (level / 5))/1.75
	-- Divisor = 1.75
	-- local min = -((skill * attack / 1.75) / ? + (level / 5))/1.75

	return min, max
end
setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")

function onCastSpell(cid, var)
	if getPlayerStorageValue(cid, 3212) <= 0 then
		setPlayerStorageValue(cid, 3212, os.time()+8000)  
		return doCombat(cid, combat, var)
	else
		doPlayerSendCancel(cid, "You are exhausted.")
	end
end

strong flame strike
Lua:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_FIREATTACK)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)

function onGetFormulaValues(cid, level, maglevel)
	local min = -(((level/5)+(maglevel)+(maglevel*10)/2.62))/1.45 -- old: 1.75
	local max = -(((level/5)+(maglevel)+(maglevel*10)/2.62))
	return min, max
end

setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

function onCastSpell(cid, var)
	if getPlayerStorageValue(cid, 3213) <= 0 then
		setPlayerStorageValue(cid, 3213, os.time()+8000)  
		return doCombat(cid, combat, var)
	else
		doPlayerSendCancel(cid, "You are exhausted.")
	end
end

strong ice strike
Lua:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SMALLICE)

function onGetFormulaValues(cid, level, maglevel)
	local min = -(((level/5)+(maglevel)+(maglevel*10)/2.62))/1.45 -- old: 1.75
	local max = -(((level/5)+(maglevel)+(maglevel*10)/2.62))
	return min, max
end

setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

function onCastSpell(cid, var)
	if getPlayerStorageValue(cid, 3214) <= 0 then
		setPlayerStorageValue(cid, 3214, os.time()+8000)  
		return doCombat(cid, combat, var)
	else
		doPlayerSendCancel(cid, "You are exhausted.")
	end
end

strong ice wave
Lua:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_ICEAREA)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ICE)

function onGetFormulaValues(cid, level, maglevel)
	local min = -(((level/5)+(maglevel)+(maglevel*10)/1.366))/2 -- divisor: (/2); dobro do dano do Ice Wave: (2.371); dobro do dano *2: 
	local max = -(((level/5)+(maglevel)+(maglevel*10)/1.366)) -- fórmula do Energy Wave: (1.366);
	return min, max
end

setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

local area = createCombatArea(AREA_WAVE4, AREADIAGONAL_WAVE4)
-- local area = createCombatArea(AREA_WAVE3, AREADIAGONAL_WAVE4)
setCombatArea(combat, area)

function onCastSpell(cid, var)
	if getPlayerStorageValue(cid, 3215) <= 0 then
		setPlayerStorageValue(cid, 3215, os.time()+6000)  
		return doCombat(cid, combat, var)
	else
		doPlayerSendCancel(cid, "You are exhausted.")
	end
end

strong terra strike
Lua:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_CARNIPHILA)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SMALLEARTH)

function onGetFormulaValues(cid, level, maglevel)
	local min = -(((level/5)+(maglevel)+(maglevel*10)/2.62))/1.45 -- old: 1.75
	local max = -(((level/5)+(maglevel)+(maglevel*10)/2.62))
	return min, max
end

setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

function onCastSpell(cid, var)
	if getPlayerStorageValue(cid, 3216) <= 0 then
		setPlayerStorageValue(cid, 3216, os.time()+8000)  
		return doCombat(cid, combat, var)
	else
		doPlayerSendCancel(cid, "You are exhausted.")
	end
end

ultimate energy strike
Lua:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYAREA)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY)

function onGetFormulaValues(cid, level, maglevel)
	local min = -(((level/5)+(maglevel)+(maglevel*10)/0.954))/2
	local max = -(((level/5)+(maglevel)+(maglevel*10)/0.954))
	return min, max
end

setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

function onCastSpell(cid, var)
	if getPlayerStorageValue(cid, 3217) <= 0 then
		setPlayerStorageValue(cid, 3217, os.time()+30000)  
		return doCombat(cid, combat, var)
	else
		doPlayerSendCancel(cid, "You are exhausted.")
	end
end

ultimate flame strike
Lua:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_FIREATTACK)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)

function onGetFormulaValues(cid, level, maglevel)
	local min = -(((level/5)+(maglevel)+(maglevel*10)/1.464))/1.45 -- old: 2
	local max = -(((level/5)+(maglevel)+(maglevel*10)/1.464))
	return min, max
end

setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

function onCastSpell(cid, var)
	if getPlayerStorageValue(cid, 3218) <= 0 then
		setPlayerStorageValue(cid, 3218, os.time()+30000)  
		return doCombat(cid, combat, var)
	else
		doPlayerSendCancel(cid, "You are exhausted.")
	end
end


ultimate ice strike
Lua:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SMALLICE)

function onGetFormulaValues(cid, level, maglevel)
	local min = -(((level/5)+(maglevel)+(maglevel*10)/1.464))/1.45 -- old: 2
	local max = -(((level/5)+(maglevel)+(maglevel*10)/1.464))
	return min, max
end

setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

function onCastSpell(cid, var)
	if getPlayerStorageValue(cid, 3219) <= 0 then
		setPlayerStorageValue(cid, 3219, os.time()+30000)  
		return doCombat(cid, combat, var)
	else
		doPlayerSendCancel(cid, "You are exhausted.")
	end
end


ultimate terra strike
Lua:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_CARNIPHILA)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SMALLEARTH)

function onGetFormulaValues(cid, level, maglevel)
	local min = -(((level/5)+(maglevel)+(maglevel*10)/0.954))/2
	local max = -(((level/5)+(maglevel)+(maglevel*10)/0.954))
	return min, max
end

setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

function onCastSpell(cid, var)
	if getPlayerStorageValue(cid, 3220) <= 0 then
		setPlayerStorageValue(cid, 3220, os.time()+30000)  
		return doCombat(cid, combat, var)
	else
		doPlayerSendCancel(cid, "You are exhausted.")
	end
end
 

Attachments

Last edited:
Healing Spells

cure bleeding
Lua:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false)
setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PHYSICAL)

function onCastSpell(cid, var)
	if getPlayerStorageValue(cid, 3100) <= 0 then
		setPlayerStorageValue(cid, 3100, os.time()+6000)  
		return doCombat(cid, combat, var)
	else
		doPlayerSendCancel(cid, "You are exhausted.")
	end
end

cure burning
Lua:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false)
setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_FIRE)

function onCastSpell(cid, var)
	if getPlayerStorageValue(cid, 3101) <= 0 then
		setPlayerStorageValue(cid, 3101, os.time()+6000)  
		return doCombat(cid, combat, var)
	else
		doPlayerSendCancel(cid, "You are exhausted.")
	end
end

cure curse
Lua:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false)
setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_CURSED)

function onCastSpell(cid, var)
		if getPlayerStorageValue(cid, 3102) <= 0 then
		setPlayerStorageValue(cid, 3102, os.time()+6000)  
		return doCombat(cid, combat, var)
	else
		doPlayerSendCancel(cid, "You are exhausted.")
	end
end

cure electrification
Lua:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false)
setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_ENERGY)

function onCastSpell(cid, var)
		if getPlayerStorageValue(cid, 3103) <= 0 then
		setPlayerStorageValue(cid, 3103, os.time()+6000)  
		return doCombat(cid, combat, var)
	else
		doPlayerSendCancel(cid, "You are exhausted.")
	end
end

intense recovery
Lua:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_GREEN)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false)

local condition = createConditionObject(CONDITION_REGENERATION)
setConditionParam(condition, CONDITION_PARAM_SUBID, 1)
setConditionParam(condition, CONDITION_PARAM_BUFF, true)
setConditionParam(condition, CONDITION_PARAM_TICKS, 1 * 60 * 1000)
setConditionParam(condition, CONDITION_PARAM_HEALTHGAIN, 40)
setConditionParam(condition, CONDITION_PARAM_HEALTHTICKS, 3000)
setCombatCondition(combat, condition)

function onCastSpell(cid, var)
	if getPlayerStorageValue(cid, 3104) <= 0 then
		setPlayerStorageValue(cid, 3104, os.time()+60000)  
		return doCombat(cid, combat, var)
	else
		doPlayerSendCancel(cid, "You are exhausted.")
	end
end

intense wound cleansing
Lua:
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_DISPEL, CONDITION_PARALYZE)

function onGetFormulaValues(cid, level, maglevel)
	local min = (((level/5)+(maglevel*100)+383))/2 -- /2
	local max = (((level/5)+(maglevel*100)+383))
	return min, max
end

setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

function onCastSpell(cid, var)
	if getPlayerStorageValue(cid, 3105) <= 0 then
		setPlayerStorageValue(cid, 3105, os.time()+600000)  
		return doRemoveCondition(cid, CONDITION_PARALYZE), doCombat(cid, combat, var)
	else
		doPlayerSendCancel(cid, "You are exhausted.")
	end
end

recovery
Lua:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_GREEN)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false)

local condition = createConditionObject(CONDITION_REGENERATION)
setConditionParam(condition, CONDITION_PARAM_SUBID, 1)
setConditionParam(condition, CONDITION_PARAM_BUFF, true)
setConditionParam(condition, CONDITION_PARAM_TICKS, 1 * 60 * 1000)
setConditionParam(condition, CONDITION_PARAM_HEALTHGAIN, 20)
setConditionParam(condition, CONDITION_PARAM_HEALTHTICKS, 3000)
setCombatCondition(combat, condition)

function onCastSpell(cid, var)
	if getPlayerStorageValue(cid, 3106) <= 0 then
		setPlayerStorageValue(cid, 3106, os.time()+60000)  
		return doCombat(cid, combat, var)
	else
		doPlayerSendCancel(cid, "You are exhausted.")
	end
end

salvation
Lua:
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_DISPEL, CONDITION_PARALYZE)

function onGetFormulaValues(cid, level, maglevel)
	local min = (((level/5)+(maglevel*25)+105))/2
	local max = (((level/5)+(maglevel*25)+105))
	return min, max
end
setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

function onCastSpell(cid, var)
	if getPlayerStorageValue(cid, 3107) <= 0 then
		setPlayerStorageValue(cid, 3107, os.time()+1000)  
		return doRemoveCondition(cid, CONDITION_PARALYZE), doCombat(cid, combat, var)
	else
		doPlayerSendCancel(cid, "You are exhausted.")
	end
end

wound cleansing
Lua:
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_DISPEL, CONDITION_PARALYZE)

function onGetFormulaValues(cid, level, maglevel)
	local min = (((level/5)+(maglevel*4)+24.8))
	local max = (((level/5)+(maglevel*8)+50))
	return min, max
end

setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

function onCastSpell(cid, var)
	if getPlayerStorageValue(cid, 3108) <= 0 then
		setPlayerStorageValue(cid, 3108, os.time()+1000)  
		return doRemoveCondition(cid, CONDITION_PARALYZE), doCombat(cid, combat, var)
	else
		doPlayerSendCancel(cid, "You are exhausted.")
	end
end
 

Attachments

Last edited:
Might be useful to some but it's not 8.6 with those spells.
 
Good job! Might try n use some of them on my custom 8.6! Rep++
 
I tried this on my ot, I did'nt get any errors or so but they just don't work, I don't know what to do...
would be awsome if I recieve help, thanks.
 
Why it isnt working for me ? I have added it to spells.xml and copied them to the script directory, i have no error in console, please help !
 
As I said, I have no errors in console, i say like exori max frigo in game and nothing appears, it just seems like a normal written text ...
 
Do you have All spells for 3884 with the same damage as real tibia ??

to get it balanced more
 
lolololol

why u are pasting milion times storage...

Code:
if getPlayerStorageValue(cid, 3204) <= 0 then
		setPlayerStorageValue(cid, 3204, os.time()+40000)  
		return doCombat(cid, combat, var)
	else
		doPlayerSendCancel(cid, "You are exhausted.")
	end


add to constant

S1_GROUP = 3204
S2_GROUP = 3205

etc...


and then:

Code:
function onCastSpell(cid, var)
if getExhausted(cid, S4_GROUP) then
	setExhausted(cid, S1_GROUP, 3)
	return doCombat(cid, combat, var) and true
end
return doPlayerSendCancel(cid, 'You are exhausted 4 Spell Group for: ' .. exhaustion.get(cid, S1_GROUP) + 1 ..' seconds.') and false
end
 
lolololol

why u are pasting milion times storage...

Code:
if getPlayerStorageValue(cid, 3204) <= 0 then
		setPlayerStorageValue(cid, 3204, os.time()+40000)  
		return doCombat(cid, combat, var)
	else
		doPlayerSendCancel(cid, "You are exhausted.")
	end


add to constant

S1_GROUP = 3204
S2_GROUP = 3205

etc...


and then:

Code:
function onCastSpell(cid, var)
if getExhausted(cid, S4_GROUP) then
	setExhausted(cid, S1_GROUP, 3)
	return doCombat(cid, combat, var) and true
end
return doPlayerSendCancel(cid, 'You are exhausted 4 Spell Group for: ' .. exhaustion.get(cid, S1_GROUP) + 1 ..' seconds.') and false
end

Good idea xD
 
Please anyone could tell me way with that it will be possible to remake for 0.2.8 ? Thanks for reply :)
 
Back
Top