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