• 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 Arcane Strike (exori vita), rewritten, bugs fixed

PhoOwned

^_^
Joined
Nov 11, 2010
Messages
375
Reaction score
66
Popular Evo otses spell. Attack target X times (count = 9). Easy to edit ^_^
Lua:
--#################################################
--### Scripted by PhoOwned                      ###
--### Contact: [email][email protected][/email]                   ###
--#################################################

local combats = {}
local count = 9
local combatTypes = {2,8}
local combatEffects = {11}
local combatDistanceEffects = {4}
local combatFormulas = {{-5, -510,  -11, -600}}
local delays = {300,100, 100, 100,100,200,200,200}

for i = 1, count do
	local combat = createCombatObject()
	setCombatParam(combat, COMBAT_PARAM_TYPE, combatTypes[((i-1) % #combatTypes)+1])
	setCombatParam(combat, COMBAT_PARAM_EFFECT, combatEffects[((i-1) % #combatEffects)+1])
	setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, combatDistanceEffects[((i-1) % #combatDistanceEffects)+1])
	setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, unpack(combatFormulas[((i-1) % #combatFormulas)+1]))
	combats[i] = combat
end

local function onCastSpellDelayed(cid, combat, var, combat_id)
	if(isCreature(variantToNumber(var)) and not getTileInfo(getThingPosition(variantToNumber(var))).protection) then
		doCombat(cid, combat[combat_id], var)
		if(combat[combat_id+1] ~= nil) then
			addEvent(onCastSpellDelayed, delays[((combat_id-1) % #delays)+1], cid, combats, var, combat_id+1)
		end
	end
end

function onCastSpell(cid, var)
	onCastSpellDelayed(cid, combats, var, 1)
	return true
end
spells.xml
Lua:
	<instant name="Arcane Strike" words="exori vita" lvl="445" mana="2150" prem="0" range="7" needtarget="1" blockwalls="1" exhaustion="1000" needlearn="0" event="script" value="attack/arcane strike.lua">
		<vocation id="6"/>
		<vocation id="5"/>
		<vocation id="7"/>
	</instant>
 
Whats wrong with the original? Just that you have removed almost every effect so its only
Lua:
local combatEffects = {11}
local combatDistanceEffects = {4}

insted of this script I think this one is alot better + easy to config.

Lua:
local combat1 = createCombatObject()
setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatParam(combat1, COMBAT_PARAM_DISTANCEEFFECT, 35)
setCombatParam(combat1, COMBAT_PARAM_EFFECT, 11)
setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -0.5, -50, -0.6, 0)
 
local combat2 = createCombatObject()
setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(combat2, COMBAT_PARAM_DISTANCEEFFECT, 36)
setCombatParam(combat2, COMBAT_PARAM_EFFECT, 3)
setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -0.5, -50, -0.6, 0)
 
local combat3 = createCombatObject()
setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatParam(combat3, COMBAT_PARAM_DISTANCEEFFECT, 35)
setCombatParam(combat3, COMBAT_PARAM_EFFECT, 11)
setCombatFormula(combat3, COMBAT_FORMULA_LEVELMAGIC, -0.5, -50, -0.6, 0)
 
local combat4 = createCombatObject()
setCombatParam(combat4, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(combat4, COMBAT_PARAM_DISTANCEEFFECT, 3)
setCombatParam(combat4, COMBAT_PARAM_EFFECT, 36)
setCombatFormula(combat4, COMBAT_FORMULA_LEVELMAGIC, -0.5, -50, -0.6, 0)
 
local combat5 = createCombatObject()
setCombatParam(combat5, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatParam(combat5, COMBAT_PARAM_DISTANCEEFFECT, 35)
setCombatParam(combat5, COMBAT_PARAM_EFFECT, 11)
setCombatFormula(combat5, COMBAT_FORMULA_LEVELMAGIC, -0.5, -50, -0.6, 0)
 
local combat6 = createCombatObject()
setCombatParam(combat6, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(combat6, COMBAT_PARAM_DISTANCEEFFECT, 3)
setCombatParam(combat6, COMBAT_PARAM_EFFECT, 36)
setCombatFormula(combat6, COMBAT_FORMULA_LEVELMAGIC, -0.5, -50, -0.6, 0)
 
local function onCastSpell1(parameters) 
doCombat(parameters.cid, parameters.combat1, parameters.var) 
end 
 
local function onCastSpell2(parameters) 
doCombat(parameters.cid, parameters.combat2, parameters.var) 
end 
 
local function onCastSpell3(parameters) 
doCombat(parameters.cid, parameters.combat3, parameters.var) 
end 
 
local function onCastSpell4(parameters) 
doCombat(parameters.cid, parameters.combat4, parameters.var) 
end 
 
local function onCastSpell5(parameters) 
doCombat(parameters.cid, parameters.combat5, parameters.var) 
end 
 
local function onCastSpell6(parameters) 
doCombat(parameters.cid, parameters.combat6, parameters.var) 
end 
 
 
function onCastSpell(cid, var) 
local parameters = { cid = cid, var = var, combat1 = combat1, combat2 = combat2, combat3 = combat3, combat4 = combat4, combat5 = combat5, combat6 = combat6 } 
local events = {onCastSpell1, onCastSpell2, onCastSpell3, onCastSpell4, onCastSpell5, onCastSpell6}
local time = {500, 500, 600, 600, 700, 700}
local target = getCreatureTarget(cid)
for i = 1, 6 do     
   addEvent(events[i], time[i], parameters) 
		end
		end

maybe its bigger but still..

edit:

500-600x900? 4500~ and thats from one atk ;o... kinda sick atks you have there.
 
@Wibben
BUGS? In orginal version if you attack someone and he runs to depot you still shoot to him <_< To my script I should add check isSightClear and range :rolleyes:
In my version I had only one animation, but it's configurable, so everyone can add what they need.
PhoOwned said:
... Easy to edit ^_^ ...
My version is shorter and easier to edit. You can make many spells base on it without editing 6 or 9 combats ;)

If you have any ideas for useful scripts post or send me PM.
 
I want to do exori white so it can only attack monsters or player. not that it can be like exori mort only when someone makes the stay so will spell. I want it to be when you-can only use it on creature
 
I want to do exori white so it can only attack monsters or player. not that it can be like exori mort only when someone makes the stay so will spell. I want it to be when you-can only use it on creature
Replace:
Lua:
function onCastSpell(cid, var)
	onCastSpellDelayed(cid, combats, var, 1)
	return true
end
With:
Lua:
function onCastSpell(cid, var)
	local target = variantToNumber(var)
	if(isPlayer(target)) then
		doPlayerSendCancel(cid, "This is NON-PVP spell. You can not attack player.")
		return false
	end
	onCastSpellDelayed(cid, combats, var, 1)
	return true
end
and it will be non pvp spell.
 
Replace:
Lua:
function onCastSpell(cid, var)
	onCastSpellDelayed(cid, combats, var, 1)
	return true
end
With:
Lua:
function onCastSpell(cid, var)
	local target = variantToNumber(var)
	if(isPlayer(target)) then
		doPlayerSendCancel(cid, "This is NON-PVP spell. You can not attack player.")
		return false
	end
	onCastSpellDelayed(cid, combats, var, 1)
	return true
end
and it will be non pvp spell.

Thanks
 
Back
Top