spectral_bolt.lua

main 99 lines · 3.2 KB Raw
Alex Alex Commit Server upload 18/10/2026 23:38
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_PURPLEENERGY)
9setCombatParam(combat0_Brush, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY)
10setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
11setCombatArea(combat0_Brush,createCombatArea({{3}}))
12function getDmg_Brush(cid, level, maglevel)
13
14 return -min, -max
15end
16setCombatCallback(combat0_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
17
18-- Areas/Combat for 200ms
19local combat2_Brush_2 = createCombatObject()
20setCombatParam(combat2_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_YELLOWENERGY)
21setCombatParam(combat2_Brush_2, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
22setCombatArea(combat2_Brush_2,createCombatArea({{0, 1, 0},
23{1, 2, 1},
24{0, 1, 0}}))
25function getDmg_Brush_2(cid, level, maglevel)
26
27 return -min, -max
28end
29setCombatCallback(combat2_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
30
31-- Areas/Combat for 500ms
32local combat5_Brush_2 = createCombatObject()
33setCombatParam(combat5_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_YELLOWENERGY)
34setCombatParam(combat5_Brush_2, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
35setCombatArea(combat5_Brush_2,createCombatArea({{0, 0, 1, 0, 0},
36{0, 1, 0, 1, 0},
37{1, 0, 2, 0, 1},
38{0, 1, 0, 1, 0},
39{0, 0, 1, 0, 0}}))
40function getDmg_Brush_2(cid, level, maglevel)
41
42 return -min, -max
43end
44setCombatCallback(combat5_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 checkSpell63(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 = 63
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 checkSpell63(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 RunPart(combat0_Brush,cid,var)
92 addEvent(RunPart,200,combat2_Brush_2,cid.uid,var)
93 addEvent(RunPart,500,combat5_Brush_2,cid.uid,var)
94 return true
95 else
96 cid:getPosition():sendMagicEffect(03)
97 return false
98 end
99end
Top