nature_wave.lua

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