1SPELL_ID = 00
2local min = 0
3local max = 0
4
5-- =============== COMBAT VARS ===============
6-- Areas/Combat for 100ms
7local combat1_Brush_2 = createCombatObject()
8setCombatParam(combat1_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_POISONAREA)
9setCombatParam(combat1_Brush_2, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
10setCombatArea(combat1_Brush_2,createCombatArea({{1, 1, 1},
11{1, 2, 1},
12{1, 1, 1}}))
13function getDmg_Brush_2(cid, level, maglevel)
14
15 return -min, -max
16end
17setCombatCallback(combat1_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
18
19-- Areas/Combat for 0ms
20local combat0_Brush = createCombatObject()
21setCombatParam(combat0_Brush, COMBAT_PARAM_EFFECT, CONST_ME_POISONAREA)
22setCombatParam(combat0_Brush, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_EARTH)
23setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
24setCombatArea(combat0_Brush,createCombatArea({{3}}))
25function getDmg_Brush(cid, level, maglevel)
26
27 return -min, -max
28end
29setCombatCallback(combat0_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
30
31-- Areas/Combat for 200ms
32local combat2_Brush_2 = createCombatObject()
33setCombatParam(combat2_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_POISONAREA)
34setCombatParam(combat2_Brush_2, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
35setCombatArea(combat2_Brush_2,createCombatArea({{0, 0, 1, 0, 0},
36{0, 1, 0, 1, 0},
37{1, 0, 2, 0, 1},
38{0, 1, 0, 1, 0},
39{0, 0, 1, 0, 0}}))
40function getDmg_Brush_2(cid, level, maglevel)
41
42 return -min, -max
43end
44setCombatCallback(combat2_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
45
46-- Areas/Combat for 300ms
47local combat3_Brush_2 = createCombatObject()
48setCombatParam(combat3_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_POISONAREA)
49setCombatParam(combat3_Brush_2, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
50setCombatArea(combat3_Brush_2,createCombatArea({{0, 0, 0, 1, 0, 0, 0},
51{0, 0, 1, 0, 1, 0, 0},
52{0, 1, 0, 0, 0, 1, 0},
53{1, 0, 0, 2, 0, 0, 1},
54{0, 1, 0, 0, 0, 1, 0},
55{0, 0, 1, 0, 1, 0, 0},
56{0, 0, 0, 1, 0, 0, 0}}))
57function getDmg_Brush_2(cid, level, maglevel)
58
59 return -min, -max
60end
61setCombatCallback(combat3_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
62
63-- Areas/Combat for 600ms
64local combat6_Brush_3 = createCombatObject()
65setCombatParam(combat6_Brush_3, COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
66setCombatParam(combat6_Brush_3, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
67setCombatArea(combat6_Brush_3,createCombatArea({{0, 0, 0, 1, 0, 0, 0},
68{0, 0, 1, 0, 1, 0, 0},
69{0, 1, 0, 0, 0, 1, 0},
70{1, 0, 0, 2, 0, 0, 1},
71{0, 1, 0, 0, 0, 1, 0},
72{0, 0, 1, 0, 1, 0, 0},
73{0, 0, 0, 1, 0, 0, 0}}))
74function getDmg_Brush_3(cid, level, maglevel)
75
76 return -min, -max
77end
78setCombatCallback(combat6_Brush_3, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_3")
79
80-- Areas/Combat for 800ms
81local combat8_Brush_3 = createCombatObject()
82setCombatParam(combat8_Brush_3, COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
83setCombatParam(combat8_Brush_3, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
84setCombatArea(combat8_Brush_3,createCombatArea({{0, 0, 1, 0, 0},
85{0, 1, 0, 1, 0},
86{1, 0, 2, 0, 1},
87{0, 1, 0, 1, 0},
88{0, 0, 1, 0, 0}}))
89function getDmg_Brush_3(cid, level, maglevel)
90
91 return -min, -max
92end
93setCombatCallback(combat8_Brush_3, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_3")
94
95-- Areas/Combat for 1000ms
96local combat10_Brush_3 = createCombatObject()
97setCombatParam(combat10_Brush_3, COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
98setCombatParam(combat10_Brush_3, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
99setCombatArea(combat10_Brush_3,createCombatArea({{0, 1, 0},
100{1, 2, 1},
101{0, 1, 0}}))
102function getDmg_Brush_3(cid, level, maglevel)
103
104 return -min, -max
105end
106setCombatCallback(combat10_Brush_3, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_3")
107
108-- Areas/Combat for 1200ms
109local combat12_Brush_3 = createCombatObject()
110setCombatParam(combat12_Brush_3, COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
111setCombatParam(combat12_Brush_3, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
112setCombatArea(combat12_Brush_3,createCombatArea({{3}}))
113function getDmg_Brush_3(cid, level, maglevel)
114
115 return -min, -max
116end
117setCombatCallback(combat12_Brush_3, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_3")
118
119-- =============== CORE FUNCTIONS ===============
120local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
121 if (isCreature(cid)) then
122 doCombat(cid, c, var)
123 if (dirList ~= nil) then -- Emit distance effects
124 local i = 2;
125 while (i < #dirList) do
126 doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
127 i = i + 2
128 end
129 end
130 end
131end
132function checkSpell58(cid)
133 local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
134 local CHECK_SLOT_01 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_04)
135 local CHECK_SLOT_02 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_05)
136 local CHECK_SLOT_03 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_06)
137 SPELL_ID = 58
138
139 if GUN_ID > 0 then
140 if CHECK_SLOT_01 == SPELL_ID then
141 cid:sendCancelMessage("@SpellCooldown 01")
142 return true
143 elseif CHECK_SLOT_02 == SPELL_ID then
144 cid:sendCancelMessage("@SpellCooldown 02")
145 return true
146 elseif CHECK_SLOT_03 == SPELL_ID then
147 cid:sendCancelMessage("@SpellCooldown 03")
148 return true
149 else
150 return false
151 end
152 else
153 return false
154 end
155end
156function onCastSpell(cid, var)
157 if checkSpell58(cid) or cid:getGroup():getAccess() then
158 local startPos = getCreaturePosition(cid)
159 local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
160 local starGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_03)
161 local levelGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_07)
162 min = onDamage(cid, GUN_ID, levelGun, starGun, "SKILL_MIN", SPELL_ID)
163 max = min
164 addEvent(RunPart,100,combat1_Brush_2,cid.uid,var)
165 RunPart(combat0_Brush,cid,var)
166 addEvent(RunPart,200,combat2_Brush_2,cid.uid,var)
167 addEvent(RunPart,300,combat3_Brush_2,cid.uid,var)
168 addEvent(RunPart,600,combat6_Brush_3,cid.uid,var)
169 addEvent(RunPart,800,combat8_Brush_3,cid.uid,var)
170 addEvent(RunPart,1000,combat10_Brush_3,cid.uid,var)
171 addEvent(RunPart,1200,combat12_Brush_3,cid.uid,var)
172 return true
173 else
174 cid:getPosition():sendMagicEffect(03)
175 return false
176 end
177end