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_YALAHARIGHOST)
9setCombatParam(combat1_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
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_SUDDENDEATH,-1,1}
18
19-- Areas/Combat for 0ms
20local combat0_Brush = createCombatObject()
21setCombatParam(combat0_Brush, COMBAT_PARAM_EFFECT, CONST_ME_YALAHARIGHOST)
22setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
23setCombatArea(combat0_Brush,createCombatArea({{2, 0, 0},
24{0, 0, 0},
25{0, 0, 1}}))
26function getDmg_Brush(cid, level, maglevel)
27
28 return -min, -max
29end
30setCombatCallback(combat0_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
31local dfcombat0_Brush = {CONST_ANI_SUDDENDEATH,2,2}
32
33-- Areas/Combat for 200ms
34local combat2_Brush = createCombatObject()
35setCombatParam(combat2_Brush, COMBAT_PARAM_EFFECT, CONST_ME_YALAHARIGHOST)
36setCombatParam(combat2_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
37setCombatArea(combat2_Brush,createCombatArea({{0, 1},
38{0, 0},
39{2, 0}}))
40function getDmg_Brush(cid, level, maglevel)
41
42 return -min, -max
43end
44setCombatCallback(combat2_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
45local dfcombat2_Brush = {CONST_ANI_SUDDENDEATH,1,-2}
46
47-- Areas/Combat for 300ms
48local combat3_Brush = createCombatObject()
49setCombatParam(combat3_Brush, COMBAT_PARAM_EFFECT, CONST_ME_YALAHARIGHOST)
50setCombatParam(combat3_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
51setCombatArea(combat3_Brush,createCombatArea({{1, 0, 0},
52{0, 0, 0},
53{0, 0, 2}}))
54function getDmg_Brush(cid, level, maglevel)
55
56 return -min, -max
57end
58setCombatCallback(combat3_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
59local dfcombat3_Brush = {CONST_ANI_SUDDENDEATH,-2,-2}
60
61-- Areas/Combat for 400ms
62local combat4_Brush = createCombatObject()
63setCombatParam(combat4_Brush, COMBAT_PARAM_EFFECT, CONST_ME_YALAHARIGHOST)
64setCombatParam(combat4_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
65setCombatArea(combat4_Brush,createCombatArea({{2, 0, 1}}))
66function getDmg_Brush(cid, level, maglevel)
67
68 return -min, -max
69end
70setCombatCallback(combat4_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
71local dfcombat4_Brush = {CONST_ANI_SUDDENDEATH,2,0}
72
73-- Areas/Combat for 500ms
74local combat5_Brush = createCombatObject()
75setCombatParam(combat5_Brush, COMBAT_PARAM_EFFECT, CONST_ME_YALAHARIGHOST)
76setCombatParam(combat5_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
77setCombatArea(combat5_Brush,createCombatArea({{2},
78{0},
79{1}}))
80function getDmg_Brush(cid, level, maglevel)
81
82 return -min, -max
83end
84setCombatCallback(combat5_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
85local dfcombat5_Brush = {CONST_ANI_SUDDENDEATH,0,2}
86
87-- Areas/Combat for 600ms
88local combat6_Brush = createCombatObject()
89setCombatParam(combat6_Brush, COMBAT_PARAM_EFFECT, CONST_ME_YALAHARIGHOST)
90setCombatParam(combat6_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
91setCombatArea(combat6_Brush,createCombatArea({{1, 0},
92{0, 2}}))
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_SUDDENDEATH,-1,-1}
99
100-- Areas/Combat for 700ms
101local combat7_Brush = createCombatObject()
102setCombatParam(combat7_Brush, COMBAT_PARAM_EFFECT, CONST_ME_YALAHARIGHOST)
103setCombatParam(combat7_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
104setCombatArea(combat7_Brush,createCombatArea({{1, 0, 2}}))
105function getDmg_Brush(cid, level, maglevel)
106
107 return -min, -max
108end
109setCombatCallback(combat7_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
110local dfcombat7_Brush = {CONST_ANI_SUDDENDEATH,-2,0}
111
112-- Areas/Combat for 800ms
113local combat8_Brush = createCombatObject()
114setCombatParam(combat8_Brush, COMBAT_PARAM_EFFECT, CONST_ME_YALAHARIGHOST)
115setCombatParam(combat8_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
116setCombatArea(combat8_Brush,createCombatArea({{0, 0, 1},
117{2, 0, 0}}))
118function getDmg_Brush(cid, level, maglevel)
119
120 return -min, -max
121end
122setCombatCallback(combat8_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
123local dfcombat8_Brush = {CONST_ANI_SUDDENDEATH,2,-1}
124
125-- Areas/Combat for 900ms
126local combat9_Brush = createCombatObject()
127setCombatParam(combat9_Brush, COMBAT_PARAM_EFFECT, CONST_ME_YALAHARIGHOST)
128setCombatParam(combat9_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
129setCombatArea(combat9_Brush,createCombatArea({{2, 0},
130{0, 1}}))
131function getDmg_Brush(cid, level, maglevel)
132
133 return -min, -max
134end
135setCombatCallback(combat9_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
136local dfcombat9_Brush = {CONST_ANI_SUDDENDEATH,1,1}
137
138-- Areas/Combat for 1000ms
139local combat10_Brush = createCombatObject()
140setCombatParam(combat10_Brush, COMBAT_PARAM_EFFECT, CONST_ME_YALAHARIGHOST)
141setCombatParam(combat10_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
142setCombatArea(combat10_Brush,createCombatArea({{2, 0},
143{0, 0},
144{0, 0},
145{0, 1}}))
146function getDmg_Brush(cid, level, maglevel)
147
148 return -min, -max
149end
150setCombatCallback(combat10_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
151local dfcombat10_Brush = {CONST_ANI_SUDDENDEATH,1,3}
152
153-- Areas/Combat for 1100ms
154local combat11_Brush = createCombatObject()
155setCombatParam(combat11_Brush, COMBAT_PARAM_EFFECT, CONST_ME_YALAHARIGHOST)
156setCombatParam(combat11_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
157setCombatArea(combat11_Brush,createCombatArea({{0, 0, 0, 1},
158{0, 0, 0, 0},
159{2, 0, 0, 0}}))
160function getDmg_Brush(cid, level, maglevel)
161
162 return -min, -max
163end
164setCombatCallback(combat11_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
165local dfcombat11_Brush = {CONST_ANI_SUDDENDEATH,3,-2}
166
167-- Areas/Combat for 1200ms
168local combat12_Brush = createCombatObject()
169setCombatParam(combat12_Brush, COMBAT_PARAM_EFFECT, CONST_ME_YALAHARIGHOST)
170setCombatParam(combat12_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
171setCombatArea(combat12_Brush,createCombatArea({{0, 0, 2},
172{1, 0, 0}}))
173function getDmg_Brush(cid, level, maglevel)
174
175 return -min, -max
176end
177setCombatCallback(combat12_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
178local dfcombat12_Brush = {CONST_ANI_SUDDENDEATH,-2,1}
179
180-- Areas/Combat for 1300ms
181local combat13_Brush = createCombatObject()
182setCombatParam(combat13_Brush, COMBAT_PARAM_EFFECT, CONST_ME_YALAHARIGHOST)
183setCombatParam(combat13_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
184setCombatArea(combat13_Brush,createCombatArea({{0, 0, 2},
185{0, 0, 0},
186{1, 0, 0}}))
187function getDmg_Brush(cid, level, maglevel)
188
189 return -min, -max
190end
191setCombatCallback(combat13_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
192local dfcombat13_Brush = {CONST_ANI_SUDDENDEATH,-2,2}
193
194-- Areas/Combat for 1400ms
195local combat14_Brush = createCombatObject()
196setCombatParam(combat14_Brush, COMBAT_PARAM_EFFECT, CONST_ME_YALAHARIGHOST)
197setCombatParam(combat14_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
198setCombatArea(combat14_Brush,createCombatArea({{1},
199{2}}))
200function getDmg_Brush(cid, level, maglevel)
201
202 return -min, -max
203end
204setCombatCallback(combat14_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
205local dfcombat14_Brush = {CONST_ANI_SUDDENDEATH,0,-1}
206
207-- Areas/Combat for 1500ms
208local combat15_Brush = createCombatObject()
209setCombatParam(combat15_Brush, COMBAT_PARAM_EFFECT, CONST_ME_YALAHARIGHOST)
210setCombatParam(combat15_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
211setCombatArea(combat15_Brush,createCombatArea({{2, 1}}))
212function getDmg_Brush(cid, level, maglevel)
213
214 return -min, -max
215end
216setCombatCallback(combat15_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
217local dfcombat15_Brush = {CONST_ANI_SUDDENDEATH,1,0}
218
219-- Areas/Combat for 1600ms
220local combat16_Brush = createCombatObject()
221setCombatParam(combat16_Brush, COMBAT_PARAM_EFFECT, CONST_ME_YALAHARIGHOST)
222setCombatParam(combat16_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
223setCombatArea(combat16_Brush,createCombatArea({{0, 1, 0, 0},
224{0, 0, 0, 0},
225{1, 2, 0, 0},
226{0, 1, 0, 0},
227{0, 0, 0, 1}}))
228function getDmg_Brush(cid, level, maglevel)
229
230 return -min, -max
231end
232setCombatCallback(combat16_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
233local dfcombat16_Brush = {CONST_ANI_SUDDENDEATH,-1,0,2,2,0,1,0,-2}
234
235-- =============== CORE FUNCTIONS ===============
236local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
237 if (isCreature(cid)) then
238 doCombat(cid, c, var)
239 if (dirList ~= nil) then -- Emit distance effects
240 local i = 2;
241 while (i < #dirList) do
242 doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
243 i = i + 2
244 end
245 end
246 end
247end
248function checkSpell26(cid)
249 local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
250 local CHECK_SLOT_01 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_04)
251 local CHECK_SLOT_02 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_05)
252 local CHECK_SLOT_03 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_06)
253 SPELL_ID = 26
254
255 if GUN_ID > 0 then
256 if CHECK_SLOT_01 == SPELL_ID then
257 cid:sendCancelMessage("@SpellCooldown 01")
258 return true
259 elseif CHECK_SLOT_02 == SPELL_ID then
260 cid:sendCancelMessage("@SpellCooldown 02")
261 return true
262 elseif CHECK_SLOT_03 == SPELL_ID then
263 cid:sendCancelMessage("@SpellCooldown 03")
264 return true
265 else
266 return false
267 end
268 else
269 return false
270 end
271 return true
272end
273function onCastSpell(cid, var)
274 if checkSpell26(cid) or cid:getGroup():getAccess() then
275 local startPos = getCreaturePosition(cid)
276 local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
277 local starGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_03)
278 local levelGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_07)
279 min = onDamage(cid, GUN_ID, levelGun, starGun, "SKILL_MIN", SPELL_ID)
280 max = min
281 addEvent(RunPart,100,combat1_Brush,cid.uid,var,dfcombat1_Brush,startPos)
282 RunPart(combat0_Brush,cid,var,dfcombat0_Brush,startPos)
283 addEvent(RunPart,200,combat2_Brush,cid.uid,var,dfcombat2_Brush,startPos)
284 addEvent(RunPart,300,combat3_Brush,cid.uid,var,dfcombat3_Brush,startPos)
285 addEvent(RunPart,400,combat4_Brush,cid.uid,var,dfcombat4_Brush,startPos)
286 addEvent(RunPart,500,combat5_Brush,cid.uid,var,dfcombat5_Brush,startPos)
287 addEvent(RunPart,600,combat6_Brush,cid.uid,var,dfcombat6_Brush,startPos)
288 addEvent(RunPart,700,combat7_Brush,cid.uid,var,dfcombat7_Brush,startPos)
289 addEvent(RunPart,800,combat8_Brush,cid.uid,var,dfcombat8_Brush,startPos)
290 addEvent(RunPart,900,combat9_Brush,cid.uid,var,dfcombat9_Brush,startPos)
291 addEvent(RunPart,1000,combat10_Brush,cid.uid,var,dfcombat10_Brush,startPos)
292 addEvent(RunPart,1100,combat11_Brush,cid.uid,var,dfcombat11_Brush,startPos)
293 addEvent(RunPart,1200,combat12_Brush,cid.uid,var,dfcombat12_Brush,startPos)
294 addEvent(RunPart,1300,combat13_Brush,cid.uid,var,dfcombat13_Brush,startPos)
295 addEvent(RunPart,1400,combat14_Brush,cid.uid,var,dfcombat14_Brush,startPos)
296 addEvent(RunPart,1500,combat15_Brush,cid.uid,var,dfcombat15_Brush,startPos)
297 addEvent(RunPart,1600,combat16_Brush,cid.uid,var,dfcombat16_Brush,startPos)
298 return true
299 else
300 cid:getPosition():sendMagicEffect(03)
301 return false
302 end
303end