ball_of_pain.lua

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