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

OpenTibia SpellCreator: A graphical spell creation enviroment

This project really inspires me and gives me faith in the OpenTibia community haha love you TGYoshi.

IRDT0A.gif


Few more suggestions:
  • Make it so you can create a brush that does not apply damage when it executes (a decorative brush maybe?)
  • Ability to change the timeline ticks (default: 100 yea?).
 
This project really inspires me and gives me faith in the OpenTibia community haha love you TGYoshi.

IRDT0A.gif


Few more suggestions:
  • Make it so you can create a brush that does not apply damage when it executes (a decorative brush maybe?)
  • Ability to change the timeline ticks (default: 100 yea?).

I think that you can do decorative spells with damage type = COMBAT_NONE and putting min and max damage to 0 :)
 
Random test with a huge spell. And a huge script. Lol.
Code:
-- SpellCreator generated.

-- =============== COMBAT VARS ===============
-- Areas/Combat for 0ms
local combat0_Plant = createCombatObject()
setCombatParam(combat0_Plant, COMBAT_PARAM_EFFECT, CONST_ME_PLANTATTACK)
setCombatParam(combat0_Plant, COMBAT_PARAM_TYPE, CONST_ME_ENERGYHIT)
setCombatArea(combat0_Plant,createCombatArea({{1, 2, 1},
{1, 1, 1}}))
function getDmg_Plant(cid, level, maglevel)
	return (10)*-1,(20)*-1 
end
setCombatCallback(combat0_Plant, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Plant")local combat0_UserPlant = createCombatObject()
setCombatParam(combat0_UserPlant, COMBAT_PARAM_EFFECT, CONST_ME_SMALLPLANTS)
setCombatParam(combat0_UserPlant, COMBAT_PARAM_TYPE, CONST_ME_ENERGYHIT)
setCombatArea(combat0_UserPlant,createCombatArea({{3}}))
function getDmg_UserPlant(cid, level, maglevel)
	return (10)*-1,(20)*-1 
end
setCombatCallback(combat0_UserPlant, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_UserPlant")

-- Areas/Combat for 2000ms
local combat20_Explo = createCombatObject()
setCombatParam(combat20_Explo, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONAREA)
setCombatParam(combat20_Explo, COMBAT_PARAM_TYPE, CONST_ME_ENERGYHIT)
setCombatArea(combat20_Explo,createCombatArea({{0, 0, 0, 0, 2, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{1, 1, 1, 1, 1, 1, 1, 1, 1}}))
function getDmg_Explo(cid, level, maglevel)
	return (10)*-1,(20)*-1 
end
setCombatCallback(combat20_Explo, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Explo")

-- Areas/Combat for 1800ms
local combat18_Stones = createCombatObject()
setCombatParam(combat18_Stones, COMBAT_PARAM_EFFECT, CONST_ME_STONES)
setCombatParam(combat18_Stones, COMBAT_PARAM_TYPE, CONST_ME_ENERGYHIT)
setCombatArea(combat18_Stones,createCombatArea({{0, 0, 0, 0, 2, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{1, 1, 1, 1, 1, 1, 1, 1, 1}}))
function getDmg_Stones(cid, level, maglevel)
	return (10)*-1,(20)*-1 
end
setCombatCallback(combat18_Stones, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Stones")

-- Areas/Combat for 1700ms
local combat17_Plant = createCombatObject()
setCombatParam(combat17_Plant, COMBAT_PARAM_EFFECT, CONST_ME_PLANTATTACK)
setCombatParam(combat17_Plant, COMBAT_PARAM_TYPE, CONST_ME_ENERGYHIT)
setCombatArea(combat17_Plant,createCombatArea({{0, 0, 0, 0, 2, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{1, 1, 1, 1, 1, 1, 1, 1, 1}}))
function getDmg_Plant(cid, level, maglevel)
	return (10)*-1,(20)*-1 
end
setCombatCallback(combat17_Plant, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Plant")

-- Areas/Combat for 1600ms
local combat16_Plant = createCombatObject()
setCombatParam(combat16_Plant, COMBAT_PARAM_EFFECT, CONST_ME_PLANTATTACK)
setCombatParam(combat16_Plant, COMBAT_PARAM_TYPE, CONST_ME_ENERGYHIT)
setCombatArea(combat16_Plant,createCombatArea({{0, 0, 0, 0, 2, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{1, 1, 1, 1, 1, 1, 1, 1, 1}}))
function getDmg_Plant(cid, level, maglevel)
	return (10)*-1,(20)*-1 
end
setCombatCallback(combat16_Plant, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Plant")

-- Areas/Combat for 1500ms
local combat15_Plant = createCombatObject()
setCombatParam(combat15_Plant, COMBAT_PARAM_EFFECT, CONST_ME_PLANTATTACK)
setCombatParam(combat15_Plant, COMBAT_PARAM_TYPE, CONST_ME_ENERGYHIT)
setCombatArea(combat15_Plant,createCombatArea({{0, 0, 0, 0, 2, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{1, 1, 1, 1, 1, 1, 1, 1, 1}}))
function getDmg_Plant(cid, level, maglevel)
	return (10)*-1,(20)*-1 
end
setCombatCallback(combat15_Plant, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Plant")

-- Areas/Combat for 1400ms
local combat14_Plant = createCombatObject()
setCombatParam(combat14_Plant, COMBAT_PARAM_EFFECT, CONST_ME_PLANTATTACK)
setCombatParam(combat14_Plant, COMBAT_PARAM_TYPE, CONST_ME_ENERGYHIT)
setCombatArea(combat14_Plant,createCombatArea({{0, 0, 0, 0, 2, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{1, 1, 1, 1, 1, 1, 1, 1, 1}}))
function getDmg_Plant(cid, level, maglevel)
	return (10)*-1,(20)*-1 
end
setCombatCallback(combat14_Plant, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Plant")

-- Areas/Combat for 1300ms
local combat13_Plant = createCombatObject()
setCombatParam(combat13_Plant, COMBAT_PARAM_EFFECT, CONST_ME_PLANTATTACK)
setCombatParam(combat13_Plant, COMBAT_PARAM_TYPE, CONST_ME_ENERGYHIT)
setCombatArea(combat13_Plant,createCombatArea({{0, 0, 0, 0, 2, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{1, 1, 1, 1, 1, 1, 1, 1, 1}}))
function getDmg_Plant(cid, level, maglevel)
	return (10)*-1,(20)*-1 
end
setCombatCallback(combat13_Plant, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Plant")

-- Areas/Combat for 1200ms
local combat12_Plant = createCombatObject()
setCombatParam(combat12_Plant, COMBAT_PARAM_EFFECT, CONST_ME_PLANTATTACK)
setCombatParam(combat12_Plant, COMBAT_PARAM_TYPE, CONST_ME_ENERGYHIT)
setCombatArea(combat12_Plant,createCombatArea({{0, 0, 0, 0, 2, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{1, 1, 1, 1, 1, 1, 1, 1, 1}}))
function getDmg_Plant(cid, level, maglevel)
	return (10)*-1,(20)*-1 
end
setCombatCallback(combat12_Plant, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Plant")

-- Areas/Combat for 1100ms
local combat11_Plant = createCombatObject()
setCombatParam(combat11_Plant, COMBAT_PARAM_EFFECT, CONST_ME_PLANTATTACK)
setCombatParam(combat11_Plant, COMBAT_PARAM_TYPE, CONST_ME_ENERGYHIT)
setCombatArea(combat11_Plant,createCombatArea({{0, 0, 0, 0, 2, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{1, 1, 1, 1, 1, 1, 1, 1, 1}}))
function getDmg_Plant(cid, level, maglevel)
	return (10)*-1,(20)*-1 
end
setCombatCallback(combat11_Plant, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Plant")

-- Areas/Combat for 1000ms
local combat10_Plant = createCombatObject()
setCombatParam(combat10_Plant, COMBAT_PARAM_EFFECT, CONST_ME_PLANTATTACK)
setCombatParam(combat10_Plant, COMBAT_PARAM_TYPE, CONST_ME_ENERGYHIT)
setCombatArea(combat10_Plant,createCombatArea({{0, 0, 0, 0, 2, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{1, 1, 1, 1, 1, 1, 1, 1, 1}}))
function getDmg_Plant(cid, level, maglevel)
	return (10)*-1,(20)*-1 
end
setCombatCallback(combat10_Plant, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Plant")

-- Areas/Combat for 900ms
local combat9_Plant = createCombatObject()
setCombatParam(combat9_Plant, COMBAT_PARAM_EFFECT, CONST_ME_PLANTATTACK)
setCombatParam(combat9_Plant, COMBAT_PARAM_TYPE, CONST_ME_ENERGYHIT)
setCombatArea(combat9_Plant,createCombatArea({{0, 0, 0, 0, 2, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{1, 1, 1, 1, 1, 1, 1, 1, 1}}))
function getDmg_Plant(cid, level, maglevel)
	return (10)*-1,(20)*-1 
end
setCombatCallback(combat9_Plant, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Plant")

-- Areas/Combat for 800ms
local combat8_Plant = createCombatObject()
setCombatParam(combat8_Plant, COMBAT_PARAM_EFFECT, CONST_ME_PLANTATTACK)
setCombatParam(combat8_Plant, COMBAT_PARAM_TYPE, CONST_ME_ENERGYHIT)
setCombatArea(combat8_Plant,createCombatArea({{0, 0, 0, 0, 2, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{1, 1, 1, 1, 1, 1, 1, 1, 1}}))
function getDmg_Plant(cid, level, maglevel)
	return (10)*-1,(20)*-1 
end
setCombatCallback(combat8_Plant, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Plant")

-- Areas/Combat for 700ms
local combat7_Plant = createCombatObject()
setCombatParam(combat7_Plant, COMBAT_PARAM_EFFECT, CONST_ME_PLANTATTACK)
setCombatParam(combat7_Plant, COMBAT_PARAM_TYPE, CONST_ME_ENERGYHIT)
setCombatArea(combat7_Plant,createCombatArea({{0, 0, 0, 0, 2, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{1, 1, 1, 1, 1, 1, 1, 1, 1}}))
function getDmg_Plant(cid, level, maglevel)
	return (10)*-1,(20)*-1 
end
setCombatCallback(combat7_Plant, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Plant")

-- Areas/Combat for 600ms
local combat6_Plant = createCombatObject()
setCombatParam(combat6_Plant, COMBAT_PARAM_EFFECT, CONST_ME_PLANTATTACK)
setCombatParam(combat6_Plant, COMBAT_PARAM_TYPE, CONST_ME_ENERGYHIT)
setCombatArea(combat6_Plant,createCombatArea({{0, 0, 0, 0, 2, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{1, 1, 1, 1, 1, 1, 1, 1, 1}}))
function getDmg_Plant(cid, level, maglevel)
	return (10)*-1,(20)*-1 
end
setCombatCallback(combat6_Plant, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Plant")

-- Areas/Combat for 500ms
local combat5_Plant = createCombatObject()
setCombatParam(combat5_Plant, COMBAT_PARAM_EFFECT, CONST_ME_PLANTATTACK)
setCombatParam(combat5_Plant, COMBAT_PARAM_TYPE, CONST_ME_ENERGYHIT)
setCombatArea(combat5_Plant,createCombatArea({{0, 0, 0, 0, 2, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{1, 1, 1, 1, 1, 1, 1, 1, 1}}))
function getDmg_Plant(cid, level, maglevel)
	return (10)*-1,(20)*-1 
end
setCombatCallback(combat5_Plant, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Plant")

-- Areas/Combat for 400ms
local combat4_Plant = createCombatObject()
setCombatParam(combat4_Plant, COMBAT_PARAM_EFFECT, CONST_ME_PLANTATTACK)
setCombatParam(combat4_Plant, COMBAT_PARAM_TYPE, CONST_ME_ENERGYHIT)
setCombatArea(combat4_Plant,createCombatArea({{0, 0, 0, 0, 2, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{1, 1, 1, 1, 1, 1, 1, 1, 1}}))
function getDmg_Plant(cid, level, maglevel)
	return (10)*-1,(20)*-1 
end
setCombatCallback(combat4_Plant, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Plant")

-- Areas/Combat for 300ms
local combat3_Plant = createCombatObject()
setCombatParam(combat3_Plant, COMBAT_PARAM_EFFECT, CONST_ME_PLANTATTACK)
setCombatParam(combat3_Plant, COMBAT_PARAM_TYPE, CONST_ME_ENERGYHIT)
setCombatArea(combat3_Plant,createCombatArea({{0, 0, 0, 0, 2, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{1, 0, 0, 0, 0, 0, 0, 0, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1}}))
function getDmg_Plant(cid, level, maglevel)
	return (10)*-1,(20)*-1 
end
setCombatCallback(combat3_Plant, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Plant")

-- Areas/Combat for 200ms
local combat2_Plant = createCombatObject()
setCombatParam(combat2_Plant, COMBAT_PARAM_EFFECT, CONST_ME_PLANTATTACK)
setCombatParam(combat2_Plant, COMBAT_PARAM_TYPE, CONST_ME_ENERGYHIT)
setCombatArea(combat2_Plant,createCombatArea({{0, 0, 0, 2, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0},
{1, 0, 0, 0, 0, 0, 1},
{1, 1, 1, 1, 1, 1, 1}}))
function getDmg_Plant(cid, level, maglevel)
	return (10)*-1,(20)*-1 
end
setCombatCallback(combat2_Plant, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Plant")

-- Areas/Combat for 100ms
local combat1_Plant = createCombatObject()
setCombatParam(combat1_Plant, COMBAT_PARAM_EFFECT, CONST_ME_PLANTATTACK)
setCombatParam(combat1_Plant, COMBAT_PARAM_TYPE, CONST_ME_ENERGYHIT)
setCombatArea(combat1_Plant,createCombatArea({{0, 0, 2, 0, 0},
{1, 0, 0, 0, 1},
{1, 1, 1, 1, 1}}))
function getDmg_Plant(cid, level, maglevel)
	return (10)*-1,(20)*-1 
end
setCombatCallback(combat1_Plant, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Plant")

-- Areas/Combat for 2200ms
local combat22_Stones = createCombatObject()
setCombatParam(combat22_Stones, COMBAT_PARAM_EFFECT, CONST_ME_STONES)
setCombatParam(combat22_Stones, COMBAT_PARAM_TYPE, CONST_ME_ENERGYHIT)
setCombatArea(combat22_Stones,createCombatArea({{0, 0, 0, 0, 2, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{1, 1, 1, 1, 1, 1, 1, 1, 1}}))
function getDmg_Stones(cid, level, maglevel)
	return (10)*-1,(20)*-1 
end
setCombatCallback(combat22_Stones, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Stones")

-- Areas/Combat for 2400ms
local combat24_Plant = createCombatObject()
setCombatParam(combat24_Plant, COMBAT_PARAM_EFFECT, CONST_ME_PLANTATTACK)
setCombatParam(combat24_Plant, COMBAT_PARAM_TYPE, CONST_ME_ENERGYHIT)
setCombatArea(combat24_Plant,createCombatArea({{0, 0, 0, 0, 2, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{1, 1, 1, 1, 1, 1, 1, 1, 1}}))
function getDmg_Plant(cid, level, maglevel)
	return (10)*-1,(20)*-1 
end
setCombatCallback(combat24_Plant, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Plant")

-- Areas/Combat for 2500ms
local combat25_Plant = createCombatObject()
setCombatParam(combat25_Plant, COMBAT_PARAM_EFFECT, CONST_ME_PLANTATTACK)
setCombatParam(combat25_Plant, COMBAT_PARAM_TYPE, CONST_ME_ENERGYHIT)
setCombatArea(combat25_Plant,createCombatArea({{0, 0, 0, 0, 2, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{1, 1, 1, 1, 1, 1, 1, 1, 1}}))
function getDmg_Plant(cid, level, maglevel)
	return (10)*-1,(20)*-1 
end
setCombatCallback(combat25_Plant, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Plant")

-- Areas/Combat for 2600ms
local combat26_Plant = createCombatObject()
setCombatParam(combat26_Plant, COMBAT_PARAM_EFFECT, CONST_ME_PLANTATTACK)
setCombatParam(combat26_Plant, COMBAT_PARAM_TYPE, CONST_ME_ENERGYHIT)
setCombatArea(combat26_Plant,createCombatArea({{0, 0, 0, 0, 2, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{1, 1, 1, 1, 1, 1, 1, 1, 1}}))
function getDmg_Plant(cid, level, maglevel)
	return (10)*-1,(20)*-1 
end
setCombatCallback(combat26_Plant, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Plant")

-- Areas/Combat for 2700ms
local combat27_Plant = createCombatObject()
setCombatParam(combat27_Plant, COMBAT_PARAM_EFFECT, CONST_ME_PLANTATTACK)
setCombatParam(combat27_Plant, COMBAT_PARAM_TYPE, CONST_ME_ENERGYHIT)
setCombatArea(combat27_Plant,createCombatArea({{0, 0, 0, 0, 2, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{1, 1, 1, 1, 1, 1, 1, 1, 1}}))
function getDmg_Plant(cid, level, maglevel)
	return (10)*-1,(20)*-1 
end
setCombatCallback(combat27_Plant, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Plant")

-- Areas/Combat for 2800ms
local combat28_Plant = createCombatObject()
setCombatParam(combat28_Plant, COMBAT_PARAM_EFFECT, CONST_ME_PLANTATTACK)
setCombatParam(combat28_Plant, COMBAT_PARAM_TYPE, CONST_ME_ENERGYHIT)
setCombatArea(combat28_Plant,createCombatArea({{0, 0, 0, 0, 2, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{1, 1, 1, 1, 1, 1, 1, 1, 1}}))
function getDmg_Plant(cid, level, maglevel)
	return (10)*-1,(20)*-1 
end
setCombatCallback(combat28_Plant, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Plant")

-- Areas/Combat for 2900ms
local combat29_Plant = createCombatObject()
setCombatParam(combat29_Plant, COMBAT_PARAM_EFFECT, CONST_ME_PLANTATTACK)
setCombatParam(combat29_Plant, COMBAT_PARAM_TYPE, CONST_ME_ENERGYHIT)
setCombatArea(combat29_Plant,createCombatArea({{0, 0, 0, 0, 2, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{1, 1, 1, 1, 1, 1, 1, 1, 1}}))
function getDmg_Plant(cid, level, maglevel)
	return (10)*-1,(20)*-1 
end
setCombatCallback(combat29_Plant, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Plant")

-- Areas/Combat for 3000ms
local combat30_Plant = createCombatObject()
setCombatParam(combat30_Plant, COMBAT_PARAM_EFFECT, CONST_ME_PLANTATTACK)
setCombatParam(combat30_Plant, COMBAT_PARAM_TYPE, CONST_ME_ENERGYHIT)
setCombatArea(combat30_Plant,createCombatArea({{0, 0, 0, 0, 2, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{1, 1, 1, 1, 1, 1, 1, 1, 1}}))
function getDmg_Plant(cid, level, maglevel)
	return (10)*-1,(20)*-1 
end
setCombatCallback(combat30_Plant, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Plant")

-- Areas/Combat for 3100ms
local combat31_Plant = createCombatObject()
setCombatParam(combat31_Plant, COMBAT_PARAM_EFFECT, CONST_ME_PLANTATTACK)
setCombatParam(combat31_Plant, COMBAT_PARAM_TYPE, CONST_ME_ENERGYHIT)
setCombatArea(combat31_Plant,createCombatArea({{0, 0, 0, 0, 2, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{1, 1, 1, 1, 1, 1, 1, 1, 1}}))
function getDmg_Plant(cid, level, maglevel)
	return (10)*-1,(20)*-1 
end
setCombatCallback(combat31_Plant, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Plant")

-- Areas/Combat for 3200ms
local combat32_Plant = createCombatObject()
setCombatParam(combat32_Plant, COMBAT_PARAM_EFFECT, CONST_ME_PLANTATTACK)
setCombatParam(combat32_Plant, COMBAT_PARAM_TYPE, CONST_ME_ENERGYHIT)
setCombatArea(combat32_Plant,createCombatArea({{0, 0, 0, 0, 2, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{1, 1, 1, 1, 1, 1, 1, 1, 1}}))
function getDmg_Plant(cid, level, maglevel)
	return (10)*-1,(20)*-1 
end
setCombatCallback(combat32_Plant, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Plant")

-- Areas/Combat for 3300ms
local combat33_Plant = createCombatObject()
setCombatParam(combat33_Plant, COMBAT_PARAM_EFFECT, CONST_ME_PLANTATTACK)
setCombatParam(combat33_Plant, COMBAT_PARAM_TYPE, CONST_ME_ENERGYHIT)
setCombatArea(combat33_Plant,createCombatArea({{0, 0, 0, 0, 2, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{1, 1, 1, 1, 1, 1, 1, 1, 1}}))
function getDmg_Plant(cid, level, maglevel)
	return (10)*-1,(20)*-1 
end
setCombatCallback(combat33_Plant, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Plant")

-- Areas/Combat for 3400ms
local combat34_Plant = createCombatObject()
setCombatParam(combat34_Plant, COMBAT_PARAM_EFFECT, CONST_ME_PLANTATTACK)
setCombatParam(combat34_Plant, COMBAT_PARAM_TYPE, CONST_ME_ENERGYHIT)
setCombatArea(combat34_Plant,createCombatArea({{0, 0, 0, 0, 2, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{1, 1, 1, 1, 1, 1, 1, 1, 1}}))
function getDmg_Plant(cid, level, maglevel)
	return (10)*-1,(20)*-1 
end
setCombatCallback(combat34_Plant, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Plant")

-- Areas/Combat for 3500ms
local combat35_Plant = createCombatObject()
setCombatParam(combat35_Plant, COMBAT_PARAM_EFFECT, CONST_ME_PLANTATTACK)
setCombatParam(combat35_Plant, COMBAT_PARAM_TYPE, CONST_ME_ENERGYHIT)
setCombatArea(combat35_Plant,createCombatArea({{0, 0, 0, 0, 2, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{1, 1, 1, 1, 1, 1, 1, 1, 1}}))
function getDmg_Plant(cid, level, maglevel)
	return (10)*-1,(20)*-1 
end
setCombatCallback(combat35_Plant, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Plant")

-- Areas/Combat for 3600ms
local combat36_Plant = createCombatObject()
setCombatParam(combat36_Plant, COMBAT_PARAM_EFFECT, CONST_ME_PLANTATTACK)
setCombatParam(combat36_Plant, COMBAT_PARAM_TYPE, CONST_ME_ENERGYHIT)
setCombatArea(combat36_Plant,createCombatArea({{0, 0, 0, 0, 2, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{1, 1, 1, 1, 1, 1, 1, 1, 1}}))
function getDmg_Plant(cid, level, maglevel)
	return (10)*-1,(20)*-1 
end
setCombatCallback(combat36_Plant, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Plant")

-- Areas/Combat for 3700ms
local combat37_Plant = createCombatObject()
setCombatParam(combat37_Plant, COMBAT_PARAM_EFFECT, CONST_ME_PLANTATTACK)
setCombatParam(combat37_Plant, COMBAT_PARAM_TYPE, CONST_ME_ENERGYHIT)
setCombatArea(combat37_Plant,createCombatArea({{0, 0, 0, 0, 2, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{1, 1, 1, 1, 1, 1, 1, 1, 1}}))
function getDmg_Plant(cid, level, maglevel)
	return (10)*-1,(20)*-1 
end
setCombatCallback(combat37_Plant, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Plant")

-- Areas/Combat for 3800ms
local combat38_Plant = createCombatObject()
setCombatParam(combat38_Plant, COMBAT_PARAM_EFFECT, CONST_ME_PLANTATTACK)
setCombatParam(combat38_Plant, COMBAT_PARAM_TYPE, CONST_ME_ENERGYHIT)
setCombatArea(combat38_Plant,createCombatArea({{0, 0, 0, 0, 2, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{1, 0, 0, 0, 0, 0, 0, 0, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1}}))
function getDmg_Plant(cid, level, maglevel)
	return (10)*-1,(20)*-1 
end
setCombatCallback(combat38_Plant, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Plant")

-- Areas/Combat for 3900ms
local combat39_Plant = createCombatObject()
setCombatParam(combat39_Plant, COMBAT_PARAM_EFFECT, CONST_ME_PLANTATTACK)
setCombatParam(combat39_Plant, COMBAT_PARAM_TYPE, CONST_ME_ENERGYHIT)
setCombatArea(combat39_Plant,createCombatArea({{0, 0, 0, 2, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0},
{1, 0, 0, 0, 0, 0, 1},
{1, 1, 1, 1, 1, 1, 1}}))
function getDmg_Plant(cid, level, maglevel)
	return (10)*-1,(20)*-1 
end
setCombatCallback(combat39_Plant, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Plant")

-- Areas/Combat for 4000ms
local combat40_Plant = createCombatObject()
setCombatParam(combat40_Plant, COMBAT_PARAM_EFFECT, CONST_ME_PLANTATTACK)
setCombatParam(combat40_Plant, COMBAT_PARAM_TYPE, CONST_ME_ENERGYHIT)
setCombatArea(combat40_Plant,createCombatArea({{0, 0, 2, 0, 0},
{1, 0, 0, 0, 1},
{1, 1, 1, 1, 1}}))
function getDmg_Plant(cid, level, maglevel)
	return (10)*-1,(20)*-1 
end
setCombatCallback(combat40_Plant, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Plant")

-- Areas/Combat for 4100ms
local combat41_Plant = createCombatObject()
setCombatParam(combat41_Plant, COMBAT_PARAM_EFFECT, CONST_ME_PLANTATTACK)
setCombatParam(combat41_Plant, COMBAT_PARAM_TYPE, CONST_ME_ENERGYHIT)
setCombatArea(combat41_Plant,createCombatArea({{1, 2, 1},
{1, 1, 1}}))
function getDmg_Plant(cid, level, maglevel)
	return (10)*-1,(20)*-1 
end
setCombatCallback(combat41_Plant, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Plant")

-- Areas/Combat for 4200ms
local combat42_UserPlant = createCombatObject()
setCombatParam(combat42_UserPlant, COMBAT_PARAM_EFFECT, CONST_ME_SMALLPLANTS)
setCombatParam(combat42_UserPlant, COMBAT_PARAM_TYPE, CONST_ME_ENERGYHIT)
setCombatArea(combat42_UserPlant,createCombatArea({{3}}))
function getDmg_UserPlant(cid, level, maglevel)
	return (10)*-1,(20)*-1 
end
setCombatCallback(combat42_UserPlant, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_UserPlant")

-- =============== CORE FUNCTIONS ===============
function RunPart(c,cid,var) -- Part
	doCombat(cid, c, var)
end

function onCastSpell(cid, var)
	RunPart(combat0_Plant,cid,var)
	RunPart(combat0_UserPlant,cid,var)
	addEvent(RunPart,2000,combat20_Explo,cid,var)
	addEvent(RunPart,1800,combat18_Stones,cid,var)
	addEvent(RunPart,1700,combat17_Plant,cid,var)
	addEvent(RunPart,1600,combat16_Plant,cid,var)
	addEvent(RunPart,1500,combat15_Plant,cid,var)
	addEvent(RunPart,1400,combat14_Plant,cid,var)
	addEvent(RunPart,1300,combat13_Plant,cid,var)
	addEvent(RunPart,1200,combat12_Plant,cid,var)
	addEvent(RunPart,1100,combat11_Plant,cid,var)
	addEvent(RunPart,1000,combat10_Plant,cid,var)
	addEvent(RunPart,900,combat9_Plant,cid,var)
	addEvent(RunPart,800,combat8_Plant,cid,var)
	addEvent(RunPart,700,combat7_Plant,cid,var)
	addEvent(RunPart,600,combat6_Plant,cid,var)
	addEvent(RunPart,500,combat5_Plant,cid,var)
	addEvent(RunPart,400,combat4_Plant,cid,var)
	addEvent(RunPart,300,combat3_Plant,cid,var)
	addEvent(RunPart,200,combat2_Plant,cid,var)
	addEvent(RunPart,100,combat1_Plant,cid,var)
	addEvent(RunPart,2200,combat22_Stones,cid,var)
	addEvent(RunPart,2400,combat24_Plant,cid,var)
	addEvent(RunPart,2500,combat25_Plant,cid,var)
	addEvent(RunPart,2600,combat26_Plant,cid,var)
	addEvent(RunPart,2700,combat27_Plant,cid,var)
	addEvent(RunPart,2800,combat28_Plant,cid,var)
	addEvent(RunPart,2900,combat29_Plant,cid,var)
	addEvent(RunPart,3000,combat30_Plant,cid,var)
	addEvent(RunPart,3100,combat31_Plant,cid,var)
	addEvent(RunPart,3200,combat32_Plant,cid,var)
	addEvent(RunPart,3300,combat33_Plant,cid,var)
	addEvent(RunPart,3400,combat34_Plant,cid,var)
	addEvent(RunPart,3500,combat35_Plant,cid,var)
	addEvent(RunPart,3600,combat36_Plant,cid,var)
	addEvent(RunPart,3700,combat37_Plant,cid,var)
	addEvent(RunPart,3800,combat38_Plant,cid,var)
	addEvent(RunPart,3900,combat39_Plant,cid,var)
	addEvent(RunPart,4000,combat40_Plant,cid,var)
	addEvent(RunPart,4100,combat41_Plant,cid,var)
	addEvent(RunPart,4200,combat42_UserPlant,cid,var)
	return true
end

testimg18.gif
 
Ok so I spent alot of time on this, don't think it would be possible to use ingame :p was just for the looks xd
hNrfS.gif
 
Another suggestion is a setting for finding the spr/dat files in a custom location/name. I find myself having to make so many copies of my dat/spr files which are very big :D

E.g.
name="custom"
path="C:/Program Files (x86)/Custom Client/"

Searches for:
C:/Program Files (x86)/Custom Client/custom.spr
C:/Program Files (x86)/Custom Client/custom.dat

<3

EDIT: The space bar play hotkey is a little bugged, it plays from the start rather than from the point on the timeline you are at.

Also I am having an exception issue when I tried to export the gif, 15000 ms long. It is saying it can't find the file resc/player.gif yet it is there:
Code:
See the end of this message for details on invoking 
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.IO.FileNotFoundException: resc\player.gif
   at System.Drawing.Image.FromFile(String filename, Boolean useEmbeddedColorManagement)
   at System.Drawing.Image.FromFile(String filename)
   at SpellCreator.Spell.RenderView(Int32 time,   root)
   at  . (Object , EventArgs )
   at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
   at System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
   at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
   at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
   at System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
   at System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
   at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
   at System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
   at System.Windows.Forms.ToolStrip.WndProc(Message& m)
   at System.Windows.Forms.ToolStripDropDown.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.3625 (GDR.050727-3600)
    CodeBase: file:///C:/WINDOWS.0/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
SpellCreator
    Assembly Version: 1.0.0.0
    Win32 Version: 1.0.0.0
    CodeBase: file:///C:/Documents%20and%20Settings/Aaron.AARONS-PC/Desktop/SpellCreator/SpellCreator.exe
----------------------------------------
System.Windows.Forms
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.3623 (GDR.050727-3600)
    CodeBase: file:///C:/WINDOWS.0/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.3624 (GDR.050727-3600)
    CodeBase: file:///C:/WINDOWS.0/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///C:/WINDOWS.0/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Xml
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.3082 (QFE.050727-3000)
    CodeBase: file:///C:/WINDOWS.0/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
System.Core
    Assembly Version: 3.5.0.0
    Win32 Version: 3.5.30729.1 built by: SP
    CodeBase: file:///C:/WINDOWS.0/assembly/GAC_MSIL/System.Core/3.5.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

<configuration>
    <system.windows.forms jitDebugging="true" />
</configuration>

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.
 
Last edited:
Founded a bug when your making spells,

This error come with otscript live:
Code:
INFO: Starting OTScript Debug.lua
ERROR: Bullet Seed.lua:12: attempt to call global 'setCombatCallback' (a nil value)
INFO: Stopping OTScript Debug.lua

How does it effect? i made a fire spin around the player for 7 seconds, when i logg out during the spin i get this error
Code:
[11/06/2012 09:53:40] [Error - Spell Interface] 
[11/06/2012 09:53:40] In a timer event called from: 
[11/06/2012 09:53:40] data/spells/scripts/players/firespin.lua:onCastSpell
[11/06/2012 09:53:40] Description: 
[11/06/2012 09:53:40] (luaDoCombat) Creature not found

Please Help :/
 
2 varations of my spell :p ( the first part wouldn't make any damage, is like a charging energy)

1º:

2º:
 
Another suggestion is a setting for finding the spr/dat files in a custom location/name. I find myself having to make so many copies of my dat/spr files which are very big :D

E.g.
name="custom"
path="C:/Program Files (x86)/Custom Client/"

Searches for:
C:/Program Files (x86)/Custom Client/custom.spr
C:/Program Files (x86)/Custom Client/custom.dat

<3

EDIT: The space bar play hotkey is a little bugged, it plays from the start rather than from the point on the timeline you are at.

Also I am having an exception issue when I tried to export the gif, 15000 ms long. It is saying it can't find the file resc/player.gif yet it is there:
Code:
See the end of this message for details on invoking 
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.IO.FileNotFoundException: resc\player.gif
   at System.Drawing.Image.FromFile(String filename, Boolean useEmbeddedColorManagement)
   at System.Drawing.Image.FromFile(String filename)
   at SpellCreator.Spell.RenderView(Int32 time,   root)
   at  . (Object , EventArgs )
   at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
   at System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
   at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
   at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
   at System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
   at System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
   at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
   at System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
   at System.Windows.Forms.ToolStrip.WndProc(Message& m)
   at System.Windows.Forms.ToolStripDropDown.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.3625 (GDR.050727-3600)
    CodeBase: file:///C:/WINDOWS.0/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
SpellCreator
    Assembly Version: 1.0.0.0
    Win32 Version: 1.0.0.0
    CodeBase: file:///C:/Documents%20and%20Settings/Aaron.AARONS-PC/Desktop/SpellCreator/SpellCreator.exe
----------------------------------------
System.Windows.Forms
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.3623 (GDR.050727-3600)
    CodeBase: file:///C:/WINDOWS.0/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.3624 (GDR.050727-3600)
    CodeBase: file:///C:/WINDOWS.0/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///C:/WINDOWS.0/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Xml
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.3082 (QFE.050727-3000)
    CodeBase: file:///C:/WINDOWS.0/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
System.Core
    Assembly Version: 3.5.0.0
    Win32 Version: 3.5.30729.1 built by: SP
    CodeBase: file:///C:/WINDOWS.0/assembly/GAC_MSIL/System.Core/3.5.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

<configuration>
    <system.windows.forms jitDebugging="true" />
</configuration>

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.

I'll get onto that tibia folder thing, want it else myself too, but this is easier to test :p.
About your exception, you probably launched the application with a shortcut link towards the .exe. -- or did you launch it directly?
If it's the 1st, your starting path value of the shortcut key is messed up.

Founded a bug when your making spells,

This error come with otscript live:
Code:
INFO: Starting OTScript Debug.lua
ERROR: Bullet Seed.lua:12: attempt to call global 'setCombatCallback' (a nil value)
INFO: Stopping OTScript Debug.lua

How does it effect? i made a fire spin around the player for 7 seconds, when i logg out during the spin i get this error
Code:
[11/06/2012 09:53:40] [Error - Spell Interface] 
[11/06/2012 09:53:40] In a timer event called from: 
[11/06/2012 09:53:40] data/spells/scripts/players/firespin.lua:onCastSpell
[11/06/2012 09:53:40] Description: 
[11/06/2012 09:53:40] (luaDoCombat) Creature not found

Please Help :/

Your distro basically does not support custom damage functions (what distro do you use?). If I know whatever you use I might be able to add compatibility for it.
That 2nd error is something I'll fix for future generations soon.
 
Its pokemon distor xD i dont know what it is, maybe 0.3.5 or 0.3.6
 
Here is a sample!

Code:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, FIREDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, 15)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, 3)

function onCastSpell(cid, var)
	doCreatureSay(cid, "EMBER!", TALKTYPE_MONSTER)
	if getPlayerStorageValue(cid, 3) >= 1 then
	doSendAnimatedText(getThingPos(cid), "MISS", 215)
	setPlayerStorageValue(cid, 3, -1)
	return true
	end
	if getPlayerStorageValue(cid, 5) >= 1 then
		if math.random(1,100) <= 33 then
		doSendAnimatedText(getThingPos(cid), "SELF HIT", 180)
			if isPlayer(getCreatureTarget(cid)) then
			huah = getPlayerLevel(getCreatureTarget(cid))
			else
			huah = getPlayerLevel(getCreatureMaster(getCreatureTarget(cid)))
			end
		local levels = huah
		doTargetCombatHealth(getCreatureTarget(cid), cid, COMBAT_PHYSICALDAMAGE, -(math.random((levels*3),(levels*5))), -((math.random((levels*3),(levels*5))+10)), 3)
		return true
		end
	end
doCombat(cid, combat, var)

end
 
Your spell manually sets the targets health to a lower value using some weird calculations. I won't add support for that anytime soon since I prefer to just use the TFS spell system. Other revisions however, do support this function (so I severely recommend upgrading it).
 
Back
Top