curse_of_soul_draining.lua

main 165 lines · 5.8 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 1000ms
7local combat10_Brush_2 = createCombatObject()
8setCombatParam(combat10_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONAREA)
9setCombatParam(combat10_Brush_2, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
10setCombatArea(combat10_Brush_2,createCombatArea({{1, 0, 1},
11{0, 2, 0},
12{1, 0, 1}}))
13function getDmg_Brush_2(cid, level, maglevel)
14
15 return -min, -max
16end
17setCombatCallback(combat10_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
18
19-- Areas/Combat for 900ms
20local combat9_Brush = createCombatObject()
21setCombatParam(combat9_Brush, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
22setCombatParam(combat9_Brush, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_DEATH)
23setCombatParam(combat9_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
24setCombatArea(combat9_Brush,createCombatArea({{3}}))
25function getDmg_Brush(cid, level, maglevel)
26
27 return -min, -max
28end
29setCombatCallback(combat9_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
30
31-- Areas/Combat for 700ms
32local combat7_Brush_2 = createCombatObject()
33setCombatParam(combat7_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONAREA)
34setCombatParam(combat7_Brush_2, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
35setCombatArea(combat7_Brush_2,createCombatArea({{0, 1, 0},
36{1, 2, 1},
37{0, 1, 0}}))
38function getDmg_Brush_2(cid, level, maglevel)
39
40 return -min, -max
41end
42setCombatCallback(combat7_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
43
44-- Areas/Combat for 600ms
45local combat6_Brush = createCombatObject()
46setCombatParam(combat6_Brush, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
47setCombatParam(combat6_Brush, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_DEATH)
48setCombatParam(combat6_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
49setCombatArea(combat6_Brush,createCombatArea({{3}}))
50function getDmg_Brush(cid, level, maglevel)
51
52 return -min, -max
53end
54setCombatCallback(combat6_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
55
56-- Areas/Combat for 400ms
57local combat4_Brush_2 = createCombatObject()
58setCombatParam(combat4_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONAREA)
59setCombatParam(combat4_Brush_2, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
60setCombatArea(combat4_Brush_2,createCombatArea({{1, 0, 1},
61{0, 2, 0},
62{1, 0, 1}}))
63function getDmg_Brush_2(cid, level, maglevel)
64
65 return -min, -max
66end
67setCombatCallback(combat4_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
68
69-- Areas/Combat for 300ms
70local combat3_Brush = createCombatObject()
71setCombatParam(combat3_Brush, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
72setCombatParam(combat3_Brush, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_DEATH)
73setCombatParam(combat3_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
74setCombatArea(combat3_Brush,createCombatArea({{3}}))
75function getDmg_Brush(cid, level, maglevel)
76
77 return -min, -max
78end
79setCombatCallback(combat3_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
80
81-- Areas/Combat for 100ms
82local combat1_Brush_2 = createCombatObject()
83setCombatParam(combat1_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONAREA)
84setCombatParam(combat1_Brush_2, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
85setCombatArea(combat1_Brush_2,createCombatArea({{0, 1, 0},
86{1, 2, 1},
87{0, 1, 0}}))
88function getDmg_Brush_2(cid, level, maglevel)
89
90 return -min, -max
91end
92setCombatCallback(combat1_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
93
94-- Areas/Combat for 0ms
95local combat0_Brush = createCombatObject()
96setCombatParam(combat0_Brush, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
97setCombatParam(combat0_Brush, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_DEATH)
98setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
99setCombatArea(combat0_Brush,createCombatArea({{3}}))
100function getDmg_Brush(cid, level, maglevel)
101
102 return -min, -max
103end
104setCombatCallback(combat0_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
105
106-- =============== CORE FUNCTIONS ===============
107local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
108 if (isCreature(cid)) then
109 doCombat(cid, c, var)
110 if (dirList ~= nil) then -- Emit distance effects
111 local i = 2;
112 while (i < #dirList) do
113 doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
114 i = i + 2
115 end
116 end
117 end
118end
119function checkSpell21(cid)
120 local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
121 local CHECK_SLOT_01 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_04)
122 local CHECK_SLOT_02 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_05)
123 local CHECK_SLOT_03 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_06)
124 SPELL_ID = 21
125
126 if GUN_ID > 0 then
127 if CHECK_SLOT_01 == SPELL_ID then
128 cid:sendCancelMessage("@SpellCooldown 01")
129 return true
130 elseif CHECK_SLOT_02 == SPELL_ID then
131 cid:sendCancelMessage("@SpellCooldown 02")
132 return true
133 elseif CHECK_SLOT_03 == SPELL_ID then
134 cid:sendCancelMessage("@SpellCooldown 03")
135 return true
136 else
137 return false
138 end
139 else
140 return false
141 end
142 return true
143end
144function onCastSpell(cid, var)
145 if checkSpell21(cid) or cid:getGroup():getAccess() then
146 local startPos = getCreaturePosition(cid)
147 local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
148 local starGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_03)
149 local levelGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_07)
150 min = onDamage(cid, GUN_ID, levelGun, starGun, "SKILL_MIN", SPELL_ID)
151 max = min
152 addEvent(RunPart,1000,combat10_Brush_2,cid.uid,var)
153 addEvent(RunPart,900,combat9_Brush,cid.uid,var)
154 addEvent(RunPart,700,combat7_Brush_2,cid.uid,var)
155 addEvent(RunPart,600,combat6_Brush,cid.uid,var)
156 addEvent(RunPart,400,combat4_Brush_2,cid.uid,var)
157 addEvent(RunPart,300,combat3_Brush,cid.uid,var)
158 addEvent(RunPart,100,combat1_Brush_2,cid.uid,var)
159 RunPart(combat0_Brush,cid,var)
160 return true
161 else
162 cid:getPosition():sendMagicEffect(03)
163 return false
164 end
165end
Top