rain_sword.lua

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