death_shock.lua

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