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/plant_attack.lua +68-0 View file
@@ -0,0 +1,68 @@
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_PLANTATTACK)
9+setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
10+setCombatArea(combat0_Brush,createCombatArea({{3}}))
11+function getDmg_Brush(cid, level, maglevel)
12+
13+ return -min, -max
14+end
15+setCombatCallback(combat0_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
16+
17+-- =============== CORE FUNCTIONS ===============
18+local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
19+ if (isCreature(cid)) then
20+ doCombat(cid, c, var)
21+ if (dirList ~= nil) then -- Emit distance effects
22+ local i = 2;
23+ while (i < #dirList) do
24+ doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
25+ i = i + 2
26+ end
27+ end
28+ end
29+end
30+function checkSpell54(cid)
31+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
32+ local CHECK_SLOT_01 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_04)
33+ local CHECK_SLOT_02 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_05)
34+ local CHECK_SLOT_03 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_06)
35+ SPELL_ID = 54
36+
37+ if GUN_ID > 0 then
38+ if CHECK_SLOT_01 == SPELL_ID then
39+ cid:sendCancelMessage("@SpellCooldown 01")
40+ return true
41+ elseif CHECK_SLOT_02 == SPELL_ID then
42+ cid:sendCancelMessage("@SpellCooldown 02")
43+ return true
44+ elseif CHECK_SLOT_03 == SPELL_ID then
45+ cid:sendCancelMessage("@SpellCooldown 03")
46+ return true
47+ else
48+ return false
49+ end
50+ else
51+ return false
52+ end
53+end
54+function onCastSpell(cid, var)
55+ if checkSpell54(cid) or cid:getGroup():getAccess() then
56+ local startPos = getCreaturePosition(cid)
57+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
58+ local starGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_03)
59+ local levelGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_07)
60+ min = onDamage(cid, GUN_ID, levelGun, starGun, "SKILL_MIN", SPELL_ID)
61+ max = min
62+ RunPart(combat0_Brush,cid,var)
63+ return true
64+ else
65+ cid:getPosition():sendMagicEffect(03)
66+ return false
67+ end
68+end
A data/spells/scripts/protection_of_the_spirit.lua +192-0 View file
@@ -0,0 +1,192 @@
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_HOLYDAMAGE)
9+setCombatParam(combat1_Brush, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
10+setCombatArea(combat1_Brush,createCombatArea({{0, 0, 1, 0, 0},
11+{0, 1, 0, 1, 0},
12+{1, 0, 2, 0, 1},
13+{0, 1, 0, 1, 0},
14+{0, 0, 1, 0, 0}}))
15+function getDmg_Brush(cid, level, maglevel)
16+
17+ return -min, -max
18+end
19+setCombatCallback(combat1_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
20+
21+-- Areas/Combat for 0ms
22+local combat0_Brush = createCombatObject()
23+setCombatParam(combat0_Brush, COMBAT_PARAM_EFFECT, CONST_ME_HOLYDAMAGE)
24+setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
25+setCombatArea(combat0_Brush,createCombatArea({{0, 1, 0},
26+{1, 2, 1},
27+{0, 1, 0}}))
28+function getDmg_Brush(cid, level, maglevel)
29+
30+ return -min, -max
31+end
32+setCombatCallback(combat0_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
33+
34+-- Areas/Combat for 200ms
35+local combat2_Brush = createCombatObject()
36+setCombatParam(combat2_Brush, COMBAT_PARAM_EFFECT, CONST_ME_HOLYDAMAGE)
37+setCombatParam(combat2_Brush, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
38+setCombatArea(combat2_Brush,createCombatArea({{0, 0, 0, 1, 0, 0, 0},
39+{0, 0, 1, 0, 1, 0, 0},
40+{0, 1, 0, 0, 0, 1, 0},
41+{1, 0, 0, 2, 0, 0, 1},
42+{0, 1, 0, 0, 0, 1, 0},
43+{0, 0, 1, 0, 1, 0, 0},
44+{0, 0, 0, 1, 0, 0, 0}}))
45+function getDmg_Brush(cid, level, maglevel)
46+
47+ return -min, -max
48+end
49+setCombatCallback(combat2_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
50+
51+-- Areas/Combat for 300ms
52+local combat3_Brush = createCombatObject()
53+setCombatParam(combat3_Brush, COMBAT_PARAM_EFFECT, CONST_ME_HOLYDAMAGE)
54+setCombatParam(combat3_Brush, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
55+setCombatArea(combat3_Brush,createCombatArea({{0, 0, 0, 0, 1, 0, 0, 0, 0},
56+{0, 0, 0, 1, 0, 1, 0, 0, 0},
57+{0, 0, 1, 0, 0, 0, 1, 0, 0},
58+{0, 1, 0, 0, 0, 0, 0, 1, 0},
59+{1, 0, 0, 0, 2, 0, 0, 0, 1},
60+{0, 1, 0, 0, 0, 0, 0, 1, 0},
61+{0, 0, 1, 0, 0, 0, 1, 0, 0},
62+{0, 0, 0, 1, 0, 1, 0, 0, 0},
63+{0, 0, 0, 0, 1, 0, 0, 0, 0}}))
64+function getDmg_Brush(cid, level, maglevel)
65+
66+ return -min, -max
67+end
68+setCombatCallback(combat3_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
69+
70+-- Areas/Combat for 500ms
71+local combat5_Brush = createCombatObject()
72+setCombatParam(combat5_Brush, COMBAT_PARAM_EFFECT, CONST_ME_HOLYDAMAGE)
73+setCombatParam(combat5_Brush, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
74+setCombatArea(combat5_Brush,createCombatArea({{0, 0, 0, 0, 1, 0, 0, 0, 0},
75+{0, 0, 0, 1, 0, 1, 0, 0, 0},
76+{0, 0, 1, 0, 0, 0, 1, 0, 0},
77+{0, 1, 0, 0, 0, 0, 0, 1, 0},
78+{1, 0, 0, 0, 2, 0, 0, 0, 1},
79+{0, 1, 0, 0, 0, 0, 0, 1, 0},
80+{0, 0, 1, 0, 0, 0, 1, 0, 0},
81+{0, 0, 0, 1, 0, 1, 0, 0, 0},
82+{0, 0, 0, 0, 1, 0, 0, 0, 0}}))
83+function getDmg_Brush(cid, level, maglevel)
84+
85+ return -min, -max
86+end
87+setCombatCallback(combat5_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
88+
89+-- Areas/Combat for 600ms
90+local combat6_Brush = createCombatObject()
91+setCombatParam(combat6_Brush, COMBAT_PARAM_EFFECT, CONST_ME_HOLYDAMAGE)
92+setCombatParam(combat6_Brush, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
93+setCombatArea(combat6_Brush,createCombatArea({{0, 0, 0, 1, 0, 0, 0},
94+{0, 0, 1, 0, 1, 0, 0},
95+{0, 1, 0, 0, 0, 1, 0},
96+{1, 0, 0, 2, 0, 0, 1},
97+{0, 1, 0, 0, 0, 1, 0},
98+{0, 0, 1, 0, 1, 0, 0},
99+{0, 0, 0, 1, 0, 0, 0}}))
100+function getDmg_Brush(cid, level, maglevel)
101+
102+ return -min, -max
103+end
104+setCombatCallback(combat6_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
105+
106+-- Areas/Combat for 700ms
107+local combat7_Brush = createCombatObject()
108+setCombatParam(combat7_Brush, COMBAT_PARAM_EFFECT, CONST_ME_HOLYDAMAGE)
109+setCombatParam(combat7_Brush, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
110+setCombatArea(combat7_Brush,createCombatArea({{0, 0, 1, 0, 0},
111+{0, 1, 0, 1, 0},
112+{1, 0, 2, 0, 1},
113+{0, 1, 0, 1, 0},
114+{0, 0, 1, 0, 0}}))
115+function getDmg_Brush(cid, level, maglevel)
116+
117+ return -min, -max
118+end
119+setCombatCallback(combat7_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
120+
121+-- Areas/Combat for 800ms
122+local combat8_Brush = createCombatObject()
123+setCombatParam(combat8_Brush, COMBAT_PARAM_EFFECT, CONST_ME_HOLYDAMAGE)
124+setCombatParam(combat8_Brush, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
125+setCombatArea(combat8_Brush,createCombatArea({{0, 1, 0},
126+{1, 2, 1},
127+{0, 1, 0}}))
128+function getDmg_Brush(cid, level, maglevel)
129+
130+ return -min, -max
131+end
132+setCombatCallback(combat8_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
133+
134+-- =============== CORE FUNCTIONS ===============
135+local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
136+ if (isCreature(cid)) then
137+ doCombat(cid, c, var)
138+ if (dirList ~= nil) then -- Emit distance effects
139+ local i = 2;
140+ while (i < #dirList) do
141+ doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
142+ i = i + 2
143+ end
144+ end
145+ end
146+end
147+function checkSpell50(cid)
148+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
149+ local CHECK_SLOT_01 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_04)
150+ local CHECK_SLOT_02 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_05)
151+ local CHECK_SLOT_03 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_06)
152+ SPELL_ID = 50
153+
154+ if GUN_ID > 0 then
155+ if CHECK_SLOT_01 == SPELL_ID then
156+ cid:sendCancelMessage("@SpellCooldown 01")
157+ return true
158+ elseif CHECK_SLOT_02 == SPELL_ID then
159+ cid:sendCancelMessage("@SpellCooldown 02")
160+ return true
161+ elseif CHECK_SLOT_03 == SPELL_ID then
162+ cid:sendCancelMessage("@SpellCooldown 03")
163+ return true
164+ else
165+ return false
166+ end
167+ else
168+ return false
169+ end
170+end
171+function onCastSpell(cid, var)
172+ if checkSpell50(cid) or cid:getGroup():getAccess() then
173+ local startPos = getCreaturePosition(cid)
174+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
175+ local starGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_03)
176+ local levelGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_07)
177+ min = onDamage(cid, GUN_ID, levelGun, starGun, "SKILL_MIN", SPELL_ID)
178+ max = min
179+ addEvent(RunPart,100,combat1_Brush,cid.uid,var)
180+ RunPart(combat0_Brush,cid,var)
181+ addEvent(RunPart,200,combat2_Brush,cid.uid,var)
182+ addEvent(RunPart,300,combat3_Brush,cid.uid,var)
183+ addEvent(RunPart,500,combat5_Brush,cid.uid,var)
184+ addEvent(RunPart,600,combat6_Brush,cid.uid,var)
185+ addEvent(RunPart,700,combat7_Brush,cid.uid,var)
186+ addEvent(RunPart,800,combat8_Brush,cid.uid,var)
187+ return true
188+ else
189+ cid:getPosition():sendMagicEffect(03)
190+ return false
191+ end
192+end
A data/spells/scripts/rain_chaos.lua +407-0 View file
@@ -0,0 +1,407 @@
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_BIGCLOUDS)
9+setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_NONE)
10+setCombatArea(combat0_Brush,createCombatArea({{3}}))
11+function getDmg_Brush(cid, level, maglevel)
12+
13+ return -min, -max
14+end
15+setCombatCallback(combat0_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
16+
17+-- Areas/Combat for 1000ms
18+local combat10_Brush_2 = createCombatObject()
19+setCombatParam(combat10_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_YELLOWENERGY)
20+setCombatParam(combat10_Brush_2, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
21+setCombatArea(combat10_Brush_2,createCombatArea({{3}}))
22+function getDmg_Brush_2(cid, level, maglevel)
23+
24+ return -min, -max
25+end
26+setCombatCallback(combat10_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
27+
28+-- Areas/Combat for 1100ms
29+local combat11_Brush_2 = createCombatObject()
30+setCombatParam(combat11_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_YELLOWENERGY)
31+setCombatParam(combat11_Brush_2, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
32+setCombatArea(combat11_Brush_2,createCombatArea({{0, 1},
33+{2, 0}}))
34+function getDmg_Brush_2(cid, level, maglevel)
35+
36+ return -min, -max
37+end
38+setCombatCallback(combat11_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
39+
40+-- Areas/Combat for 1200ms
41+local combat12_Brush_2 = createCombatObject()
42+setCombatParam(combat12_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_YELLOWENERGY)
43+setCombatParam(combat12_Brush_2, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
44+setCombatArea(combat12_Brush_2,createCombatArea({{2},
45+{0},
46+{1}}))
47+function getDmg_Brush_2(cid, level, maglevel)
48+
49+ return -min, -max
50+end
51+setCombatCallback(combat12_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
52+
53+-- Areas/Combat for 1300ms
54+local combat13_Brush_2 = createCombatObject()
55+setCombatParam(combat13_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_YELLOWENERGY)
56+setCombatParam(combat13_Brush_2, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
57+setCombatArea(combat13_Brush_2,createCombatArea({{1, 0},
58+{0, 2}}))
59+function getDmg_Brush_2(cid, level, maglevel)
60+
61+ return -min, -max
62+end
63+setCombatCallback(combat13_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
64+
65+-- Areas/Combat for 1400ms
66+local combat14_Brush_2 = createCombatObject()
67+setCombatParam(combat14_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_YELLOWENERGY)
68+setCombatParam(combat14_Brush_2, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
69+setCombatArea(combat14_Brush_2,createCombatArea({{2, 0, 1}}))
70+function getDmg_Brush_2(cid, level, maglevel)
71+
72+ return -min, -max
73+end
74+setCombatCallback(combat14_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
75+
76+-- Areas/Combat for 1500ms
77+local combat15_Brush_2 = createCombatObject()
78+setCombatParam(combat15_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_YELLOWENERGY)
79+setCombatParam(combat15_Brush_2, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
80+setCombatArea(combat15_Brush_2,createCombatArea({{0, 2},
81+{1, 0}}))
82+function getDmg_Brush_2(cid, level, maglevel)
83+
84+ return -min, -max
85+end
86+setCombatCallback(combat15_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
87+
88+-- Areas/Combat for 1600ms
89+local combat16_Brush_2 = createCombatObject()
90+setCombatParam(combat16_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_YELLOWENERGY)
91+setCombatParam(combat16_Brush_2, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
92+setCombatArea(combat16_Brush_2,createCombatArea({{1},
93+{0},
94+{2}}))
95+function getDmg_Brush_2(cid, level, maglevel)
96+
97+ return -min, -max
98+end
99+setCombatCallback(combat16_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
100+
101+-- Areas/Combat for 1700ms
102+local combat17_Brush_2 = createCombatObject()
103+setCombatParam(combat17_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_YELLOWENERGY)
104+setCombatParam(combat17_Brush_2, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
105+setCombatArea(combat17_Brush_2,createCombatArea({{2, 0},
106+{0, 1}}))
107+function getDmg_Brush_2(cid, level, maglevel)
108+
109+ return -min, -max
110+end
111+setCombatCallback(combat17_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
112+
113+-- Areas/Combat for 1800ms
114+local combat18_Brush_2 = createCombatObject()
115+setCombatParam(combat18_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_YELLOWENERGY)
116+setCombatParam(combat18_Brush_2, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
117+setCombatArea(combat18_Brush_2,createCombatArea({{1, 0, 2}}))
118+function getDmg_Brush_2(cid, level, maglevel)
119+
120+ return -min, -max
121+end
122+setCombatCallback(combat18_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
123+
124+-- Areas/Combat for 1900ms
125+local combat19_Brush_2 = createCombatObject()
126+setCombatParam(combat19_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_YELLOWENERGY)
127+setCombatParam(combat19_Brush_2, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
128+setCombatArea(combat19_Brush_2,createCombatArea({{2, 1}}))
129+function getDmg_Brush_2(cid, level, maglevel)
130+
131+ return -min, -max
132+end
133+setCombatCallback(combat19_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
134+
135+-- Areas/Combat for 2000ms
136+local combat20_Brush_2 = createCombatObject()
137+setCombatParam(combat20_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_YELLOWENERGY)
138+setCombatParam(combat20_Brush_2, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
139+setCombatArea(combat20_Brush_2,createCombatArea({{0, 2},
140+{0, 0},
141+{1, 0}}))
142+function getDmg_Brush_2(cid, level, maglevel)
143+
144+ return -min, -max
145+end
146+setCombatCallback(combat20_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
147+
148+-- Areas/Combat for 2100ms
149+local combat21_Brush_2 = createCombatObject()
150+setCombatParam(combat21_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_YELLOWENERGY)
151+setCombatParam(combat21_Brush_2, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
152+setCombatArea(combat21_Brush_2,createCombatArea({{1},
153+{2}}))
154+function getDmg_Brush_2(cid, level, maglevel)
155+
156+ return -min, -max
157+end
158+setCombatCallback(combat21_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
159+
160+-- Areas/Combat for 2200ms
161+local combat22_Brush_2 = createCombatObject()
162+setCombatParam(combat22_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_YELLOWENERGY)
163+setCombatParam(combat22_Brush_2, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
164+setCombatArea(combat22_Brush_2,createCombatArea({{2},
165+{1}}))
166+function getDmg_Brush_2(cid, level, maglevel)
167+
168+ return -min, -max
169+end
170+setCombatCallback(combat22_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
171+
172+-- Areas/Combat for 2300ms
173+local combat23_Brush_2 = createCombatObject()
174+setCombatParam(combat23_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_YELLOWENERGY)
175+setCombatParam(combat23_Brush_2, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
176+setCombatArea(combat23_Brush_2,createCombatArea({{1, 2}}))
177+function getDmg_Brush_2(cid, level, maglevel)
178+
179+ return -min, -max
180+end
181+setCombatCallback(combat23_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
182+
183+-- Areas/Combat for 2400ms
184+local combat24_Brush_2 = createCombatObject()
185+setCombatParam(combat24_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_YELLOWENERGY)
186+setCombatParam(combat24_Brush_2, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
187+setCombatArea(combat24_Brush_2,createCombatArea({{2, 0},
188+{0, 0},
189+{0, 1}}))
190+function getDmg_Brush_2(cid, level, maglevel)
191+
192+ return -min, -max
193+end
194+setCombatCallback(combat24_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
195+
196+-- Areas/Combat for 2500ms
197+local combat25_Brush_2 = createCombatObject()
198+setCombatParam(combat25_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_YELLOWENERGY)
199+setCombatParam(combat25_Brush_2, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
200+setCombatArea(combat25_Brush_2,createCombatArea({{0, 1},
201+{2, 0}}))
202+function getDmg_Brush_2(cid, level, maglevel)
203+
204+ return -min, -max
205+end
206+setCombatCallback(combat25_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
207+
208+-- Areas/Combat for 2600ms
209+local combat26_Brush_2 = createCombatObject()
210+setCombatParam(combat26_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_YELLOWENERGY)
211+setCombatParam(combat26_Brush_2, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
212+setCombatArea(combat26_Brush_2,createCombatArea({{0, 0, 1},
213+{2, 0, 0}}))
214+function getDmg_Brush_2(cid, level, maglevel)
215+
216+ return -min, -max
217+end
218+setCombatCallback(combat26_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
219+
220+-- Areas/Combat for 2700ms
221+local combat27_Brush_2 = createCombatObject()
222+setCombatParam(combat27_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_YELLOWENERGY)
223+setCombatParam(combat27_Brush_2, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
224+setCombatArea(combat27_Brush_2,createCombatArea({{1, 0},
225+{0, 0},
226+{0, 2}}))
227+function getDmg_Brush_2(cid, level, maglevel)
228+
229+ return -min, -max
230+end
231+setCombatCallback(combat27_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
232+
233+-- Areas/Combat for 2800ms
234+local combat28_Brush_2 = createCombatObject()
235+setCombatParam(combat28_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_YELLOWENERGY)
236+setCombatParam(combat28_Brush_2, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
237+setCombatArea(combat28_Brush_2,createCombatArea({{2, 0, 0},
238+{0, 0, 1}}))
239+function getDmg_Brush_2(cid, level, maglevel)
240+
241+ return -min, -max
242+end
243+setCombatCallback(combat28_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
244+
245+-- Areas/Combat for 2900ms
246+local combat29_Brush_2 = createCombatObject()
247+setCombatParam(combat29_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_YELLOWENERGY)
248+setCombatParam(combat29_Brush_2, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
249+setCombatArea(combat29_Brush_2,createCombatArea({{0, 0, 2},
250+{1, 0, 0}}))
251+function getDmg_Brush_2(cid, level, maglevel)
252+
253+ return -min, -max
254+end
255+setCombatCallback(combat29_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
256+
257+-- Areas/Combat for 3000ms
258+local combat30_Brush_2 = createCombatObject()
259+setCombatParam(combat30_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_YELLOWENERGY)
260+setCombatParam(combat30_Brush_2, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
261+setCombatArea(combat30_Brush_2,createCombatArea({{0, 1},
262+{0, 0},
263+{2, 0}}))
264+function getDmg_Brush_2(cid, level, maglevel)
265+
266+ return -min, -max
267+end
268+setCombatCallback(combat30_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
269+
270+-- Areas/Combat for 3100ms
271+local combat31_Brush_2 = createCombatObject()
272+setCombatParam(combat31_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_YELLOWENERGY)
273+setCombatParam(combat31_Brush_2, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
274+setCombatArea(combat31_Brush_2,createCombatArea({{0, 2},
275+{0, 0},
276+{1, 0}}))
277+function getDmg_Brush_2(cid, level, maglevel)
278+
279+ return -min, -max
280+end
281+setCombatCallback(combat31_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
282+
283+-- Areas/Combat for 3200ms
284+local combat32_Brush_2 = createCombatObject()
285+setCombatParam(combat32_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_YELLOWENERGY)
286+setCombatParam(combat32_Brush_2, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
287+setCombatArea(combat32_Brush_2,createCombatArea({{1},
288+{2}}))
289+function getDmg_Brush_2(cid, level, maglevel)
290+
291+ return -min, -max
292+end
293+setCombatCallback(combat32_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
294+
295+-- Areas/Combat for 3300ms
296+local combat33_Brush_2 = createCombatObject()
297+setCombatParam(combat33_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_YELLOWENERGY)
298+setCombatParam(combat33_Brush_2, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
299+setCombatArea(combat33_Brush_2,createCombatArea({{1, 0},
300+{0, 2}}))
301+function getDmg_Brush_2(cid, level, maglevel)
302+
303+ return -min, -max
304+end
305+setCombatCallback(combat33_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
306+
307+-- Areas/Combat for 3400ms
308+local combat34_Brush_2 = createCombatObject()
309+setCombatParam(combat34_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_YELLOWENERGY)
310+setCombatParam(combat34_Brush_2, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
311+setCombatArea(combat34_Brush_2,createCombatArea({{2, 0},
312+{0, 1}}))
313+function getDmg_Brush_2(cid, level, maglevel)
314+
315+ return -min, -max
316+end
317+setCombatCallback(combat34_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
318+
319+-- Areas/Combat for 3500ms
320+local combat35_Brush_2 = createCombatObject()
321+setCombatParam(combat35_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_YELLOWENERGY)
322+setCombatParam(combat35_Brush_2, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
323+setCombatArea(combat35_Brush_2,createCombatArea({{2, 1}}))
324+function getDmg_Brush_2(cid, level, maglevel)
325+
326+ return -min, -max
327+end
328+setCombatCallback(combat35_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
329+
330+-- =============== CORE FUNCTIONS ===============
331+local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
332+ if (isCreature(cid)) then
333+ doCombat(cid, c, var)
334+ if (dirList ~= nil) then -- Emit distance effects
335+ local i = 2;
336+ while (i < #dirList) do
337+ doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
338+ i = i + 2
339+ end
340+ end
341+ end
342+end
343+function checkSpell67(cid)
344+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
345+ local CHECK_SLOT_01 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_04)
346+ local CHECK_SLOT_02 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_05)
347+ local CHECK_SLOT_03 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_06)
348+ SPELL_ID = 67
349+
350+ if GUN_ID > 0 then
351+ if CHECK_SLOT_01 == SPELL_ID then
352+ cid:sendCancelMessage("@SpellCooldown 01")
353+ return true
354+ elseif CHECK_SLOT_02 == SPELL_ID then
355+ cid:sendCancelMessage("@SpellCooldown 02")
356+ return true
357+ elseif CHECK_SLOT_03 == SPELL_ID then
358+ cid:sendCancelMessage("@SpellCooldown 03")
359+ return true
360+ else
361+ return false
362+ end
363+ else
364+ return false
365+ end
366+end
367+function onCastSpell(cid, var)
368+ if checkSpell67(cid) or cid:getGroup():getAccess() then
369+ local startPos = getCreaturePosition(cid)
370+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
371+ local starGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_03)
372+ local levelGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_07)
373+ min = onDamage(cid, GUN_ID, levelGun, starGun, "SKILL_MIN", SPELL_ID)
374+ max = min
375+ RunPart(combat0_Brush,cid,var)
376+ addEvent(RunPart,1000,combat10_Brush_2,cid.uid,var)
377+ addEvent(RunPart,1100,combat11_Brush_2,cid.uid,var)
378+ addEvent(RunPart,1200,combat12_Brush_2,cid.uid,var)
379+ addEvent(RunPart,1300,combat13_Brush_2,cid.uid,var)
380+ addEvent(RunPart,1400,combat14_Brush_2,cid.uid,var)
381+ addEvent(RunPart,1500,combat15_Brush_2,cid.uid,var)
382+ addEvent(RunPart,1600,combat16_Brush_2,cid.uid,var)
383+ addEvent(RunPart,1700,combat17_Brush_2,cid.uid,var)
384+ addEvent(RunPart,1800,combat18_Brush_2,cid.uid,var)
385+ addEvent(RunPart,1900,combat19_Brush_2,cid.uid,var)
386+ addEvent(RunPart,2000,combat20_Brush_2,cid.uid,var)
387+ addEvent(RunPart,2100,combat21_Brush_2,cid.uid,var)
388+ addEvent(RunPart,2200,combat22_Brush_2,cid.uid,var)
389+ addEvent(RunPart,2300,combat23_Brush_2,cid.uid,var)
390+ addEvent(RunPart,2400,combat24_Brush_2,cid.uid,var)
391+ addEvent(RunPart,2500,combat25_Brush_2,cid.uid,var)
392+ addEvent(RunPart,2600,combat26_Brush_2,cid.uid,var)
393+ addEvent(RunPart,2700,combat27_Brush_2,cid.uid,var)
394+ addEvent(RunPart,2800,combat28_Brush_2,cid.uid,var)
395+ addEvent(RunPart,2900,combat29_Brush_2,cid.uid,var)
396+ addEvent(RunPart,3000,combat30_Brush_2,cid.uid,var)
397+ addEvent(RunPart,3100,combat31_Brush_2,cid.uid,var)
398+ addEvent(RunPart,3200,combat32_Brush_2,cid.uid,var)
399+ addEvent(RunPart,3300,combat33_Brush_2,cid.uid,var)
400+ addEvent(RunPart,3400,combat34_Brush_2,cid.uid,var)
401+ addEvent(RunPart,3500,combat35_Brush_2,cid.uid,var)
402+ return true
403+ else
404+ cid:getPosition():sendMagicEffect(03)
405+ return false
406+ end
407+end
A data/spells/scripts/rain_sword.lua +352-0 View file
@@ -0,0 +1,352 @@
1+SPELL_ID = 00
2+local min = 0
3+local max = 0
4+
5+-- =============== COMBAT VARS ===============
6+-- Areas/Combat for 2000ms
7+local combat20_Brush = createCombatObject()
8+setCombatParam(combat20_Brush, COMBAT_PARAM_EFFECT, CONST_ME_DRAWBLOOD)
9+setCombatParam(combat20_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
10+setCombatArea(combat20_Brush,createCombatArea({{0, 0, 1},
11+{2, 0, 0}}))
12+function getDmg_Brush(cid, level, maglevel)
13+
14+ return -min, -max
15+end
16+setCombatCallback(combat20_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
17+local dfcombat20_Brush = {CONST_ANI_WHIRLWINDAXE,2,-1}
18+
19+-- Areas/Combat for 1900ms
20+local combat19_Brush = createCombatObject()
21+setCombatParam(combat19_Brush, COMBAT_PARAM_EFFECT, CONST_ME_DRAWBLOOD)
22+setCombatParam(combat19_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
23+setCombatArea(combat19_Brush,createCombatArea({{2, 0, 0},
24+{0, 0, 1}}))
25+function getDmg_Brush(cid, level, maglevel)
26+
27+ return -min, -max
28+end
29+setCombatCallback(combat19_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
30+local dfcombat19_Brush = {CONST_ANI_WHIRLWINDAXE,2,1}
31+
32+-- Areas/Combat for 1800ms
33+local combat18_Brush = createCombatObject()
34+setCombatParam(combat18_Brush, COMBAT_PARAM_EFFECT, CONST_ME_DRAWBLOOD)
35+setCombatParam(combat18_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
36+setCombatArea(combat18_Brush,createCombatArea({{0, 2},
37+{1, 0}}))
38+function getDmg_Brush(cid, level, maglevel)
39+
40+ return -min, -max
41+end
42+setCombatCallback(combat18_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
43+local dfcombat18_Brush = {CONST_ANI_WHIRLWINDAXE,-1,1}
44+
45+-- Areas/Combat for 1700ms
46+local combat17_Brush = createCombatObject()
47+setCombatParam(combat17_Brush, COMBAT_PARAM_EFFECT, CONST_ME_DRAWBLOOD)
48+setCombatParam(combat17_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
49+setCombatArea(combat17_Brush,createCombatArea({{2, 1}}))
50+function getDmg_Brush(cid, level, maglevel)
51+
52+ return -min, -max
53+end
54+setCombatCallback(combat17_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
55+local dfcombat17_Brush = {CONST_ANI_WHIRLWINDAXE,1,0}
56+
57+-- Areas/Combat for 1600ms
58+local combat16_Brush = createCombatObject()
59+setCombatParam(combat16_Brush, COMBAT_PARAM_EFFECT, CONST_ME_DRAWBLOOD)
60+setCombatParam(combat16_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
61+setCombatArea(combat16_Brush,createCombatArea({{1, 0},
62+{0, 2},
63+{0, 0},
64+{1, 0}}))
65+function getDmg_Brush(cid, level, maglevel)
66+
67+ return -min, -max
68+end
69+setCombatCallback(combat16_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
70+local dfcombat16_Brush = {CONST_ANI_WHIRLWINDAXE,-1,2,-1,-1}
71+
72+-- Areas/Combat for 1500ms
73+local combat15_Brush = createCombatObject()
74+setCombatParam(combat15_Brush, COMBAT_PARAM_EFFECT, CONST_ME_DRAWBLOOD)
75+setCombatParam(combat15_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
76+setCombatArea(combat15_Brush,createCombatArea({{0, 0, 2},
77+{1, 0, 0}}))
78+function getDmg_Brush(cid, level, maglevel)
79+
80+ return -min, -max
81+end
82+setCombatCallback(combat15_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
83+local dfcombat15_Brush = {CONST_ANI_WHIRLWINDAXE,-2,1}
84+
85+-- Areas/Combat for 1400ms
86+local combat14_Brush = createCombatObject()
87+setCombatParam(combat14_Brush, COMBAT_PARAM_EFFECT, CONST_ME_DRAWBLOOD)
88+setCombatParam(combat14_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
89+setCombatArea(combat14_Brush,createCombatArea({{1, 0, 2}}))
90+function getDmg_Brush(cid, level, maglevel)
91+
92+ return -min, -max
93+end
94+setCombatCallback(combat14_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
95+local dfcombat14_Brush = {CONST_ANI_WHIRLWINDAXE,-2,0}
96+
97+-- Areas/Combat for 1300ms
98+local combat13_Brush = createCombatObject()
99+setCombatParam(combat13_Brush, COMBAT_PARAM_EFFECT, CONST_ME_DRAWBLOOD)
100+setCombatParam(combat13_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
101+setCombatArea(combat13_Brush,createCombatArea({{2, 0, 1}}))
102+function getDmg_Brush(cid, level, maglevel)
103+
104+ return -min, -max
105+end
106+setCombatCallback(combat13_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
107+local dfcombat13_Brush = {CONST_ANI_WHIRLWINDAXE,2,0}
108+
109+-- Areas/Combat for 1200ms
110+local combat12_Brush = createCombatObject()
111+setCombatParam(combat12_Brush, COMBAT_PARAM_EFFECT, CONST_ME_DRAWBLOOD)
112+setCombatParam(combat12_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
113+setCombatArea(combat12_Brush,createCombatArea({{2, 0},
114+{0, 1}}))
115+function getDmg_Brush(cid, level, maglevel)
116+
117+ return -min, -max
118+end
119+setCombatCallback(combat12_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
120+local dfcombat12_Brush = {CONST_ANI_WHIRLWINDAXE,1,1}
121+
122+-- Areas/Combat for 1100ms
123+local combat11_Brush = createCombatObject()
124+setCombatParam(combat11_Brush, COMBAT_PARAM_EFFECT, CONST_ME_DRAWBLOOD)
125+setCombatParam(combat11_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
126+setCombatArea(combat11_Brush,createCombatArea({{1},
127+{2}}))
128+function getDmg_Brush(cid, level, maglevel)
129+
130+ return -min, -max
131+end
132+setCombatCallback(combat11_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
133+local dfcombat11_Brush = {CONST_ANI_WHIRLWINDAXE,0,-1}
134+
135+-- Areas/Combat for 1000ms
136+local combat10_Brush = createCombatObject()
137+setCombatParam(combat10_Brush, COMBAT_PARAM_EFFECT, CONST_ME_DRAWBLOOD)
138+setCombatParam(combat10_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
139+setCombatArea(combat10_Brush,createCombatArea({{0, 0, 1},
140+{0, 0, 0},
141+{2, 0, 0}}))
142+function getDmg_Brush(cid, level, maglevel)
143+
144+ return -min, -max
145+end
146+setCombatCallback(combat10_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
147+local dfcombat10_Brush = {CONST_ANI_WHIRLWINDAXE,2,-2}
148+
149+-- Areas/Combat for 900ms
150+local combat9_Brush = createCombatObject()
151+setCombatParam(combat9_Brush, COMBAT_PARAM_EFFECT, CONST_ME_DRAWBLOOD)
152+setCombatParam(combat9_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
153+setCombatArea(combat9_Brush,createCombatArea({{0, 0, 2},
154+{1, 0, 0}}))
155+function getDmg_Brush(cid, level, maglevel)
156+
157+ return -min, -max
158+end
159+setCombatCallback(combat9_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
160+local dfcombat9_Brush = {CONST_ANI_WHIRLWINDAXE,-2,1}
161+
162+-- Areas/Combat for 800ms
163+local combat8_Brush = createCombatObject()
164+setCombatParam(combat8_Brush, COMBAT_PARAM_EFFECT, CONST_ME_DRAWBLOOD)
165+setCombatParam(combat8_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
166+setCombatArea(combat8_Brush,createCombatArea({{1, 0, 0},
167+{0, 0, 2}}))
168+function getDmg_Brush(cid, level, maglevel)
169+
170+ return -min, -max
171+end
172+setCombatCallback(combat8_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
173+local dfcombat8_Brush = {CONST_ANI_WHIRLWINDAXE,-2,-1}
174+
175+-- Areas/Combat for 700ms
176+local combat7_Brush = createCombatObject()
177+setCombatParam(combat7_Brush, COMBAT_PARAM_EFFECT, CONST_ME_DRAWBLOOD)
178+setCombatParam(combat7_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
179+setCombatArea(combat7_Brush,createCombatArea({{1, 2}}))
180+function getDmg_Brush(cid, level, maglevel)
181+
182+ return -min, -max
183+end
184+setCombatCallback(combat7_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
185+local dfcombat7_Brush = {CONST_ANI_WHIRLWINDAXE,-1,0}
186+
187+-- Areas/Combat for 600ms
188+local combat6_Brush = createCombatObject()
189+setCombatParam(combat6_Brush, COMBAT_PARAM_EFFECT, CONST_ME_DRAWBLOOD)
190+setCombatParam(combat6_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
191+setCombatArea(combat6_Brush,createCombatArea({{2, 0},
192+{0, 1}}))
193+function getDmg_Brush(cid, level, maglevel)
194+
195+ return -min, -max
196+end
197+setCombatCallback(combat6_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
198+local dfcombat6_Brush = {CONST_ANI_WHIRLWINDAXE,1,1}
199+
200+-- Areas/Combat for 500ms
201+local combat5_Brush = createCombatObject()
202+setCombatParam(combat5_Brush, COMBAT_PARAM_EFFECT, CONST_ME_DRAWBLOOD)
203+setCombatParam(combat5_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
204+setCombatArea(combat5_Brush,createCombatArea({{2, 0, 1}}))
205+function getDmg_Brush(cid, level, maglevel)
206+
207+ return -min, -max
208+end
209+setCombatCallback(combat5_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
210+local dfcombat5_Brush = {CONST_ANI_WHIRLWINDAXE,2,0}
211+
212+-- Areas/Combat for 400ms
213+local combat4_Brush = createCombatObject()
214+setCombatParam(combat4_Brush, COMBAT_PARAM_EFFECT, CONST_ME_DRAWBLOOD)
215+setCombatParam(combat4_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
216+setCombatArea(combat4_Brush,createCombatArea({{1},
217+{0},
218+{2}}))
219+function getDmg_Brush(cid, level, maglevel)
220+
221+ return -min, -max
222+end
223+setCombatCallback(combat4_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
224+local dfcombat4_Brush = {CONST_ANI_WHIRLWINDAXE,0,-2}
225+
226+-- Areas/Combat for 300ms
227+local combat3_Brush = createCombatObject()
228+setCombatParam(combat3_Brush, COMBAT_PARAM_EFFECT, CONST_ME_DRAWBLOOD)
229+setCombatParam(combat3_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
230+setCombatArea(combat3_Brush,createCombatArea({{0, 1},
231+{2, 0}}))
232+function getDmg_Brush(cid, level, maglevel)
233+
234+ return -min, -max
235+end
236+setCombatCallback(combat3_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
237+local dfcombat3_Brush = {CONST_ANI_WHIRLWINDAXE,1,-1}
238+
239+-- Areas/Combat for 200ms
240+local combat2_Brush = createCombatObject()
241+setCombatParam(combat2_Brush, COMBAT_PARAM_EFFECT, CONST_ME_DRAWBLOOD)
242+setCombatParam(combat2_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
243+setCombatArea(combat2_Brush,createCombatArea({{0, 2},
244+{0, 0},
245+{1, 0}}))
246+function getDmg_Brush(cid, level, maglevel)
247+
248+ return -min, -max
249+end
250+setCombatCallback(combat2_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
251+local dfcombat2_Brush = {CONST_ANI_WHIRLWINDAXE,-1,2}
252+
253+-- Areas/Combat for 100ms
254+local combat1_Brush = createCombatObject()
255+setCombatParam(combat1_Brush, COMBAT_PARAM_EFFECT, CONST_ME_DRAWBLOOD)
256+setCombatParam(combat1_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
257+setCombatArea(combat1_Brush,createCombatArea({{2},
258+{1}}))
259+function getDmg_Brush(cid, level, maglevel)
260+
261+ return -min, -max
262+end
263+setCombatCallback(combat1_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
264+local dfcombat1_Brush = {CONST_ANI_WHIRLWINDAXE,0,1}
265+
266+-- Areas/Combat for 0ms
267+local combat0_Brush = createCombatObject()
268+setCombatParam(combat0_Brush, COMBAT_PARAM_EFFECT, CONST_ME_DRAWBLOOD)
269+setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
270+setCombatArea(combat0_Brush,createCombatArea({{2, 0, 0},
271+{0, 0, 0},
272+{0, 0, 1}}))
273+function getDmg_Brush(cid, level, maglevel)
274+
275+ return -min, -max
276+end
277+setCombatCallback(combat0_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
278+local dfcombat0_Brush = {CONST_ANI_WHIRLWINDAXE,2,2}
279+
280+-- =============== CORE FUNCTIONS ===============
281+local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
282+ if (isCreature(cid)) then
283+ doCombat(cid, c, var)
284+ if (dirList ~= nil) then -- Emit distance effects
285+ local i = 2;
286+ while (i < #dirList) do
287+ doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
288+ i = i + 2
289+ end
290+ end
291+ end
292+end
293+function checkSpell31(cid)
294+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
295+ local CHECK_SLOT_01 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_04)
296+ local CHECK_SLOT_02 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_05)
297+ local CHECK_SLOT_03 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_06)
298+ SPELL_ID = 31
299+
300+ if GUN_ID > 0 then
301+ if CHECK_SLOT_01 == SPELL_ID then
302+ cid:sendCancelMessage("@SpellCooldown 01")
303+ return true
304+ elseif CHECK_SLOT_02 == SPELL_ID then
305+ cid:sendCancelMessage("@SpellCooldown 02")
306+ return true
307+ elseif CHECK_SLOT_03 == SPELL_ID then
308+ cid:sendCancelMessage("@SpellCooldown 03")
309+ return true
310+ else
311+ return false
312+ end
313+ else
314+ return false
315+ end
316+ return true
317+end
318+function onCastSpell(cid, var)
319+ if checkSpell31(cid) or cid:getGroup():getAccess() then
320+ local startPos = getCreaturePosition(cid)
321+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
322+ local starGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_03)
323+ local levelGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_07)
324+ min = onDamage(cid, GUN_ID, levelGun, starGun, "SKILL_MIN", SPELL_ID)
325+ max = min
326+ addEvent(RunPart,2000,combat20_Brush,cid.uid,var,dfcombat20_Brush,startPos)
327+ addEvent(RunPart,1900,combat19_Brush,cid.uid,var,dfcombat19_Brush,startPos)
328+ addEvent(RunPart,1800,combat18_Brush,cid.uid,var,dfcombat18_Brush,startPos)
329+ addEvent(RunPart,1700,combat17_Brush,cid.uid,var,dfcombat17_Brush,startPos)
330+ addEvent(RunPart,1600,combat16_Brush,cid.uid,var,dfcombat16_Brush,startPos)
331+ addEvent(RunPart,1500,combat15_Brush,cid.uid,var,dfcombat15_Brush,startPos)
332+ addEvent(RunPart,1400,combat14_Brush,cid.uid,var,dfcombat14_Brush,startPos)
333+ addEvent(RunPart,1300,combat13_Brush,cid.uid,var,dfcombat13_Brush,startPos)
334+ addEvent(RunPart,1200,combat12_Brush,cid.uid,var,dfcombat12_Brush,startPos)
335+ addEvent(RunPart,1100,combat11_Brush,cid.uid,var,dfcombat11_Brush,startPos)
336+ addEvent(RunPart,1000,combat10_Brush,cid.uid,var,dfcombat10_Brush,startPos)
337+ addEvent(RunPart,900,combat9_Brush,cid.uid,var,dfcombat9_Brush,startPos)
338+ addEvent(RunPart,800,combat8_Brush,cid.uid,var,dfcombat8_Brush,startPos)
339+ addEvent(RunPart,700,combat7_Brush,cid.uid,var,dfcombat7_Brush,startPos)
340+ addEvent(RunPart,600,combat6_Brush,cid.uid,var,dfcombat6_Brush,startPos)
341+ addEvent(RunPart,500,combat5_Brush,cid.uid,var,dfcombat5_Brush,startPos)
342+ addEvent(RunPart,400,combat4_Brush,cid.uid,var,dfcombat4_Brush,startPos)
343+ addEvent(RunPart,300,combat3_Brush,cid.uid,var,dfcombat3_Brush,startPos)
344+ addEvent(RunPart,200,combat2_Brush,cid.uid,var,dfcombat2_Brush,startPos)
345+ addEvent(RunPart,100,combat1_Brush,cid.uid,var,dfcombat1_Brush,startPos)
346+ RunPart(combat0_Brush,cid,var,dfcombat0_Brush,startPos)
347+ return true
348+ else
349+ cid:getPosition():sendMagicEffect(03)
350+ return false
351+ end
352+end
A data/spells/scripts/runic_blast.lua +138-0 View file
@@ -0,0 +1,138 @@
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_HOLYDAMAGE)
9+setCombatParam(combat1_Brush, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
10+setCombatArea(combat1_Brush,createCombatArea({{2, 0, 0},
11+{0, 1, 1},
12+{0, 1, 0}}))
13+function getDmg_Brush(cid, level, maglevel)
14+
15+ return -min, -max
16+end
17+setCombatCallback(combat1_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
18+
19+-- Areas/Combat for 0ms
20+local combat0_Brush = createCombatObject()
21+setCombatParam(combat0_Brush, COMBAT_PARAM_EFFECT, CONST_ME_HOLYDAMAGE)
22+setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
23+setCombatArea(combat0_Brush,createCombatArea({{2},
24+{1},
25+{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+
32+-- Areas/Combat for 200ms
33+local combat2_Brush = createCombatObject()
34+setCombatParam(combat2_Brush, COMBAT_PARAM_EFFECT, CONST_ME_HOLYDAMAGE)
35+setCombatParam(combat2_Brush, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
36+setCombatArea(combat2_Brush,createCombatArea({{0, 1, 0},
37+{2, 1, 1}}))
38+function getDmg_Brush(cid, level, maglevel)
39+
40+ return -min, -max
41+end
42+setCombatCallback(combat2_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
43+
44+-- Areas/Combat for 300ms
45+local combat3_Brush = createCombatObject()
46+setCombatParam(combat3_Brush, COMBAT_PARAM_EFFECT, CONST_ME_HOLYDAMAGE)
47+setCombatParam(combat3_Brush, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
48+setCombatArea(combat3_Brush,createCombatArea({{0, 1},
49+{1, 1},
50+{0, 2}}))
51+function getDmg_Brush(cid, level, maglevel)
52+
53+ return -min, -max
54+end
55+setCombatCallback(combat3_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
56+
57+-- Areas/Combat for 400ms
58+local combat4_Brush = createCombatObject()
59+setCombatParam(combat4_Brush, COMBAT_PARAM_EFFECT, CONST_ME_HOLYDAMAGE)
60+setCombatParam(combat4_Brush, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
61+setCombatArea(combat4_Brush,createCombatArea({{1, 1, 2},
62+{0, 1, 0}}))
63+function getDmg_Brush(cid, level, maglevel)
64+
65+ return -min, -max
66+end
67+setCombatCallback(combat4_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
68+
69+-- Areas/Combat for 500ms
70+local combat5_Brush = createCombatObject()
71+setCombatParam(combat5_Brush, COMBAT_PARAM_EFFECT, CONST_ME_HOLYDAMAGE)
72+setCombatParam(combat5_Brush, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
73+setCombatArea(combat5_Brush,createCombatArea({{2},
74+{1},
75+{1}}))
76+function getDmg_Brush(cid, level, maglevel)
77+
78+ return -min, -max
79+end
80+setCombatCallback(combat5_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
81+
82+-- =============== CORE FUNCTIONS ===============
83+local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
84+ if (isCreature(cid)) then
85+ doCombat(cid, c, var)
86+ if (dirList ~= nil) then -- Emit distance effects
87+ local i = 2;
88+ while (i < #dirList) do
89+ doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
90+ i = i + 2
91+ end
92+ end
93+ end
94+end
95+function checkSpell41(cid)
96+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
97+ local CHECK_SLOT_01 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_04)
98+ local CHECK_SLOT_02 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_05)
99+ local CHECK_SLOT_03 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_06)
100+ SPELL_ID = 41
101+
102+ if GUN_ID > 0 then
103+ if CHECK_SLOT_01 == SPELL_ID then
104+ cid:sendCancelMessage("@SpellCooldown 01")
105+ return true
106+ elseif CHECK_SLOT_02 == SPELL_ID then
107+ cid:sendCancelMessage("@SpellCooldown 02")
108+ return true
109+ elseif CHECK_SLOT_03 == SPELL_ID then
110+ cid:sendCancelMessage("@SpellCooldown 03")
111+ return true
112+ else
113+ return false
114+ end
115+ else
116+ return false
117+ end
118+end
119+function onCastSpell(cid, var)
120+ if checkSpell41(cid) or cid:getGroup():getAccess() then
121+ local startPos = getCreaturePosition(cid)
122+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
123+ local starGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_03)
124+ local levelGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_07)
125+ min = onDamage(cid, GUN_ID, levelGun, starGun, "SKILL_MIN", SPELL_ID)
126+ max = min
127+ addEvent(RunPart,100,combat1_Brush,cid.uid,var)
128+ RunPart(combat0_Brush,cid,var)
129+ addEvent(RunPart,200,combat2_Brush,cid.uid,var)
130+ addEvent(RunPart,300,combat3_Brush,cid.uid,var)
131+ addEvent(RunPart,400,combat4_Brush,cid.uid,var)
132+ addEvent(RunPart,500,combat5_Brush,cid.uid,var)
133+ return true
134+ else
135+ cid:getPosition():sendMagicEffect(03)
136+ return false
137+ end
138+end
A data/spells/scripts/seal_of_chaotic_disruption.lua +277-0 View file
@@ -0,0 +1,277 @@
1+SPELL_ID = 00
2+local min = 0
3+local max = 0
4+
5+-- =============== COMBAT VARS ===============
6+-- Areas/Combat for 0ms
7+local combat0_Aspiral_Gelida = createCombatObject()
8+setCombatParam(combat0_Aspiral_Gelida, COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK)
9+setCombatParam(combat0_Aspiral_Gelida, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
10+setCombatArea(combat0_Aspiral_Gelida,createCombatArea({{1},
11+{2}}))
12+function getDmg_Aspiral_Gelida(cid, level, maglevel)
13+
14+ return -min, -max
15+end
16+setCombatCallback(combat0_Aspiral_Gelida, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Aspiral_Gelida")
17+
18+-- Areas/Combat for 100ms
19+local combat1_Aspiral_Gelida = createCombatObject()
20+setCombatParam(combat1_Aspiral_Gelida, COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK)
21+setCombatParam(combat1_Aspiral_Gelida, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
22+setCombatArea(combat1_Aspiral_Gelida,createCombatArea({{1, 0},
23+{0, 2}}))
24+function getDmg_Aspiral_Gelida(cid, level, maglevel)
25+
26+ return -min, -max
27+end
28+setCombatCallback(combat1_Aspiral_Gelida, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Aspiral_Gelida")
29+
30+-- Areas/Combat for 200ms
31+local combat2_Aspiral_Gelida = createCombatObject()
32+setCombatParam(combat2_Aspiral_Gelida, COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK)
33+setCombatParam(combat2_Aspiral_Gelida, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
34+setCombatArea(combat2_Aspiral_Gelida,createCombatArea({{1, 2}}))
35+function getDmg_Aspiral_Gelida(cid, level, maglevel)
36+
37+ return -min, -max
38+end
39+setCombatCallback(combat2_Aspiral_Gelida, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Aspiral_Gelida")
40+
41+-- Areas/Combat for 300ms
42+local combat3_Aspiral_Gelida = createCombatObject()
43+setCombatParam(combat3_Aspiral_Gelida, COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK)
44+setCombatParam(combat3_Aspiral_Gelida, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
45+setCombatArea(combat3_Aspiral_Gelida,createCombatArea({{0, 2},
46+{1, 0}}))
47+function getDmg_Aspiral_Gelida(cid, level, maglevel)
48+
49+ return -min, -max
50+end
51+setCombatCallback(combat3_Aspiral_Gelida, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Aspiral_Gelida")
52+
53+-- Areas/Combat for 400ms
54+local combat4_Aspiral_Gelida = createCombatObject()
55+setCombatParam(combat4_Aspiral_Gelida, COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK)
56+setCombatParam(combat4_Aspiral_Gelida, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
57+setCombatArea(combat4_Aspiral_Gelida,createCombatArea({{2},
58+{1}}))
59+function getDmg_Aspiral_Gelida(cid, level, maglevel)
60+
61+ return -min, -max
62+end
63+setCombatCallback(combat4_Aspiral_Gelida, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Aspiral_Gelida")
64+
65+-- Areas/Combat for 500ms
66+local combat5_Aspiral_Gelida = createCombatObject()
67+setCombatParam(combat5_Aspiral_Gelida, COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK)
68+setCombatParam(combat5_Aspiral_Gelida, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
69+setCombatArea(combat5_Aspiral_Gelida,createCombatArea({{2, 0},
70+{0, 1}}))
71+function getDmg_Aspiral_Gelida(cid, level, maglevel)
72+
73+ return -min, -max
74+end
75+setCombatCallback(combat5_Aspiral_Gelida, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Aspiral_Gelida")
76+
77+-- Areas/Combat for 600ms
78+local combat6_Aspiral_Gelida = createCombatObject()
79+setCombatParam(combat6_Aspiral_Gelida, COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK)
80+setCombatParam(combat6_Aspiral_Gelida, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
81+setCombatArea(combat6_Aspiral_Gelida,createCombatArea({{2, 1}}))
82+function getDmg_Aspiral_Gelida(cid, level, maglevel)
83+
84+ return -min, -max
85+end
86+setCombatCallback(combat6_Aspiral_Gelida, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Aspiral_Gelida")
87+
88+-- Areas/Combat for 700ms
89+local combat7_Aspiral_Gelida = createCombatObject()
90+setCombatParam(combat7_Aspiral_Gelida, COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK)
91+setCombatParam(combat7_Aspiral_Gelida, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
92+setCombatArea(combat7_Aspiral_Gelida,createCombatArea({{0, 1},
93+{2, 0}}))
94+function getDmg_Aspiral_Gelida(cid, level, maglevel)
95+
96+ return -min, -max
97+end
98+setCombatCallback(combat7_Aspiral_Gelida, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Aspiral_Gelida")
99+
100+-- Areas/Combat for 800ms
101+local combat8_Aspiral_Gelida = createCombatObject()
102+setCombatParam(combat8_Aspiral_Gelida, COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK)
103+setCombatParam(combat8_Aspiral_Gelida, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
104+setCombatArea(combat8_Aspiral_Gelida,createCombatArea({{1},
105+{2}}))
106+function getDmg_Aspiral_Gelida(cid, level, maglevel)
107+
108+ return -min, -max
109+end
110+setCombatCallback(combat8_Aspiral_Gelida, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Aspiral_Gelida")
111+
112+-- Areas/Combat for 900ms
113+local combat9_Aspiral_Gelida = createCombatObject()
114+setCombatParam(combat9_Aspiral_Gelida, COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK)
115+setCombatParam(combat9_Aspiral_Gelida, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
116+setCombatArea(combat9_Aspiral_Gelida,createCombatArea({{1, 0},
117+{0, 2}}))
118+function getDmg_Aspiral_Gelida(cid, level, maglevel)
119+
120+ return -min, -max
121+end
122+setCombatCallback(combat9_Aspiral_Gelida, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Aspiral_Gelida")
123+
124+-- Areas/Combat for 1000ms
125+local combat10_Aspiral_Gelida = createCombatObject()
126+setCombatParam(combat10_Aspiral_Gelida, COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK)
127+setCombatParam(combat10_Aspiral_Gelida, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
128+setCombatArea(combat10_Aspiral_Gelida,createCombatArea({{1, 2}}))
129+function getDmg_Aspiral_Gelida(cid, level, maglevel)
130+
131+ return -min, -max
132+end
133+setCombatCallback(combat10_Aspiral_Gelida, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Aspiral_Gelida")
134+
135+-- Areas/Combat for 1100ms
136+local combat11_Aspiral_Gelida = createCombatObject()
137+setCombatParam(combat11_Aspiral_Gelida, COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK)
138+setCombatParam(combat11_Aspiral_Gelida, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
139+setCombatArea(combat11_Aspiral_Gelida,createCombatArea({{0, 2},
140+{1, 0}}))
141+function getDmg_Aspiral_Gelida(cid, level, maglevel)
142+
143+ return -min, -max
144+end
145+setCombatCallback(combat11_Aspiral_Gelida, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Aspiral_Gelida")
146+
147+-- Areas/Combat for 1200ms
148+local combat12_Aspiral_Gelida = createCombatObject()
149+setCombatParam(combat12_Aspiral_Gelida, COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK)
150+setCombatParam(combat12_Aspiral_Gelida, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
151+setCombatArea(combat12_Aspiral_Gelida,createCombatArea({{2},
152+{1}}))
153+function getDmg_Aspiral_Gelida(cid, level, maglevel)
154+
155+ return -min, -max
156+end
157+setCombatCallback(combat12_Aspiral_Gelida, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Aspiral_Gelida")
158+
159+-- Areas/Combat for 1300ms
160+local combat13_Aspiral_Gelida = createCombatObject()
161+setCombatParam(combat13_Aspiral_Gelida, COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK)
162+setCombatParam(combat13_Aspiral_Gelida, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
163+setCombatArea(combat13_Aspiral_Gelida,createCombatArea({{2, 0},
164+{0, 1}}))
165+function getDmg_Aspiral_Gelida(cid, level, maglevel)
166+
167+ return -min, -max
168+end
169+setCombatCallback(combat13_Aspiral_Gelida, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Aspiral_Gelida")
170+
171+-- Areas/Combat for 1400ms
172+local combat14_Aspiral_Gelida = createCombatObject()
173+setCombatParam(combat14_Aspiral_Gelida, COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK)
174+setCombatParam(combat14_Aspiral_Gelida, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
175+setCombatArea(combat14_Aspiral_Gelida,createCombatArea({{2, 1}}))
176+function getDmg_Aspiral_Gelida(cid, level, maglevel)
177+
178+ return -min, -max
179+end
180+setCombatCallback(combat14_Aspiral_Gelida, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Aspiral_Gelida")
181+
182+-- Areas/Combat for 1500ms
183+local combat15_Aspiral_Gelida = createCombatObject()
184+setCombatParam(combat15_Aspiral_Gelida, COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK)
185+setCombatParam(combat15_Aspiral_Gelida, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
186+setCombatArea(combat15_Aspiral_Gelida,createCombatArea({{0, 1},
187+{2, 0}}))
188+function getDmg_Aspiral_Gelida(cid, level, maglevel)
189+
190+ return -min, -max
191+end
192+setCombatCallback(combat15_Aspiral_Gelida, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Aspiral_Gelida")
193+
194+-- Areas/Combat for 1600ms
195+local combat16_Aspiral_Gelida = createCombatObject()
196+setCombatParam(combat16_Aspiral_Gelida, COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK)
197+setCombatParam(combat16_Aspiral_Gelida, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
198+setCombatArea(combat16_Aspiral_Gelida,createCombatArea({{1},
199+{2}}))
200+function getDmg_Aspiral_Gelida(cid, level, maglevel)
201+
202+ return -min, -max
203+end
204+setCombatCallback(combat16_Aspiral_Gelida, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Aspiral_Gelida")
205+
206+-- =============== CORE FUNCTIONS ===============
207+local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
208+ if (isCreature(cid)) then
209+ doCombat(cid, c, var)
210+ if (dirList ~= nil) then -- Emit distance effects
211+ local i = 2;
212+ while (i < #dirList) do
213+ doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
214+ i = i + 2
215+ end
216+ end
217+ end
218+end
219+
220+function checkSpell1(cid)
221+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
222+ local CHECK_SLOT_01 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_04)
223+ local CHECK_SLOT_02 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_05)
224+ local CHECK_SLOT_03 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_06)
225+ SPELL_ID = 01
226+
227+ if GUN_ID > 0 then
228+ if CHECK_SLOT_01 == SPELL_ID then
229+ cid:sendCancelMessage("@SpellCooldown 01")
230+ return true
231+ elseif CHECK_SLOT_02 == SPELL_ID then
232+ cid:sendCancelMessage("@SpellCooldown 02")
233+ return true
234+ elseif CHECK_SLOT_03 == SPELL_ID then
235+ cid:sendCancelMessage("@SpellCooldown 03")
236+ return true
237+ else
238+ return false
239+ end
240+ else
241+ return false
242+ end
243+ return true
244+end
245+
246+function onCastSpell(cid, var)
247+ if checkSpell1(cid) or cid:getGroup():getAccess() then
248+ local startPos = getCreaturePosition(cid)
249+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
250+ local starGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_03)
251+ local levelGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_07)
252+ min = onDamage(cid, GUN_ID, levelGun, starGun, "SKILL_MIN", SPELL_ID)
253+ max = min
254+ RunPart(combat0_Aspiral_Gelida,cid,var)
255+ addEvent(RunPart,100,combat1_Aspiral_Gelida,cid.uid,var)
256+ addEvent(RunPart,200,combat2_Aspiral_Gelida,cid.uid,var)
257+ addEvent(RunPart,300,combat3_Aspiral_Gelida,cid.uid,var)
258+ addEvent(RunPart,400,combat4_Aspiral_Gelida,cid.uid,var)
259+ addEvent(RunPart,500,combat5_Aspiral_Gelida,cid.uid,var)
260+ addEvent(RunPart,600,combat6_Aspiral_Gelida,cid.uid,var)
261+ addEvent(RunPart,700,combat7_Aspiral_Gelida,cid.uid,var)
262+ addEvent(RunPart,800,combat8_Aspiral_Gelida,cid.uid,var)
263+ addEvent(RunPart,900,combat9_Aspiral_Gelida,cid.uid,var)
264+ addEvent(RunPart,1000,combat10_Aspiral_Gelida,cid.uid,var)
265+ addEvent(RunPart,1100,combat11_Aspiral_Gelida,cid.uid,var)
266+ addEvent(RunPart,1200,combat12_Aspiral_Gelida,cid.uid,var)
267+ addEvent(RunPart,1300,combat13_Aspiral_Gelida,cid.uid,var)
268+ addEvent(RunPart,1400,combat14_Aspiral_Gelida,cid.uid,var)
269+ addEvent(RunPart,1500,combat15_Aspiral_Gelida,cid.uid,var)
270+ addEvent(RunPart,1600,combat16_Aspiral_Gelida,cid.uid,var)
271+
272+ return true
273+ else
274+ cid:getPosition():sendMagicEffect(03)
275+ return false
276+ end
277+end
A data/spells/scripts/slow_fire.lua +132-0 View file
@@ -0,0 +1,132 @@
1+SPELL_ID = 00
2+local min = 0
3+local max = 0
4+
5+-- =============== COMBAT VARS ===============
6+-- Areas/Combat for 800ms
7+local combat8_Brush = createCombatObject()
8+setCombatParam(combat8_Brush, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
9+setCombatParam(combat8_Brush, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
10+setCombatArea(combat8_Brush,createCombatArea({{1, 2}}))
11+function getDmg_Brush(cid, level, maglevel)
12+
13+ return -min, -max
14+end
15+setCombatCallback(combat8_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
16+
17+-- Areas/Combat for 700ms
18+local combat7_Brush = createCombatObject()
19+setCombatParam(combat7_Brush, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
20+setCombatParam(combat7_Brush, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
21+setCombatArea(combat7_Brush,createCombatArea({{3}}))
22+function getDmg_Brush(cid, level, maglevel)
23+
24+ return -min, -max
25+end
26+setCombatCallback(combat7_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
27+
28+-- Areas/Combat for 600ms
29+local combat6_Brush = createCombatObject()
30+setCombatParam(combat6_Brush, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
31+setCombatParam(combat6_Brush, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
32+setCombatArea(combat6_Brush,createCombatArea({{2, 1}}))
33+function getDmg_Brush(cid, level, maglevel)
34+
35+ return -min, -max
36+end
37+setCombatCallback(combat6_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
38+
39+-- Areas/Combat for 200ms
40+local combat2_Brush = createCombatObject()
41+setCombatParam(combat2_Brush, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
42+setCombatParam(combat2_Brush, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
43+setCombatArea(combat2_Brush,createCombatArea({{1},
44+{2}}))
45+function getDmg_Brush(cid, level, maglevel)
46+
47+ return -min, -max
48+end
49+setCombatCallback(combat2_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
50+
51+-- Areas/Combat for 100ms
52+local combat1_Brush = createCombatObject()
53+setCombatParam(combat1_Brush, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
54+setCombatParam(combat1_Brush, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
55+setCombatArea(combat1_Brush,createCombatArea({{3}}))
56+function getDmg_Brush(cid, level, maglevel)
57+
58+ return -min, -max
59+end
60+setCombatCallback(combat1_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
61+
62+-- Areas/Combat for 0ms
63+local combat0_Brush = createCombatObject()
64+setCombatParam(combat0_Brush, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
65+setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
66+setCombatArea(combat0_Brush,createCombatArea({{2},
67+{1}}))
68+function getDmg_Brush(cid, level, maglevel)
69+
70+ return -min, -max
71+end
72+setCombatCallback(combat0_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
73+
74+-- =============== CORE FUNCTIONS ===============
75+local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
76+ if (isCreature(cid)) then
77+ doCombat(cid, c, var)
78+ if (dirList ~= nil) then -- Emit distance effects
79+ local i = 2;
80+ while (i < #dirList) do
81+ doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
82+ i = i + 2
83+ end
84+ end
85+ end
86+end
87+
88+function checkSpell19(cid)
89+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
90+ local CHECK_SLOT_01 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_04)
91+ local CHECK_SLOT_02 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_05)
92+ local CHECK_SLOT_03 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_06)
93+ SPELL_ID = 19
94+
95+ if GUN_ID > 0 then
96+ if CHECK_SLOT_01 == SPELL_ID then
97+ cid:sendCancelMessage("@SpellCooldown 01")
98+ return true
99+ elseif CHECK_SLOT_02 == SPELL_ID then
100+ cid:sendCancelMessage("@SpellCooldown 02")
101+ return true
102+ elseif CHECK_SLOT_03 == SPELL_ID then
103+ cid:sendCancelMessage("@SpellCooldown 03")
104+ return true
105+ else
106+ return false
107+ end
108+ else
109+ return false
110+ end
111+ return true
112+end
113+function onCastSpell(cid, var)
114+ if checkSpell19(cid) or cid:getGroup():getAccess() then
115+ local startPos = getCreaturePosition(cid)
116+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
117+ local starGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_03)
118+ local levelGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_07)
119+ min = onDamage(cid, GUN_ID, levelGun, starGun, "SKILL_MIN", SPELL_ID)
120+ max = min
121+ addEvent(RunPart,800,combat8_Brush,cid.uid,var)
122+ addEvent(RunPart,700,combat7_Brush,cid.uid,var)
123+ addEvent(RunPart,600,combat6_Brush,cid.uid,var)
124+ addEvent(RunPart,200,combat2_Brush,cid.uid,var)
125+ addEvent(RunPart,100,combat1_Brush,cid.uid,var)
126+ RunPart(combat0_Brush,cid,var)
127+ return true
128+ else
129+ cid:getPosition():sendMagicEffect(03)
130+ return false
131+ end
132+end
A data/spells/scripts/small_storm.lua +81-0 View file
@@ -0,0 +1,81 @@
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_SMALLCLOUDS)
9+setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
10+setCombatParam(combat0_Brush, COMBAT_PARAM_BLOCKSHIELD, true)
11+setCombatArea(combat0_Brush,createCombatArea({{0, 1, 0},
12+{1, 3, 1},
13+{0, 1, 0}}))
14+
15+
16+-- Areas/Combat for 300ms
17+local combat3_Brush_2 = createCombatObject()
18+setCombatParam(combat3_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_PURPLEENERGY)
19+setCombatParam(combat3_Brush_2, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
20+setCombatArea(combat3_Brush_2,createCombatArea({{0, 1, 0},
21+{1, 3, 1},
22+{0, 1, 0}}))
23+function getDmg_Brush_2(cid, level, maglevel)
24+
25+ return -min, -max
26+end
27+setCombatCallback(combat3_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
28+
29+-- =============== CORE FUNCTIONS ===============
30+local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
31+ if (isCreature(cid)) then
32+ doCombat(cid, c, var)
33+ if (dirList ~= nil) then -- Emit distance effects
34+ local i = 2;
35+ while (i < #dirList) do
36+ doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
37+ i = i + 2
38+ end
39+ end
40+ end
41+end
42+function checkSpell65(cid)
43+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
44+ local CHECK_SLOT_01 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_04)
45+ local CHECK_SLOT_02 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_05)
46+ local CHECK_SLOT_03 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_06)
47+ SPELL_ID = 65
48+
49+ if GUN_ID > 0 then
50+ if CHECK_SLOT_01 == SPELL_ID then
51+ cid:sendCancelMessage("@SpellCooldown 01")
52+ return true
53+ elseif CHECK_SLOT_02 == SPELL_ID then
54+ cid:sendCancelMessage("@SpellCooldown 02")
55+ return true
56+ elseif CHECK_SLOT_03 == SPELL_ID then
57+ cid:sendCancelMessage("@SpellCooldown 03")
58+ return true
59+ else
60+ return false
61+ end
62+ else
63+ return false
64+ end
65+end
66+function onCastSpell(cid, var)
67+ if checkSpell65(cid) or cid:getGroup():getAccess() then
68+ local startPos = getCreaturePosition(cid)
69+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
70+ local starGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_03)
71+ local levelGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_07)
72+ min = onDamage(cid, GUN_ID, levelGun, starGun, "SKILL_MIN", SPELL_ID)
73+ max = min
74+ RunPart(combat0_Brush,cid,var)
75+ addEvent(RunPart,300,combat3_Brush_2,cid.uid,var)
76+ return true
77+ else
78+ cid:getPosition():sendMagicEffect(03)
79+ return false
80+ end
81+end
A data/spells/scripts/solitude_of_chaos.lua +326-0 View file
@@ -0,0 +1,326 @@
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_2 = createCombatObject()
8+setCombatParam(combat0_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_DRAWBLOOD)
9+setCombatParam(combat0_Brush_2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
10+setCombatArea(combat0_Brush_2,createCombatArea({{2, 0, 0, 1}}))
11+function getDmg_Brush_2(cid, level, maglevel)
12+
13+ return -min, -max
14+end
15+setCombatCallback(combat0_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
16+local dfcombat0_Brush_2 = {CONST_ANI_WHIRLWINDAXE,3,0}
17+
18+-- Areas/Combat for 300ms
19+local combat3_Brush = createCombatObject()
20+setCombatParam(combat3_Brush, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
21+setCombatParam(combat3_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
22+setCombatArea(combat3_Brush,createCombatArea({{0, 0, 0, 1},
23+{0, 0, 1, 1},
24+{2, 1, 1, 0},
25+{0, 0, 1, 1},
26+{0, 0, 0, 1}}))
27+function getDmg_Brush(cid, level, maglevel)
28+
29+ return -min, -max
30+end
31+setCombatCallback(combat3_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")local combat3_Brush_2 = createCombatObject()
32+setCombatParam(combat3_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_DRAWBLOOD)
33+setCombatParam(combat3_Brush_2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
34+setCombatArea(combat3_Brush_2,createCombatArea({{2},
35+{0},
36+{0},
37+{1}}))
38+function getDmg_Brush_2(cid, level, maglevel)
39+
40+ return -min, -max
41+end
42+setCombatCallback(combat3_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
43+local dfcombat3_Brush_2 = {CONST_ANI_WHIRLWINDAXE,0,3}
44+
45+-- Areas/Combat for 400ms
46+local combat4_Brush_3 = createCombatObject()
47+setCombatParam(combat4_Brush_3, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONAREA)
48+setCombatParam(combat4_Brush_3, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
49+setCombatArea(combat4_Brush_3,createCombatArea({{2, 0},
50+{0, 1}}))
51+function getDmg_Brush_3(cid, level, maglevel)
52+
53+ return -min, -max
54+end
55+setCombatCallback(combat4_Brush_3, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_3")
56+
57+-- Areas/Combat for 500ms
58+local combat5_Brush_3 = createCombatObject()
59+setCombatParam(combat5_Brush_3, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONAREA)
60+setCombatParam(combat5_Brush_3, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
61+setCombatArea(combat5_Brush_3,createCombatArea({{2, 0, 0},
62+{0, 0, 0},
63+{0, 0, 1}}))
64+function getDmg_Brush_3(cid, level, maglevel)
65+
66+ return -min, -max
67+end
68+setCombatCallback(combat5_Brush_3, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_3")
69+
70+-- Areas/Combat for 600ms
71+local combat6_Brush = createCombatObject()
72+setCombatParam(combat6_Brush, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
73+setCombatParam(combat6_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
74+setCombatArea(combat6_Brush,createCombatArea({{0, 0, 2, 0, 0},
75+{0, 0, 1, 0, 0},
76+{0, 1, 1, 1, 0},
77+{1, 1, 0, 1, 1}}))
78+function getDmg_Brush(cid, level, maglevel)
79+
80+ return -min, -max
81+end
82+setCombatCallback(combat6_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")local combat6_Brush_2 = createCombatObject()
83+setCombatParam(combat6_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_DRAWBLOOD)
84+setCombatParam(combat6_Brush_2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
85+setCombatArea(combat6_Brush_2,createCombatArea({{1, 0, 0, 2}}))
86+function getDmg_Brush_2(cid, level, maglevel)
87+
88+ return -min, -max
89+end
90+setCombatCallback(combat6_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
91+local dfcombat6_Brush_2 = {CONST_ANI_WHIRLWINDAXE,-3,0}local combat6_Brush_3 = createCombatObject()
92+setCombatParam(combat6_Brush_3, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONAREA)
93+setCombatParam(combat6_Brush_3, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
94+setCombatArea(combat6_Brush_3,createCombatArea({{2, 0, 0, 0},
95+{0, 0, 0, 0},
96+{0, 0, 0, 0},
97+{0, 0, 0, 1}}))
98+function getDmg_Brush_3(cid, level, maglevel)
99+
100+ return -min, -max
101+end
102+setCombatCallback(combat6_Brush_3, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_3")
103+
104+-- Areas/Combat for 700ms
105+local combat7_Brush_3 = createCombatObject()
106+setCombatParam(combat7_Brush_3, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONAREA)
107+setCombatParam(combat7_Brush_3, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
108+setCombatArea(combat7_Brush_3,createCombatArea({{0, 2},
109+{1, 0}}))
110+function getDmg_Brush_3(cid, level, maglevel)
111+
112+ return -min, -max
113+end
114+setCombatCallback(combat7_Brush_3, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_3")
115+
116+-- Areas/Combat for 800ms
117+local combat8_Brush_3 = createCombatObject()
118+setCombatParam(combat8_Brush_3, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONAREA)
119+setCombatParam(combat8_Brush_3, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
120+setCombatArea(combat8_Brush_3,createCombatArea({{0, 0, 2},
121+{0, 0, 0},
122+{1, 0, 0}}))
123+function getDmg_Brush_3(cid, level, maglevel)
124+
125+ return -min, -max
126+end
127+setCombatCallback(combat8_Brush_3, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_3")
128+
129+-- Areas/Combat for 900ms
130+local combat9_Brush = createCombatObject()
131+setCombatParam(combat9_Brush, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
132+setCombatParam(combat9_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
133+setCombatArea(combat9_Brush,createCombatArea({{1, 0, 0, 0},
134+{1, 1, 0, 0},
135+{0, 1, 1, 2},
136+{1, 1, 0, 0},
137+{1, 0, 0, 0}}))
138+function getDmg_Brush(cid, level, maglevel)
139+
140+ return -min, -max
141+end
142+setCombatCallback(combat9_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")local combat9_Brush_2 = createCombatObject()
143+setCombatParam(combat9_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_DRAWBLOOD)
144+setCombatParam(combat9_Brush_2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
145+setCombatArea(combat9_Brush_2,createCombatArea({{1},
146+{0},
147+{0},
148+{2}}))
149+function getDmg_Brush_2(cid, level, maglevel)
150+
151+ return -min, -max
152+end
153+setCombatCallback(combat9_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
154+local dfcombat9_Brush_2 = {CONST_ANI_WHIRLWINDAXE,0,-3}local combat9_Brush_3 = createCombatObject()
155+setCombatParam(combat9_Brush_3, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONAREA)
156+setCombatParam(combat9_Brush_3, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
157+setCombatArea(combat9_Brush_3,createCombatArea({{0, 0, 0, 2},
158+{0, 0, 0, 0},
159+{0, 0, 0, 0},
160+{1, 0, 0, 0}}))
161+function getDmg_Brush_3(cid, level, maglevel)
162+
163+ return -min, -max
164+end
165+setCombatCallback(combat9_Brush_3, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_3")
166+
167+-- Areas/Combat for 1000ms
168+local combat10_Brush_3 = createCombatObject()
169+setCombatParam(combat10_Brush_3, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONAREA)
170+setCombatParam(combat10_Brush_3, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
171+setCombatArea(combat10_Brush_3,createCombatArea({{1, 0},
172+{0, 2}}))
173+function getDmg_Brush_3(cid, level, maglevel)
174+
175+ return -min, -max
176+end
177+setCombatCallback(combat10_Brush_3, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_3")
178+
179+-- Areas/Combat for 1100ms
180+local combat11_Brush_3 = createCombatObject()
181+setCombatParam(combat11_Brush_3, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONAREA)
182+setCombatParam(combat11_Brush_3, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
183+setCombatArea(combat11_Brush_3,createCombatArea({{1, 0, 0},
184+{0, 0, 0},
185+{0, 0, 2}}))
186+function getDmg_Brush_3(cid, level, maglevel)
187+
188+ return -min, -max
189+end
190+setCombatCallback(combat11_Brush_3, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_3")
191+
192+-- Areas/Combat for 1200ms
193+local combat12_Brush = createCombatObject()
194+setCombatParam(combat12_Brush, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
195+setCombatParam(combat12_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
196+setCombatArea(combat12_Brush,createCombatArea({{1, 1, 0, 1, 1},
197+{0, 1, 1, 1, 0},
198+{0, 0, 1, 0, 0},
199+{0, 0, 2, 0, 0}}))
200+function getDmg_Brush(cid, level, maglevel)
201+
202+ return -min, -max
203+end
204+setCombatCallback(combat12_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")local combat12_Brush_3 = createCombatObject()
205+setCombatParam(combat12_Brush_3, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONAREA)
206+setCombatParam(combat12_Brush_3, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
207+setCombatArea(combat12_Brush_3,createCombatArea({{1, 0, 0, 0},
208+{0, 0, 0, 0},
209+{0, 0, 0, 0},
210+{0, 0, 0, 2}}))
211+function getDmg_Brush_3(cid, level, maglevel)
212+
213+ return -min, -max
214+end
215+setCombatCallback(combat12_Brush_3, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_3")
216+
217+-- Areas/Combat for 1300ms
218+local combat13_Brush_3 = createCombatObject()
219+setCombatParam(combat13_Brush_3, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONAREA)
220+setCombatParam(combat13_Brush_3, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
221+setCombatArea(combat13_Brush_3,createCombatArea({{0, 1},
222+{2, 0}}))
223+function getDmg_Brush_3(cid, level, maglevel)
224+
225+ return -min, -max
226+end
227+setCombatCallback(combat13_Brush_3, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_3")
228+
229+-- Areas/Combat for 1400ms
230+local combat14_Brush_3 = createCombatObject()
231+setCombatParam(combat14_Brush_3, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONAREA)
232+setCombatParam(combat14_Brush_3, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
233+setCombatArea(combat14_Brush_3,createCombatArea({{0, 0, 1},
234+{0, 0, 0},
235+{2, 0, 0}}))
236+function getDmg_Brush_3(cid, level, maglevel)
237+
238+ return -min, -max
239+end
240+setCombatCallback(combat14_Brush_3, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_3")
241+
242+-- Areas/Combat for 1500ms
243+local combat15_Brush_3 = createCombatObject()
244+setCombatParam(combat15_Brush_3, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONAREA)
245+setCombatParam(combat15_Brush_3, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
246+setCombatArea(combat15_Brush_3,createCombatArea({{0, 0, 0, 1},
247+{0, 0, 0, 0},
248+{0, 0, 0, 0},
249+{2, 0, 0, 0}}))
250+function getDmg_Brush_3(cid, level, maglevel)
251+
252+ return -min, -max
253+end
254+setCombatCallback(combat15_Brush_3, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_3")
255+
256+-- =============== CORE FUNCTIONS ===============
257+local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
258+ if (isCreature(cid)) then
259+ doCombat(cid, c, var)
260+ if (dirList ~= nil) then -- Emit distance effects
261+ local i = 2;
262+ while (i < #dirList) do
263+ doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
264+ i = i + 2
265+ end
266+ end
267+ end
268+end
269+function checkSpell40(cid)
270+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
271+ local CHECK_SLOT_01 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_04)
272+ local CHECK_SLOT_02 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_05)
273+ local CHECK_SLOT_03 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_06)
274+ SPELL_ID = 40
275+
276+ if GUN_ID > 0 then
277+ if CHECK_SLOT_01 == SPELL_ID then
278+ cid:sendCancelMessage("@SpellCooldown 01")
279+ return true
280+ elseif CHECK_SLOT_02 == SPELL_ID then
281+ cid:sendCancelMessage("@SpellCooldown 02")
282+ return true
283+ elseif CHECK_SLOT_03 == SPELL_ID then
284+ cid:sendCancelMessage("@SpellCooldown 03")
285+ return true
286+ else
287+ return false
288+ end
289+ else
290+ return false
291+ end
292+end
293+function onCastSpell(cid, var)
294+ if checkSpell40(cid) or cid:getGroup():getAccess() then
295+ local startPos = getCreaturePosition(cid)
296+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
297+ local starGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_03)
298+ local levelGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_07)
299+ min = onDamage(cid, GUN_ID, levelGun, starGun, "SKILL_MIN", SPELL_ID)
300+ max = min
301+ RunPart(combat0_Brush_2,cid,var,dfcombat0_Brush_2,startPos)
302+ addEvent(RunPart,300,combat3_Brush,cid.uid,var)
303+ addEvent(RunPart,300,combat3_Brush_2,cid.uid,var,dfcombat3_Brush_2,startPos)
304+ addEvent(RunPart,400,combat4_Brush_3,cid.uid,var)
305+ addEvent(RunPart,500,combat5_Brush_3,cid.uid,var)
306+ addEvent(RunPart,600,combat6_Brush,cid.uid,var)
307+ addEvent(RunPart,600,combat6_Brush_2,cid.uid,var,dfcombat6_Brush_2,startPos)
308+ addEvent(RunPart,600,combat6_Brush_3,cid.uid,var)
309+ addEvent(RunPart,700,combat7_Brush_3,cid.uid,var)
310+ addEvent(RunPart,800,combat8_Brush_3,cid.uid,var)
311+ addEvent(RunPart,900,combat9_Brush,cid.uid,var)
312+ addEvent(RunPart,900,combat9_Brush_2,cid.uid,var,dfcombat9_Brush_2,startPos)
313+ addEvent(RunPart,900,combat9_Brush_3,cid.uid,var)
314+ addEvent(RunPart,1000,combat10_Brush_3,cid.uid,var)
315+ addEvent(RunPart,1100,combat11_Brush_3,cid.uid,var)
316+ addEvent(RunPart,1200,combat12_Brush,cid.uid,var)
317+ addEvent(RunPart,1200,combat12_Brush_3,cid.uid,var)
318+ addEvent(RunPart,1300,combat13_Brush_3,cid.uid,var)
319+ addEvent(RunPart,1400,combat14_Brush_3,cid.uid,var)
320+ addEvent(RunPart,1500,combat15_Brush_3,cid.uid,var)
321+ return true
322+ else
323+ cid:getPosition():sendMagicEffect(03)
324+ return false
325+ end
326+end
A data/spells/scripts/soul_blaze.lua +112-0 View file
@@ -0,0 +1,112 @@
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_EXPLOSIONHIT)
9+setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
10+setCombatArea(combat0_Brush,createCombatArea({{0, 1, 0},
11+{1, 2, 1},
12+{0, 1, 0}}))
13+function getDmg_Brush(cid, level, maglevel)
14+
15+ return -min, -max
16+end
17+setCombatCallback(combat0_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
18+
19+-- Areas/Combat for 300ms
20+local combat3_Brush_2 = createCombatObject()
21+setCombatParam(combat3_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
22+setCombatParam(combat3_Brush_2, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
23+setCombatArea(combat3_Brush_2,createCombatArea({{0, 0, 1, 0, 0},
24+{0, 1, 0, 1, 0},
25+{1, 0, 2, 0, 1},
26+{0, 1, 0, 1, 0},
27+{0, 0, 1, 0, 0}}))
28+function getDmg_Brush_2(cid, level, maglevel)
29+
30+ return -min, -max
31+end
32+setCombatCallback(combat3_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
33+
34+-- Areas/Combat for 600ms
35+local combat6_Brush_3 = createCombatObject()
36+setCombatParam(combat6_Brush_3, COMBAT_PARAM_EFFECT, CONST_ME_HITBYFIRE)
37+setCombatParam(combat6_Brush_3, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
38+setCombatArea(combat6_Brush_3,createCombatArea({{0, 0, 0, 1, 0, 0, 0},
39+{0, 0, 1, 0, 1, 0, 0},
40+{0, 1, 0, 0, 0, 1, 0},
41+{1, 0, 0, 2, 0, 0, 1},
42+{0, 1, 0, 0, 0, 1, 0},
43+{0, 0, 1, 0, 1, 0, 0},
44+{0, 0, 0, 1, 0, 0, 0}}))
45+function getDmg_Brush_3(cid, level, maglevel)
46+
47+ return -min, -max
48+end
49+setCombatCallback(combat6_Brush_3, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_3")local combat6_Brush_4 = createCombatObject()
50+setCombatParam(combat6_Brush_4, COMBAT_PARAM_EFFECT, CONST_ME_FIREWORK_RED)
51+setCombatParam(combat6_Brush_4, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
52+setCombatArea(combat6_Brush_4,createCombatArea({{0, 1, 0},
53+{1, 2, 1},
54+{0, 1, 0}}))
55+
56+
57+-- =============== CORE FUNCTIONS ===============
58+local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
59+ if (isCreature(cid)) then
60+ doCombat(cid, c, var)
61+ if (dirList ~= nil) then -- Emit distance effects
62+ local i = 2;
63+ while (i < #dirList) do
64+ doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
65+ i = i + 2
66+ end
67+ end
68+ end
69+end
70+function checkSpell16(cid)
71+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
72+ local CHECK_SLOT_01 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_04)
73+ local CHECK_SLOT_02 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_05)
74+ local CHECK_SLOT_03 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_06)
75+ SPELL_ID = 16
76+
77+ if GUN_ID > 0 then
78+ if CHECK_SLOT_01 == SPELL_ID then
79+ cid:sendCancelMessage("@SpellCooldown 01")
80+ return true
81+ elseif CHECK_SLOT_02 == SPELL_ID then
82+ cid:sendCancelMessage("@SpellCooldown 02")
83+ return true
84+ elseif CHECK_SLOT_03 == SPELL_ID then
85+ cid:sendCancelMessage("@SpellCooldown 03")
86+ return true
87+ else
88+ return false
89+ end
90+ else
91+ return false
92+ end
93+ return true
94+end
95+function onCastSpell(cid, var)
96+ if checkSpell16(cid) or cid:getGroup():getAccess() then
97+ local startPos = getCreaturePosition(cid)
98+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
99+ local starGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_03)
100+ local levelGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_07)
101+ min = onDamage(cid, GUN_ID, levelGun, starGun, "SKILL_MIN", SPELL_ID)
102+ max = min
103+ RunPart(combat0_Brush,cid,var)
104+ addEvent(RunPart,300,combat3_Brush_2,cid.uid,var)
105+ addEvent(RunPart,600,combat6_Brush_3,cid.uid,var)
106+ addEvent(RunPart,600,combat6_Brush_4,cid.uid,var)
107+ return true
108+ else
109+ cid:getPosition():sendMagicEffect(03)
110+ return false
111+ end
112+end
A data/spells/scripts/soul_hail.lua +70-0 View file
@@ -0,0 +1,70 @@
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_MORTAREA)
9+setCombatParam(combat0_Brush, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SUDDENDEATH)
10+setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
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+-- =============== CORE FUNCTIONS ===============
19+local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
20+ if (isCreature(cid)) then
21+ doCombat(cid, c, var)
22+ if (dirList ~= nil) then -- Emit distance effects
23+ local i = 2;
24+ while (i < #dirList) do
25+ doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
26+ i = i + 2
27+ end
28+ end
29+ end
30+end
31+function checkSpell22(cid)
32+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
33+ local CHECK_SLOT_01 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_04)
34+ local CHECK_SLOT_02 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_05)
35+ local CHECK_SLOT_03 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_06)
36+ SPELL_ID = 22
37+
38+ if GUN_ID > 0 then
39+ if CHECK_SLOT_01 == SPELL_ID then
40+ cid:sendCancelMessage("@SpellCooldown 01")
41+ return true
42+ elseif CHECK_SLOT_02 == SPELL_ID then
43+ cid:sendCancelMessage("@SpellCooldown 02")
44+ return true
45+ elseif CHECK_SLOT_03 == SPELL_ID then
46+ cid:sendCancelMessage("@SpellCooldown 03")
47+ return true
48+ else
49+ return false
50+ end
51+ else
52+ return false
53+ end
54+ return true
55+end
56+function onCastSpell(cid, var)
57+ if checkSpell22(cid) or cid:getGroup():getAccess() then
58+ local startPos = getCreaturePosition(cid)
59+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
60+ local starGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_03)
61+ local levelGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_07)
62+ min = onDamage(cid, GUN_ID, levelGun, starGun, "SKILL_MIN", SPELL_ID)
63+ max = min
64+ RunPart(combat0_Brush,cid,var)
65+ return true
66+ else
67+ cid:getPosition():sendMagicEffect(03)
68+ return false
69+ end
70+end
A data/spells/scripts/soul_ray.lua +70-0 View file
@@ -0,0 +1,70 @@
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_ENERGYHIT)
9+setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
10+setCombatArea(combat0_Brush,createCombatArea({{1, 1, 1},
11+{1, 2, 1},
12+{1, 1, 1}}))
13+function getDmg_Brush(cid, level, maglevel)
14+
15+ return -min, -max
16+end
17+setCombatCallback(combat0_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
18+
19+-- =============== CORE FUNCTIONS ===============
20+local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
21+ if (isCreature(cid)) then
22+ doCombat(cid, c, var)
23+ if (dirList ~= nil) then -- Emit distance effects
24+ local i = 2;
25+ while (i < #dirList) do
26+ doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
27+ i = i + 2
28+ end
29+ end
30+ end
31+end
32+function checkSpell61(cid)
33+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
34+ local CHECK_SLOT_01 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_04)
35+ local CHECK_SLOT_02 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_05)
36+ local CHECK_SLOT_03 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_06)
37+ SPELL_ID = 61
38+
39+ if GUN_ID > 0 then
40+ if CHECK_SLOT_01 == SPELL_ID then
41+ cid:sendCancelMessage("@SpellCooldown 01")
42+ return true
43+ elseif CHECK_SLOT_02 == SPELL_ID then
44+ cid:sendCancelMessage("@SpellCooldown 02")
45+ return true
46+ elseif CHECK_SLOT_03 == SPELL_ID then
47+ cid:sendCancelMessage("@SpellCooldown 03")
48+ return true
49+ else
50+ return false
51+ end
52+ else
53+ return false
54+ end
55+end
56+function onCastSpell(cid, var)
57+ if checkSpell61(cid) or cid:getGroup():getAccess() then
58+ local startPos = getCreaturePosition(cid)
59+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
60+ local starGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_03)
61+ local levelGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_07)
62+ min = onDamage(cid, GUN_ID, levelGun, starGun, "SKILL_MIN", SPELL_ID)
63+ max = min
64+ RunPart(combat0_Brush,cid,var)
65+ return true
66+ else
67+ cid:getPosition():sendMagicEffect(03)
68+ return false
69+ end
70+end
A data/spells/scripts/spectral_bolt.lua +99-0 View file
@@ -0,0 +1,99 @@
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_PURPLEENERGY)
9+setCombatParam(combat0_Brush, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY)
10+setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
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 200ms
19+local combat2_Brush_2 = createCombatObject()
20+setCombatParam(combat2_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_YELLOWENERGY)
21+setCombatParam(combat2_Brush_2, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
22+setCombatArea(combat2_Brush_2,createCombatArea({{0, 1, 0},
23+{1, 2, 1},
24+{0, 1, 0}}))
25+function getDmg_Brush_2(cid, level, maglevel)
26+
27+ return -min, -max
28+end
29+setCombatCallback(combat2_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
30+
31+-- Areas/Combat for 500ms
32+local combat5_Brush_2 = createCombatObject()
33+setCombatParam(combat5_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_YELLOWENERGY)
34+setCombatParam(combat5_Brush_2, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
35+setCombatArea(combat5_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(combat5_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
45+
46+-- =============== CORE FUNCTIONS ===============
47+local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
48+ if (isCreature(cid)) then
49+ doCombat(cid, c, var)
50+ if (dirList ~= nil) then -- Emit distance effects
51+ local i = 2;
52+ while (i < #dirList) do
53+ doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
54+ i = i + 2
55+ end
56+ end
57+ end
58+end
59+function checkSpell63(cid)
60+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
61+ local CHECK_SLOT_01 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_04)
62+ local CHECK_SLOT_02 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_05)
63+ local CHECK_SLOT_03 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_06)
64+ SPELL_ID = 63
65+
66+ if GUN_ID > 0 then
67+ if CHECK_SLOT_01 == SPELL_ID then
68+ cid:sendCancelMessage("@SpellCooldown 01")
69+ return true
70+ elseif CHECK_SLOT_02 == SPELL_ID then
71+ cid:sendCancelMessage("@SpellCooldown 02")
72+ return true
73+ elseif CHECK_SLOT_03 == SPELL_ID then
74+ cid:sendCancelMessage("@SpellCooldown 03")
75+ return true
76+ else
77+ return false
78+ end
79+ else
80+ return false
81+ end
82+end
83+function onCastSpell(cid, var)
84+ if checkSpell63(cid) or cid:getGroup():getAccess() then
85+ local startPos = getCreaturePosition(cid)
86+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
87+ local starGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_03)
88+ local levelGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_07)
89+ min = onDamage(cid, GUN_ID, levelGun, starGun, "SKILL_MIN", SPELL_ID)
90+ max = min
91+ RunPart(combat0_Brush,cid,var)
92+ addEvent(RunPart,200,combat2_Brush_2,cid.uid,var)
93+ addEvent(RunPart,500,combat5_Brush_2,cid.uid,var)
94+ return true
95+ else
96+ cid:getPosition():sendMagicEffect(03)
97+ return false
98+ end
99+end
A data/spells/scripts/speed_of_gods.lua +64-0 View file
@@ -0,0 +1,64 @@
1+local combat = Combat()
2+combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_GREEN)
3+combat:setParameter(COMBAT_PARAM_AGGRESSIVE, false)
4+
5+local condition = Condition(CONDITION_HASTE)
6+condition:setParameter(CONDITION_PARAM_TICKS, 13000)
7+combat:addCondition(condition)
8+
9+function onCastSpell(creature, variant)
10+ if creature:getStorageValue(_SYSTEM.WARZONE) > 01 then
11+ creature:getPosition():sendMagicEffect(03)
12+ return false
13+ end
14+ local SPEED_MOUNT = 100
15+ if creature:getStorageValue(_SYSTEM.INVENTARIO[07].UID_01) > 0 then
16+ local RingID = creature:getStorageValue(_SYSTEM.INVENTARIO[07].UID_01)
17+ local RingRA = creature:getStorageValue(_SYSTEM.INVENTARIO[07].UID_02)
18+ local RingST = creature:getStorageValue(_SYSTEM.INVENTARIO[07].UID_03)
19+ local RingLV = creature:getStorageValue(_SYSTEM.INVENTARIO[07].UID_05)
20+ if RingID == 7004 then -- Aumenta a Speed ao usar Skill de Velocidade.
21+ if RingRA < 01 then
22+ SPEED_MOUNT = SPEED_MOUNT + 50
23+ elseif RingRA == 01 then
24+ SPEED_MOUNT = SPEED_MOUNT + 100
25+ elseif RingRA == 02 then
26+ SPEED_MOUNT = SPEED_MOUNT + 150
27+ elseif RingRA == 03 then
28+ SPEED_MOUNT = SPEED_MOUNT + 200
29+ elseif RingRA == 04 then
30+ SPEED_MOUNT = SPEED_MOUNT + 250
31+ end
32+ end
33+ end
34+ if creature:getStorageValue(_GLOBAL_RANDOM.BUFFS[09].STORAGE) > 00 then
35+ SPEED_MOUNT = SPEED_MOUNT + 100
36+ end
37+
38+ local cid = creature:getId()
39+ if _BONUS_EXTRA_TABLE[cid] then
40+ local ID_BONUS = 01
41+ if _BONUS_EXTRA_TABLE[cid][ID_BONUS] > 00 then
42+ local BONUS_VALUE = math.floor(_BONUS_EXTRA_TABLE[cid][ID_BONUS] * (SPEED_MOUNT / 100))
43+ SPEED_MOUNT = SPEED_MOUNT + BONUS_VALUE
44+ end
45+ end
46+
47+ if not creature:getCondition(CONDITION_HASTE) then
48+ creature:sendCancelMessage("@SpellCooldown 04")
49+ creature:changeSpeed(SPEED_MOUNT)
50+ -- DESAFIO
51+ if creature:getStorageValue(_DESAFIOS[00].DESAFIO_ID) > 00 then
52+ onPlayerDesafios(creature, 34, 01)
53+ end
54+ addEvent(function()
55+ if creature then
56+ creature:changeSpeed(-SPEED_MOUNT)
57+ end
58+ end, 10000)
59+ return combat:execute(creature, variant)
60+ else
61+ creature:getPosition():sendMagicEffect(03)
62+ return false
63+ end
64+end
A data/spells/scripts/suffering.lua +207-0 View file
@@ -0,0 +1,207 @@
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_FIREAREA)
9+setCombatParam(combat1_Brush_2, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
10+setCombatArea(combat1_Brush_2,createCombatArea({{1, 0, 0, 0, 1},
11+{0, 0, 2, 0, 0},
12+{0, 0, 0, 1, 0}}))
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_FIREAREA)
22+setCombatParam(combat0_Brush, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
23+setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
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_FIREAREA)
34+setCombatParam(combat2_Brush_2, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
35+setCombatArea(combat2_Brush_2,createCombatArea({{0, 1},
36+{0, 2},
37+{1, 0},
38+{0, 1}}))
39+function getDmg_Brush_2(cid, level, maglevel)
40+
41+ return -min, -max
42+end
43+setCombatCallback(combat2_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
44+
45+-- Areas/Combat for 300ms
46+local combat3_Brush_2 = createCombatObject()
47+setCombatParam(combat3_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
48+setCombatParam(combat3_Brush_2, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
49+setCombatArea(combat3_Brush_2,createCombatArea({{1, 0, 2, 0, 1},
50+{0, 0, 0, 0, 0},
51+{0, 0, 0, 0, 1}}))
52+function getDmg_Brush_2(cid, level, maglevel)
53+
54+ return -min, -max
55+end
56+setCombatCallback(combat3_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
57+
58+-- Areas/Combat for 400ms
59+local combat4_Brush_2 = createCombatObject()
60+setCombatParam(combat4_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
61+setCombatParam(combat4_Brush_2, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
62+setCombatArea(combat4_Brush_2,createCombatArea({{0, 0, 0, 0, 1, 0, 0},
63+{0, 0, 0, 0, 0, 0, 0},
64+{0, 0, 0, 2, 0, 0, 0},
65+{0, 0, 0, 0, 0, 0, 1},
66+{1, 0, 0, 0, 0, 0, 0}}))
67+function getDmg_Brush_2(cid, level, maglevel)
68+
69+ return -min, -max
70+end
71+setCombatCallback(combat4_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
72+
73+-- Areas/Combat for 500ms
74+local combat5_Brush_2 = createCombatObject()
75+setCombatParam(combat5_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
76+setCombatParam(combat5_Brush_2, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
77+setCombatArea(combat5_Brush_2,createCombatArea({{1, 0, 0, 0, 1},
78+{0, 0, 0, 0, 0},
79+{0, 2, 0, 0, 0},
80+{0, 0, 0, 0, 0},
81+{0, 0, 0, 0, 0},
82+{0, 0, 1, 0, 0}}))
83+function getDmg_Brush_2(cid, level, maglevel)
84+
85+ return -min, -max
86+end
87+setCombatCallback(combat5_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
88+
89+-- Areas/Combat for 600ms
90+local combat6_Brush_2 = createCombatObject()
91+setCombatParam(combat6_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
92+setCombatParam(combat6_Brush_2, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
93+setCombatArea(combat6_Brush_2,createCombatArea({{1, 0, 0, 0, 0, 0},
94+{0, 0, 0, 0, 0, 1},
95+{0, 0, 2, 0, 0, 0},
96+{0, 0, 0, 0, 0, 0},
97+{1, 0, 0, 0, 0, 0}}))
98+function getDmg_Brush_2(cid, level, maglevel)
99+
100+ return -min, -max
101+end
102+setCombatCallback(combat6_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
103+
104+-- Areas/Combat for 700ms
105+local combat7_Brush_2 = createCombatObject()
106+setCombatParam(combat7_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
107+setCombatParam(combat7_Brush_2, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
108+setCombatArea(combat7_Brush_2,createCombatArea({{1, 0, 0, 2, 1, 0, 0},
109+{0, 0, 0, 0, 0, 0, 0},
110+{0, 0, 0, 0, 0, 0, 0},
111+{0, 0, 0, 0, 0, 0, 1}}))
112+function getDmg_Brush_2(cid, level, maglevel)
113+
114+ return -min, -max
115+end
116+setCombatCallback(combat7_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
117+
118+-- Areas/Combat for 800ms
119+local combat8_Brush_2 = createCombatObject()
120+setCombatParam(combat8_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
121+setCombatParam(combat8_Brush_2, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
122+setCombatArea(combat8_Brush_2,createCombatArea({{1, 0},
123+{1, 2},
124+{0, 1}}))
125+function getDmg_Brush_2(cid, level, maglevel)
126+
127+ return -min, -max
128+end
129+setCombatCallback(combat8_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
130+
131+-- Areas/Combat for 900ms
132+local combat9_Brush_2 = createCombatObject()
133+setCombatParam(combat9_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
134+setCombatParam(combat9_Brush_2, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
135+setCombatArea(combat9_Brush_2,createCombatArea({{0, 0, 0, 1},
136+{0, 2, 0, 0},
137+{0, 0, 0, 1},
138+{0, 0, 1, 0},
139+{1, 0, 0, 0}}))
140+function getDmg_Brush_2(cid, level, maglevel)
141+
142+ return -min, -max
143+end
144+setCombatCallback(combat9_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
145+
146+-- =============== CORE FUNCTIONS ===============
147+local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
148+ if (isCreature(cid)) then
149+ doCombat(cid, c, var)
150+ if (dirList ~= nil) then -- Emit distance effects
151+ local i = 2;
152+ while (i < #dirList) do
153+ doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
154+ i = i + 2
155+ end
156+ end
157+ end
158+end
159+function checkSpell15(cid)
160+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
161+ local CHECK_SLOT_01 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_04)
162+ local CHECK_SLOT_02 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_05)
163+ local CHECK_SLOT_03 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_06)
164+ SPELL_ID = 15
165+
166+ if GUN_ID > 0 then
167+ if CHECK_SLOT_01 == SPELL_ID then
168+ cid:sendCancelMessage("@SpellCooldown 01")
169+ return true
170+ elseif CHECK_SLOT_02 == SPELL_ID then
171+ cid:sendCancelMessage("@SpellCooldown 02")
172+ return true
173+ elseif CHECK_SLOT_03 == SPELL_ID then
174+ cid:sendCancelMessage("@SpellCooldown 03")
175+ return true
176+ else
177+ return false
178+ end
179+ else
180+ return false
181+ end
182+ return true
183+end
184+function onCastSpell(cid, var)
185+ if checkSpell15(cid) or cid:getGroup():getAccess() then
186+ local startPos = getCreaturePosition(cid)
187+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
188+ local starGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_03)
189+ local levelGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_07)
190+ min = onDamage(cid, GUN_ID, levelGun, starGun, "SKILL_MIN", SPELL_ID)
191+ max = min
192+ addEvent(RunPart,100,combat1_Brush_2,cid.uid,var)
193+ RunPart(combat0_Brush,cid,var)
194+ addEvent(RunPart,200,combat2_Brush_2,cid.uid,var)
195+ addEvent(RunPart,300,combat3_Brush_2,cid.uid,var)
196+ addEvent(RunPart,400,combat4_Brush_2,cid.uid,var)
197+ addEvent(RunPart,500,combat5_Brush_2,cid.uid,var)
198+ addEvent(RunPart,600,combat6_Brush_2,cid.uid,var)
199+ addEvent(RunPart,700,combat7_Brush_2,cid.uid,var)
200+ addEvent(RunPart,800,combat8_Brush_2,cid.uid,var)
201+ addEvent(RunPart,900,combat9_Brush_2,cid.uid,var)
202+ return true
203+ else
204+ cid:getPosition():sendMagicEffect(03)
205+ return false
206+ end
207+end
A data/spells/scripts/sunlight_strike.lua +149-0 View file
@@ -0,0 +1,149 @@
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_HOLYAREA)
9+setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
10+setCombatArea(combat0_Brush,createCombatArea({{0, 0, 0, 1, 0, 0, 0},
11+{0, 0, 0, 0, 0, 0, 0},
12+{0, 0, 0, 0, 0, 0, 0},
13+{1, 0, 0, 2, 0, 0, 1},
14+{0, 0, 0, 0, 0, 0, 0},
15+{0, 0, 0, 0, 0, 0, 0},
16+{0, 0, 0, 1, 0, 0, 0}}))
17+
18+local dfcombat0_Brush = {CONST_ANI_HOLY,3,0,-3,0,0,3,0,-3}
19+
20+-- Areas/Combat for 500ms
21+local combat5_Brush_2 = createCombatObject()
22+setCombatParam(combat5_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_HOLYDAMAGE)
23+setCombatParam(combat5_Brush_2, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
24+setCombatArea(combat5_Brush_2,createCombatArea({{0, 0, 1, 0, 0},
25+{0, 1, 1, 1, 0},
26+{1, 1, 2, 1, 1},
27+{0, 1, 1, 1, 0},
28+{0, 0, 1, 0, 0}}))
29+function getDmg_Brush_2(cid, level, maglevel)
30+
31+ return -min, -max
32+end
33+setCombatCallback(combat5_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
34+
35+-- Areas/Combat for 800ms
36+local combat8_Brush = createCombatObject()
37+setCombatParam(combat8_Brush, COMBAT_PARAM_EFFECT, CONST_ME_HOLYAREA)
38+setCombatParam(combat8_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
39+setCombatArea(combat8_Brush,createCombatArea({{0, 0, 0, 1, 0, 0, 0},
40+{0, 0, 0, 0, 0, 0, 0},
41+{0, 0, 0, 0, 0, 0, 0},
42+{1, 0, 0, 2, 0, 0, 1},
43+{0, 0, 0, 0, 0, 0, 0},
44+{0, 0, 0, 0, 0, 0, 0},
45+{0, 0, 0, 1, 0, 0, 0}}))
46+
47+local dfcombat8_Brush = {CONST_ANI_HOLY,3,0,0,3,-3,0,0,-3}
48+
49+-- Areas/Combat for 1300ms
50+local combat13_Brush_2 = createCombatObject()
51+setCombatParam(combat13_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_HOLYDAMAGE)
52+setCombatParam(combat13_Brush_2, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
53+setCombatArea(combat13_Brush_2,createCombatArea({{0, 0, 1, 0, 0},
54+{0, 1, 1, 1, 0},
55+{1, 1, 2, 1, 1},
56+{0, 1, 1, 1, 0},
57+{0, 0, 1, 0, 0}}))
58+function getDmg_Brush_2(cid, level, maglevel)
59+
60+ return -min, -max
61+end
62+setCombatCallback(combat13_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
63+
64+-- Areas/Combat for 1600ms
65+local combat16_Brush = createCombatObject()
66+setCombatParam(combat16_Brush, COMBAT_PARAM_EFFECT, CONST_ME_HOLYAREA)
67+setCombatParam(combat16_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
68+setCombatArea(combat16_Brush,createCombatArea({{0, 0, 0, 1, 0, 0, 0},
69+{0, 0, 0, 0, 0, 0, 0},
70+{0, 0, 0, 0, 0, 0, 0},
71+{1, 0, 0, 2, 0, 0, 1},
72+{0, 0, 0, 0, 0, 0, 0},
73+{0, 0, 0, 0, 0, 0, 0},
74+{0, 0, 0, 1, 0, 0, 0}}))
75+
76+local dfcombat16_Brush = {CONST_ANI_HOLY,0,3,0,-3,-3,0,3,0}
77+
78+-- Areas/Combat for 2100ms
79+local combat21_Brush_2 = createCombatObject()
80+setCombatParam(combat21_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_HOLYDAMAGE)
81+setCombatParam(combat21_Brush_2, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
82+setCombatArea(combat21_Brush_2,createCombatArea({{0, 0, 1, 0, 0},
83+{0, 1, 1, 1, 0},
84+{1, 1, 2, 1, 1},
85+{0, 1, 1, 1, 0},
86+{0, 0, 1, 0, 0}}))
87+function getDmg_Brush_2(cid, level, maglevel)
88+
89+ return -min, -max
90+end
91+setCombatCallback(combat21_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
92+
93+-- =============== CORE FUNCTIONS ===============
94+local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
95+ if (isCreature(cid)) then
96+ doCombat(cid, c, var)
97+ if (dirList ~= nil) then -- Emit distance effects
98+ local i = 2;
99+ while (i < #dirList) do
100+ doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
101+ i = i + 2
102+ end
103+ end
104+ end
105+end
106+function checkSpell48(cid)
107+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
108+ local CHECK_SLOT_01 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_04)
109+ local CHECK_SLOT_02 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_05)
110+ local CHECK_SLOT_03 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_06)
111+ SPELL_ID = 48
112+
113+ if GUN_ID > 0 then
114+ if CHECK_SLOT_01 == SPELL_ID then
115+ cid:sendCancelMessage("@SpellCooldown 01")
116+ return true
117+ elseif CHECK_SLOT_02 == SPELL_ID then
118+ cid:sendCancelMessage("@SpellCooldown 02")
119+ return true
120+ elseif CHECK_SLOT_03 == SPELL_ID then
121+ cid:sendCancelMessage("@SpellCooldown 03")
122+ return true
123+ else
124+ return false
125+ end
126+ else
127+ return false
128+ end
129+end
130+function onCastSpell(cid, var)
131+ if checkSpell48(cid) or cid:getGroup():getAccess() then
132+ local startPos = getCreaturePosition(cid)
133+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
134+ local starGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_03)
135+ local levelGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_07)
136+ min = onDamage(cid, GUN_ID, levelGun, starGun, "SKILL_MIN", SPELL_ID)
137+ max = min
138+ RunPart(combat0_Brush,cid,var,dfcombat0_Brush,startPos)
139+ addEvent(RunPart,500,combat5_Brush_2,cid.uid,var)
140+ addEvent(RunPart,800,combat8_Brush,cid.uid,var,dfcombat8_Brush,startPos)
141+ addEvent(RunPart,1300,combat13_Brush_2,cid.uid,var)
142+ addEvent(RunPart,1600,combat16_Brush,cid.uid,var,dfcombat16_Brush,startPos)
143+ addEvent(RunPart,2100,combat21_Brush_2,cid.uid,var)
144+ return true
145+ else
146+ cid:getPosition():sendMagicEffect(03)
147+ return false
148+ end
149+end
A data/spells/scripts/support/challenge.lua +24-0 View file
@@ -0,0 +1,24 @@
1+local combat = Combat()
2+combat:setArea(createCombatArea(AREA_CIRCLE3X3))
3+
4+function onTargetCreature(creature, target)
5+ if target:isMonster() then
6+ if target:getName() == "Mercenario" then
7+ creature:setTarget(target)
8+ end
9+ end
10+
11+ return doChallengeCreature(creature, target)
12+end
13+
14+combat:setCallback(CALLBACK_PARAM_TARGETCREATURE, "onTargetCreature")
15+
16+function onCastSpell(creature, variant)
17+ local checkTarget = creature:getTarget()
18+ if checkTarget then
19+ if checkTarget:isPlayer() or checkTarget:getName() == "Soldier" and checkTarget:getName() == "Towncryer" then
20+ creature:setTarget(nil)
21+ end
22+ end
23+ return combat:execute(creature, variant)
24+end
A data/spells/scripts/toxic_punch.lua +69-0 View file
@@ -0,0 +1,69 @@
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_GREEN_RINGS)
9+setCombatParam(combat0_Brush, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_POISON)
10+setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
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+-- =============== CORE FUNCTIONS ===============
19+local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
20+ if (isCreature(cid)) then
21+ doCombat(cid, c, var)
22+ if (dirList ~= nil) then -- Emit distance effects
23+ local i = 2;
24+ while (i < #dirList) do
25+ doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
26+ i = i + 2
27+ end
28+ end
29+ end
30+end
31+function checkSpell51(cid)
32+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
33+ local CHECK_SLOT_01 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_04)
34+ local CHECK_SLOT_02 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_05)
35+ local CHECK_SLOT_03 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_06)
36+ SPELL_ID = 51
37+
38+ if GUN_ID > 0 then
39+ if CHECK_SLOT_01 == SPELL_ID then
40+ cid:sendCancelMessage("@SpellCooldown 01")
41+ return true
42+ elseif CHECK_SLOT_02 == SPELL_ID then
43+ cid:sendCancelMessage("@SpellCooldown 02")
44+ return true
45+ elseif CHECK_SLOT_03 == SPELL_ID then
46+ cid:sendCancelMessage("@SpellCooldown 03")
47+ return true
48+ else
49+ return false
50+ end
51+ else
52+ return false
53+ end
54+end
55+function onCastSpell(cid, var)
56+ if checkSpell51(cid) or cid:getGroup():getAccess() then
57+ local startPos = getCreaturePosition(cid)
58+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
59+ local starGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_03)
60+ local levelGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_07)
61+ min = onDamage(cid, GUN_ID, levelGun, starGun, "SKILL_MIN", SPELL_ID)
62+ max = min
63+ RunPart(combat0_Brush,cid,var)
64+ return true
65+ else
66+ cid:getPosition():sendMagicEffect(03)
67+ return false
68+ end
69+end
A data/spells/scripts/triple_poison.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_GREEN_RINGS)
9+setCombatParam(combat0_Brush, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_EARTH)
10+setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
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_GREEN_RINGS)
21+setCombatParam(combat3_Brush, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_EARTH)
22+setCombatParam(combat3_Brush, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
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_GREEN_RINGS)
33+setCombatParam(combat6_Brush, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_EARTH)
34+setCombatParam(combat6_Brush, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
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 checkSpell55(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 = 55
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 checkSpell55(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
Top