1SPELL_ID = 00
2local min = 0
3local max = 0
4
5-- =============== COMBAT VARS ===============
6-- Areas/Combat for 0ms
7local combat0_Brush = createCombatObject()
8setCombatParam(combat0_Brush, COMBAT_PARAM_EFFECT, CONST_ME_HITBYFIRE)
9setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
10setCombatArea(combat0_Brush,createCombatArea({{1},
11{2},
12{1}}))
13function getDmg_Brush(cid, level, maglevel)
14
15 return -min, -max
16end
17setCombatCallback(combat0_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
18
19-- Areas/Combat for 300ms
20local combat3_Brush = createCombatObject()
21setCombatParam(combat3_Brush, COMBAT_PARAM_EFFECT, CONST_ME_HITBYFIRE)
22setCombatParam(combat3_Brush, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
23setCombatArea(combat3_Brush,createCombatArea({{1, 2, 1}}))
24function getDmg_Brush(cid, level, maglevel)
25
26 return -min, -max
27end
28setCombatCallback(combat3_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
29
30-- Areas/Combat for 600ms
31local combat6_Brush = createCombatObject()
32setCombatParam(combat6_Brush, COMBAT_PARAM_EFFECT, CONST_ME_HITBYFIRE)
33setCombatParam(combat6_Brush, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
34setCombatArea(combat6_Brush,createCombatArea({{1, 0, 0},
35{0, 2, 0},
36{0, 0, 1}}))
37function getDmg_Brush(cid, level, maglevel)
38
39 return -min, -max
40end
41setCombatCallback(combat6_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
42
43-- Areas/Combat for 900ms
44local combat9_Brush = createCombatObject()
45setCombatParam(combat9_Brush, COMBAT_PARAM_EFFECT, CONST_ME_HITBYFIRE)
46setCombatParam(combat9_Brush, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
47setCombatArea(combat9_Brush,createCombatArea({{0, 0, 1},
48{0, 2, 0},
49{1, 0, 0}}))
50function getDmg_Brush(cid, level, maglevel)
51
52 return -min, -max
53end
54setCombatCallback(combat9_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
55
56-- =============== CORE FUNCTIONS ===============
57local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
58 if (isCreature(cid)) then
59 doCombat(cid, c, var)
60 if (dirList ~= nil) then -- Emit distance effects
61 local i = 2;
62 while (i < #dirList) do
63 doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
64 i = i + 2
65 end
66 end
67 end
68end
69function checkSpell20(cid)
70 local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
71 local CHECK_SLOT_01 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_04)
72 local CHECK_SLOT_02 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_05)
73 local CHECK_SLOT_03 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_06)
74 SPELL_ID = 20
75
76 if GUN_ID > 0 then
77 if CHECK_SLOT_01 == SPELL_ID then
78 cid:sendCancelMessage("@SpellCooldown 01")
79 return true
80 elseif CHECK_SLOT_02 == SPELL_ID then
81 cid:sendCancelMessage("@SpellCooldown 02")
82 return true
83 elseif CHECK_SLOT_03 == SPELL_ID then
84 cid:sendCancelMessage("@SpellCooldown 03")
85 return true
86 else
87 return false
88 end
89 else
90 return false
91 end
92 return true
93end
94function onCastSpell(cid, var)
95 if checkSpell20(cid) or cid:getGroup():getAccess() then
96 local startPos = getCreaturePosition(cid)
97 local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
98 local starGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_03)
99 local levelGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_07)
100 min = onDamage(cid, GUN_ID, levelGun, starGun, "SKILL_MIN", SPELL_ID)
101 max = min
102 RunPart(combat0_Brush,cid,var)
103 addEvent(RunPart,300,combat3_Brush,cid.uid,var)
104 addEvent(RunPart,600,combat6_Brush,cid.uid,var)
105 addEvent(RunPart,900,combat9_Brush,cid.uid,var)
106 return true
107 else
108 cid:getPosition():sendMagicEffect(03)
109 return false
110 end
111end