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_ENERGYAREA)
9setCombatParam(combat1_Brush, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
10setCombatArea(combat1_Brush,createCombatArea({{2},
11{1}}))
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_SMALLICE,0,1}
18
19-- Areas/Combat for 0ms
20local combat0_Brush = createCombatObject()
21setCombatParam(combat0_Brush, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYAREA)
22setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
23setCombatArea(combat0_Brush,createCombatArea({{2, 0},
24{0, 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_SMALLICE,1,1}
31
32-- Areas/Combat for 200ms
33local combat2_Brush = createCombatObject()
34setCombatParam(combat2_Brush, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYAREA)
35setCombatParam(combat2_Brush, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
36setCombatArea(combat2_Brush,createCombatArea({{0, 2},
37{1, 0}}))
38function getDmg_Brush(cid, level, maglevel)
39
40 return -min, -max
41end
42setCombatCallback(combat2_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
43local dfcombat2_Brush = {CONST_ANI_SMALLICE,-1,1}
44
45-- Areas/Combat for 300ms
46local combat3_Brush = createCombatObject()
47setCombatParam(combat3_Brush, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYAREA)
48setCombatParam(combat3_Brush, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
49setCombatArea(combat3_Brush,createCombatArea({{1, 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_SMALLICE,-1,0}
56
57-- Areas/Combat for 400ms
58local combat4_Brush = createCombatObject()
59setCombatParam(combat4_Brush, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYAREA)
60setCombatParam(combat4_Brush, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
61setCombatArea(combat4_Brush,createCombatArea({{1, 0},
62{0, 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_SMALLICE,-1,-1}
69
70-- Areas/Combat for 500ms
71local combat5_Brush = createCombatObject()
72setCombatParam(combat5_Brush, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYAREA)
73setCombatParam(combat5_Brush, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
74setCombatArea(combat5_Brush,createCombatArea({{1},
75{2}}))
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_SMALLICE,0,-1}
82
83-- Areas/Combat for 600ms
84local combat6_Brush = createCombatObject()
85setCombatParam(combat6_Brush, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYAREA)
86setCombatParam(combat6_Brush, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
87setCombatArea(combat6_Brush,createCombatArea({{0, 1},
88{2, 0}}))
89function getDmg_Brush(cid, level, maglevel)
90
91 return -min, -max
92end
93setCombatCallback(combat6_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
94local dfcombat6_Brush = {CONST_ANI_SMALLICE,1,-1}
95
96-- Areas/Combat for 700ms
97local combat7_Brush = createCombatObject()
98setCombatParam(combat7_Brush, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYAREA)
99setCombatParam(combat7_Brush, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
100setCombatArea(combat7_Brush,createCombatArea({{2, 1}}))
101function getDmg_Brush(cid, level, maglevel)
102
103 return -min, -max
104end
105setCombatCallback(combat7_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
106local dfcombat7_Brush = {CONST_ANI_SMALLICE,1,0}
107
108-- Areas/Combat for 800ms
109local combat8_Brush = createCombatObject()
110setCombatParam(combat8_Brush, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYAREA)
111setCombatParam(combat8_Brush, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
112setCombatArea(combat8_Brush,createCombatArea({{2, 0},
113{0, 1}}))
114function getDmg_Brush(cid, level, maglevel)
115
116 return -min, -max
117end
118setCombatCallback(combat8_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
119local dfcombat8_Brush = {CONST_ANI_SMALLICE,1,1}
120
121-- =============== CORE FUNCTIONS ===============
122local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
123 if (isCreature(cid)) then
124 doCombat(cid, c, var)
125 if (dirList ~= nil) then -- Emit distance effects
126 local i = 2;
127 while (i < #dirList) do
128 doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
129 i = i + 2
130 end
131 end
132 end
133end
134
135function checkSpell10(cid)
136 local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
137 local CHECK_SLOT_01 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_04)
138 local CHECK_SLOT_02 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_05)
139 local CHECK_SLOT_03 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_06)
140 SPELL_ID = 10
141
142 if GUN_ID > 0 then
143 if CHECK_SLOT_01 == SPELL_ID then
144 cid:sendCancelMessage("@SpellCooldown 01")
145 return true
146 elseif CHECK_SLOT_02 == SPELL_ID then
147 cid:sendCancelMessage("@SpellCooldown 02")
148 return true
149 elseif CHECK_SLOT_03 == SPELL_ID then
150 cid:sendCancelMessage("@SpellCooldown 03")
151 return true
152 else
153 return false
154 end
155 else
156 return false
157 end
158 return true
159end
160
161function onCastSpell(cid, var)
162 if checkSpell10(cid) or cid:getGroup():getAccess() then
163 local startPos = getCreaturePosition(cid)
164 local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
165 local starGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_03)
166 local levelGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_07)
167 min = onDamage(cid, GUN_ID, levelGun, starGun, "SKILL_MIN", SPELL_ID)
168 max = min
169 addEvent(RunPart,100,combat1_Brush,cid.uid,var,dfcombat1_Brush,startPos)
170 RunPart(combat0_Brush,cid,var,dfcombat0_Brush,startPos)
171 addEvent(RunPart,200,combat2_Brush,cid.uid,var,dfcombat2_Brush,startPos)
172 addEvent(RunPart,300,combat3_Brush,cid.uid,var,dfcombat3_Brush,startPos)
173 addEvent(RunPart,400,combat4_Brush,cid.uid,var,dfcombat4_Brush,startPos)
174 addEvent(RunPart,500,combat5_Brush,cid.uid,var,dfcombat5_Brush,startPos)
175 addEvent(RunPart,600,combat6_Brush,cid.uid,var,dfcombat6_Brush,startPos)
176 addEvent(RunPart,700,combat7_Brush,cid.uid,var,dfcombat7_Brush,startPos)
177 addEvent(RunPart,800,combat8_Brush,cid.uid,var,dfcombat8_Brush,startPos)
178 return true
179 else
180 cid:getPosition():sendMagicEffect(03)
181 return false
182 end
183end