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_HOLYDAMAGE)
9setCombatParam(combat1_Brush, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
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_HOLYDAMAGE)
20setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
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_HOLYDAMAGE)
32setCombatParam(combat2_Brush, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
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 500ms
42local combat5_Brush = createCombatObject()
43setCombatParam(combat5_Brush, COMBAT_PARAM_EFFECT, CONST_ME_HOLYDAMAGE)
44setCombatParam(combat5_Brush, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
45setCombatArea(combat5_Brush,createCombatArea({{0, 2},
46{1, 0}}))
47function getDmg_Brush(cid, level, maglevel)
48
49 return -min, -max
50end
51setCombatCallback(combat5_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
52
53-- Areas/Combat for 600ms
54local combat6_Brush = createCombatObject()
55setCombatParam(combat6_Brush, COMBAT_PARAM_EFFECT, CONST_ME_HOLYDAMAGE)
56setCombatParam(combat6_Brush, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
57setCombatArea(combat6_Brush,createCombatArea({{3}}))
58function getDmg_Brush(cid, level, maglevel)
59
60 return -min, -max
61end
62setCombatCallback(combat6_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
63
64-- Areas/Combat for 700ms
65local combat7_Brush = createCombatObject()
66setCombatParam(combat7_Brush, COMBAT_PARAM_EFFECT, CONST_ME_HOLYDAMAGE)
67setCombatParam(combat7_Brush, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
68setCombatArea(combat7_Brush,createCombatArea({{0, 1},
69{2, 0}}))
70function getDmg_Brush(cid, level, maglevel)
71
72 return -min, -max
73end
74setCombatCallback(combat7_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
75
76-- Areas/Combat for 1000ms
77local combat10_Brush = createCombatObject()
78setCombatParam(combat10_Brush, COMBAT_PARAM_EFFECT, CONST_ME_HOLYDAMAGE)
79setCombatParam(combat10_Brush, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
80setCombatArea(combat10_Brush,createCombatArea({{2, 1}}))
81function getDmg_Brush(cid, level, maglevel)
82
83 return -min, -max
84end
85setCombatCallback(combat10_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
86
87-- Areas/Combat for 1100ms
88local combat11_Brush = createCombatObject()
89setCombatParam(combat11_Brush, COMBAT_PARAM_EFFECT, CONST_ME_HOLYDAMAGE)
90setCombatParam(combat11_Brush, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
91setCombatArea(combat11_Brush,createCombatArea({{3}}))
92function getDmg_Brush(cid, level, maglevel)
93
94 return -min, -max
95end
96setCombatCallback(combat11_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
97
98-- Areas/Combat for 1200ms
99local combat12_Brush = createCombatObject()
100setCombatParam(combat12_Brush, COMBAT_PARAM_EFFECT, CONST_ME_HOLYDAMAGE)
101setCombatParam(combat12_Brush, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
102setCombatArea(combat12_Brush,createCombatArea({{1, 2}}))
103function getDmg_Brush(cid, level, maglevel)
104
105 return -min, -max
106end
107setCombatCallback(combat12_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
108
109-- Areas/Combat for 1500ms
110local combat15_Brush = createCombatObject()
111setCombatParam(combat15_Brush, COMBAT_PARAM_EFFECT, CONST_ME_HOLYDAMAGE)
112setCombatParam(combat15_Brush, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
113setCombatArea(combat15_Brush,createCombatArea({{2},
114{1}}))
115function getDmg_Brush(cid, level, maglevel)
116
117 return -min, -max
118end
119setCombatCallback(combat15_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
120
121-- Areas/Combat for 1600ms
122local combat16_Brush = createCombatObject()
123setCombatParam(combat16_Brush, COMBAT_PARAM_EFFECT, CONST_ME_HOLYDAMAGE)
124setCombatParam(combat16_Brush, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
125setCombatArea(combat16_Brush,createCombatArea({{3}}))
126function getDmg_Brush(cid, level, maglevel)
127
128 return -min, -max
129end
130setCombatCallback(combat16_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
131
132-- Areas/Combat for 1700ms
133local combat17_Brush = createCombatObject()
134setCombatParam(combat17_Brush, COMBAT_PARAM_EFFECT, CONST_ME_HOLYDAMAGE)
135setCombatParam(combat17_Brush, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
136setCombatArea(combat17_Brush,createCombatArea({{1},
137{2}}))
138function getDmg_Brush(cid, level, maglevel)
139
140 return -min, -max
141end
142setCombatCallback(combat17_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
143
144-- Areas/Combat for 2200ms
145local combat22_Brush = createCombatObject()
146setCombatParam(combat22_Brush, COMBAT_PARAM_EFFECT, CONST_ME_HOLYDAMAGE)
147setCombatParam(combat22_Brush, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
148setCombatArea(combat22_Brush,createCombatArea({{1, 1, 1},
149{1, 3, 1},
150{1, 1, 1}}))
151function getDmg_Brush(cid, level, maglevel)
152
153 return -min, -max
154end
155setCombatCallback(combat22_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
156
157-- =============== CORE FUNCTIONS ===============
158local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
159 if (isCreature(cid)) then
160 doCombat(cid, c, var)
161 if (dirList ~= nil) then -- Emit distance effects
162 local i = 2;
163 while (i < #dirList) do
164 doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
165 i = i + 2
166 end
167 end
168 end
169end
170function checkSpell44(cid)
171 local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
172 local CHECK_SLOT_01 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_04)
173 local CHECK_SLOT_02 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_05)
174 local CHECK_SLOT_03 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_06)
175 SPELL_ID = 44
176
177 if GUN_ID > 0 then
178 if CHECK_SLOT_01 == SPELL_ID then
179 cid:sendCancelMessage("@SpellCooldown 01")
180 return true
181 elseif CHECK_SLOT_02 == SPELL_ID then
182 cid:sendCancelMessage("@SpellCooldown 02")
183 return true
184 elseif CHECK_SLOT_03 == SPELL_ID then
185 cid:sendCancelMessage("@SpellCooldown 03")
186 return true
187 else
188 return false
189 end
190 else
191 return false
192 end
193end
194function onCastSpell(cid, var)
195 if checkSpell44(cid) or cid:getGroup():getAccess() then
196 local startPos = getCreaturePosition(cid)
197 local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
198 local starGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_03)
199 local levelGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_07)
200 min = onDamage(cid, GUN_ID, levelGun, starGun, "SKILL_MIN", SPELL_ID)
201 max = min
202 addEvent(RunPart,100,combat1_Brush,cid.uid,var)
203 RunPart(combat0_Brush,cid,var)
204 addEvent(RunPart,200,combat2_Brush,cid.uid,var)
205 addEvent(RunPart,500,combat5_Brush,cid.uid,var)
206 addEvent(RunPart,600,combat6_Brush,cid.uid,var)
207 addEvent(RunPart,700,combat7_Brush,cid.uid,var)
208 addEvent(RunPart,1000,combat10_Brush,cid.uid,var)
209 addEvent(RunPart,1100,combat11_Brush,cid.uid,var)
210 addEvent(RunPart,1200,combat12_Brush,cid.uid,var)
211 addEvent(RunPart,1500,combat15_Brush,cid.uid,var)
212 addEvent(RunPart,1600,combat16_Brush,cid.uid,var)
213 addEvent(RunPart,1700,combat17_Brush,cid.uid,var)
214 addEvent(RunPart,2200,combat22_Brush,cid.uid,var)
215 return true
216 else
217 cid:getPosition():sendMagicEffect(03)
218 return false
219 end
220end