Server upload

RD Core / Commit #2

Commit Server upload

Alex Alex committed 18/10/2026 23:38 main Patch
1,106 files +223,404 -0
A data/spells/scripts/triple_spirit.lua +95-0 View file
@@ -0,0 +1,95 @@
1+SPELL_ID = 00
2+local min = 0
3+local max = 0
4+
5+-- =============== COMBAT VARS ===============
6+-- Areas/Combat for 0ms
7+local combat0_Brush = createCombatObject()
8+setCombatParam(combat0_Brush, COMBAT_PARAM_EFFECT, CONST_ME_HOLYDAMAGE)
9+setCombatParam(combat0_Brush, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_HOLY)
10+setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
11+setCombatArea(combat0_Brush,createCombatArea({{3}}))
12+function getDmg_Brush(cid, level, maglevel)
13+
14+ return -min, -max
15+end
16+setCombatCallback(combat0_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
17+
18+-- Areas/Combat for 300ms
19+local combat3_Brush = createCombatObject()
20+setCombatParam(combat3_Brush, COMBAT_PARAM_EFFECT, CONST_ME_HOLYDAMAGE)
21+setCombatParam(combat3_Brush, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_HOLY)
22+setCombatParam(combat3_Brush, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
23+setCombatArea(combat3_Brush,createCombatArea({{3}}))
24+function getDmg_Brush(cid, level, maglevel)
25+
26+ return -min, -max
27+end
28+setCombatCallback(combat3_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
29+
30+-- Areas/Combat for 600ms
31+local combat6_Brush = createCombatObject()
32+setCombatParam(combat6_Brush, COMBAT_PARAM_EFFECT, CONST_ME_HOLYDAMAGE)
33+setCombatParam(combat6_Brush, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_HOLY)
34+setCombatParam(combat6_Brush, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
35+setCombatArea(combat6_Brush,createCombatArea({{3}}))
36+function getDmg_Brush(cid, level, maglevel)
37+
38+ return -min, -max
39+end
40+setCombatCallback(combat6_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
41+
42+-- =============== CORE FUNCTIONS ===============
43+local 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
54+end
55+function checkSpell47(cid)
56+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
57+ local CHECK_SLOT_01 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_04)
58+ local CHECK_SLOT_02 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_05)
59+ local CHECK_SLOT_03 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_06)
60+ SPELL_ID = 47
61+
62+ if GUN_ID > 0 then
63+ if CHECK_SLOT_01 == SPELL_ID then
64+ cid:sendCancelMessage("@SpellCooldown 01")
65+ return true
66+ elseif CHECK_SLOT_02 == SPELL_ID then
67+ cid:sendCancelMessage("@SpellCooldown 02")
68+ return true
69+ elseif CHECK_SLOT_03 == SPELL_ID then
70+ cid:sendCancelMessage("@SpellCooldown 03")
71+ return true
72+ else
73+ return false
74+ end
75+ else
76+ return false
77+ end
78+end
79+function onCastSpell(cid, var)
80+ if checkSpell47(cid) or cid:getGroup():getAccess() then
81+ local startPos = getCreaturePosition(cid)
82+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
83+ local starGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_03)
84+ local levelGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_07)
85+ min = onDamage(cid, GUN_ID, levelGun, starGun, "SKILL_MIN", SPELL_ID)
86+ max = min
87+ RunPart(combat0_Brush,cid,var)
88+ addEvent(RunPart,300,combat3_Brush,cid.uid,var)
89+ addEvent(RunPart,600,combat6_Brush,cid.uid,var)
90+ return true
91+ else
92+ cid:getPosition():sendMagicEffect(03)
93+ return false
94+ end
95+end
A data/spells/scripts/void_eruption.lua +177-0 View file
@@ -0,0 +1,177 @@
1+SPELL_ID = 00
2+local min = 0
3+local max = 0
4+
5+-- =============== COMBAT VARS ===============
6+-- Areas/Combat for 100ms
7+local combat1_Brush_2 = createCombatObject()
8+setCombatParam(combat1_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_POISONAREA)
9+setCombatParam(combat1_Brush_2, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
10+setCombatArea(combat1_Brush_2,createCombatArea({{1, 1, 1},
11+{1, 2, 1},
12+{1, 1, 1}}))
13+function getDmg_Brush_2(cid, level, maglevel)
14+
15+ return -min, -max
16+end
17+setCombatCallback(combat1_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
18+
19+-- Areas/Combat for 0ms
20+local combat0_Brush = createCombatObject()
21+setCombatParam(combat0_Brush, COMBAT_PARAM_EFFECT, CONST_ME_POISONAREA)
22+setCombatParam(combat0_Brush, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_EARTH)
23+setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
24+setCombatArea(combat0_Brush,createCombatArea({{3}}))
25+function getDmg_Brush(cid, level, maglevel)
26+
27+ return -min, -max
28+end
29+setCombatCallback(combat0_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
30+
31+-- Areas/Combat for 200ms
32+local combat2_Brush_2 = createCombatObject()
33+setCombatParam(combat2_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_POISONAREA)
34+setCombatParam(combat2_Brush_2, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
35+setCombatArea(combat2_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}}))
40+function getDmg_Brush_2(cid, level, maglevel)
41+
42+ return -min, -max
43+end
44+setCombatCallback(combat2_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
45+
46+-- Areas/Combat for 300ms
47+local combat3_Brush_2 = createCombatObject()
48+setCombatParam(combat3_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_POISONAREA)
49+setCombatParam(combat3_Brush_2, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
50+setCombatArea(combat3_Brush_2,createCombatArea({{0, 0, 0, 1, 0, 0, 0},
51+{0, 0, 1, 0, 1, 0, 0},
52+{0, 1, 0, 0, 0, 1, 0},
53+{1, 0, 0, 2, 0, 0, 1},
54+{0, 1, 0, 0, 0, 1, 0},
55+{0, 0, 1, 0, 1, 0, 0},
56+{0, 0, 0, 1, 0, 0, 0}}))
57+function getDmg_Brush_2(cid, level, maglevel)
58+
59+ return -min, -max
60+end
61+setCombatCallback(combat3_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
62+
63+-- Areas/Combat for 600ms
64+local combat6_Brush_3 = createCombatObject()
65+setCombatParam(combat6_Brush_3, COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
66+setCombatParam(combat6_Brush_3, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
67+setCombatArea(combat6_Brush_3,createCombatArea({{0, 0, 0, 1, 0, 0, 0},
68+{0, 0, 1, 0, 1, 0, 0},
69+{0, 1, 0, 0, 0, 1, 0},
70+{1, 0, 0, 2, 0, 0, 1},
71+{0, 1, 0, 0, 0, 1, 0},
72+{0, 0, 1, 0, 1, 0, 0},
73+{0, 0, 0, 1, 0, 0, 0}}))
74+function getDmg_Brush_3(cid, level, maglevel)
75+
76+ return -min, -max
77+end
78+setCombatCallback(combat6_Brush_3, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_3")
79+
80+-- Areas/Combat for 800ms
81+local combat8_Brush_3 = createCombatObject()
82+setCombatParam(combat8_Brush_3, COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
83+setCombatParam(combat8_Brush_3, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
84+setCombatArea(combat8_Brush_3,createCombatArea({{0, 0, 1, 0, 0},
85+{0, 1, 0, 1, 0},
86+{1, 0, 2, 0, 1},
87+{0, 1, 0, 1, 0},
88+{0, 0, 1, 0, 0}}))
89+function getDmg_Brush_3(cid, level, maglevel)
90+
91+ return -min, -max
92+end
93+setCombatCallback(combat8_Brush_3, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_3")
94+
95+-- Areas/Combat for 1000ms
96+local combat10_Brush_3 = createCombatObject()
97+setCombatParam(combat10_Brush_3, COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
98+setCombatParam(combat10_Brush_3, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
99+setCombatArea(combat10_Brush_3,createCombatArea({{0, 1, 0},
100+{1, 2, 1},
101+{0, 1, 0}}))
102+function getDmg_Brush_3(cid, level, maglevel)
103+
104+ return -min, -max
105+end
106+setCombatCallback(combat10_Brush_3, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_3")
107+
108+-- Areas/Combat for 1200ms
109+local combat12_Brush_3 = createCombatObject()
110+setCombatParam(combat12_Brush_3, COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
111+setCombatParam(combat12_Brush_3, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
112+setCombatArea(combat12_Brush_3,createCombatArea({{3}}))
113+function getDmg_Brush_3(cid, level, maglevel)
114+
115+ return -min, -max
116+end
117+setCombatCallback(combat12_Brush_3, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_3")
118+
119+-- =============== CORE FUNCTIONS ===============
120+local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
121+ if (isCreature(cid)) then
122+ doCombat(cid, c, var)
123+ if (dirList ~= nil) then -- Emit distance effects
124+ local i = 2;
125+ while (i < #dirList) do
126+ doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
127+ i = i + 2
128+ end
129+ end
130+ end
131+end
132+function checkSpell58(cid)
133+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
134+ local CHECK_SLOT_01 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_04)
135+ local CHECK_SLOT_02 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_05)
136+ local CHECK_SLOT_03 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_06)
137+ SPELL_ID = 58
138+
139+ if GUN_ID > 0 then
140+ if CHECK_SLOT_01 == SPELL_ID then
141+ cid:sendCancelMessage("@SpellCooldown 01")
142+ return true
143+ elseif CHECK_SLOT_02 == SPELL_ID then
144+ cid:sendCancelMessage("@SpellCooldown 02")
145+ return true
146+ elseif CHECK_SLOT_03 == SPELL_ID then
147+ cid:sendCancelMessage("@SpellCooldown 03")
148+ return true
149+ else
150+ return false
151+ end
152+ else
153+ return false
154+ end
155+end
156+function onCastSpell(cid, var)
157+ if checkSpell58(cid) or cid:getGroup():getAccess() then
158+ local startPos = getCreaturePosition(cid)
159+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
160+ local starGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_03)
161+ local levelGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_07)
162+ min = onDamage(cid, GUN_ID, levelGun, starGun, "SKILL_MIN", SPELL_ID)
163+ max = min
164+ addEvent(RunPart,100,combat1_Brush_2,cid.uid,var)
165+ RunPart(combat0_Brush,cid,var)
166+ addEvent(RunPart,200,combat2_Brush_2,cid.uid,var)
167+ addEvent(RunPart,300,combat3_Brush_2,cid.uid,var)
168+ addEvent(RunPart,600,combat6_Brush_3,cid.uid,var)
169+ addEvent(RunPart,800,combat8_Brush_3,cid.uid,var)
170+ addEvent(RunPart,1000,combat10_Brush_3,cid.uid,var)
171+ addEvent(RunPart,1200,combat12_Brush_3,cid.uid,var)
172+ return true
173+ else
174+ cid:getPosition():sendMagicEffect(03)
175+ return false
176+ end
177+end
A data/spells/scripts/void_frenzy.lua +303-0 View file
@@ -0,0 +1,303 @@
1+SPELL_ID = 00
2+local min = 0
3+local max = 0
4+
5+-- =============== COMBAT VARS ===============
6+-- Areas/Combat for 100ms
7+local combat1_Brush = createCombatObject()
8+setCombatParam(combat1_Brush, COMBAT_PARAM_EFFECT, CONST_ME_YALAHARIGHOST)
9+setCombatParam(combat1_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
10+setCombatArea(combat1_Brush,createCombatArea({{0, 2},
11+{1, 0}}))
12+function getDmg_Brush(cid, level, maglevel)
13+
14+ return -min, -max
15+end
16+setCombatCallback(combat1_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
17+local dfcombat1_Brush = {CONST_ANI_SUDDENDEATH,-1,1}
18+
19+-- Areas/Combat for 0ms
20+local combat0_Brush = createCombatObject()
21+setCombatParam(combat0_Brush, COMBAT_PARAM_EFFECT, CONST_ME_YALAHARIGHOST)
22+setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
23+setCombatArea(combat0_Brush,createCombatArea({{2, 0, 0},
24+{0, 0, 0},
25+{0, 0, 1}}))
26+function getDmg_Brush(cid, level, maglevel)
27+
28+ return -min, -max
29+end
30+setCombatCallback(combat0_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
31+local dfcombat0_Brush = {CONST_ANI_SUDDENDEATH,2,2}
32+
33+-- Areas/Combat for 200ms
34+local combat2_Brush = createCombatObject()
35+setCombatParam(combat2_Brush, COMBAT_PARAM_EFFECT, CONST_ME_YALAHARIGHOST)
36+setCombatParam(combat2_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
37+setCombatArea(combat2_Brush,createCombatArea({{0, 1},
38+{0, 0},
39+{2, 0}}))
40+function getDmg_Brush(cid, level, maglevel)
41+
42+ return -min, -max
43+end
44+setCombatCallback(combat2_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
45+local dfcombat2_Brush = {CONST_ANI_SUDDENDEATH,1,-2}
46+
47+-- Areas/Combat for 300ms
48+local combat3_Brush = createCombatObject()
49+setCombatParam(combat3_Brush, COMBAT_PARAM_EFFECT, CONST_ME_YALAHARIGHOST)
50+setCombatParam(combat3_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
51+setCombatArea(combat3_Brush,createCombatArea({{1, 0, 0},
52+{0, 0, 0},
53+{0, 0, 2}}))
54+function getDmg_Brush(cid, level, maglevel)
55+
56+ return -min, -max
57+end
58+setCombatCallback(combat3_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
59+local dfcombat3_Brush = {CONST_ANI_SUDDENDEATH,-2,-2}
60+
61+-- Areas/Combat for 400ms
62+local combat4_Brush = createCombatObject()
63+setCombatParam(combat4_Brush, COMBAT_PARAM_EFFECT, CONST_ME_YALAHARIGHOST)
64+setCombatParam(combat4_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
65+setCombatArea(combat4_Brush,createCombatArea({{2, 0, 1}}))
66+function getDmg_Brush(cid, level, maglevel)
67+
68+ return -min, -max
69+end
70+setCombatCallback(combat4_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
71+local dfcombat4_Brush = {CONST_ANI_SUDDENDEATH,2,0}
72+
73+-- Areas/Combat for 500ms
74+local combat5_Brush = createCombatObject()
75+setCombatParam(combat5_Brush, COMBAT_PARAM_EFFECT, CONST_ME_YALAHARIGHOST)
76+setCombatParam(combat5_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
77+setCombatArea(combat5_Brush,createCombatArea({{2},
78+{0},
79+{1}}))
80+function getDmg_Brush(cid, level, maglevel)
81+
82+ return -min, -max
83+end
84+setCombatCallback(combat5_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
85+local dfcombat5_Brush = {CONST_ANI_SUDDENDEATH,0,2}
86+
87+-- Areas/Combat for 600ms
88+local combat6_Brush = createCombatObject()
89+setCombatParam(combat6_Brush, COMBAT_PARAM_EFFECT, CONST_ME_YALAHARIGHOST)
90+setCombatParam(combat6_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
91+setCombatArea(combat6_Brush,createCombatArea({{1, 0},
92+{0, 2}}))
93+function getDmg_Brush(cid, level, maglevel)
94+
95+ return -min, -max
96+end
97+setCombatCallback(combat6_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
98+local dfcombat6_Brush = {CONST_ANI_SUDDENDEATH,-1,-1}
99+
100+-- Areas/Combat for 700ms
101+local combat7_Brush = createCombatObject()
102+setCombatParam(combat7_Brush, COMBAT_PARAM_EFFECT, CONST_ME_YALAHARIGHOST)
103+setCombatParam(combat7_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
104+setCombatArea(combat7_Brush,createCombatArea({{1, 0, 2}}))
105+function getDmg_Brush(cid, level, maglevel)
106+
107+ return -min, -max
108+end
109+setCombatCallback(combat7_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
110+local dfcombat7_Brush = {CONST_ANI_SUDDENDEATH,-2,0}
111+
112+-- Areas/Combat for 800ms
113+local combat8_Brush = createCombatObject()
114+setCombatParam(combat8_Brush, COMBAT_PARAM_EFFECT, CONST_ME_YALAHARIGHOST)
115+setCombatParam(combat8_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
116+setCombatArea(combat8_Brush,createCombatArea({{0, 0, 1},
117+{2, 0, 0}}))
118+function getDmg_Brush(cid, level, maglevel)
119+
120+ return -min, -max
121+end
122+setCombatCallback(combat8_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
123+local dfcombat8_Brush = {CONST_ANI_SUDDENDEATH,2,-1}
124+
125+-- Areas/Combat for 900ms
126+local combat9_Brush = createCombatObject()
127+setCombatParam(combat9_Brush, COMBAT_PARAM_EFFECT, CONST_ME_YALAHARIGHOST)
128+setCombatParam(combat9_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
129+setCombatArea(combat9_Brush,createCombatArea({{2, 0},
130+{0, 1}}))
131+function getDmg_Brush(cid, level, maglevel)
132+
133+ return -min, -max
134+end
135+setCombatCallback(combat9_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
136+local dfcombat9_Brush = {CONST_ANI_SUDDENDEATH,1,1}
137+
138+-- Areas/Combat for 1000ms
139+local combat10_Brush = createCombatObject()
140+setCombatParam(combat10_Brush, COMBAT_PARAM_EFFECT, CONST_ME_YALAHARIGHOST)
141+setCombatParam(combat10_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
142+setCombatArea(combat10_Brush,createCombatArea({{2, 0},
143+{0, 0},
144+{0, 0},
145+{0, 1}}))
146+function getDmg_Brush(cid, level, maglevel)
147+
148+ return -min, -max
149+end
150+setCombatCallback(combat10_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
151+local dfcombat10_Brush = {CONST_ANI_SUDDENDEATH,1,3}
152+
153+-- Areas/Combat for 1100ms
154+local combat11_Brush = createCombatObject()
155+setCombatParam(combat11_Brush, COMBAT_PARAM_EFFECT, CONST_ME_YALAHARIGHOST)
156+setCombatParam(combat11_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
157+setCombatArea(combat11_Brush,createCombatArea({{0, 0, 0, 1},
158+{0, 0, 0, 0},
159+{2, 0, 0, 0}}))
160+function getDmg_Brush(cid, level, maglevel)
161+
162+ return -min, -max
163+end
164+setCombatCallback(combat11_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
165+local dfcombat11_Brush = {CONST_ANI_SUDDENDEATH,3,-2}
166+
167+-- Areas/Combat for 1200ms
168+local combat12_Brush = createCombatObject()
169+setCombatParam(combat12_Brush, COMBAT_PARAM_EFFECT, CONST_ME_YALAHARIGHOST)
170+setCombatParam(combat12_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
171+setCombatArea(combat12_Brush,createCombatArea({{0, 0, 2},
172+{1, 0, 0}}))
173+function getDmg_Brush(cid, level, maglevel)
174+
175+ return -min, -max
176+end
177+setCombatCallback(combat12_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
178+local dfcombat12_Brush = {CONST_ANI_SUDDENDEATH,-2,1}
179+
180+-- Areas/Combat for 1300ms
181+local combat13_Brush = createCombatObject()
182+setCombatParam(combat13_Brush, COMBAT_PARAM_EFFECT, CONST_ME_YALAHARIGHOST)
183+setCombatParam(combat13_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
184+setCombatArea(combat13_Brush,createCombatArea({{0, 0, 2},
185+{0, 0, 0},
186+{1, 0, 0}}))
187+function getDmg_Brush(cid, level, maglevel)
188+
189+ return -min, -max
190+end
191+setCombatCallback(combat13_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
192+local dfcombat13_Brush = {CONST_ANI_SUDDENDEATH,-2,2}
193+
194+-- Areas/Combat for 1400ms
195+local combat14_Brush = createCombatObject()
196+setCombatParam(combat14_Brush, COMBAT_PARAM_EFFECT, CONST_ME_YALAHARIGHOST)
197+setCombatParam(combat14_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
198+setCombatArea(combat14_Brush,createCombatArea({{1},
199+{2}}))
200+function getDmg_Brush(cid, level, maglevel)
201+
202+ return -min, -max
203+end
204+setCombatCallback(combat14_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
205+local dfcombat14_Brush = {CONST_ANI_SUDDENDEATH,0,-1}
206+
207+-- Areas/Combat for 1500ms
208+local combat15_Brush = createCombatObject()
209+setCombatParam(combat15_Brush, COMBAT_PARAM_EFFECT, CONST_ME_YALAHARIGHOST)
210+setCombatParam(combat15_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
211+setCombatArea(combat15_Brush,createCombatArea({{2, 1}}))
212+function getDmg_Brush(cid, level, maglevel)
213+
214+ return -min, -max
215+end
216+setCombatCallback(combat15_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
217+local dfcombat15_Brush = {CONST_ANI_SUDDENDEATH,1,0}
218+
219+-- Areas/Combat for 1600ms
220+local combat16_Brush = createCombatObject()
221+setCombatParam(combat16_Brush, COMBAT_PARAM_EFFECT, CONST_ME_YALAHARIGHOST)
222+setCombatParam(combat16_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
223+setCombatArea(combat16_Brush,createCombatArea({{0, 1, 0, 0},
224+{0, 0, 0, 0},
225+{1, 2, 0, 0},
226+{0, 1, 0, 0},
227+{0, 0, 0, 1}}))
228+function getDmg_Brush(cid, level, maglevel)
229+
230+ return -min, -max
231+end
232+setCombatCallback(combat16_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
233+local dfcombat16_Brush = {CONST_ANI_SUDDENDEATH,-1,0,2,2,0,1,0,-2}
234+
235+-- =============== CORE FUNCTIONS ===============
236+local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
237+ if (isCreature(cid)) then
238+ doCombat(cid, c, var)
239+ if (dirList ~= nil) then -- Emit distance effects
240+ local i = 2;
241+ while (i < #dirList) do
242+ doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
243+ i = i + 2
244+ end
245+ end
246+ end
247+end
248+function checkSpell26(cid)
249+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
250+ local CHECK_SLOT_01 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_04)
251+ local CHECK_SLOT_02 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_05)
252+ local CHECK_SLOT_03 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_06)
253+ SPELL_ID = 26
254+
255+ if GUN_ID > 0 then
256+ if CHECK_SLOT_01 == SPELL_ID then
257+ cid:sendCancelMessage("@SpellCooldown 01")
258+ return true
259+ elseif CHECK_SLOT_02 == SPELL_ID then
260+ cid:sendCancelMessage("@SpellCooldown 02")
261+ return true
262+ elseif CHECK_SLOT_03 == SPELL_ID then
263+ cid:sendCancelMessage("@SpellCooldown 03")
264+ return true
265+ else
266+ return false
267+ end
268+ else
269+ return false
270+ end
271+ return true
272+end
273+function onCastSpell(cid, var)
274+ if checkSpell26(cid) or cid:getGroup():getAccess() then
275+ local startPos = getCreaturePosition(cid)
276+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
277+ local starGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_03)
278+ local levelGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_07)
279+ min = onDamage(cid, GUN_ID, levelGun, starGun, "SKILL_MIN", SPELL_ID)
280+ max = min
281+ addEvent(RunPart,100,combat1_Brush,cid.uid,var,dfcombat1_Brush,startPos)
282+ RunPart(combat0_Brush,cid,var,dfcombat0_Brush,startPos)
283+ addEvent(RunPart,200,combat2_Brush,cid.uid,var,dfcombat2_Brush,startPos)
284+ addEvent(RunPart,300,combat3_Brush,cid.uid,var,dfcombat3_Brush,startPos)
285+ addEvent(RunPart,400,combat4_Brush,cid.uid,var,dfcombat4_Brush,startPos)
286+ addEvent(RunPart,500,combat5_Brush,cid.uid,var,dfcombat5_Brush,startPos)
287+ addEvent(RunPart,600,combat6_Brush,cid.uid,var,dfcombat6_Brush,startPos)
288+ addEvent(RunPart,700,combat7_Brush,cid.uid,var,dfcombat7_Brush,startPos)
289+ addEvent(RunPart,800,combat8_Brush,cid.uid,var,dfcombat8_Brush,startPos)
290+ addEvent(RunPart,900,combat9_Brush,cid.uid,var,dfcombat9_Brush,startPos)
291+ addEvent(RunPart,1000,combat10_Brush,cid.uid,var,dfcombat10_Brush,startPos)
292+ addEvent(RunPart,1100,combat11_Brush,cid.uid,var,dfcombat11_Brush,startPos)
293+ addEvent(RunPart,1200,combat12_Brush,cid.uid,var,dfcombat12_Brush,startPos)
294+ addEvent(RunPart,1300,combat13_Brush,cid.uid,var,dfcombat13_Brush,startPos)
295+ addEvent(RunPart,1400,combat14_Brush,cid.uid,var,dfcombat14_Brush,startPos)
296+ addEvent(RunPart,1500,combat15_Brush,cid.uid,var,dfcombat15_Brush,startPos)
297+ addEvent(RunPart,1600,combat16_Brush,cid.uid,var,dfcombat16_Brush,startPos)
298+ return true
299+ else
300+ cid:getPosition():sendMagicEffect(03)
301+ return false
302+ end
303+end
A data/spells/scripts/x_eletric.lua +116-0 View file
@@ -0,0 +1,116 @@
1+SPELL_ID = 00
2+local min = 0
3+local max = 0
4+
5+-- =============== COMBAT VARS ===============
6+-- Areas/Combat for 900ms
7+local combat9_Brush = createCombatObject()
8+setCombatParam(combat9_Brush, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYAREA)
9+setCombatParam(combat9_Brush, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
10+setCombatArea(combat9_Brush,createCombatArea({{3}}))
11+function getDmg_Brush(cid, level, maglevel)
12+
13+ return -min, -max
14+end
15+setCombatCallback(combat9_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
16+
17+-- Areas/Combat for 600ms
18+local combat6_Brush = createCombatObject()
19+setCombatParam(combat6_Brush, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYAREA)
20+setCombatParam(combat6_Brush, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
21+setCombatArea(combat6_Brush,createCombatArea({{1, 0, 1},
22+{0, 2, 0},
23+{1, 0, 1}}))
24+function getDmg_Brush(cid, level, maglevel)
25+
26+ return -min, -max
27+end
28+setCombatCallback(combat6_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
29+
30+-- Areas/Combat for 300ms
31+local combat3_Brush = createCombatObject()
32+setCombatParam(combat3_Brush, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYAREA)
33+setCombatParam(combat3_Brush, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
34+setCombatArea(combat3_Brush,createCombatArea({{1, 0, 0, 0, 1},
35+{0, 0, 0, 0, 0},
36+{0, 0, 2, 0, 0},
37+{0, 0, 0, 0, 0},
38+{1, 0, 0, 0, 1}}))
39+function getDmg_Brush(cid, level, maglevel)
40+
41+ return -min, -max
42+end
43+setCombatCallback(combat3_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
44+
45+-- Areas/Combat for 0ms
46+local combat0_Brush = createCombatObject()
47+setCombatParam(combat0_Brush, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYAREA)
48+setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
49+setCombatArea(combat0_Brush,createCombatArea({{1, 0, 0, 0, 0, 0, 1},
50+{0, 0, 0, 0, 0, 0, 0},
51+{0, 0, 0, 0, 0, 0, 0},
52+{0, 0, 0, 2, 0, 0, 0},
53+{0, 0, 0, 0, 0, 0, 0},
54+{0, 0, 0, 0, 0, 0, 0},
55+{1, 0, 0, 0, 0, 0, 1}}))
56+function getDmg_Brush(cid, level, maglevel)
57+
58+ return -min, -max
59+end
60+setCombatCallback(combat0_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
61+
62+-- =============== CORE FUNCTIONS ===============
63+local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
64+ if (isCreature(cid)) then
65+ doCombat(cid, c, var)
66+ if (dirList ~= nil) then -- Emit distance effects
67+ local i = 2;
68+ while (i < #dirList) do
69+ doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
70+ i = i + 2
71+ end
72+ end
73+ end
74+end
75+function checkSpell69(cid)
76+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
77+ local CHECK_SLOT_01 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_04)
78+ local CHECK_SLOT_02 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_05)
79+ local CHECK_SLOT_03 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_06)
80+ SPELL_ID = 69
81+
82+ if GUN_ID > 0 then
83+ if CHECK_SLOT_01 == SPELL_ID then
84+ cid:sendCancelMessage("@SpellCooldown 01")
85+ return true
86+ elseif CHECK_SLOT_02 == SPELL_ID then
87+ cid:sendCancelMessage("@SpellCooldown 02")
88+ return true
89+ elseif CHECK_SLOT_03 == SPELL_ID then
90+ cid:sendCancelMessage("@SpellCooldown 03")
91+ return true
92+ else
93+ return false
94+ end
95+ else
96+ return false
97+ end
98+end
99+function onCastSpell(cid, var)
100+ if checkSpell69(cid) or cid:getGroup():getAccess() then
101+ local startPos = getCreaturePosition(cid)
102+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
103+ local starGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_03)
104+ local levelGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_07)
105+ min = onDamage(cid, GUN_ID, levelGun, starGun, "SKILL_MIN", SPELL_ID)
106+ max = min
107+ addEvent(RunPart,900,combat9_Brush,cid.uid,var)
108+ addEvent(RunPart,600,combat6_Brush,cid.uid,var)
109+ addEvent(RunPart,300,combat3_Brush,cid.uid,var)
110+ RunPart(combat0_Brush,cid,var)
111+ return true
112+ else
113+ cid:getPosition():sendMagicEffect(03)
114+ return false
115+ end
116+end
A data/spells/spells.xml +279-0 View file
@@ -0,0 +1,279 @@
1+<?xml version="1.0" encoding="UTF-8"?>
2+<spells>
3+
4+ <!-- Gon Spells -->
5+ <!-- Gon Spells level 1 -->
6+ <instant group="attack" name="Gon Basic Punch" words="@#$0" level="1" range="1" casterTargetOrDirection="1" blockwalls="1" exhaustion="0" cooldown="0" needlearn="0" script="gon/1.lua">
7+ <vocation name="Gon" />
8+ </instant>
9+ <!-- Gon Spells level 10 -->
10+ <instant group="attack" name="Gon Sequence Punch" words="@#$1" level="5" range="1" casterTargetOrDirection="1" blockwalls="1" needlearn="0" exhaustion="0" script="gon/10.lua">
11+ <vocation name="Gon" />
12+ </instant>
13+ <!-- Gon Spells level 15 -->
14+ <instant group="attack" name="Jajanken Gu" words="@#$2" level="15" range="2" casterTargetOrDirection="1" blockwalls="1" exhaustion="0" cooldown="0" cooldown="0" needlearn="0" script="gon/15.lua">
15+ <vocation name="Gon" />
16+ </instant>
17+ <!-- Gon Spells level 20 -->
18+ <instant group="attack" name="Ren" words="@#$3" level="20" manapercent="25" casterTargetOrDirection="1" blockwalls="1" exhaustion="0" cooldown="0" groupexhaustion="2000" cooldown="0" needlearn="0" script="gon/20.lua">
19+ <vocation name="Gon" />
20+ </instant>
21+ <!-- Gon Spells level 25 -->
22+ <instant group="attack" name="Dash" words="@#$4" level="25" manapercent="25" range="1" casterTargetOrDirection="1" blockwalls="1" exhaustion="0" cooldown="0" groupexhaustion="2000" cooldown="0" needlearn="0" script="gon/dash.lua">
23+ <vocation name="Gon" />
24+ </instant>
25+ <!-- Gon Spells level 35 -->
26+ <instant group="attack" name="Rock Smash" words="@#$5" level="35" manapercent="50" range="3" premium="0" casterTargetOrDirection="1" blockwalls="1" exhaustion="0" cooldown="0" groupexhaustion="2000" cooldown="0" needlearn="0" script="gon/35.lua">
27+ <vocation name="Gon" />
28+ </instant>
29+ <!-- Gon Spells level 50 -->
30+ <instant group="attack" name="Jajaken Chi" words="@#$6" level="50" manapercent="50" premium="0" range="1" casterTargetOrDirection="1" blockwalls="1" exhaustion="0" cooldown="0" groupexhaustion="2000" cooldown="0" needlearn="0" script="gon/50.lua">
31+ <vocation name="Gon" />
32+ </instant>
33+ <!-- Gon Spells level 55 -->
34+ <instant group="attack" name="Jajaken Pa" words="@#$7" level="55" manapercent="30" premium="0" range="4" casterTargetOrDirection="1" blockwalls="1" exhaustion="0" cooldown="0" groupexhaustion="2000" cooldown="0" needlearn="0" script="gon/55.lua">
35+ <vocation name="Gon" />
36+ </instant>
37+ <!-- Killua -->
38+
39+ <!-- Killua Spells level 1 -->
40+ <instant group="attack" name="Claws" words="Claws" level="1" range="1" casterTargetOrDirection="1" blockwalls="1" script="killua/Claws.lua">
41+ <vocation name="killua" />
42+ </instant>
43+ <!-- Killua Spells level 10 -->
44+ <instant group="attack" name="Double Claws" words="Double Claws" level="10" range="1" casterTargetOrDirection="1" blockwalls="1" script="killua/Double Claws.lua">
45+ <vocation name="killua" />
46+ </instant>
47+ <!-- killua Spells level 15 -->
48+ <instant group="attack" name="Critical Claws" words="Critical Claws" level="15" range="2" casterTargetOrDirection="1" blockwalls="1" script="killua/Critical Claws.lua">
49+ <vocation name="Killua" />
50+ </instant>
51+ <!-- killua Spells level 20 -->
52+ <instant group="attack" name="Dark Steps" words="Dark Steps" level="20" range="1" casterTargetOrDirection="1" blockwalls="1" script="killua/Dark Steps.lua">
53+ <vocation name="killua" />
54+ </instant>
55+ <instant group="attack" name="Ren" words="Ren" level="20" script="killua/Ren.lua">
56+ <vocation name="killua" />
57+ </instant>
58+ <!-- killua Spells level 25 -->
59+ <instant group="attack" name="Rhythm Echo" words="Rhythm Echo" level="25" range="4" casterTargetOrDirection="1" blockwalls="1" script="killua/Rhythm Echo.lua">
60+ <vocation name="killua" />
61+ </instant>
62+ <!-- killua Spells level 40 -->
63+ <instant group="attack" name="Kanden shi" words="Kanden shi" level="40" range="4" casterTargetOrDirection="1" blockwalls="1" script="killua/Kanden shi.lua">
64+ <vocation name="killua" />
65+ </instant>
66+ <!-- killua Spells level 55 -->
67+ <instant group="attack" name="God Speed" words="God Speed" level="55" range="4" casterTargetOrDirection="1" blockwalls="1" script="killua/God Speed.lua">
68+ <vocation name="killua" />
69+ </instant>
70+ <!-- killua Spells level 55 -->
71+ <instant group="attack" name="sdpeed" words="sdpeed" level="55" range="4" casterTargetOrDirection="1" blockwalls="1" script="killua/some.lua">
72+ <vocation name="killua" />
73+ </instant>
74+
75+
76+ <!-- GodSpeed Spells level 50 -->
77+ <instant group="attack" name="Denkosekka no supido" words="Denkosekka no Supido" level="50" casterTargetOrDirection="1" blockwalls="1" script="killua/godspeed/Denkosekka No Supido.lua">
78+ <vocation name="GodSpeed" />
79+ </instant>
80+ <instant group="attack" name="Narukami" words="Narukami" level="50" range="4" casterTargetOrDirection="1" blockwalls="1" script="killua/godspeed/Narukami.lua">
81+ <vocation name="GodSpeed" />
82+ </instant>
83+ <instant group="attack" name="Denki Tenohira" words="Denki Tenohira" level="50" range="4" casterTargetOrDirection="1" blockwalls="1" script="killua/godspeed/Denki Tenohira.lua">
84+ <vocation name="GodSpeed" />
85+ </instant>
86+ <instant group="attack" name="Denki Inparusu" words="Denki Inparusu" level="50" range="4" casterTargetOrDirection="1" blockwalls="1" script="killua/godspeed/Denki Inparusu.lua">
87+ <vocation name="GodSpeed" />
88+ </instant>
89+ <instant group="attack" name="Cancelar" words="Cancelar" level="55" range="4" casterTargetOrDirection="1" blockwalls="1" script="killua/God Speed.lua">
90+ <vocation name="GodSpeed" />
91+ </instant>
92+
93+
94+ <!-- Kurapika Spells level 1 -->
95+ <instant group="attack" name="Double Sowrd" words="$$$$0" level="1" range="1" casterTargetOrDirection="1" blockwalls="1" exhaustion="0" cooldown="0" needlearn="0" script="gon/1.lua">
96+ <vocation name="Kurapika" />
97+ </instant>
98+
99+ <!-- Kurapika Spells level 10 -->
100+ <instant group="attack" name="Gon Sequence Punch" words="@#$01" level="5" range="1" casterTargetOrDirection="1" blockwalls="1" needlearn="0" exhaustion="0" script="gon/10.lua">
101+ <vocation name="Kurapika" />
102+ </instant>
103+
104+ <!-- Kurapika Spells level 15 -->
105+ <instant group="attack" name="Jajanken Gu" words="@#$02" level="15" range="2" casterTargetOrDirection="1" blockwalls="1" exhaustion="0" cooldown="0" needlearn="0" script="gon/15.lua">
106+ <vocation name="Kurapika" />
107+ </instant>
108+
109+ <!-- Kurapika Spells level 20 -->
110+ <instant group="attack" name="Ren" words="$$$$3" level="20" manapercent="25" casterTargetOrDirection="1" blockwalls="1" exhaustion="0" cooldown="0" groupexhaustion="2000" needlearn="0" script="gon/20.lua">
111+ <vocation name="Kurapika" />
112+ </instant>
113+
114+ <!-- Kurapika Spells level 25 -->
115+ <instant group="attack" name="Dash" words="@#$03" level="25" manapercent="25" range="1" casterTargetOrDirection="1" blockwalls="1" exhaustion="0" cooldown="0" groupexhaustion="2000" needlearn="0" script="gon/dash.lua">
116+ <vocation name="Kurapika" />
117+ </instant>
118+
119+ <!-- Kurapika Spells level 35 -->
120+ <instant group="attack" name="Holy Chain" words="Holy Chain" level="35" manapercent="50" premium="0" casterTargetOrDirection="1" blockwalls="1" exhaustion="0" cooldown="0" groupexhaustion="2000" needlearn="0" script="kurapika/Holy Chain.lua">
121+ <vocation name="Kurapika" />
122+ </instant>
123+
124+ <!-- Kurapika Spells level 50 -->
125+ <instant group="attack" name="Chain Jail" words="Chain Jail" level="50" manapercent="50" premium="0" range="4" casterTargetOrDirection="1" blockwalls="1" exhaustion="0" cooldown="0" groupexhaustion="2000" needlearn="0" script="kurapika/Chain Jail.lua">
126+ <vocation name="Kurapika" />
127+ </instant>
128+
129+ <!-- Custom - Ice Spells -->
130+ <instant group="attack" spellid="01" aggressive="1" name="Seal of Chaotic Disruption" words="skill 1" level="01" range="5" needtarget="0" cooldown="15000" script="seal_of_chaotic_disruption.lua"/>
131+ <instant group="attack" spellid="02" aggressive="1" name="Frozen Cataclysm" words="skill 2" level="01" range="5" needtarget="1" cooldown="14000" script="frozen_cataclysm.lua"/>
132+ <instant group="attack" spellid="03" aggressive="1" name="Lunar Orbs" words="skill 3" level="01" range="5" needtarget="1" cooldown="20000" script="lunar_orbs.lua"/>
133+ <instant group="attack" spellid="04" aggressive="1" name="Delusion Wave" words="skill 4" level="01" range="5" needtarget="1" cooldown="10000" script="delusion_wave.lua"/>
134+ <instant group="attack" spellid="05" aggressive="1" name="Duplicity of Insanity" words="skill 5" level="01" range="5" needtarget="0" cooldown="16000" script="duplicity_of_insanity.lua"/>
135+ <instant group="attack" spellid="06" aggressive="1" name="Frostfire Hail" words="skill 6" level="01" range="5" needtarget="1" cooldown="9000" script="frostfire_hail.lua"/>
136+ <instant group="attack" spellid="07" aggressive="1" name="Frostfire Torrent" words="skill 7" level="01" range="5" needtarget="1" cooldown="15000" script="frostfire_torrent.lua"/>
137+ <instant group="attack" spellid="08" aggressive="1" name="Imbuement Spellshield" words="skill 8" level="01" range="5" needtarget="0" cooldown="13000" script="imbuement_spellshield.lua"/>
138+ <instant group="attack" spellid="09" aggressive="1" name="Eruption Bolt" words="skill 9" level="01" range="5" needtarget="1" cooldown="16000" script="eruption_bolt.lua"/>
139+ <instant group="attack" spellid="10" aggressive="1" name="Arcane Rage" words="skill 10" level="01" range="5" needtarget="0" cooldown="15000" script="arcane_rage.lua"/>
140+
141+ <!-- Custom - Fire Spells -->
142+ <instant group="attack" spellid="11" aggressive="1" name="Fire Rush" words="skill 11" level="01" range="5" needtarget="0" cooldown="5000" script="fire_rush.lua"/>
143+ <instant group="attack" spellid="12" aggressive="1" name="Ball of Pain" words="skill 12" level="01" range="5" needtarget="1" cooldown="20000" script="ball_of_pain.lua"/>
144+ <instant group="attack" spellid="13" aggressive="1" name="Banish Elemental" words="skill 13" level="01" range="5" needtarget="0" cooldown="15000" script="banish_elemental.lua"/>
145+ <instant group="attack" spellid="14" aggressive="1" name="Fiery Surge" words="skill 14" level="01" range="5" needtarget="1" cooldown="10000" script="fiery_surge.lua"/>
146+ <instant group="attack" spellid="15" aggressive="1" name="Suffering" words="skill 15" level="01" range="5" needtarget="1" cooldown="23000" script="suffering.lua"/>
147+ <instant group="attack" spellid="16" aggressive="1" name="Soul Blaze" words="skill 16" level="01" range="5" needtarget="0" cooldown="19000" script="soul_blaze.lua"/>
148+ <instant group="attack" spellid="17" aggressive="1" name="Decay of Knowledge" words="skill 17" level="01" range="5" needtarget="0" cooldown="20000" script="decay_of_knowledge.lua"/>
149+ <instant group="attack" spellid="18" aggressive="1" name="Carnage of Armor" words="skill 18" level="01" range="5" needtarget="0" cooldown="24000" script="carnage_of_armor.lua"/>
150+ <instant group="attack" spellid="19" aggressive="1" name="Slow Fire" words="skill 19" level="01" range="5" needtarget="1" cooldown="9000" script="slow_fire.lua"/>
151+ <instant group="attack" spellid="20" aggressive="1" name="Lava Burst" words="skill 20" level="01" range="5" needtarget="0" cooldown="4000" script="lava_burst.lua"/>
152+
153+
154+ <!-- Custom - Death Spells -->
155+ <instant group="attack" spellid="21" aggressive="1" name="Curse of Soul Draining" words="skill 21" level="01" range="5" needtarget="1" cooldown="24000" script="curse_of_soul_draining.lua"/>
156+ <instant group="attack" spellid="22" aggressive="1" name="Soul Hail" words="skill 22" level="01" range="5" needtarget="1" cooldown="5000" script="soul_hail.lua"/>
157+ <instant group="attack" spellid="23" aggressive="1" name="Cursed Misery" words="skill 23" level="01" range="5" needtarget="0" cooldown="11000" script="cursed_misery.lua"/>
158+ <instant group="attack" spellid="24" aggressive="1" name="Blast of the Ancestors" words="skill 24" level="01" range="5" needtarget="1" cooldown="25000" script="blast_of_the_ancestors.lua"/>
159+ <instant group="attack" spellid="25" aggressive="1" name="Curse of Ancestral Fury" words="skill 25" level="01" range="5" needtarget="1" cooldown="26000" script="curse_of_ancestral_fury.lua"/>
160+ <instant group="attack" spellid="26" aggressive="1" name="Void Frenzy" words="skill 26" level="01" range="5" needtarget="0" cooldown="18000" script="void_frenzy.lua"/>
161+ <instant group="attack" spellid="27" aggressive="1" name="Flash Cursed" words="skill 27" level="01" range="5" needtarget="1" cooldown="19000" script="flash_cursed.lua"/>
162+ <instant group="attack" spellid="28" aggressive="1" name="Perversion Beam" words="skill 28" level="01" range="5" needtarget="0" cooldown="25000" script="perversion_beam.lua"/>
163+ <instant group="attack" spellid="29" aggressive="1" name="Death Shock" words="skill 29" level="01" range="5" needtarget="0" cooldown="5000" script="death_shock.lua"/>
164+ <instant group="attack" spellid="30" aggressive="1" name="Death Salvo" words="skill 30" level="01" range="5" needtarget="0" cooldown="20000" script="death_salvo.lua"/>
165+
166+ <!-- Custom - Physical Spells -->
167+ <instant group="attack" spellid="31" aggressive="1" name="Rain Sword" words="skill 31" level="01" range="5" needtarget="0" cooldown="18000" script="rain_sword.lua"/>
168+ <instant group="attack" spellid="32" aggressive="1" name="Fury Impact" words="skill 32" level="01" range="5" needtarget="0" cooldown="5000" script="fury_impact.lua"/>
169+ <instant group="attack" spellid="33" aggressive="1" name="Blood Punish" words="skill 33" level="01" range="5" needtarget="0" cooldown="14000" script="blood_punish.lua"/>
170+ <instant group="attack" spellid="34" aggressive="1" name="Blood Dawn" words="skill 34" level="01" range="5" needtarget="1" cooldown="16000" script="blood_dawn.lua"/>
171+ <instant group="attack" spellid="35" aggressive="1" name="Double Punch" words="skill 35" level="01" range="5" needtarget="1" cooldown="8000" script="double_punch.lua"/>
172+ <instant group="attack" spellid="36" aggressive="1" name="Death Bleeding" words="skill 36" level="01" range="5" needtarget="1" cooldown="10000" script="death_bleeding.lua"/>
173+ <instant group="attack" spellid="37" aggressive="1" name="Cyclone Beast" words="skill 37" level="01" range="5" needtarget="1" cooldown="9000" script="cyclone_beast.lua"/>
174+ <instant group="attack" spellid="38" aggressive="1" name="Obliteration Bomb" words="skill 38" level="01" range="5" needtarget="0" cooldown="27000" script="obliteration_bomb.lua"/>
175+ <instant group="attack" spellid="39" aggressive="1" name="Beast Bit" words="skill 39" level="01" range="5" needtarget="1" cooldown="9000" script="beast_bit.lua"/>
176+ <instant group="attack" spellid="40" aggressive="1" name="Solitude of Chaos" words="skill 40" level="01" range="5" needtarget="0" cooldown="10000" script="solitude_of_chaos.lua"/>
177+
178+ <!-- Custom - Holy Spells -->
179+ <instant group="attack" spellid="41" aggressive="1" name="Runic Blast" words="skill 41" level="01" range="5" needtarget="0" cooldown="15000" script="runic_blast.lua"/>
180+ <instant group="attack" spellid="42" aggressive="1" name="Holy Impact" words="skill 42" level="01" range="5" needtarget="1" cooldown="4000" script="holy_impact.lua"/>
181+ <instant group="attack" spellid="43" aggressive="1" name="Holy Void" words="skill 43" level="01" range="5" needtarget="0" cooldown="10000" script="holy_void.lua"/>
182+ <instant group="attack" spellid="44" aggressive="1" name="Blessed Hammer" words="skill 44" level="01" range="5" needtarget="1" cooldown="16000" script="blessed_hammer.lua"/>
183+ <instant group="attack" spellid="45" aggressive="1" name="Barrier of Holy" words="skill 45" level="01" range="5" needtarget="0" cooldown="28000" script="barrier_of_holy.lua"/>
184+ <instant group="attack" spellid="46" aggressive="1" name="Judgement of the Spirit" words="skill 46" level="01" range="5" needtarget="0" cooldown="16000" script="judgement_of_the_spirit.lua"/>
185+ <instant group="attack" spellid="47" aggressive="1" name="Triple Spirit" words="skill 47" level="01" range="5" needtarget="1" cooldown="21000" script="triple_spirit.lua"/>
186+ <instant group="attack" spellid="48" aggressive="1" name="Sunlight Strike" words="skill 48" level="01" range="5" needtarget="0" cooldown="25000" script="sunlight_strike.lua"/>
187+ <instant group="attack" spellid="49" aggressive="1" name="Manifest Soul" words="skill 49" level="01" range="5" needtarget="0" cooldown="28000" script="manifest_soul.lua"/>
188+ <instant group="attack" spellid="50" aggressive="1" name="Protection of the Spirit" words="skill 50" level="01" range="5" needtarget="0" cooldown="26000" script="protection_of_the_spirit.lua"/>
189+
190+ <!-- Custom - Earth Spells -->
191+ <instant group="attack" spellid="51" aggressive="1" name="Toxic Punch" words="skill 51" level="01" range="5" needtarget="1" cooldown="5000" script="toxic_punch.lua"/>
192+ <instant group="attack" spellid="52" aggressive="1" name="Moss Smash" words="skill 52" level="01" range="5" needtarget="1" cooldown="16000" script="moss_smash.lua"/>
193+ <instant group="attack" spellid="53" aggressive="1" name="Carnivore Shield" words="skill 53" level="01" range="5" needtarget="0" cooldown="5000" script="carnivore_shield.lua"/>
194+ <instant group="attack" spellid="54" aggressive="1" name="Plant Attack" words="skill 54" level="01" range="5" needtarget="1" cooldown="8000" script="plant_attack.lua"/>
195+ <instant group="attack" spellid="55" aggressive="1" name="Triple Poison" words="skill 55" level="01" range="5" needtarget="1" cooldown="20000" script="triple_poison.lua"/>
196+ <instant group="attack" spellid="56" aggressive="1" name="Dishonor of Seals" words="skill 56" level="01" range="5" needtarget="0" cooldown="20000" script="dishonor_of_seals.lua"/>
197+ <instant group="attack" spellid="57" aggressive="1" name="Deflection of Venom" words="skill 57" level="01" range="5" needtarget="0" cooldown="25000" script="deflection_of_venom.lua"/>
198+ <instant group="attack" spellid="58" aggressive="1" name="Void Eruption" words="skill 58" level="01" range="5" needtarget="0" cooldown="20000" script="void_eruption.lua"/>
199+ <instant group="attack" spellid="59" aggressive="1" name="Nature Wave" words="skill 59" level="01" range="5" needtarget="0" cooldown="15000" script="nature_wave.lua"/>
200+ <instant group="attack" spellid="60" aggressive="1" name="Burst of Venom" words="skill 60" level="01" range="5" needtarget="0" cooldown="6000" script="burst_of_venom.lua"/>
201+
202+ <!-- Custom - Energy Spells -->
203+ <instant group="attack" spellid="61" aggressive="1" name="Soul Ray" words="skill 61" level="01" range="5" needtarget="0" cooldown="5000" script="soul_ray.lua"/>
204+ <instant group="attack" spellid="62" aggressive="1" name="Bolt of Energy" words="skill 62" level="01" range="5" needtarget="1" cooldown="11000" script="bolt_of_energy.lua"/>
205+ <instant group="attack" spellid="63" aggressive="1" name="Spectral Bolt" words="skill 63" level="01" range="5" needtarget="1" cooldown="15000" script="spectral_bolt.lua"/>
206+ <instant group="attack" spellid="64" aggressive="1" name="Arcane Nova" words="skill 64" level="01" range="5" needtarget="0" cooldown="25000" script="arcane_nova.lua"/>
207+ <instant group="attack" spellid="65" aggressive="1" name="Small Storm" words="skill 65" level="01" range="5" needtarget="1" cooldown="6000" script="small_storm.lua"/>
208+ <instant group="attack" spellid="66" aggressive="1" name="Ball of Shattering" words="skill 66" level="01" range="5" needtarget="0" cooldown="27000" script="ball_of_shattering.lua"/>
209+ <instant group="attack" spellid="67" aggressive="1" name="Rain Chaos" words="skill 67" level="01" range="5" needtarget="0" cooldown="20000" script="rain_chaos.lua"/>
210+ <instant group="attack" spellid="68" aggressive="1" name="Energy Rocket" words="skill 68" level="01" range="5" needtarget="1" cooldown="19000" script="attacks_moves/attack_spell.lua"/>
211+ <instant group="attack" spellid="75" aggressive="1" name="Byakuya Spell" words="skill 75" level="01" range="7" needtarget="1" cooldown="60000" script="attacks_moves/byakuya_spell.lua"/>
212+ <instant group="attack" spellid="69" aggressive="1" name="X Eletric" words="skill 69" level="01" range="5" needtarget="1" cooldown="15000" script="x_eletric.lua"/>
213+ <instant group="attack" spellid="70" aggressive="1" name="Barrier of Energy" words="skill 70" level="01" range="5" needtarget="0" cooldown="10000" script="barrier_of_energy.lua"/>
214+
215+ <!-- Magias de Suporte -->
216+ <instant group="support" spellid="71" aggressive="0" name="Speed of Gods" words="skill 71" level="01" range="5" needtarget="0" cooldown="15000" script="speed_of_gods.lua"/>
217+ <instant group="healing" spellid="72" aggressive="0" name="Intense Recovery" words="skill 72" level="01" range="5" needtarget="0" cooldown="1000" script="intense_recovery.lua"/>
218+ <instant group="attack" spellid="73" aggressive="1" name="Maestria" words="skill 73" level="01" range="5" needtarget="0" cooldown="15000" script="maestria.lua"/>
219+ <instant group="attack" spellid="76" aggressive="1" name="BackstepBarrage" words="skill 76" level="80" range="1" needtarget="0" cooldown="8000" script="gon/dash.lua"/>
220+
221+
222+ <!-- Monster Spells -->
223+ <instant name="ghastly dragon curse" words="###1" aggressive="1" blockwalls="1" needtarget="1" needlearn="1" script="monster/ghastly_dragon_curse.lua" />
224+ <instant name="djinn electrify" words="###2" aggressive="1" blockwalls="1" needtarget="1" needlearn="1" script="monster/djinn_electrify.lua" />
225+ <instant name="energy elemental electrify" words="###3" aggressive="1" blockwalls="1" needtarget="0" needlearn="1" script="monster/energy_elemental_electrify.lua" />
226+ <instant name="massive energy elemental electrify" words="###4" aggressive="1" blockwalls="1" needtarget="0" needlearn="1" script="monster/massive_energy_elemental_electrify.lua" />
227+ <instant name="massive fire elemental soulfire" words="###5" aggressive="1" blockwalls="1" needtarget="0" needlearn="1" script="monster/massive_fire_elemental_soulfire.lua" />
228+ <instant name="hellfire fighter soulfire" words="###6" aggressive="1" blockwalls="1" needtarget="0" needlearn="1" script="monster/hellfire_fighter_soulfire.lua" />
229+ <instant name="hellspawn soulfire" words="###7" aggressive="1" blockwalls="1" range="7" needtarget="1" needlearn="1" script="monster/hellspawn_soulfire.lua" />
230+ <instant name="spectre drown" words="###8" aggressive="1" blockwalls="1" needtarget="0" needlearn="1" script="monster/spectre_drown.lua" />
231+ <instant name="phantasm drown" words="###9" direction="1" aggressive="1" blockwalls="1" needtarget="0" needlearn="1" script="monster/phantasm_drown.lua" />
232+ <instant name="undead dragon curse" words="###10" direction="1" aggressive="1" blockwalls="1" needtarget="0" needlearn="1" script="monster/undead_dragon_curse.lua" />
233+ <instant name="draken abomination curse" words="###11" aggressive="1" blockwalls="1" needtarget="1" needlearn="1" script="monster/draken_abomination_curse.lua" />
234+ <instant name="lancer beetle curse" words="###12" aggressive="1" blockwalls="1" needtarget="1" needlearn="1" script="monster/lancer_beetle_curse.lua" />
235+ <instant name="lizard magistratus curse" words="###13" aggressive="1" blockwalls="1" needtarget="1" needlearn="1" script="monster/lizard_magistratus_curse.lua" />
236+ <instant name="death blob curse" words="###14" aggressive="1" blockwalls="1" needtarget="1" needlearn="1" script="monster/death_blob_curse.lua" />
237+ <instant name="choking fear drown" words="###15" aggressive="1" blockwalls="1" needtarget="0" needlearn="1" script="monster/choking_fear_drown.lua" />
238+ <instant name="blightwalker curse" words="###16" aggressive="1" blockwalls="1" needtarget="0" needlearn="1" script="monster/blightwalker_curse.lua" />
239+ <instant name="sea serpent drown" words="###17" aggressive="1" blockwalls="1" needtarget="1" needlearn="1" script="monster/sea_serpent_drown.lua" />
240+ <instant name="young sea serpent drown" words="###18" aggressive="1" blockwalls="1" needtarget="1" needlearn="1" script="monster/young_sea_serpent_drown.lua" />
241+ <instant name="quara constrictor freeze" words="###19" aggressive="1" blockwalls="1" needtarget="0" needlearn="1" script="monster/quara_constrictor_freeze.lua" />
242+ <instant name="quara constrictor electrify" words="###20" aggressive="1" blockwalls="1" needtarget="1" needlearn="1" script="monster/quara_constrictor_electrify.lua" />
243+ <instant name="cliff strider electrify" words="###21" aggressive="1" blockwalls="1" needtarget="1" needlearn="1" script="monster/cliff_strider_electrify.lua" />
244+ <instant name="war golem electrify" words="###22" aggressive="1" blockwalls="1" needtarget="1" needlearn="1" script="monster/war_golem_electrify.lua" />
245+ <instant name="souleater drown" words="###23" aggressive="1" blockwalls="1" needtarget="1" needlearn="1" script="monster/souleater_drown.lua" />
246+ <instant name="mutated bat curse" words="###24" direction="1" aggressive="1" blockwalls="1" needtarget="0" needlearn="1" script="monster/mutated_bat_curse.lua" />
247+ <instant name="vulcongra soulfire" words="###25" aggressive="1" blockwalls="1" needtarget="0" needlearn="1" script="monster/vulcongra_soulfire.lua" />
248+ <instant name="lava golem soulfire" words="###26" aggressive="1" blockwalls="1" needtarget="0" needlearn="1" script="monster/lava_golem_soulfire.lua" />
249+ <instant name="magma crawler soulfire" words="###27" aggressive="1" blockwalls="1" needtarget="0" needlearn="1" script="monster/magma_crawler_soulfire.lua" />
250+ <instant name="war golem skill reducer" words="###28" direction="1" aggressive="1" blockwalls="1" needtarget="0" needlearn="1" script="monster/war_golem_skill_reducer.lua" />
251+ <instant name="silencer skill reducer" words="###29" aggressive="1" blockwalls="1" needtarget="1" needlearn="1" script="monster/silencer_skill_reducer.lua" />
252+ <instant name="warlock skill reducer" words="###30" aggressive="1" blockwalls="1" needtarget="1" needlearn="1" script="monster/warlock_skill_reducer.lua" />
253+ <instant name="cliff strider skill reducer" words="###31" aggressive="1" blockwalls="1" needtarget="0" needlearn="1" script="monster/cliff_strider_skill_reducer.lua" />
254+ <instant name="stampor skill reducer" words="###32" aggressive="1" blockwalls="1" needtarget="1" needlearn="1" script="monster/stampor_skill_reducer.lua" />
255+ <instant name="diabolic imp skill reducer" words="###33" aggressive="1" blockwalls="1" needtarget="1" needlearn="1" script="monster/diabolic_imp_skill_reducer.lua" />
256+ <instant name="dark torturer skill reducer" words="###34" direction="1" aggressive="1" blockwalls="1" needtarget="0" needlearn="1" script="monster/dark_torturer_skill_reducer.lua" />
257+ <instant name="forest fury skill reducer" words="###35" aggressive="1" blockwalls="1" needtarget="1" needlearn="1" script="monster/forest_fury_skill_reducer.lua" />
258+ <instant name="demon outcast skill reducer" words="###36" aggressive="1" blockwalls="1" needtarget="1" needlearn="1" script="monster/demon_outcast_skill_reducer.lua" />
259+ <instant name="fury skill reducer" words="###37" aggressive="1" blockwalls="1" needtarget="0" needlearn="1" script="monster/fury_skill_reducer.lua" />
260+ <instant name="barbarian brutetamer skill reducer" words="###38" aggressive="1" blockwalls="1" needtarget="1" needlearn="1" script="monster/barbarian_brutetamer_skill_reducer.lua" />
261+ <instant name="deepling spellsinger skill reducer" words="###39" aggressive="1" blockwalls="1" needtarget="1" needlearn="1" script="monster/deepling_spellsinger_skill_reducer.lua" />
262+ <instant name="werewolf skill reducer" words="###40" aggressive="1" blockwalls="1" needtarget="1" needlearn="1" script="monster/werewolf_skill_reducer.lua" />
263+ <instant name="ice golem skill reducer" words="###41" aggressive="1" blockwalls="1" needtarget="0" needlearn="1" script="monster/ice_golem_skill_reducer.lua" />
264+ <instant name="feversleep skill reducer" words="###42" aggressive="1" blockwalls="1" needtarget="0" needlearn="1" script="monster/feversleep_skill_reducer.lua" />
265+ <instant name="shock head skill reducer 1" words="###43" aggressive="1" blockwalls="1" needtarget="1" needlearn="1" script="monster/shock_head_skill_reducer_1.lua" />
266+ <instant name="shock head skill reducer 2" words="###44" aggressive="1" blockwalls="1" needtarget="0" needlearn="1" script="monster/shock_head_skill_reducer_2.lua" />
267+ <instant name="enslaved dwarf skill reducer 1" words="###45" aggressive="1" blockwalls="1" needtarget="0" needlearn="1" script="monster/enslaved_dwarf_skill_reducer_1.lua" />
268+ <instant name="enslaved dwarf skill reducer 2" words="###46" aggressive="1" blockwalls="1" needtarget="0" needlearn="1" script="monster/enslaved_dwarf_skill_reducer_2.lua" />
269+ <instant name="djinn cancel invisibility" words="###47" aggressive="1" blockwalls="1" needtarget="0" needlearn="1" script="monster/djinn_cancel_invisibility.lua" />
270+ <instant name="betrayed wraith skill reducer" words="###48" direction="1" aggressive="1" blockwalls="1" needtarget="0" needlearn="1" script="monster/betrayed_wraith_skill_reducer.lua" />
271+ <instant name="pirate corsair skill reducer" words="###49" direction="1" aggressive="1" blockwalls="1" needtarget="0" needlearn="1" script="monster/pirate_corsair_skill_reducer.lua" />
272+ <instant name="monster soulfire" words="###50" aggressive="1" blockwalls="1" range="7" needtarget="1" needlearn="1" script="monster/monster_soulfire.lua" />
273+ <instant name="dipthrah skill reducer" words="###51" aggressive="1" blockwalls="1" needtarget="0" needlearn="1" script="monster/dipthrah_skill_reducer.lua" />
274+ <instant name="rustheap golem electrify" words="###368" aggressive="1" blockwalls="1" needtarget="1" needlearn="1" script="monster/rustheap golem electrify.lua"/>
275+ <instant name="rustheap golem wave" words="###369" direction="1" aggressive="1" blockwalls="1" needtarget="0" needlearn="1" script="monster/rustheap golem wave.lua"/>
276+ <instant name="frazzlemaw paralyze" words="###356" aggressive="1" blockwalls="1" needtarget="0" needlearn="1" script="monster/frazzlemaw paralyze.lua"/>
277+ <instant name="glooth anemone summon" words="##372" aggressive="0" blockwalls="1" needtarget="0" needlearn="1" script="monster/glooth anemone summon.lua"/>
278+ <instant name="soldier challenger" words="##373" aggressive="0" blockwalls="1" needtarget="0" needlearn="1" script="support/challenge.lua"/>
279+</spells>
A data/talkactions/lib/talkactions.lua +12-0 View file
@@ -0,0 +1,12 @@
1+local logFormat = "[%s] %s %s"
2+
3+function logCommand(player, words, param)
4+ local file = io.open("data/logs/" .. player:getName() .. " commands.log", "a")
5+ if not file then
6+ return
7+ end
8+
9+ io.output(file)
10+ io.write(logFormat:format(os.date("%d/%m/%Y %H:%M"), words, param):trim() .. "\n")
11+ io.close(file)
12+end
A data/talkactions/scripts/add_skill.lua +57-0 View file
@@ -0,0 +1,57 @@
1+local function getSkillId(skillName)
2+ if skillName == "club" then
3+ return SKILL_CLUB
4+ elseif skillName == "sword" then
5+ return SKILL_SWORD
6+ elseif skillName == "axe" then
7+ return SKILL_AXE
8+ elseif skillName:sub(1, 4) == "dist" then
9+ return SKILL_DISTANCE
10+ elseif skillName:sub(1, 6) == "shield" then
11+ return SKILL_SHIELD
12+ elseif skillName:sub(1, 4) == "fish" then
13+ return SKILL_FISHING
14+ else
15+ return SKILL_FIST
16+ end
17+end
18+
19+local function getExpForLevel(level)
20+ level = level - 1
21+ return ((50 * level * level * level) - (150 * level * level) + (400 * level)) / 3
22+end
23+
24+function onSay(player, words, param)
25+ if player:getGroup():getId() < 3 then
26+ return false
27+ end
28+ local split = param:splitTrimmed(",")
29+ if not split[2] then
30+ player:sendCancelMessage("Insufficient parameters.")
31+ return false
32+ end
33+
34+ local target = Player(split[1])
35+ if not target then
36+ player:sendCancelMessage("A player with that name is not online.")
37+ return false
38+ end
39+
40+ local count = 1
41+ if split[3] then
42+ count = tonumber(split[3])
43+ end
44+
45+ local ch = split[2]:sub(1, 1)
46+ for i = 1, count do
47+ if ch == "l" or ch == "e" then
48+ target:addExperience(getExpForLevel(target:getLevel() + 1) - target:getExperience(), false)
49+ elseif ch == "m" then
50+ target:addManaSpent(target:getVocation():getRequiredManaSpent(target:getBaseMagicLevel() + 1) - target:getManaSpent())
51+ else
52+ local skillId = getSkillId(split[2])
53+ target:addSkillTries(skillId, target:getVocation():getRequiredSkillTries(skillId, target:getSkillLevel(skillId) + 1) - target:getSkillTries(skillId))
54+ end
55+ end
56+ return false
57+end
A data/talkactions/scripts/add_tutor.lua +21-0 View file
@@ -0,0 +1,21 @@
1+function onSay(player, words, param)
2+ if player:getGroup():getId() < 3 then
3+ return false
4+ end
5+
6+ local target = Player(param)
7+ if not target then
8+ player:sendCancelMessage("A player with that name is not online.")
9+ return false
10+ end
11+
12+ if target:getAccountType() ~= ACCOUNT_TYPE_NORMAL then
13+ player:sendCancelMessage("You can only promote a normal player to a tutor.")
14+ return false
15+ end
16+
17+ target:setAccountType(ACCOUNT_TYPE_TUTOR)
18+ target:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have been promoted to a tutor by " .. player:getName() .. ".")
19+ player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have promoted " .. target:getName() .. " to a tutor.")
20+ return false
21+end
A data/talkactions/scripts/animationeffect.lua +29-0 View file
@@ -0,0 +1,29 @@
1+function onSay(player, words, param)
2+ if player:getGroup():getId() < 3 then
3+ return false
4+ end
5+
6+ local effect = tonumber(param)
7+ local position = player:getPosition()
8+ local toPositionLow = {z = position.z}
9+ local toPositionHigh = {z = position.z}
10+
11+ toPositionLow.x = position.x - 7
12+ toPositionHigh.x = position.x + 7
13+ for i = -5, 5 do
14+ toPositionLow.y = position.y + i
15+ toPositionHigh.y = toPositionLow.y
16+ position:sendDistanceEffect(toPositionLow, effect)
17+ position:sendDistanceEffect(toPositionHigh, effect)
18+ end
19+
20+ toPositionLow.y = position.y - 5
21+ toPositionHigh.y = position.y + 5
22+ for i = -6, 6 do
23+ toPositionLow.x = position.x + i
24+ toPositionHigh.x = toPositionLow.x
25+ position:sendDistanceEffect(toPositionLow, effect)
26+ position:sendDistanceEffect(toPositionHigh, effect)
27+ end
28+ return false
29+end
A data/talkactions/scripts/ban.lua +39-0 View file
@@ -0,0 +1,39 @@
1+local banDays = 7
2+
3+function onSay(player, words, param)
4+ if player:getGroup():getId() < 3 then
5+ return false
6+ end
7+
8+ local name = param
9+ local reason = ''
10+
11+ local separatorPos = param:find(',')
12+ if separatorPos then
13+ name = param:sub(0, separatorPos - 1)
14+ reason = string.trim(param:sub(separatorPos + 1))
15+ end
16+
17+ local accountId = getAccountNumberByPlayerName(name)
18+ if accountId == 0 then
19+ return false
20+ end
21+
22+ local resultId = db.storeQuery("SELECT 1 FROM `account_bans` WHERE `account_id` = " .. accountId)
23+ if resultId ~= false then
24+ result.free(resultId)
25+ return false
26+ end
27+
28+ local timeNow = os.time()
29+ db.query("INSERT INTO `account_bans` (`account_id`, `reason`, `banned_at`, `expires_at`, `banned_by`) VALUES (" ..
30+ accountId .. ", " .. db.escapeString(reason) .. ", " .. timeNow .. ", " .. timeNow + (banDays * 86400) .. ", " .. player:getGuid() .. ")")
31+
32+ local target = Player(name)
33+ if target then
34+ player:sendTextMessage(MESSAGE_EVENT_ADVANCE, target:getName() .. " has been banned.")
35+ target:remove()
36+ else
37+ player:sendTextMessage(MESSAGE_EVENT_ADVANCE, name .. " has been banned.")
38+ end
39+end
A data/talkactions/scripts/broadcast.lua +26-0 View file
@@ -0,0 +1,26 @@
1+function onSay(player, words, param)
2+ if not player:hasFlag(PlayerFlag_CanBroadcast) then
3+ return true
4+ end
5+
6+ if param == '' then
7+ player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.")
8+ return true
9+ end
10+
11+ -- Permitir formato: color | mensaje
12+ local color, message = param:match("^(%w+)%s*|%s*(.+)$")
13+ if color and message then
14+ param = color .. "|" .. message
15+ end
16+
17+ local MESSAGE_STATUS_WARNING = 20
18+
19+ -- Enviar el mensaje a todos los jugadores con el modo correcto.
20+ for _, targetPlayer in ipairs(Game.getPlayers()) do
21+ targetPlayer:sendTextMessage(MESSAGE_STATUS_WARNING, param)
22+ end
23+
24+ print("> " .. player:getName() .. " broadcasted: \"" .. param .. "\".")
25+ return false
26+end
A data/talkactions/scripts/broadocast.lua +12-0 View file
@@ -0,0 +1,12 @@
1+function onSay(cid, words, param, channel)
2+ if(param == '') then
3+ doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.")
4+ return true
5+ end
6+ if doBroadcastMessage then
7+ doBroadcastMessage(param)
8+ else
9+ Game.broadcastMessage(param)
10+ end
11+ return true
12+end
A data/talkactions/scripts/clean.lua +11-0 View file
@@ -0,0 +1,11 @@
1+function onSay(player, words, param)
2+ if player:getGroup():getId() < 3 then
3+ return false
4+ end
5+
6+ local itemCount = cleanMap()
7+ if itemCount > 0 then
8+ player:sendTextMessage(MESSAGE_STATUS_WARNING, "Cleaned " .. itemCount .. " item" .. (itemCount > 1 and "s" or "") .. " from the map.")
9+ end
10+ return false
11+end
A data/talkactions/scripts/closeserver.lua +13-0 View file
@@ -0,0 +1,13 @@
1+function onSay(player, words, param)
2+ if player:getGroup():getId() < 3 then
3+ return false
4+ end
5+
6+ if param == "shutdown" then
7+ Game.setGameState(GAME_STATE_SHUTDOWN)
8+ else
9+ Game.setGameState(GAME_STATE_CLOSED)
10+ player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Server is now closed.")
11+ end
12+ return false
13+end
A data/talkactions/scripts/commands/titles.lua +7-0 View file
@@ -0,0 +1,7 @@
1+-- data/scripts/commands/titles.lua
2+function onSay(player, words, param)
3+ dofile("data/scripts/modules/title_sender.lua")
4+ sendPlayerTitles(player)
5+ player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Títulos enviados para o cliente.")
6+ return false
7+end
A data/talkactions/scripts/create_item.lua +81-0 View file
@@ -0,0 +1,81 @@
1+function onSay(player, words, param)
2+ if player:getGroup():getId() < 3 then
3+ return false
4+ end
5+ --[[ /i 1001, true, 1, 2, 3]]--
6+ --[[ [01] = ItemID
7+ [02] = Definir status do item manualmente ou deixar zerado (false/true)
8+ [03] = Quantidade
9+ [04] = Se o [02] tiver true, aqui fica RARIDADE do item. Se [02] for falso, n�o precisa colocar nada aqui.
10+ [05] = Se o [02] tiver true, aqui fica STAR do item. Se [02] for falso, n�o precisa colocar nada aqui.
11+ ]]--
12+ local split = param:splitTrimmed(" ")
13+ if _ITEMS[tonumber(split[01])] then
14+ local default = false
15+ if split[02] ~= nil then
16+ default = true
17+ end
18+
19+ local iid = tonumber(split[01])
20+ local slo = _ITEMS[iid].SLOT_EQUIP
21+ local rar = 00
22+ local sta = 00
23+ local qnt = 01
24+ local ext = 00
25+
26+ if default then
27+ if split[03] ~= nil then
28+ if isNumber(split[03]) then
29+ qnt = tonumber(split[03])
30+ else
31+ qnt = 01
32+ end
33+ else
34+ qnt = 01
35+ end
36+ if split[04] ~= nil then
37+ if isNumber(split[04]) then
38+ rar = tonumber(split[04])
39+ end
40+ end
41+ if split[05] ~= nil then
42+ if isNumber(split[05]) then
43+ sta = tonumber(split[05])
44+ end
45+ end
46+ end
47+
48+ if slo > 9 or slo == 0 then slo = 3 end
49+ if iid == 3218 then
50+ PlayerVipCoins(player, 02, qnt)
51+ player:sendCancelMessage("@LootMSG 3218 3 0 " ..qnt)
52+ doBackpack(player, 11)
53+ return false
54+ end
55+ if doBackpack(player, 00, slo, ext, 01) then
56+ if slo == 3 then
57+ doBackpack(player, 03, slo, ext, 01, iid) -- Procurar
58+ if doBackpack(player, 01, slo, ext, 0, iid, rar, sta, qnt) then
59+ player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Voc� recebeu o item [ " .._ITEMS[iid].NAME.. ", x" ..qnt.." ].")
60+ player:getPosition():sendMagicEffect(14)
61+ end
62+ else
63+ if doBackpack(player, 01, slo, ext, 0, iid, rar, sta) then
64+ player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Voc� recebeu o item [ " .._ITEMS[iid].NAME.. " ].")
65+ player:getPosition():sendMagicEffect(14)
66+ end
67+ end
68+ else
69+ player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Sua Backpack esta cheia.")
70+ player:getPosition():sendMagicEffect(03)
71+ return false
72+ end
73+ --else
74+ -- player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Par�metro errado. Ap�s o ID, � preciso definir [true ou false].")
75+ -- return false
76+ --end
77+ else
78+ player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Item n�o encontrado.")
79+ return false
80+ end
81+end
Top