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