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