1SPELL_ID = 00
2local min = 0
3local max = 0
4
5-- =============== COMBAT VARS ===============
6-- Areas/Combat for 100ms
7local combat1_Brush = createCombatObject()
8setCombatParam(combat1_Brush, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYHIT)
9setCombatParam(combat1_Brush, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
10setCombatArea(combat1_Brush,createCombatArea({{0, 2},
11{1, 0}}))
12function getDmg_Brush(cid, level, maglevel)
13
14 return -min, -max
15end
16setCombatCallback(combat1_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
17local dfcombat1_Brush = {CONST_ANI_ENERGYBALL,-1,1}
18
19-- Areas/Combat for 0ms
20local combat0_Brush = createCombatObject()
21setCombatParam(combat0_Brush, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYHIT)
22setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
23setCombatArea(combat0_Brush,createCombatArea({{2},
24{1}}))
25function getDmg_Brush(cid, level, maglevel)
26
27 return -min, -max
28end
29setCombatCallback(combat0_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
30local dfcombat0_Brush = {CONST_ANI_ENERGYBALL,0,1}
31
32-- Areas/Combat for 200ms
33local combat2_Brush = createCombatObject()
34setCombatParam(combat2_Brush, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYHIT)
35setCombatParam(combat2_Brush, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
36setCombatArea(combat2_Brush,createCombatArea({{1, 2}}))
37function getDmg_Brush(cid, level, maglevel)
38
39 return -min, -max
40end
41setCombatCallback(combat2_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
42local dfcombat2_Brush = {CONST_ANI_ENERGYBALL,-1,0}
43
44-- Areas/Combat for 300ms
45local combat3_Brush = createCombatObject()
46setCombatParam(combat3_Brush, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYHIT)
47setCombatParam(combat3_Brush, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
48setCombatArea(combat3_Brush,createCombatArea({{1, 0},
49{0, 2}}))
50function getDmg_Brush(cid, level, maglevel)
51
52 return -min, -max
53end
54setCombatCallback(combat3_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
55local dfcombat3_Brush = {CONST_ANI_ENERGYBALL,-1,-1}
56
57-- Areas/Combat for 400ms
58local combat4_Brush = createCombatObject()
59setCombatParam(combat4_Brush, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYHIT)
60setCombatParam(combat4_Brush, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
61setCombatArea(combat4_Brush,createCombatArea({{1},
62{2}}))
63function getDmg_Brush(cid, level, maglevel)
64
65 return -min, -max
66end
67setCombatCallback(combat4_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
68local dfcombat4_Brush = {CONST_ANI_ENERGYBALL,0,-1}
69
70-- Areas/Combat for 500ms
71local combat5_Brush = createCombatObject()
72setCombatParam(combat5_Brush, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYHIT)
73setCombatParam(combat5_Brush, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
74setCombatArea(combat5_Brush,createCombatArea({{0, 1},
75{2, 0}}))
76function getDmg_Brush(cid, level, maglevel)
77
78 return -min, -max
79end
80setCombatCallback(combat5_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
81local dfcombat5_Brush = {CONST_ANI_ENERGYBALL,1,-1}local combat5_Brush_2 = createCombatObject()
82setCombatParam(combat5_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
83setCombatParam(combat5_Brush_2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
84setCombatArea(combat5_Brush_2,createCombatArea({{2},
85{1}}))
86
87
88-- Areas/Combat for 600ms
89local combat6_Brush = createCombatObject()
90setCombatParam(combat6_Brush, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYHIT)
91setCombatParam(combat6_Brush, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
92setCombatArea(combat6_Brush,createCombatArea({{2, 1}}))
93function getDmg_Brush(cid, level, maglevel)
94
95 return -min, -max
96end
97setCombatCallback(combat6_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
98local dfcombat6_Brush = {CONST_ANI_ENERGYBALL,1,0}local combat6_Brush_2 = createCombatObject()
99setCombatParam(combat6_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
100setCombatParam(combat6_Brush_2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
101setCombatArea(combat6_Brush_2,createCombatArea({{0, 2},
102{1, 0}}))
103
104
105-- Areas/Combat for 700ms
106local combat7_Brush = createCombatObject()
107setCombatParam(combat7_Brush, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYHIT)
108setCombatParam(combat7_Brush, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
109setCombatArea(combat7_Brush,createCombatArea({{2, 0},
110{0, 1}}))
111function getDmg_Brush(cid, level, maglevel)
112
113 return -min, -max
114end
115setCombatCallback(combat7_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
116local dfcombat7_Brush = {CONST_ANI_ENERGYBALL,1,1}local combat7_Brush_2 = createCombatObject()
117setCombatParam(combat7_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
118setCombatParam(combat7_Brush_2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
119setCombatArea(combat7_Brush_2,createCombatArea({{1, 2}}))
120
121
122-- Areas/Combat for 800ms
123local combat8_Brush_2 = createCombatObject()
124setCombatParam(combat8_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
125setCombatParam(combat8_Brush_2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
126setCombatArea(combat8_Brush_2,createCombatArea({{1, 0},
127{0, 2}}))
128
129
130-- Areas/Combat for 900ms
131local combat9_Brush_2 = createCombatObject()
132setCombatParam(combat9_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
133setCombatParam(combat9_Brush_2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
134setCombatArea(combat9_Brush_2,createCombatArea({{1},
135{2}}))
136
137
138-- Areas/Combat for 1000ms
139local combat10_Brush_2 = createCombatObject()
140setCombatParam(combat10_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
141setCombatParam(combat10_Brush_2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
142setCombatArea(combat10_Brush_2,createCombatArea({{0, 1},
143{2, 0}}))
144
145
146-- Areas/Combat for 1100ms
147local combat11_Brush_2 = createCombatObject()
148setCombatParam(combat11_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
149setCombatParam(combat11_Brush_2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
150setCombatArea(combat11_Brush_2,createCombatArea({{2, 1}}))
151
152
153-- Areas/Combat for 1200ms
154local combat12_Brush_2 = createCombatObject()
155setCombatParam(combat12_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
156setCombatParam(combat12_Brush_2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
157setCombatArea(combat12_Brush_2,createCombatArea({{2, 0},
158{0, 1}}))
159
160
161-- =============== CORE FUNCTIONS ===============
162local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
163 if (isCreature(cid)) then
164 doCombat(cid, c, var)
165 if (dirList ~= nil) then -- Emit distance effects
166 local i = 2;
167 while (i < #dirList) do
168 doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
169 i = i + 2
170 end
171 end
172 end
173end
174function checkSpell70(cid)
175 local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
176 local CHECK_SLOT_01 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_04)
177 local CHECK_SLOT_02 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_05)
178 local CHECK_SLOT_03 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_06)
179 SPELL_ID = 70
180
181 if GUN_ID > 0 then
182 if CHECK_SLOT_01 == SPELL_ID then
183 cid:sendCancelMessage("@SpellCooldown 01")
184 return true
185 elseif CHECK_SLOT_02 == SPELL_ID then
186 cid:sendCancelMessage("@SpellCooldown 02")
187 return true
188 elseif CHECK_SLOT_03 == SPELL_ID then
189 cid:sendCancelMessage("@SpellCooldown 03")
190 return true
191 else
192 return false
193 end
194 else
195 return false
196 end
197end
198function onCastSpell(cid, var)
199 if checkSpell70(cid) or cid:getGroup():getAccess() then
200 local startPos = getCreaturePosition(cid)
201 local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
202 local starGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_03)
203 local levelGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_07)
204 min = onDamage(cid, GUN_ID, levelGun, starGun, "SKILL_MIN", SPELL_ID)
205 max = min
206 addEvent(RunPart,100,combat1_Brush,cid.uid,var,dfcombat1_Brush,startPos)
207 RunPart(combat0_Brush,cid,var,dfcombat0_Brush,startPos)
208 addEvent(RunPart,200,combat2_Brush,cid.uid,var,dfcombat2_Brush,startPos)
209 addEvent(RunPart,300,combat3_Brush,cid.uid,var,dfcombat3_Brush,startPos)
210 addEvent(RunPart,400,combat4_Brush,cid.uid,var,dfcombat4_Brush,startPos)
211 addEvent(RunPart,500,combat5_Brush,cid.uid,var,dfcombat5_Brush,startPos)
212 addEvent(RunPart,500,combat5_Brush_2,cid.uid,var)
213 addEvent(RunPart,600,combat6_Brush,cid.uid,var,dfcombat6_Brush,startPos)
214 addEvent(RunPart,600,combat6_Brush_2,cid.uid,var)
215 addEvent(RunPart,700,combat7_Brush,cid.uid,var,dfcombat7_Brush,startPos)
216 addEvent(RunPart,700,combat7_Brush_2,cid.uid,var)
217 addEvent(RunPart,800,combat8_Brush_2,cid.uid,var)
218 addEvent(RunPart,900,combat9_Brush_2,cid.uid,var)
219 addEvent(RunPart,1000,combat10_Brush_2,cid.uid,var)
220 addEvent(RunPart,1100,combat11_Brush_2,cid.uid,var)
221 addEvent(RunPart,1200,combat12_Brush_2,cid.uid,var)
222 return true
223 else
224 cid:getPosition():sendMagicEffect(03)
225 return false
226 end
227end