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/carnivore_shield.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_CARNIPHILA)
9+setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
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 checkSpell53(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 = 53
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 checkSpell53(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/cursed_misery.lua +71-0 View file
@@ -0,0 +1,71 @@
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_EXPLOSIONAREA)
9+setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
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 checkSpell23(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 = 23
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+ return true
56+end
57+function onCastSpell(cid, var)
58+ if checkSpell23(cid) or cid:getGroup():getAccess() then
59+ local startPos = getCreaturePosition(cid)
60+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
61+ local starGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_03)
62+ local levelGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_07)
63+ min = onDamage(cid, GUN_ID, levelGun, starGun, "SKILL_MIN", SPELL_ID)
64+ max = min
65+ RunPart(combat0_Brush,cid,var)
66+ return true
67+ else
68+ cid:getPosition():sendMagicEffect(03)
69+ return false
70+ end
71+end
A data/spells/scripts/curse_of_ancestral_fury.lua +144-0 View file
@@ -0,0 +1,144 @@
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_MORTAREA)
9+setCombatParam(combat1_Brush_2, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
10+setCombatArea(combat1_Brush_2,createCombatArea({{0, 0, 1, 0, 0},
11+{0, 1, 1, 1, 0},
12+{1, 1, 2, 1, 1},
13+{0, 1, 1, 1, 0},
14+{0, 0, 1, 0, 0}}))
15+function getDmg_Brush_2(cid, level, maglevel)
16+
17+ return -min, -max
18+end
19+setCombatCallback(combat1_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
20+
21+-- Areas/Combat for 0ms
22+local combat0_Brush = createCombatObject()
23+setCombatParam(combat0_Brush, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
24+setCombatParam(combat0_Brush, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SUDDENDEATH)
25+setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
26+setCombatArea(combat0_Brush,createCombatArea({{3}}))
27+function getDmg_Brush(cid, level, maglevel)
28+
29+ return -min, -max
30+end
31+setCombatCallback(combat0_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
32+
33+-- Areas/Combat for 300ms
34+local combat3_Brush = createCombatObject()
35+setCombatParam(combat3_Brush, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
36+setCombatParam(combat3_Brush, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SUDDENDEATH)
37+setCombatParam(combat3_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
38+setCombatArea(combat3_Brush,createCombatArea({{3}}))
39+function getDmg_Brush(cid, level, maglevel)
40+
41+ return -min, -max
42+end
43+setCombatCallback(combat3_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
44+
45+-- Areas/Combat for 400ms
46+local combat4_Brush_2 = createCombatObject()
47+setCombatParam(combat4_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
48+setCombatParam(combat4_Brush_2, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
49+setCombatArea(combat4_Brush_2,createCombatArea({{0, 0, 1, 0, 0},
50+{0, 1, 1, 1, 0},
51+{1, 1, 2, 1, 1},
52+{0, 1, 1, 1, 0},
53+{0, 0, 1, 0, 0}}))
54+function getDmg_Brush_2(cid, level, maglevel)
55+
56+ return -min, -max
57+end
58+setCombatCallback(combat4_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
59+
60+-- Areas/Combat for 600ms
61+local combat6_Brush = createCombatObject()
62+setCombatParam(combat6_Brush, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
63+setCombatParam(combat6_Brush, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SUDDENDEATH)
64+setCombatParam(combat6_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
65+setCombatArea(combat6_Brush,createCombatArea({{3}}))
66+function getDmg_Brush(cid, level, maglevel)
67+
68+ return -min, -max
69+end
70+setCombatCallback(combat6_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
71+
72+-- Areas/Combat for 700ms
73+local combat7_Brush_2 = createCombatObject()
74+setCombatParam(combat7_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
75+setCombatParam(combat7_Brush_2, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
76+setCombatArea(combat7_Brush_2,createCombatArea({{0, 0, 1, 0, 0},
77+{0, 1, 1, 1, 0},
78+{1, 1, 2, 1, 1},
79+{0, 1, 1, 1, 0},
80+{0, 0, 1, 0, 0}}))
81+function getDmg_Brush_2(cid, level, maglevel)
82+
83+ return -min, -max
84+end
85+setCombatCallback(combat7_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
86+
87+-- =============== CORE FUNCTIONS ===============
88+local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
89+ if (isCreature(cid)) then
90+ doCombat(cid, c, var)
91+ if (dirList ~= nil) then -- Emit distance effects
92+ local i = 2;
93+ while (i < #dirList) do
94+ doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
95+ i = i + 2
96+ end
97+ end
98+ end
99+end
100+function checkSpell25(cid)
101+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
102+ local CHECK_SLOT_01 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_04)
103+ local CHECK_SLOT_02 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_05)
104+ local CHECK_SLOT_03 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_06)
105+ SPELL_ID = 25
106+
107+ if GUN_ID > 0 then
108+ if CHECK_SLOT_01 == SPELL_ID then
109+ cid:sendCancelMessage("@SpellCooldown 01")
110+ return true
111+ elseif CHECK_SLOT_02 == SPELL_ID then
112+ cid:sendCancelMessage("@SpellCooldown 02")
113+ return true
114+ elseif CHECK_SLOT_03 == SPELL_ID then
115+ cid:sendCancelMessage("@SpellCooldown 03")
116+ return true
117+ else
118+ return false
119+ end
120+ else
121+ return false
122+ end
123+ return true
124+end
125+function onCastSpell(cid, var)
126+ if checkSpell25(cid) or cid:getGroup():getAccess() then
127+ local startPos = getCreaturePosition(cid)
128+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
129+ local starGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_03)
130+ local levelGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_07)
131+ min = onDamage(cid, GUN_ID, levelGun, starGun, "SKILL_MIN", SPELL_ID)
132+ max = min
133+ addEvent(RunPart,100,combat1_Brush_2,cid.uid,var)
134+ RunPart(combat0_Brush,cid,var)
135+ addEvent(RunPart,300,combat3_Brush,cid.uid,var)
136+ addEvent(RunPart,400,combat4_Brush_2,cid.uid,var)
137+ addEvent(RunPart,600,combat6_Brush,cid.uid,var)
138+ addEvent(RunPart,700,combat7_Brush_2,cid.uid,var)
139+ return true
140+ else
141+ cid:getPosition():sendMagicEffect(03)
142+ return false
143+ end
144+end
A data/spells/scripts/curse_of_soul_draining.lua +165-0 View file
@@ -0,0 +1,165 @@
1+SPELL_ID = 00
2+local min = 0
3+local max = 0
4+
5+-- =============== COMBAT VARS ===============
6+-- Areas/Combat for 1000ms
7+local combat10_Brush_2 = createCombatObject()
8+setCombatParam(combat10_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONAREA)
9+setCombatParam(combat10_Brush_2, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
10+setCombatArea(combat10_Brush_2,createCombatArea({{1, 0, 1},
11+{0, 2, 0},
12+{1, 0, 1}}))
13+function getDmg_Brush_2(cid, level, maglevel)
14+
15+ return -min, -max
16+end
17+setCombatCallback(combat10_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
18+
19+-- Areas/Combat for 900ms
20+local combat9_Brush = createCombatObject()
21+setCombatParam(combat9_Brush, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
22+setCombatParam(combat9_Brush, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_DEATH)
23+setCombatParam(combat9_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
24+setCombatArea(combat9_Brush,createCombatArea({{3}}))
25+function getDmg_Brush(cid, level, maglevel)
26+
27+ return -min, -max
28+end
29+setCombatCallback(combat9_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
30+
31+-- Areas/Combat for 700ms
32+local combat7_Brush_2 = createCombatObject()
33+setCombatParam(combat7_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONAREA)
34+setCombatParam(combat7_Brush_2, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
35+setCombatArea(combat7_Brush_2,createCombatArea({{0, 1, 0},
36+{1, 2, 1},
37+{0, 1, 0}}))
38+function getDmg_Brush_2(cid, level, maglevel)
39+
40+ return -min, -max
41+end
42+setCombatCallback(combat7_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
43+
44+-- Areas/Combat for 600ms
45+local combat6_Brush = createCombatObject()
46+setCombatParam(combat6_Brush, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
47+setCombatParam(combat6_Brush, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_DEATH)
48+setCombatParam(combat6_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
49+setCombatArea(combat6_Brush,createCombatArea({{3}}))
50+function getDmg_Brush(cid, level, maglevel)
51+
52+ return -min, -max
53+end
54+setCombatCallback(combat6_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
55+
56+-- Areas/Combat for 400ms
57+local combat4_Brush_2 = createCombatObject()
58+setCombatParam(combat4_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONAREA)
59+setCombatParam(combat4_Brush_2, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
60+setCombatArea(combat4_Brush_2,createCombatArea({{1, 0, 1},
61+{0, 2, 0},
62+{1, 0, 1}}))
63+function getDmg_Brush_2(cid, level, maglevel)
64+
65+ return -min, -max
66+end
67+setCombatCallback(combat4_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
68+
69+-- Areas/Combat for 300ms
70+local combat3_Brush = createCombatObject()
71+setCombatParam(combat3_Brush, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
72+setCombatParam(combat3_Brush, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_DEATH)
73+setCombatParam(combat3_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
74+setCombatArea(combat3_Brush,createCombatArea({{3}}))
75+function getDmg_Brush(cid, level, maglevel)
76+
77+ return -min, -max
78+end
79+setCombatCallback(combat3_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
80+
81+-- Areas/Combat for 100ms
82+local combat1_Brush_2 = createCombatObject()
83+setCombatParam(combat1_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONAREA)
84+setCombatParam(combat1_Brush_2, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
85+setCombatArea(combat1_Brush_2,createCombatArea({{0, 1, 0},
86+{1, 2, 1},
87+{0, 1, 0}}))
88+function getDmg_Brush_2(cid, level, maglevel)
89+
90+ return -min, -max
91+end
92+setCombatCallback(combat1_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
93+
94+-- Areas/Combat for 0ms
95+local combat0_Brush = createCombatObject()
96+setCombatParam(combat0_Brush, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
97+setCombatParam(combat0_Brush, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_DEATH)
98+setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
99+setCombatArea(combat0_Brush,createCombatArea({{3}}))
100+function getDmg_Brush(cid, level, maglevel)
101+
102+ return -min, -max
103+end
104+setCombatCallback(combat0_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
105+
106+-- =============== CORE FUNCTIONS ===============
107+local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
108+ if (isCreature(cid)) then
109+ doCombat(cid, c, var)
110+ if (dirList ~= nil) then -- Emit distance effects
111+ local i = 2;
112+ while (i < #dirList) do
113+ doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
114+ i = i + 2
115+ end
116+ end
117+ end
118+end
119+function checkSpell21(cid)
120+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
121+ local CHECK_SLOT_01 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_04)
122+ local CHECK_SLOT_02 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_05)
123+ local CHECK_SLOT_03 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_06)
124+ SPELL_ID = 21
125+
126+ if GUN_ID > 0 then
127+ if CHECK_SLOT_01 == SPELL_ID then
128+ cid:sendCancelMessage("@SpellCooldown 01")
129+ return true
130+ elseif CHECK_SLOT_02 == SPELL_ID then
131+ cid:sendCancelMessage("@SpellCooldown 02")
132+ return true
133+ elseif CHECK_SLOT_03 == SPELL_ID then
134+ cid:sendCancelMessage("@SpellCooldown 03")
135+ return true
136+ else
137+ return false
138+ end
139+ else
140+ return false
141+ end
142+ return true
143+end
144+function onCastSpell(cid, var)
145+ if checkSpell21(cid) or cid:getGroup():getAccess() then
146+ local startPos = getCreaturePosition(cid)
147+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
148+ local starGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_03)
149+ local levelGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_07)
150+ min = onDamage(cid, GUN_ID, levelGun, starGun, "SKILL_MIN", SPELL_ID)
151+ max = min
152+ addEvent(RunPart,1000,combat10_Brush_2,cid.uid,var)
153+ addEvent(RunPart,900,combat9_Brush,cid.uid,var)
154+ addEvent(RunPart,700,combat7_Brush_2,cid.uid,var)
155+ addEvent(RunPart,600,combat6_Brush,cid.uid,var)
156+ addEvent(RunPart,400,combat4_Brush_2,cid.uid,var)
157+ addEvent(RunPart,300,combat3_Brush,cid.uid,var)
158+ addEvent(RunPart,100,combat1_Brush_2,cid.uid,var)
159+ RunPart(combat0_Brush,cid,var)
160+ return true
161+ else
162+ cid:getPosition():sendMagicEffect(03)
163+ return false
164+ end
165+end
A data/spells/scripts/cyclone_beast.lua +222-0 View file
@@ -0,0 +1,222 @@
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_EXPLOSIONAREA)
9+setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
10+setCombatArea(combat0_Brush,createCombatArea({{1},
11+{0},
12+{2}}))
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 100ms
20+local combat1_Brush = createCombatObject()
21+setCombatParam(combat1_Brush, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONAREA)
22+setCombatParam(combat1_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
23+setCombatArea(combat1_Brush,createCombatArea({{1, 0},
24+{0, 2}}))
25+function getDmg_Brush(cid, level, maglevel)
26+
27+ return -min, -max
28+end
29+setCombatCallback(combat1_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
30+
31+-- Areas/Combat for 200ms
32+local combat2_Brush = createCombatObject()
33+setCombatParam(combat2_Brush, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONAREA)
34+setCombatParam(combat2_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
35+setCombatArea(combat2_Brush,createCombatArea({{1, 0, 2}}))
36+function getDmg_Brush(cid, level, maglevel)
37+
38+ return -min, -max
39+end
40+setCombatCallback(combat2_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
41+
42+-- Areas/Combat for 300ms
43+local combat3_Brush = createCombatObject()
44+setCombatParam(combat3_Brush, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONAREA)
45+setCombatParam(combat3_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
46+setCombatArea(combat3_Brush,createCombatArea({{0, 2},
47+{1, 0}}))
48+function getDmg_Brush(cid, level, maglevel)
49+
50+ return -min, -max
51+end
52+setCombatCallback(combat3_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
53+
54+-- Areas/Combat for 400ms
55+local combat4_Brush = createCombatObject()
56+setCombatParam(combat4_Brush, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONAREA)
57+setCombatParam(combat4_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
58+setCombatArea(combat4_Brush,createCombatArea({{2},
59+{0},
60+{1}}))
61+function getDmg_Brush(cid, level, maglevel)
62+
63+ return -min, -max
64+end
65+setCombatCallback(combat4_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
66+
67+-- Areas/Combat for 500ms
68+local combat5_Brush = createCombatObject()
69+setCombatParam(combat5_Brush, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONAREA)
70+setCombatParam(combat5_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
71+setCombatArea(combat5_Brush,createCombatArea({{2, 0},
72+{0, 1}}))
73+function getDmg_Brush(cid, level, maglevel)
74+
75+ return -min, -max
76+end
77+setCombatCallback(combat5_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
78+
79+-- Areas/Combat for 600ms
80+local combat6_Brush = createCombatObject()
81+setCombatParam(combat6_Brush, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONAREA)
82+setCombatParam(combat6_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
83+setCombatArea(combat6_Brush,createCombatArea({{2, 0, 1}}))
84+function getDmg_Brush(cid, level, maglevel)
85+
86+ return -min, -max
87+end
88+setCombatCallback(combat6_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
89+
90+-- Areas/Combat for 700ms
91+local combat7_Brush = createCombatObject()
92+setCombatParam(combat7_Brush, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONAREA)
93+setCombatParam(combat7_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
94+setCombatArea(combat7_Brush,createCombatArea({{0, 1},
95+{2, 0}}))
96+function getDmg_Brush(cid, level, maglevel)
97+
98+ return -min, -max
99+end
100+setCombatCallback(combat7_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
101+
102+-- Areas/Combat for 800ms
103+local combat8_Brush = createCombatObject()
104+setCombatParam(combat8_Brush, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONAREA)
105+setCombatParam(combat8_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
106+setCombatArea(combat8_Brush,createCombatArea({{1},
107+{2}}))
108+function getDmg_Brush(cid, level, maglevel)
109+
110+ return -min, -max
111+end
112+setCombatCallback(combat8_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
113+
114+-- Areas/Combat for 900ms
115+local combat9_Brush = createCombatObject()
116+setCombatParam(combat9_Brush, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONAREA)
117+setCombatParam(combat9_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
118+setCombatArea(combat9_Brush,createCombatArea({{1, 2}}))
119+function getDmg_Brush(cid, level, maglevel)
120+
121+ return -min, -max
122+end
123+setCombatCallback(combat9_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
124+
125+-- Areas/Combat for 1000ms
126+local combat10_Brush = createCombatObject()
127+setCombatParam(combat10_Brush, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONAREA)
128+setCombatParam(combat10_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
129+setCombatArea(combat10_Brush,createCombatArea({{2},
130+{1}}))
131+function getDmg_Brush(cid, level, maglevel)
132+
133+ return -min, -max
134+end
135+setCombatCallback(combat10_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
136+
137+-- Areas/Combat for 1100ms
138+local combat11_Brush = createCombatObject()
139+setCombatParam(combat11_Brush, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONAREA)
140+setCombatParam(combat11_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
141+setCombatArea(combat11_Brush,createCombatArea({{2, 1}}))
142+function getDmg_Brush(cid, level, maglevel)
143+
144+ return -min, -max
145+end
146+setCombatCallback(combat11_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
147+
148+-- Areas/Combat for 1200ms
149+local combat12_Brush = createCombatObject()
150+setCombatParam(combat12_Brush, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONAREA)
151+setCombatParam(combat12_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
152+setCombatArea(combat12_Brush,createCombatArea({{3}}))
153+function getDmg_Brush(cid, level, maglevel)
154+
155+ return -min, -max
156+end
157+setCombatCallback(combat12_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
158+
159+-- =============== CORE FUNCTIONS ===============
160+local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
161+ if (isCreature(cid)) then
162+ doCombat(cid, c, var)
163+ if (dirList ~= nil) then -- Emit distance effects
164+ local i = 2;
165+ while (i < #dirList) do
166+ doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
167+ i = i + 2
168+ end
169+ end
170+ end
171+end
172+function checkSpell37(cid)
173+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
174+ local CHECK_SLOT_01 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_04)
175+ local CHECK_SLOT_02 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_05)
176+ local CHECK_SLOT_03 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_06)
177+ SPELL_ID = 37
178+
179+ if GUN_ID > 0 then
180+ if CHECK_SLOT_01 == SPELL_ID then
181+ cid:sendCancelMessage("@SpellCooldown 01")
182+ return true
183+ elseif CHECK_SLOT_02 == SPELL_ID then
184+ cid:sendCancelMessage("@SpellCooldown 02")
185+ return true
186+ elseif CHECK_SLOT_03 == SPELL_ID then
187+ cid:sendCancelMessage("@SpellCooldown 03")
188+ return true
189+ else
190+ return false
191+ end
192+ else
193+ return false
194+ end
195+end
196+function onCastSpell(cid, var)
197+ if checkSpell37(cid) or cid:getGroup():getAccess() then
198+ local startPos = getCreaturePosition(cid)
199+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
200+ local starGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_03)
201+ local levelGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_07)
202+ min = onDamage(cid, GUN_ID, levelGun, starGun, "SKILL_MIN", SPELL_ID)
203+ max = min
204+ RunPart(combat0_Brush,cid,var)
205+ addEvent(RunPart,100,combat1_Brush,cid.uid,var)
206+ addEvent(RunPart,200,combat2_Brush,cid.uid,var)
207+ addEvent(RunPart,300,combat3_Brush,cid.uid,var)
208+ addEvent(RunPart,400,combat4_Brush,cid.uid,var)
209+ addEvent(RunPart,500,combat5_Brush,cid.uid,var)
210+ addEvent(RunPart,600,combat6_Brush,cid.uid,var)
211+ addEvent(RunPart,700,combat7_Brush,cid.uid,var)
212+ addEvent(RunPart,800,combat8_Brush,cid.uid,var)
213+ addEvent(RunPart,900,combat9_Brush,cid.uid,var)
214+ addEvent(RunPart,1000,combat10_Brush,cid.uid,var)
215+ addEvent(RunPart,1100,combat11_Brush,cid.uid,var)
216+ addEvent(RunPart,1200,combat12_Brush,cid.uid,var)
217+ return true
218+ else
219+ cid:getPosition():sendMagicEffect(03)
220+ return false
221+ end
222+end
A data/spells/scripts/death_bleeding.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 100ms
7+local combat1_Brush = createCombatObject()
8+setCombatParam(combat1_Brush, COMBAT_PARAM_EFFECT, CONST_ME_POFF)
9+setCombatParam(combat1_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
10+setCombatArea(combat1_Brush,createCombatArea({{1, 0, 1},
11+{0, 2, 0},
12+{1, 0, 1}}))
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_POFF)
22+setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
23+setCombatArea(combat0_Brush,createCombatArea({{1, 0, 0, 0, 1},
24+{0, 0, 0, 0, 0},
25+{0, 0, 2, 0, 0},
26+{0, 0, 0, 0, 0},
27+{1, 0, 0, 0, 1}}))
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_POFF)
37+setCombatParam(combat2_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
38+setCombatArea(combat2_Brush,createCombatArea({{3}}))
39+function getDmg_Brush(cid, level, maglevel)
40+
41+ return -min, -max
42+end
43+setCombatCallback(combat2_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
44+
45+-- Areas/Combat for 400ms
46+local combat4_Brush_2 = createCombatObject()
47+setCombatParam(combat4_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONAREA)
48+setCombatParam(combat4_Brush_2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
49+setCombatArea(combat4_Brush_2,createCombatArea({{1, 1, 1},
50+{1, 3, 1},
51+{1, 1, 1}}))
52+function getDmg_Brush_2(cid, level, maglevel)
53+
54+ return -min, -max
55+end
56+setCombatCallback(combat4_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
57+
58+-- =============== CORE FUNCTIONS ===============
59+local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
60+ if (isCreature(cid)) then
61+ doCombat(cid, c, var)
62+ if (dirList ~= nil) then -- Emit distance effects
63+ local i = 2;
64+ while (i < #dirList) do
65+ doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
66+ i = i + 2
67+ end
68+ end
69+ end
70+end
71+function checkSpell36(cid)
72+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
73+ local CHECK_SLOT_01 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_04)
74+ local CHECK_SLOT_02 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_05)
75+ local CHECK_SLOT_03 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_06)
76+ SPELL_ID = 36
77+
78+ if GUN_ID > 0 then
79+ if CHECK_SLOT_01 == SPELL_ID then
80+ cid:sendCancelMessage("@SpellCooldown 01")
81+ return true
82+ elseif CHECK_SLOT_02 == SPELL_ID then
83+ cid:sendCancelMessage("@SpellCooldown 02")
84+ return true
85+ elseif CHECK_SLOT_03 == SPELL_ID then
86+ cid:sendCancelMessage("@SpellCooldown 03")
87+ return true
88+ else
89+ return false
90+ end
91+ else
92+ return false
93+ end
94+end
95+function onCastSpell(cid, var)
96+ if checkSpell36(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+ addEvent(RunPart,100,combat1_Brush,cid.uid,var)
104+ RunPart(combat0_Brush,cid,var)
105+ addEvent(RunPart,200,combat2_Brush,cid.uid,var)
106+ addEvent(RunPart,400,combat4_Brush_2,cid.uid,var)
107+ return true
108+ else
109+ cid:getPosition():sendMagicEffect(03)
110+ return false
111+ end
112+end
A data/spells/scripts/death_salvo.lua +88-0 View file
@@ -0,0 +1,88 @@
1+SPELL_ID = 00
2+local min = 0
3+local max = 0
4+
5+-- =============== COMBAT VARS ===============
6+-- Areas/Combat for 400ms
7+local combat4_Brush = createCombatObject()
8+setCombatParam(combat4_Brush, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
9+setCombatParam(combat4_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
10+setCombatArea(combat4_Brush,createCombatArea({{0, 0, 1, 0, 0},
11+{0, 1, 1, 1, 0},
12+{1, 1, 3, 1, 1},
13+{0, 1, 1, 1, 0},
14+{0, 0, 1, 0, 0}}))
15+function getDmg_Brush(cid, level, maglevel)
16+
17+ return -min, -max
18+end
19+setCombatCallback(combat4_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
20+
21+-- Areas/Combat for 0ms
22+local combat0_Brush_2 = createCombatObject()
23+setCombatParam(combat0_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_YALAHARIGHOST)
24+setCombatParam(combat0_Brush_2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
25+setCombatArea(combat0_Brush_2,createCombatArea({{0, 0, 0, 1, 0, 0, 0},
26+{0, 0, 0, 0, 0, 0, 0},
27+{0, 0, 0, 0, 0, 0, 0},
28+{1, 0, 0, 2, 0, 0, 1},
29+{0, 0, 0, 0, 0, 0, 0},
30+{0, 0, 0, 0, 0, 0, 0},
31+{0, 0, 0, 1, 0, 0, 0}}))
32+
33+local dfcombat0_Brush_2 = {CONST_ANI_SUDDENDEATH,0,3,3,0,-3,0,0,-3}
34+
35+-- =============== CORE FUNCTIONS ===============
36+local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
37+ if (isCreature(cid)) then
38+ doCombat(cid, c, var)
39+ if (dirList ~= nil) then -- Emit distance effects
40+ local i = 2;
41+ while (i < #dirList) do
42+ doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
43+ i = i + 2
44+ end
45+ end
46+ end
47+end
48+function checkSpell30(cid)
49+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
50+ local CHECK_SLOT_01 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_04)
51+ local CHECK_SLOT_02 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_05)
52+ local CHECK_SLOT_03 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_06)
53+ SPELL_ID = 30
54+
55+ if GUN_ID > 0 then
56+ if CHECK_SLOT_01 == SPELL_ID then
57+ cid:sendCancelMessage("@SpellCooldown 01")
58+ return true
59+ elseif CHECK_SLOT_02 == SPELL_ID then
60+ cid:sendCancelMessage("@SpellCooldown 02")
61+ return true
62+ elseif CHECK_SLOT_03 == SPELL_ID then
63+ cid:sendCancelMessage("@SpellCooldown 03")
64+ return true
65+ else
66+ return false
67+ end
68+ else
69+ return false
70+ end
71+ return true
72+end
73+function onCastSpell(cid, var)
74+ if checkSpell30(cid) or cid:getGroup():getAccess() then
75+ local startPos = getCreaturePosition(cid)
76+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
77+ local starGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_03)
78+ local levelGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_07)
79+ min = onDamage(cid, GUN_ID, levelGun, starGun, "SKILL_MIN", SPELL_ID)
80+ max = min
81+ addEvent(RunPart,400,combat4_Brush,cid.uid,var)
82+ RunPart(combat0_Brush_2,cid,var,dfcombat0_Brush_2,startPos)
83+ return true
84+ else
85+ cid:getPosition():sendMagicEffect(03)
86+ return false
87+ end
88+end
A data/spells/scripts/death_shock.lua +107-0 View file
@@ -0,0 +1,107 @@
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_MORTAREA)
9+setCombatParam(combat1_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
10+setCombatArea(combat1_Brush,createCombatArea({{2, 1}}))
11+function getDmg_Brush(cid, level, maglevel)
12+
13+ return -min, -max
14+end
15+setCombatCallback(combat1_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
16+
17+-- Areas/Combat for 0ms
18+local combat0_Brush = createCombatObject()
19+setCombatParam(combat0_Brush, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
20+setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
21+setCombatArea(combat0_Brush,createCombatArea({{2},
22+{1}}))
23+function getDmg_Brush(cid, level, maglevel)
24+
25+ return -min, -max
26+end
27+setCombatCallback(combat0_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
28+
29+-- Areas/Combat for 200ms
30+local combat2_Brush = createCombatObject()
31+setCombatParam(combat2_Brush, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
32+setCombatParam(combat2_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
33+setCombatArea(combat2_Brush,createCombatArea({{1},
34+{2}}))
35+function getDmg_Brush(cid, level, maglevel)
36+
37+ return -min, -max
38+end
39+setCombatCallback(combat2_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
40+
41+-- Areas/Combat for 300ms
42+local combat3_Brush = createCombatObject()
43+setCombatParam(combat3_Brush, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
44+setCombatParam(combat3_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
45+setCombatArea(combat3_Brush,createCombatArea({{1, 2}}))
46+function getDmg_Brush(cid, level, maglevel)
47+
48+ return -min, -max
49+end
50+setCombatCallback(combat3_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
51+
52+-- =============== CORE FUNCTIONS ===============
53+local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
54+ if (isCreature(cid)) then
55+ doCombat(cid, c, var)
56+ if (dirList ~= nil) then -- Emit distance effects
57+ local i = 2;
58+ while (i < #dirList) do
59+ doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
60+ i = i + 2
61+ end
62+ end
63+ end
64+end
65+function checkSpell29(cid)
66+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
67+ local CHECK_SLOT_01 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_04)
68+ local CHECK_SLOT_02 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_05)
69+ local CHECK_SLOT_03 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_06)
70+ SPELL_ID = 29
71+
72+ if GUN_ID > 0 then
73+ if CHECK_SLOT_01 == SPELL_ID then
74+ cid:sendCancelMessage("@SpellCooldown 01")
75+ return true
76+ elseif CHECK_SLOT_02 == SPELL_ID then
77+ cid:sendCancelMessage("@SpellCooldown 02")
78+ return true
79+ elseif CHECK_SLOT_03 == SPELL_ID then
80+ cid:sendCancelMessage("@SpellCooldown 03")
81+ return true
82+ else
83+ return false
84+ end
85+ else
86+ return false
87+ end
88+ return true
89+end
90+function onCastSpell(cid, var)
91+ if checkSpell29(cid) or cid:getGroup():getAccess() then
92+ local startPos = getCreaturePosition(cid)
93+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
94+ local starGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_03)
95+ local levelGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_07)
96+ min = onDamage(cid, GUN_ID, levelGun, starGun, "SKILL_MIN", SPELL_ID)
97+ max = min
98+ addEvent(RunPart,100,combat1_Brush,cid.uid,var)
99+ RunPart(combat0_Brush,cid,var)
100+ addEvent(RunPart,200,combat2_Brush,cid.uid,var)
101+ addEvent(RunPart,300,combat3_Brush,cid.uid,var)
102+ return true
103+ else
104+ cid:getPosition():sendMagicEffect(03)
105+ return false
106+ end
107+end
A data/spells/scripts/decay_of_knowledge.lua +75-0 View file
@@ -0,0 +1,75 @@
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_HITBYFIRE)
9+setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
10+setCombatArea(combat0_Brush,createCombatArea({{0, 0, 0, 1, 0, 0, 0},
11+{0, 0, 1, 1, 1, 0, 0},
12+{0, 1, 1, 1, 1, 1, 0},
13+{1, 1, 1, 2, 1, 1, 1},
14+{0, 1, 1, 1, 1, 1, 0},
15+{0, 0, 1, 1, 1, 0, 0},
16+{0, 0, 0, 1, 0, 0, 0}}))
17+function getDmg_Brush(cid, level, maglevel)
18+
19+ return -min, -max
20+end
21+setCombatCallback(combat0_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
22+
23+-- =============== CORE FUNCTIONS ===============
24+local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
25+ if (isCreature(cid)) then
26+ doCombat(cid, c, var)
27+ if (dirList ~= nil) then -- Emit distance effects
28+ local i = 2;
29+ while (i < #dirList) do
30+ doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
31+ i = i + 2
32+ end
33+ end
34+ end
35+end
36+function checkSpell17(cid)
37+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
38+ local CHECK_SLOT_01 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_04)
39+ local CHECK_SLOT_02 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_05)
40+ local CHECK_SLOT_03 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_06)
41+ SPELL_ID = 17
42+
43+ if GUN_ID > 0 then
44+ if CHECK_SLOT_01 == SPELL_ID then
45+ cid:sendCancelMessage("@SpellCooldown 01")
46+ return true
47+ elseif CHECK_SLOT_02 == SPELL_ID then
48+ cid:sendCancelMessage("@SpellCooldown 02")
49+ return true
50+ elseif CHECK_SLOT_03 == SPELL_ID then
51+ cid:sendCancelMessage("@SpellCooldown 03")
52+ return true
53+ else
54+ return false
55+ end
56+ else
57+ return false
58+ end
59+ return true
60+end
61+function onCastSpell(cid, var)
62+ if checkSpell17(cid) or cid:getGroup():getAccess() then
63+ local startPos = getCreaturePosition(cid)
64+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
65+ local starGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_03)
66+ local levelGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_07)
67+ min = onDamage(cid, GUN_ID, levelGun, starGun, "SKILL_MIN", SPELL_ID)
68+ max = min
69+ RunPart(combat0_Brush,cid,var)
70+ return true
71+ else
72+ cid:getPosition():sendMagicEffect(03)
73+ return false
74+ end
75+end
A data/spells/scripts/deflection_of_venom.lua +234-0 View file
@@ -0,0 +1,234 @@
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_SMALLPLANTS)
9+setCombatParam(combat1_Brush, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
10+setCombatArea(combat1_Brush,createCombatArea({{0, 1},
11+{0, 0},
12+{0, 0},
13+{2, 0}}))
14+function getDmg_Brush(cid, level, maglevel)
15+
16+ return -min, -max
17+end
18+setCombatCallback(combat1_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
19+local dfcombat1_Brush = {CONST_ANI_EARTH,1,-3}
20+
21+-- Areas/Combat for 0ms
22+local combat0_Brush = createCombatObject()
23+setCombatParam(combat0_Brush, COMBAT_PARAM_EFFECT, CONST_ME_SMALLPLANTS)
24+setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
25+setCombatArea(combat0_Brush,createCombatArea({{2, 0, 0},
26+{0, 0, 0},
27+{0, 0, 1}}))
28+function getDmg_Brush(cid, level, maglevel)
29+
30+ return -min, -max
31+end
32+setCombatCallback(combat0_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
33+local dfcombat0_Brush = {CONST_ANI_EARTH,2,2}
34+
35+-- Areas/Combat for 200ms
36+local combat2_Brush = createCombatObject()
37+setCombatParam(combat2_Brush, COMBAT_PARAM_EFFECT, CONST_ME_SMALLPLANTS)
38+setCombatParam(combat2_Brush, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
39+setCombatArea(combat2_Brush,createCombatArea({{0, 0, 0, 2},
40+{1, 0, 0, 0}}))
41+function getDmg_Brush(cid, level, maglevel)
42+
43+ return -min, -max
44+end
45+setCombatCallback(combat2_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
46+local dfcombat2_Brush = {CONST_ANI_EARTH,-3,1}
47+
48+-- Areas/Combat for 300ms
49+local combat3_Brush = createCombatObject()
50+setCombatParam(combat3_Brush, COMBAT_PARAM_EFFECT, CONST_ME_SMALLPLANTS)
51+setCombatParam(combat3_Brush, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
52+setCombatArea(combat3_Brush,createCombatArea({{1, 0, 0},
53+{0, 0, 2}}))
54+function getDmg_Brush(cid, level, maglevel)
55+
56+ return -min, -max
57+end
58+setCombatCallback(combat3_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
59+local dfcombat3_Brush = {CONST_ANI_EARTH,-2,-1}
60+
61+-- Areas/Combat for 400ms
62+local combat4_Brush = createCombatObject()
63+setCombatParam(combat4_Brush, COMBAT_PARAM_EFFECT, CONST_ME_SMALLPLANTS)
64+setCombatParam(combat4_Brush, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
65+setCombatArea(combat4_Brush,createCombatArea({{0, 0, 0, 1},
66+{2, 0, 0, 0}}))
67+function getDmg_Brush(cid, level, maglevel)
68+
69+ return -min, -max
70+end
71+setCombatCallback(combat4_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
72+local dfcombat4_Brush = {CONST_ANI_EARTH,3,-1}
73+
74+-- Areas/Combat for 500ms
75+local combat5_Brush = createCombatObject()
76+setCombatParam(combat5_Brush, COMBAT_PARAM_EFFECT, CONST_ME_SMALLPLANTS)
77+setCombatParam(combat5_Brush, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
78+setCombatArea(combat5_Brush,createCombatArea({{0, 2},
79+{0, 0},
80+{0, 0},
81+{1, 0}}))
82+function getDmg_Brush(cid, level, maglevel)
83+
84+ return -min, -max
85+end
86+setCombatCallback(combat5_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
87+local dfcombat5_Brush = {CONST_ANI_EARTH,-1,3}
88+
89+-- Areas/Combat for 700ms
90+local combat7_Brush_2 = createCombatObject()
91+setCombatParam(combat7_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
92+setCombatParam(combat7_Brush_2, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
93+setCombatArea(combat7_Brush_2,createCombatArea({{2, 0, 0, 0},
94+{0, 1, 1, 1},
95+{0, 1, 0, 1},
96+{0, 1, 1, 1}}))
97+function getDmg_Brush_2(cid, level, maglevel)
98+
99+ return -min, -max
100+end
101+setCombatCallback(combat7_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
102+
103+-- Areas/Combat for 800ms
104+local combat8_Brush_2 = createCombatObject()
105+setCombatParam(combat8_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
106+setCombatParam(combat8_Brush_2, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
107+setCombatArea(combat8_Brush_2,createCombatArea({{1, 1, 1},
108+{1, 0, 1},
109+{1, 1, 1},
110+{0, 0, 0},
111+{2, 0, 0}}))
112+function getDmg_Brush_2(cid, level, maglevel)
113+
114+ return -min, -max
115+end
116+setCombatCallback(combat8_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
117+
118+-- Areas/Combat for 900ms
119+local combat9_Brush_2 = createCombatObject()
120+setCombatParam(combat9_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
121+setCombatParam(combat9_Brush_2, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
122+setCombatArea(combat9_Brush_2,createCombatArea({{1, 1, 1, 0, 2},
123+{1, 0, 1, 0, 0},
124+{1, 1, 1, 0, 0}}))
125+function getDmg_Brush_2(cid, level, maglevel)
126+
127+ return -min, -max
128+end
129+setCombatCallback(combat9_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
130+
131+-- Areas/Combat for 1000ms
132+local combat10_Brush_2 = createCombatObject()
133+setCombatParam(combat10_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
134+setCombatParam(combat10_Brush_2, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
135+setCombatArea(combat10_Brush_2,createCombatArea({{1, 1, 1, 0},
136+{1, 0, 1, 0},
137+{1, 1, 1, 2}}))
138+function getDmg_Brush_2(cid, level, maglevel)
139+
140+ return -min, -max
141+end
142+setCombatCallback(combat10_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
143+
144+-- Areas/Combat for 1100ms
145+local combat11_Brush_2 = createCombatObject()
146+setCombatParam(combat11_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
147+setCombatParam(combat11_Brush_2, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
148+setCombatArea(combat11_Brush_2,createCombatArea({{0, 0, 1, 1, 1},
149+{0, 0, 1, 0, 1},
150+{2, 0, 1, 1, 1}}))
151+function getDmg_Brush_2(cid, level, maglevel)
152+
153+ return -min, -max
154+end
155+setCombatCallback(combat11_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
156+
157+-- Areas/Combat for 1200ms
158+local combat12_Brush_2 = createCombatObject()
159+setCombatParam(combat12_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
160+setCombatParam(combat12_Brush_2, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
161+setCombatArea(combat12_Brush_2,createCombatArea({{0, 0, 2},
162+{0, 0, 0},
163+{1, 1, 1},
164+{1, 0, 1},
165+{1, 1, 1}}))
166+function getDmg_Brush_2(cid, level, maglevel)
167+
168+ return -min, -max
169+end
170+setCombatCallback(combat12_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
171+
172+-- =============== CORE FUNCTIONS ===============
173+local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
174+ if (isCreature(cid)) then
175+ doCombat(cid, c, var)
176+ if (dirList ~= nil) then -- Emit distance effects
177+ local i = 2;
178+ while (i < #dirList) do
179+ doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
180+ i = i + 2
181+ end
182+ end
183+ end
184+end
185+function checkSpell57(cid)
186+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
187+ local CHECK_SLOT_01 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_04)
188+ local CHECK_SLOT_02 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_05)
189+ local CHECK_SLOT_03 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_06)
190+ SPELL_ID = 57
191+
192+ if GUN_ID > 0 then
193+ if CHECK_SLOT_01 == SPELL_ID then
194+ cid:sendCancelMessage("@SpellCooldown 01")
195+ return true
196+ elseif CHECK_SLOT_02 == SPELL_ID then
197+ cid:sendCancelMessage("@SpellCooldown 02")
198+ return true
199+ elseif CHECK_SLOT_03 == SPELL_ID then
200+ cid:sendCancelMessage("@SpellCooldown 03")
201+ return true
202+ else
203+ return false
204+ end
205+ else
206+ return false
207+ end
208+end
209+function onCastSpell(cid, var)
210+ if checkSpell57(cid) or cid:getGroup():getAccess() then
211+ local startPos = getCreaturePosition(cid)
212+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
213+ local starGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_03)
214+ local levelGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_07)
215+ min = onDamage(cid, GUN_ID, levelGun, starGun, "SKILL_MIN", SPELL_ID)
216+ max = min
217+ addEvent(RunPart,100,combat1_Brush,cid.uid,var,dfcombat1_Brush,startPos)
218+ RunPart(combat0_Brush,cid,var,dfcombat0_Brush,startPos)
219+ addEvent(RunPart,200,combat2_Brush,cid.uid,var,dfcombat2_Brush,startPos)
220+ addEvent(RunPart,300,combat3_Brush,cid.uid,var,dfcombat3_Brush,startPos)
221+ addEvent(RunPart,400,combat4_Brush,cid.uid,var,dfcombat4_Brush,startPos)
222+ addEvent(RunPart,500,combat5_Brush,cid.uid,var,dfcombat5_Brush,startPos)
223+ addEvent(RunPart,700,combat7_Brush_2,cid.uid,var)
224+ addEvent(RunPart,800,combat8_Brush_2,cid.uid,var)
225+ addEvent(RunPart,900,combat9_Brush_2,cid.uid,var)
226+ addEvent(RunPart,1000,combat10_Brush_2,cid.uid,var)
227+ addEvent(RunPart,1100,combat11_Brush_2,cid.uid,var)
228+ addEvent(RunPart,1200,combat12_Brush_2,cid.uid,var)
229+ return true
230+ else
231+ cid:getPosition():sendMagicEffect(03)
232+ return false
233+ end
234+end
A data/spells/scripts/delusion_wave.lua +171-0 View file
@@ -0,0 +1,171 @@
1+SPELL_ID = 00
2+local min = 0
3+local max = 0
4+
5+-- =============== COMBAT VARS ===============
6+-- Areas/Combat for 500ms
7+local combat5_Brush = createCombatObject()
8+setCombatParam(combat5_Brush, COMBAT_PARAM_EFFECT, CONST_ME_ICEAREA)
9+setCombatParam(combat5_Brush, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
10+setCombatArea(combat5_Brush,createCombatArea({{1, 0},
11+{2, 0},
12+{0, 1}}))
13+function getDmg_Brush(cid, level, maglevel)
14+
15+ return -min, -max
16+end
17+setCombatCallback(combat5_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
18+
19+-- Areas/Combat for 400ms
20+local combat4_Brush = createCombatObject()
21+setCombatParam(combat4_Brush, COMBAT_PARAM_EFFECT, CONST_ME_ICEAREA)
22+setCombatParam(combat4_Brush, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
23+setCombatArea(combat4_Brush,createCombatArea({{0, 0, 0, 0, 1},
24+{1, 0, 0, 0, 0},
25+{0, 0, 2, 0, 0},
26+{0, 1, 0, 0, 0},
27+{1, 0, 1, 0, 0},
28+{1, 0, 0, 0, 0}}))
29+function getDmg_Brush(cid, level, maglevel)
30+
31+ return -min, -max
32+end
33+setCombatCallback(combat4_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
34+
35+-- Areas/Combat for 300ms
36+local combat3_Brush = createCombatObject()
37+setCombatParam(combat3_Brush, COMBAT_PARAM_EFFECT, CONST_ME_ICEAREA)
38+setCombatParam(combat3_Brush, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
39+setCombatArea(combat3_Brush,createCombatArea({{1, 0, 0},
40+{0, 2, 1},
41+{0, 1, 0}}))
42+function getDmg_Brush(cid, level, maglevel)
43+
44+ return -min, -max
45+end
46+setCombatCallback(combat3_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
47+
48+-- Areas/Combat for 200ms
49+local combat2_Brush = createCombatObject()
50+setCombatParam(combat2_Brush, COMBAT_PARAM_EFFECT, CONST_ME_ICEAREA)
51+setCombatParam(combat2_Brush, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
52+setCombatArea(combat2_Brush,createCombatArea({{0, 0, 1, 0},
53+{0, 0, 0, 1},
54+{0, 2, 0, 0},
55+{0, 0, 0, 0},
56+{1, 0, 0, 0},
57+{0, 0, 0, 1}}))
58+function getDmg_Brush(cid, level, maglevel)
59+
60+ return -min, -max
61+end
62+setCombatCallback(combat2_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
63+
64+-- Areas/Combat for 100ms
65+local combat1_Brush = createCombatObject()
66+setCombatParam(combat1_Brush, COMBAT_PARAM_EFFECT, CONST_ME_ICEAREA)
67+setCombatParam(combat1_Brush, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
68+setCombatArea(combat1_Brush,createCombatArea({{1, 0, 0, 0},
69+{0, 0, 0, 1},
70+{0, 0, 2, 0},
71+{1, 0, 0, 0},
72+{0, 0, 0, 1}}))
73+function getDmg_Brush(cid, level, maglevel)
74+
75+ return -min, -max
76+end
77+setCombatCallback(combat1_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
78+
79+-- Areas/Combat for 0ms
80+local combat0_Brush = createCombatObject()
81+setCombatParam(combat0_Brush, COMBAT_PARAM_EFFECT, CONST_ME_ICEAREA)
82+setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
83+setCombatArea(combat0_Brush,createCombatArea({{0, 1, 0, 0},
84+{0, 0, 0, 0},
85+{1, 3, 0, 0},
86+{0, 0, 0, 1},
87+{0, 0, 0, 0},
88+{0, 1, 0, 0}}))
89+function getDmg_Brush(cid, level, maglevel)
90+
91+ return -min, -max
92+end
93+setCombatCallback(combat0_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
94+
95+-- Areas/Combat for 600ms
96+local combat6_Brush = createCombatObject()
97+setCombatParam(combat6_Brush, COMBAT_PARAM_EFFECT, CONST_ME_ICEAREA)
98+setCombatParam(combat6_Brush, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
99+setCombatArea(combat6_Brush,createCombatArea({{0, 1, 0, 0, 0},
100+{0, 0, 0, 0, 0},
101+{1, 0, 2, 0, 1},
102+{0, 0, 0, 0, 0},
103+{0, 0, 0, 0, 1},
104+{0, 1, 0, 1, 0}}))
105+function getDmg_Brush(cid, level, maglevel)
106+
107+ return -min, -max
108+end
109+setCombatCallback(combat6_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
110+
111+-- =============== CORE FUNCTIONS ===============
112+local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
113+ if (isCreature(cid)) then
114+ doCombat(cid, c, var)
115+ if (dirList ~= nil) then -- Emit distance effects
116+ local i = 2;
117+ while (i < #dirList) do
118+ doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
119+ i = i + 2
120+ end
121+ end
122+ end
123+end
124+
125+function checkSpell4(cid)
126+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
127+ local CHECK_SLOT_01 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_04)
128+ local CHECK_SLOT_02 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_05)
129+ local CHECK_SLOT_03 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_06)
130+ SPELL_ID = 04
131+
132+ if GUN_ID > 0 then
133+ if CHECK_SLOT_01 == SPELL_ID then
134+ cid:sendCancelMessage("@SpellCooldown 01")
135+ return true
136+ elseif CHECK_SLOT_02 == SPELL_ID then
137+ cid:sendCancelMessage("@SpellCooldown 02")
138+ return true
139+ elseif CHECK_SLOT_03 == SPELL_ID then
140+ cid:sendCancelMessage("@SpellCooldown 03")
141+ return true
142+ else
143+ return false
144+ end
145+ else
146+ return false
147+ end
148+ return true
149+end
150+
151+function onCastSpell(cid, var)
152+ if checkSpell4(cid) or cid:getGroup():getAccess() then
153+ local startPos = getCreaturePosition(cid)
154+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
155+ local starGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_03)
156+ local levelGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_07)
157+ min = onDamage(cid, GUN_ID, levelGun, starGun, "SKILL_MIN", SPELL_ID)
158+ max = min
159+ addEvent(RunPart,500,combat5_Brush,cid.uid,var)
160+ addEvent(RunPart,400,combat4_Brush,cid.uid,var)
161+ addEvent(RunPart,300,combat3_Brush,cid.uid,var)
162+ addEvent(RunPart,200,combat2_Brush,cid.uid,var)
163+ addEvent(RunPart,100,combat1_Brush,cid.uid,var)
164+ RunPart(combat0_Brush,cid,var)
165+ addEvent(RunPart,600,combat6_Brush,cid.uid,var)
166+ return true
167+ else
168+ cid:getPosition():sendMagicEffect(03)
169+ return false
170+ end
171+end
A data/spells/scripts/dishonor_of_seals.lua +506-0 View file
@@ -0,0 +1,506 @@
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_GREEN_RINGS)
9+setCombatParam(combat1_Brush, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
10+setCombatArea(combat1_Brush,createCombatArea({{2, 0},
11+{0, 1}}))
12+function getDmg_Brush(cid, level, maglevel)
13+
14+ return -min, -max
15+end
16+setCombatCallback(combat1_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
17+
18+-- Areas/Combat for 0ms
19+local combat0_Brush = createCombatObject()
20+setCombatParam(combat0_Brush, COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
21+setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
22+setCombatArea(combat0_Brush,createCombatArea({{2},
23+{0},
24+{1}}))
25+function getDmg_Brush(cid, level, maglevel)
26+
27+ return -min, -max
28+end
29+setCombatCallback(combat0_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")local combat0_Brush_2 = createCombatObject()
30+setCombatParam(combat0_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_POISONAREA)
31+setCombatParam(combat0_Brush_2, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
32+setCombatArea(combat0_Brush_2,createCombatArea({{2},
33+{1}}))
34+function getDmg_Brush_2(cid, level, maglevel)
35+
36+ return -min, -max
37+end
38+setCombatCallback(combat0_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
39+
40+-- Areas/Combat for 200ms
41+local combat2_Brush = createCombatObject()
42+setCombatParam(combat2_Brush, COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
43+setCombatParam(combat2_Brush, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
44+setCombatArea(combat2_Brush,createCombatArea({{2, 0, 1}}))
45+function getDmg_Brush(cid, level, maglevel)
46+
47+ return -min, -max
48+end
49+setCombatCallback(combat2_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")local combat2_Brush_2 = createCombatObject()
50+setCombatParam(combat2_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_POISONAREA)
51+setCombatParam(combat2_Brush_2, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
52+setCombatArea(combat2_Brush_2,createCombatArea({{2, 1}}))
53+function getDmg_Brush_2(cid, level, maglevel)
54+
55+ return -min, -max
56+end
57+setCombatCallback(combat2_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
58+
59+-- Areas/Combat for 300ms
60+local combat3_Brush = createCombatObject()
61+setCombatParam(combat3_Brush, COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
62+setCombatParam(combat3_Brush, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
63+setCombatArea(combat3_Brush,createCombatArea({{0, 1},
64+{2, 0}}))
65+function getDmg_Brush(cid, level, maglevel)
66+
67+ return -min, -max
68+end
69+setCombatCallback(combat3_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
70+
71+-- Areas/Combat for 400ms
72+local combat4_Brush = createCombatObject()
73+setCombatParam(combat4_Brush, COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
74+setCombatParam(combat4_Brush, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
75+setCombatArea(combat4_Brush,createCombatArea({{1},
76+{0},
77+{2}}))
78+function getDmg_Brush(cid, level, maglevel)
79+
80+ return -min, -max
81+end
82+setCombatCallback(combat4_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")local combat4_Brush_2 = createCombatObject()
83+setCombatParam(combat4_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_POISONAREA)
84+setCombatParam(combat4_Brush_2, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
85+setCombatArea(combat4_Brush_2,createCombatArea({{1},
86+{2}}))
87+function getDmg_Brush_2(cid, level, maglevel)
88+
89+ return -min, -max
90+end
91+setCombatCallback(combat4_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
92+
93+-- Areas/Combat for 500ms
94+local combat5_Brush = createCombatObject()
95+setCombatParam(combat5_Brush, COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
96+setCombatParam(combat5_Brush, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
97+setCombatArea(combat5_Brush,createCombatArea({{1, 0},
98+{0, 2}}))
99+function getDmg_Brush(cid, level, maglevel)
100+
101+ return -min, -max
102+end
103+setCombatCallback(combat5_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
104+
105+-- Areas/Combat for 600ms
106+local combat6_Brush = createCombatObject()
107+setCombatParam(combat6_Brush, COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
108+setCombatParam(combat6_Brush, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
109+setCombatArea(combat6_Brush,createCombatArea({{1, 0, 2}}))
110+function getDmg_Brush(cid, level, maglevel)
111+
112+ return -min, -max
113+end
114+setCombatCallback(combat6_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")local combat6_Brush_2 = createCombatObject()
115+setCombatParam(combat6_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_POISONAREA)
116+setCombatParam(combat6_Brush_2, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
117+setCombatArea(combat6_Brush_2,createCombatArea({{1, 2}}))
118+function getDmg_Brush_2(cid, level, maglevel)
119+
120+ return -min, -max
121+end
122+setCombatCallback(combat6_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
123+
124+-- Areas/Combat for 700ms
125+local combat7_Brush = createCombatObject()
126+setCombatParam(combat7_Brush, COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
127+setCombatParam(combat7_Brush, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
128+setCombatArea(combat7_Brush,createCombatArea({{0, 2},
129+{1, 0}}))
130+function getDmg_Brush(cid, level, maglevel)
131+
132+ return -min, -max
133+end
134+setCombatCallback(combat7_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
135+
136+-- Areas/Combat for 800ms
137+local combat8_Brush = createCombatObject()
138+setCombatParam(combat8_Brush, COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
139+setCombatParam(combat8_Brush, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
140+setCombatArea(combat8_Brush,createCombatArea({{2},
141+{0},
142+{1}}))
143+function getDmg_Brush(cid, level, maglevel)
144+
145+ return -min, -max
146+end
147+setCombatCallback(combat8_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")local combat8_Brush_2 = createCombatObject()
148+setCombatParam(combat8_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_POISONAREA)
149+setCombatParam(combat8_Brush_2, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
150+setCombatArea(combat8_Brush_2,createCombatArea({{2},
151+{1}}))
152+function getDmg_Brush_2(cid, level, maglevel)
153+
154+ return -min, -max
155+end
156+setCombatCallback(combat8_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
157+
158+-- Areas/Combat for 900ms
159+local combat9_Brush = createCombatObject()
160+setCombatParam(combat9_Brush, COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
161+setCombatParam(combat9_Brush, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
162+setCombatArea(combat9_Brush,createCombatArea({{2, 0},
163+{0, 1}}))
164+function getDmg_Brush(cid, level, maglevel)
165+
166+ return -min, -max
167+end
168+setCombatCallback(combat9_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
169+
170+-- Areas/Combat for 1000ms
171+local combat10_Brush = createCombatObject()
172+setCombatParam(combat10_Brush, COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
173+setCombatParam(combat10_Brush, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
174+setCombatArea(combat10_Brush,createCombatArea({{2, 0, 1}}))
175+function getDmg_Brush(cid, level, maglevel)
176+
177+ return -min, -max
178+end
179+setCombatCallback(combat10_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")local combat10_Brush_2 = createCombatObject()
180+setCombatParam(combat10_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_POISONAREA)
181+setCombatParam(combat10_Brush_2, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
182+setCombatArea(combat10_Brush_2,createCombatArea({{2, 1}}))
183+function getDmg_Brush_2(cid, level, maglevel)
184+
185+ return -min, -max
186+end
187+setCombatCallback(combat10_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
188+
189+-- Areas/Combat for 1100ms
190+local combat11_Brush = createCombatObject()
191+setCombatParam(combat11_Brush, COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
192+setCombatParam(combat11_Brush, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
193+setCombatArea(combat11_Brush,createCombatArea({{0, 1},
194+{2, 0}}))
195+function getDmg_Brush(cid, level, maglevel)
196+
197+ return -min, -max
198+end
199+setCombatCallback(combat11_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
200+
201+-- Areas/Combat for 1200ms
202+local combat12_Brush = createCombatObject()
203+setCombatParam(combat12_Brush, COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
204+setCombatParam(combat12_Brush, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
205+setCombatArea(combat12_Brush,createCombatArea({{1},
206+{0},
207+{2}}))
208+function getDmg_Brush(cid, level, maglevel)
209+
210+ return -min, -max
211+end
212+setCombatCallback(combat12_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")local combat12_Brush_2 = createCombatObject()
213+setCombatParam(combat12_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_POISONAREA)
214+setCombatParam(combat12_Brush_2, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
215+setCombatArea(combat12_Brush_2,createCombatArea({{1},
216+{2}}))
217+function getDmg_Brush_2(cid, level, maglevel)
218+
219+ return -min, -max
220+end
221+setCombatCallback(combat12_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
222+
223+-- Areas/Combat for 1300ms
224+local combat13_Brush = createCombatObject()
225+setCombatParam(combat13_Brush, COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
226+setCombatParam(combat13_Brush, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
227+setCombatArea(combat13_Brush,createCombatArea({{1, 0},
228+{0, 2}}))
229+function getDmg_Brush(cid, level, maglevel)
230+
231+ return -min, -max
232+end
233+setCombatCallback(combat13_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
234+
235+-- Areas/Combat for 1400ms
236+local combat14_Brush = createCombatObject()
237+setCombatParam(combat14_Brush, COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
238+setCombatParam(combat14_Brush, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
239+setCombatArea(combat14_Brush,createCombatArea({{1, 0, 2}}))
240+function getDmg_Brush(cid, level, maglevel)
241+
242+ return -min, -max
243+end
244+setCombatCallback(combat14_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")local combat14_Brush_2 = createCombatObject()
245+setCombatParam(combat14_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_POISONAREA)
246+setCombatParam(combat14_Brush_2, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
247+setCombatArea(combat14_Brush_2,createCombatArea({{1, 2}}))
248+function getDmg_Brush_2(cid, level, maglevel)
249+
250+ return -min, -max
251+end
252+setCombatCallback(combat14_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
253+
254+-- Areas/Combat for 1500ms
255+local combat15_Brush = createCombatObject()
256+setCombatParam(combat15_Brush, COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
257+setCombatParam(combat15_Brush, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
258+setCombatArea(combat15_Brush,createCombatArea({{0, 2},
259+{1, 0}}))
260+function getDmg_Brush(cid, level, maglevel)
261+
262+ return -min, -max
263+end
264+setCombatCallback(combat15_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
265+
266+-- Areas/Combat for 1600ms
267+local combat16_Brush = createCombatObject()
268+setCombatParam(combat16_Brush, COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
269+setCombatParam(combat16_Brush, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
270+setCombatArea(combat16_Brush,createCombatArea({{2},
271+{0},
272+{1}}))
273+function getDmg_Brush(cid, level, maglevel)
274+
275+ return -min, -max
276+end
277+setCombatCallback(combat16_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")local combat16_Brush_2 = createCombatObject()
278+setCombatParam(combat16_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_POISONAREA)
279+setCombatParam(combat16_Brush_2, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
280+setCombatArea(combat16_Brush_2,createCombatArea({{2},
281+{1}}))
282+function getDmg_Brush_2(cid, level, maglevel)
283+
284+ return -min, -max
285+end
286+setCombatCallback(combat16_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
287+
288+-- Areas/Combat for 1700ms
289+local combat17_Brush = createCombatObject()
290+setCombatParam(combat17_Brush, COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
291+setCombatParam(combat17_Brush, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
292+setCombatArea(combat17_Brush,createCombatArea({{2, 0},
293+{0, 1}}))
294+function getDmg_Brush(cid, level, maglevel)
295+
296+ return -min, -max
297+end
298+setCombatCallback(combat17_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
299+
300+-- Areas/Combat for 1800ms
301+local combat18_Brush = createCombatObject()
302+setCombatParam(combat18_Brush, COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
303+setCombatParam(combat18_Brush, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
304+setCombatArea(combat18_Brush,createCombatArea({{2, 0, 1}}))
305+function getDmg_Brush(cid, level, maglevel)
306+
307+ return -min, -max
308+end
309+setCombatCallback(combat18_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")local combat18_Brush_2 = createCombatObject()
310+setCombatParam(combat18_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_POISONAREA)
311+setCombatParam(combat18_Brush_2, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
312+setCombatArea(combat18_Brush_2,createCombatArea({{2, 1}}))
313+function getDmg_Brush_2(cid, level, maglevel)
314+
315+ return -min, -max
316+end
317+setCombatCallback(combat18_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
318+
319+-- Areas/Combat for 1900ms
320+local combat19_Brush = createCombatObject()
321+setCombatParam(combat19_Brush, COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
322+setCombatParam(combat19_Brush, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
323+setCombatArea(combat19_Brush,createCombatArea({{0, 1},
324+{2, 0}}))
325+function getDmg_Brush(cid, level, maglevel)
326+
327+ return -min, -max
328+end
329+setCombatCallback(combat19_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
330+
331+-- Areas/Combat for 2000ms
332+local combat20_Brush = createCombatObject()
333+setCombatParam(combat20_Brush, COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
334+setCombatParam(combat20_Brush, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
335+setCombatArea(combat20_Brush,createCombatArea({{1},
336+{0},
337+{2}}))
338+function getDmg_Brush(cid, level, maglevel)
339+
340+ return -min, -max
341+end
342+setCombatCallback(combat20_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")local combat20_Brush_2 = createCombatObject()
343+setCombatParam(combat20_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_POISONAREA)
344+setCombatParam(combat20_Brush_2, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
345+setCombatArea(combat20_Brush_2,createCombatArea({{1},
346+{2}}))
347+function getDmg_Brush_2(cid, level, maglevel)
348+
349+ return -min, -max
350+end
351+setCombatCallback(combat20_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
352+
353+-- Areas/Combat for 2100ms
354+local combat21_Brush = createCombatObject()
355+setCombatParam(combat21_Brush, COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
356+setCombatParam(combat21_Brush, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
357+setCombatArea(combat21_Brush,createCombatArea({{1, 0},
358+{0, 2}}))
359+function getDmg_Brush(cid, level, maglevel)
360+
361+ return -min, -max
362+end
363+setCombatCallback(combat21_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
364+
365+-- Areas/Combat for 2200ms
366+local combat22_Brush = createCombatObject()
367+setCombatParam(combat22_Brush, COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
368+setCombatParam(combat22_Brush, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
369+setCombatArea(combat22_Brush,createCombatArea({{1, 0, 2}}))
370+function getDmg_Brush(cid, level, maglevel)
371+
372+ return -min, -max
373+end
374+setCombatCallback(combat22_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")local combat22_Brush_2 = createCombatObject()
375+setCombatParam(combat22_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_POISONAREA)
376+setCombatParam(combat22_Brush_2, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
377+setCombatArea(combat22_Brush_2,createCombatArea({{1, 2}}))
378+function getDmg_Brush_2(cid, level, maglevel)
379+
380+ return -min, -max
381+end
382+setCombatCallback(combat22_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
383+
384+-- Areas/Combat for 2300ms
385+local combat23_Brush = createCombatObject()
386+setCombatParam(combat23_Brush, COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
387+setCombatParam(combat23_Brush, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
388+setCombatArea(combat23_Brush,createCombatArea({{0, 2},
389+{1, 0}}))
390+function getDmg_Brush(cid, level, maglevel)
391+
392+ return -min, -max
393+end
394+setCombatCallback(combat23_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
395+
396+-- Areas/Combat for 2400ms
397+local combat24_Brush = createCombatObject()
398+setCombatParam(combat24_Brush, COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
399+setCombatParam(combat24_Brush, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
400+setCombatArea(combat24_Brush,createCombatArea({{2},
401+{0},
402+{1}}))
403+function getDmg_Brush(cid, level, maglevel)
404+
405+ return -min, -max
406+end
407+setCombatCallback(combat24_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")local combat24_Brush_2 = createCombatObject()
408+setCombatParam(combat24_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_POISONAREA)
409+setCombatParam(combat24_Brush_2, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
410+setCombatArea(combat24_Brush_2,createCombatArea({{2},
411+{1}}))
412+function getDmg_Brush_2(cid, level, maglevel)
413+
414+ return -min, -max
415+end
416+setCombatCallback(combat24_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
417+
418+-- =============== CORE FUNCTIONS ===============
419+local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
420+ if (isCreature(cid)) then
421+ doCombat(cid, c, var)
422+ if (dirList ~= nil) then -- Emit distance effects
423+ local i = 2;
424+ while (i < #dirList) do
425+ doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
426+ i = i + 2
427+ end
428+ end
429+ end
430+end
431+function checkSpell56(cid)
432+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
433+ local CHECK_SLOT_01 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_04)
434+ local CHECK_SLOT_02 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_05)
435+ local CHECK_SLOT_03 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_06)
436+ SPELL_ID = 56
437+
438+ if GUN_ID > 0 then
439+ if CHECK_SLOT_01 == SPELL_ID then
440+ cid:sendCancelMessage("@SpellCooldown 01")
441+ return true
442+ elseif CHECK_SLOT_02 == SPELL_ID then
443+ cid:sendCancelMessage("@SpellCooldown 02")
444+ return true
445+ elseif CHECK_SLOT_03 == SPELL_ID then
446+ cid:sendCancelMessage("@SpellCooldown 03")
447+ return true
448+ else
449+ return false
450+ end
451+ else
452+ return false
453+ end
454+end
455+function onCastSpell(cid, var)
456+ if checkSpell56(cid) or cid:getGroup():getAccess() then
457+ local startPos = getCreaturePosition(cid)
458+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
459+ local starGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_03)
460+ local levelGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_07)
461+ min = onDamage(cid, GUN_ID, levelGun, starGun, "SKILL_MIN", SPELL_ID)
462+ max = min
463+ addEvent(RunPart,100,combat1_Brush,cid.uid,var)
464+ RunPart(combat0_Brush,cid,var)
465+ RunPart(combat0_Brush_2,cid,var)
466+ addEvent(RunPart,200,combat2_Brush,cid.uid,var)
467+ addEvent(RunPart,200,combat2_Brush_2,cid.uid,var)
468+ addEvent(RunPart,300,combat3_Brush,cid.uid,var)
469+ addEvent(RunPart,400,combat4_Brush,cid.uid,var)
470+ addEvent(RunPart,400,combat4_Brush_2,cid.uid,var)
471+ addEvent(RunPart,500,combat5_Brush,cid.uid,var)
472+ addEvent(RunPart,600,combat6_Brush,cid.uid,var)
473+ addEvent(RunPart,600,combat6_Brush_2,cid.uid,var)
474+ addEvent(RunPart,700,combat7_Brush,cid.uid,var)
475+ addEvent(RunPart,800,combat8_Brush,cid.uid,var)
476+ addEvent(RunPart,800,combat8_Brush_2,cid.uid,var)
477+ addEvent(RunPart,900,combat9_Brush,cid.uid,var)
478+ addEvent(RunPart,1000,combat10_Brush,cid.uid,var)
479+ addEvent(RunPart,1000,combat10_Brush_2,cid.uid,var)
480+ addEvent(RunPart,1100,combat11_Brush,cid.uid,var)
481+ addEvent(RunPart,1200,combat12_Brush,cid.uid,var)
482+ addEvent(RunPart,1200,combat12_Brush_2,cid.uid,var)
483+ addEvent(RunPart,1300,combat13_Brush,cid.uid,var)
484+ addEvent(RunPart,1400,combat14_Brush,cid.uid,var)
485+ addEvent(RunPart,1400,combat14_Brush_2,cid.uid,var)
486+ addEvent(RunPart,1500,combat15_Brush,cid.uid,var)
487+ addEvent(RunPart,1600,combat16_Brush,cid.uid,var)
488+ addEvent(RunPart,1600,combat16_Brush_2,cid.uid,var)
489+ addEvent(RunPart,1700,combat17_Brush,cid.uid,var)
490+ addEvent(RunPart,1800,combat18_Brush,cid.uid,var)
491+ addEvent(RunPart,1800,combat18_Brush_2,cid.uid,var)
492+ addEvent(RunPart,1900,combat19_Brush,cid.uid,var)
493+ addEvent(RunPart,2000,combat20_Brush,cid.uid,var)
494+ addEvent(RunPart,2000,combat20_Brush_2,cid.uid,var)
495+ addEvent(RunPart,2100,combat21_Brush,cid.uid,var)
496+ addEvent(RunPart,2200,combat22_Brush,cid.uid,var)
497+ addEvent(RunPart,2200,combat22_Brush_2,cid.uid,var)
498+ addEvent(RunPart,2300,combat23_Brush,cid.uid,var)
499+ addEvent(RunPart,2400,combat24_Brush,cid.uid,var)
500+ addEvent(RunPart,2400,combat24_Brush_2,cid.uid,var)
501+ return true
502+ else
503+ cid:getPosition():sendMagicEffect(03)
504+ return false
505+ end
506+end
A data/spells/scripts/double_punch.lua +82-0 View file
@@ -0,0 +1,82 @@
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_DRAWBLOOD)
9+setCombatParam(combat1_Brush, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_WHIRLWINDCLUB)
10+setCombatParam(combat1_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
11+setCombatArea(combat1_Brush,createCombatArea({{3}}))
12+function getDmg_Brush(cid, level, maglevel)
13+
14+ return -min, -max
15+end
16+setCombatCallback(combat1_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
17+
18+-- Areas/Combat for 0ms
19+local combat0_Brush = createCombatObject()
20+setCombatParam(combat0_Brush, COMBAT_PARAM_EFFECT, CONST_ME_DRAWBLOOD)
21+setCombatParam(combat0_Brush, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_WHIRLWINDCLUB)
22+setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
23+setCombatArea(combat0_Brush,createCombatArea({{3}}))
24+function getDmg_Brush(cid, level, maglevel)
25+
26+ return -min, -max
27+end
28+setCombatCallback(combat0_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
29+
30+-- =============== CORE FUNCTIONS ===============
31+local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
32+ if (isCreature(cid)) then
33+ doCombat(cid, c, var)
34+ if (dirList ~= nil) then -- Emit distance effects
35+ local i = 2;
36+ while (i < #dirList) do
37+ doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
38+ i = i + 2
39+ end
40+ end
41+ end
42+end
43+function checkSpell35(cid)
44+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
45+ local CHECK_SLOT_01 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_04)
46+ local CHECK_SLOT_02 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_05)
47+ local CHECK_SLOT_03 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_06)
48+ SPELL_ID = 35
49+
50+ if GUN_ID > 0 then
51+ if CHECK_SLOT_01 == SPELL_ID then
52+ cid:sendCancelMessage("@SpellCooldown 01")
53+ return true
54+ elseif CHECK_SLOT_02 == SPELL_ID then
55+ cid:sendCancelMessage("@SpellCooldown 02")
56+ return true
57+ elseif CHECK_SLOT_03 == SPELL_ID then
58+ cid:sendCancelMessage("@SpellCooldown 03")
59+ return true
60+ else
61+ return false
62+ end
63+ else
64+ return false
65+ end
66+end
67+function onCastSpell(cid, var)
68+ if checkSpell35(cid) or cid:getGroup():getAccess() then
69+ local startPos = getCreaturePosition(cid)
70+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
71+ local starGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_03)
72+ local levelGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_07)
73+ min = onDamage(cid, GUN_ID, levelGun, starGun, "SKILL_MIN", SPELL_ID)
74+ max = min
75+ addEvent(RunPart,100,combat1_Brush,cid.uid,var)
76+ RunPart(combat0_Brush,cid,var)
77+ return true
78+ else
79+ cid:getPosition():sendMagicEffect(03)
80+ return false
81+ end
82+end
A data/spells/scripts/duplicity_of_insanity.lua +166-0 View file
@@ -0,0 +1,166 @@
1+SPELL_ID = 00
2+local min = 0
3+local max = 0
4+
5+-- =============== COMBAT VARS ===============
6+-- Areas/Combat for 200ms
7+local combat2_Brush = createCombatObject()
8+setCombatParam(combat2_Brush, COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK)
9+setCombatParam(combat2_Brush, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
10+setCombatArea(combat2_Brush,createCombatArea({{0, 1},
11+{2, 0}}))
12+function getDmg_Brush(cid, level, maglevel)
13+
14+ return -min, -max
15+end
16+setCombatCallback(combat2_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")local combat2_Brush_2 = createCombatObject()
17+setCombatParam(combat2_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_FIREWORK_BLUE)
18+setCombatParam(combat2_Brush_2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
19+setCombatArea(combat2_Brush_2,createCombatArea({{0, 0, 1, 0, 0},
20+{0, 0, 1, 0, 0},
21+{1, 1, 2, 1, 1},
22+{0, 0, 1, 0, 0},
23+{0, 0, 1, 0, 0}}))
24+
25+
26+-- Areas/Combat for 100ms
27+local combat1_Brush = createCombatObject()
28+setCombatParam(combat1_Brush, COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK)
29+setCombatParam(combat1_Brush, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
30+setCombatArea(combat1_Brush,createCombatArea({{2, 0},
31+{0, 1}}))
32+function getDmg_Brush(cid, level, maglevel)
33+
34+ return -min, -max
35+end
36+setCombatCallback(combat1_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
37+
38+-- Areas/Combat for 0ms
39+local combat0_Brush = createCombatObject()
40+setCombatParam(combat0_Brush, COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK)
41+setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
42+setCombatArea(combat0_Brush,createCombatArea({{0, 0, 1, 0, 0},
43+{0, 0, 1, 0, 0},
44+{1, 1, 2, 1, 1},
45+{0, 0, 1, 0, 0},
46+{0, 0, 1, 0, 0}}))
47+function getDmg_Brush(cid, level, maglevel)
48+
49+ return -min, -max
50+end
51+setCombatCallback(combat0_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
52+
53+-- Areas/Combat for 300ms
54+local combat3_Brush = createCombatObject()
55+setCombatParam(combat3_Brush, COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK)
56+setCombatParam(combat3_Brush, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
57+setCombatArea(combat3_Brush,createCombatArea({{1, 0},
58+{0, 2}}))
59+function getDmg_Brush(cid, level, maglevel)
60+
61+ return -min, -max
62+end
63+setCombatCallback(combat3_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")local combat3_Brush_2 = createCombatObject()
64+setCombatParam(combat3_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_FIREWORK_BLUE)
65+setCombatParam(combat3_Brush_2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
66+setCombatArea(combat3_Brush_2,createCombatArea({{2, 0},
67+{0, 1}}))
68+
69+
70+-- Areas/Combat for 400ms
71+local combat4_Brush = createCombatObject()
72+setCombatParam(combat4_Brush, COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK)
73+setCombatParam(combat4_Brush, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
74+setCombatArea(combat4_Brush,createCombatArea({{0, 2},
75+{1, 0}}))
76+function getDmg_Brush(cid, level, maglevel)
77+
78+ return -min, -max
79+end
80+setCombatCallback(combat4_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")local combat4_Brush_2 = createCombatObject()
81+setCombatParam(combat4_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_FIREWORK_BLUE)
82+setCombatParam(combat4_Brush_2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
83+setCombatArea(combat4_Brush_2,createCombatArea({{0, 1},
84+{2, 0}}))
85+
86+
87+-- Areas/Combat for 500ms
88+local combat5_Brush_2 = createCombatObject()
89+setCombatParam(combat5_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_FIREWORK_BLUE)
90+setCombatParam(combat5_Brush_2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
91+setCombatArea(combat5_Brush_2,createCombatArea({{1, 0},
92+{0, 2}}))
93+
94+
95+-- Areas/Combat for 600ms
96+local combat6_Brush_2 = createCombatObject()
97+setCombatParam(combat6_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_FIREWORK_BLUE)
98+setCombatParam(combat6_Brush_2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
99+setCombatArea(combat6_Brush_2,createCombatArea({{0, 2},
100+{1, 0}}))
101+
102+
103+-- =============== CORE FUNCTIONS ===============
104+local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
105+ if (isCreature(cid)) then
106+ doCombat(cid, c, var)
107+ if (dirList ~= nil) then -- Emit distance effects
108+ local i = 2;
109+ while (i < #dirList) do
110+ doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
111+ i = i + 2
112+ end
113+ end
114+ end
115+end
116+
117+function checkSpell5(cid)
118+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
119+ local CHECK_SLOT_01 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_04)
120+ local CHECK_SLOT_02 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_05)
121+ local CHECK_SLOT_03 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_06)
122+ SPELL_ID = 05
123+
124+ if GUN_ID > 0 then
125+ if CHECK_SLOT_01 == SPELL_ID then
126+ cid:sendCancelMessage("@SpellCooldown 01")
127+ return true
128+ elseif CHECK_SLOT_02 == SPELL_ID then
129+ cid:sendCancelMessage("@SpellCooldown 02")
130+ return true
131+ elseif CHECK_SLOT_03 == SPELL_ID then
132+ cid:sendCancelMessage("@SpellCooldown 03")
133+ return true
134+ else
135+ return false
136+ end
137+ else
138+ return false
139+ end
140+ return true
141+end
142+
143+function onCastSpell(cid, var)
144+ if checkSpell5(cid) or cid:getGroup():getAccess() then
145+ local startPos = getCreaturePosition(cid)
146+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
147+ local starGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_03)
148+ local levelGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_07)
149+ min = onDamage(cid, GUN_ID, levelGun, starGun, "SKILL_MIN", SPELL_ID)
150+ max = min
151+ addEvent(RunPart,200,combat2_Brush,cid.uid,var)
152+ addEvent(RunPart,200,combat2_Brush_2,cid.uid,var)
153+ addEvent(RunPart,100,combat1_Brush,cid.uid,var)
154+ RunPart(combat0_Brush,cid,var)
155+ addEvent(RunPart,300,combat3_Brush,cid.uid,var)
156+ addEvent(RunPart,300,combat3_Brush_2,cid.uid,var)
157+ addEvent(RunPart,400,combat4_Brush,cid.uid,var)
158+ addEvent(RunPart,400,combat4_Brush_2,cid.uid,var)
159+ addEvent(RunPart,500,combat5_Brush_2,cid.uid,var)
160+ addEvent(RunPart,600,combat6_Brush_2,cid.uid,var)
161+ return true
162+ else
163+ cid:getPosition():sendMagicEffect(03)
164+ return false
165+ end
166+end
A data/spells/scripts/eruption_bolt.lua +151-0 View file
@@ -0,0 +1,151 @@
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_ENERGYAREA)
9+setCombatParam(combat0_Brush, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ICE)
10+setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
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_ENERGYAREA)
21+setCombatParam(combat2_Brush_2, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
22+setCombatArea(combat2_Brush_2,createCombatArea({{0, 0, 1, 0, 0},
23+{0, 0, 1, 0, 0},
24+{1, 1, 2, 1, 1},
25+{0, 0, 1, 0, 0},
26+{0, 0, 1, 0, 0}}))
27+function getDmg_Brush_2(cid, level, maglevel)
28+
29+ return -min, -max
30+end
31+setCombatCallback(combat2_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")local combat2_Brush_3 = createCombatObject()
32+setCombatParam(combat2_Brush_3, COMBAT_PARAM_EFFECT, CONST_ME_ICEAREA)
33+setCombatParam(combat2_Brush_3, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
34+setCombatArea(combat2_Brush_3,createCombatArea({{3}}))
35+
36+
37+-- Areas/Combat for 700ms
38+local combat7_Brush = createCombatObject()
39+setCombatParam(combat7_Brush, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYAREA)
40+setCombatParam(combat7_Brush, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ICE)
41+setCombatParam(combat7_Brush, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
42+setCombatArea(combat7_Brush,createCombatArea({{3}}))
43+function getDmg_Brush(cid, level, maglevel)
44+
45+ return -min, -max
46+end
47+setCombatCallback(combat7_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
48+
49+-- Areas/Combat for 900ms
50+local combat9_Brush_2 = createCombatObject()
51+setCombatParam(combat9_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYAREA)
52+setCombatParam(combat9_Brush_2, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
53+setCombatArea(combat9_Brush_2,createCombatArea({{1, 0, 0, 0, 1},
54+{0, 1, 0, 1, 0},
55+{0, 0, 2, 0, 0},
56+{0, 1, 0, 1, 0},
57+{1, 0, 0, 0, 1}}))
58+function getDmg_Brush_2(cid, level, maglevel)
59+
60+ return -min, -max
61+end
62+setCombatCallback(combat9_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")local combat9_Brush_3 = createCombatObject()
63+setCombatParam(combat9_Brush_3, COMBAT_PARAM_EFFECT, CONST_ME_ICEAREA)
64+setCombatParam(combat9_Brush_3, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
65+setCombatArea(combat9_Brush_3,createCombatArea({{3}}))
66+
67+
68+-- Areas/Combat for 1100ms
69+local combat11_Brush_3 = createCombatObject()
70+setCombatParam(combat11_Brush_3, COMBAT_PARAM_EFFECT, CONST_ME_ICEAREA)
71+setCombatParam(combat11_Brush_3, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
72+setCombatArea(combat11_Brush_3,createCombatArea({{1, 0, 0, 0, 1},
73+{0, 1, 0, 1, 0},
74+{0, 0, 2, 0, 0},
75+{0, 1, 0, 1, 0},
76+{1, 0, 0, 0, 1}}))
77+
78+
79+-- Areas/Combat for 400ms
80+local combat4_Brush_3 = createCombatObject()
81+setCombatParam(combat4_Brush_3, COMBAT_PARAM_EFFECT, CONST_ME_ICEAREA)
82+setCombatParam(combat4_Brush_3, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
83+setCombatArea(combat4_Brush_3,createCombatArea({{0, 0, 1, 0, 0},
84+{0, 0, 1, 0, 0},
85+{1, 1, 2, 1, 1},
86+{0, 0, 1, 0, 0},
87+{0, 0, 1, 0, 0}}))
88+
89+
90+-- =============== CORE FUNCTIONS ===============
91+local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
92+ if (isCreature(cid)) then
93+ doCombat(cid, c, var)
94+ if (dirList ~= nil) then -- Emit distance effects
95+ local i = 2;
96+ while (i < #dirList) do
97+ doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
98+ i = i + 2
99+ end
100+ end
101+ end
102+end
103+
104+function checkSpell9(cid)
105+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
106+ local CHECK_SLOT_01 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_04)
107+ local CHECK_SLOT_02 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_05)
108+ local CHECK_SLOT_03 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_06)
109+ SPELL_ID = 09
110+
111+ if GUN_ID > 0 then
112+ if CHECK_SLOT_01 == SPELL_ID then
113+ cid:sendCancelMessage("@SpellCooldown 01")
114+ return true
115+ elseif CHECK_SLOT_02 == SPELL_ID then
116+ cid:sendCancelMessage("@SpellCooldown 02")
117+ return true
118+ elseif CHECK_SLOT_03 == SPELL_ID then
119+ cid:sendCancelMessage("@SpellCooldown 03")
120+ return true
121+ else
122+ return false
123+ end
124+ else
125+ return false
126+ end
127+ return true
128+end
129+
130+function onCastSpell(cid, var)
131+ if checkSpell9(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)
139+ addEvent(RunPart,200,combat2_Brush_2,cid.uid,var)
140+ addEvent(RunPart,200,combat2_Brush_3,cid.uid,var)
141+ addEvent(RunPart,700,combat7_Brush,cid.uid,var)
142+ addEvent(RunPart,900,combat9_Brush_2,cid.uid,var)
143+ addEvent(RunPart,900,combat9_Brush_3,cid.uid,var)
144+ addEvent(RunPart,1100,combat11_Brush_3,cid.uid,var)
145+ addEvent(RunPart,400,combat4_Brush_3,cid.uid,var)
146+ return true
147+ else
148+ cid:getPosition():sendMagicEffect(03)
149+ return false
150+ end
151+end
A data/spells/scripts/fiery_surge.lua +172-0 View file
@@ -0,0 +1,172 @@
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_FIREAREA)
9+setCombatParam(combat0_Brush, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
10+setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
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 100ms
19+local combat1_Brush_2 = createCombatObject()
20+setCombatParam(combat1_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_HITBYFIRE)
21+setCombatParam(combat1_Brush_2, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
22+setCombatArea(combat1_Brush_2,createCombatArea({{0, 1},
23+{2, 0}}))
24+function getDmg_Brush_2(cid, level, maglevel)
25+
26+ return -min, -max
27+end
28+setCombatCallback(combat1_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
29+
30+-- Areas/Combat for 200ms
31+local combat2_Brush_2 = createCombatObject()
32+setCombatParam(combat2_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_HITBYFIRE)
33+setCombatParam(combat2_Brush_2, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
34+setCombatArea(combat2_Brush_2,createCombatArea({{0, 2},
35+{1, 0}}))
36+function getDmg_Brush_2(cid, level, maglevel)
37+
38+ return -min, -max
39+end
40+setCombatCallback(combat2_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
41+
42+-- Areas/Combat for 300ms
43+local combat3_Brush_2 = createCombatObject()
44+setCombatParam(combat3_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_HITBYFIRE)
45+setCombatParam(combat3_Brush_2, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
46+setCombatArea(combat3_Brush_2,createCombatArea({{1, 0},
47+{0, 2}}))
48+function getDmg_Brush_2(cid, level, maglevel)
49+
50+ return -min, -max
51+end
52+setCombatCallback(combat3_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
53+
54+-- Areas/Combat for 400ms
55+local combat4_Brush_2 = createCombatObject()
56+setCombatParam(combat4_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_HITBYFIRE)
57+setCombatParam(combat4_Brush_2, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
58+setCombatArea(combat4_Brush_2,createCombatArea({{2, 0},
59+{0, 1}}))
60+function getDmg_Brush_2(cid, level, maglevel)
61+
62+ return -min, -max
63+end
64+setCombatCallback(combat4_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
65+
66+-- Areas/Combat for 500ms
67+local combat5_Brush_2 = createCombatObject()
68+setCombatParam(combat5_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_HITBYFIRE)
69+setCombatParam(combat5_Brush_2, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
70+setCombatArea(combat5_Brush_2,createCombatArea({{2, 1}}))
71+function getDmg_Brush_2(cid, level, maglevel)
72+
73+ return -min, -max
74+end
75+setCombatCallback(combat5_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
76+
77+-- Areas/Combat for 600ms
78+local combat6_Brush_2 = createCombatObject()
79+setCombatParam(combat6_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_HITBYFIRE)
80+setCombatParam(combat6_Brush_2, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
81+setCombatArea(combat6_Brush_2,createCombatArea({{1},
82+{2}}))
83+function getDmg_Brush_2(cid, level, maglevel)
84+
85+ return -min, -max
86+end
87+setCombatCallback(combat6_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
88+
89+-- Areas/Combat for 700ms
90+local combat7_Brush_2 = createCombatObject()
91+setCombatParam(combat7_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_HITBYFIRE)
92+setCombatParam(combat7_Brush_2, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
93+setCombatArea(combat7_Brush_2,createCombatArea({{1, 2}}))
94+function getDmg_Brush_2(cid, level, maglevel)
95+
96+ return -min, -max
97+end
98+setCombatCallback(combat7_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
99+
100+-- Areas/Combat for 800ms
101+local combat8_Brush_2 = createCombatObject()
102+setCombatParam(combat8_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_HITBYFIRE)
103+setCombatParam(combat8_Brush_2, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
104+setCombatArea(combat8_Brush_2,createCombatArea({{2},
105+{1}}))
106+function getDmg_Brush_2(cid, level, maglevel)
107+
108+ return -min, -max
109+end
110+setCombatCallback(combat8_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
111+
112+-- =============== CORE FUNCTIONS ===============
113+local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
114+ if (isCreature(cid)) then
115+ doCombat(cid, c, var)
116+ if (dirList ~= nil) then -- Emit distance effects
117+ local i = 2;
118+ while (i < #dirList) do
119+ doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
120+ i = i + 2
121+ end
122+ end
123+ end
124+end
125+function checkSpell14(cid)
126+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
127+ local CHECK_SLOT_01 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_04)
128+ local CHECK_SLOT_02 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_05)
129+ local CHECK_SLOT_03 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_06)
130+ SPELL_ID = 14
131+
132+ if GUN_ID > 0 then
133+ if CHECK_SLOT_01 == SPELL_ID then
134+ cid:sendCancelMessage("@SpellCooldown 01")
135+ return true
136+ elseif CHECK_SLOT_02 == SPELL_ID then
137+ cid:sendCancelMessage("@SpellCooldown 02")
138+ return true
139+ elseif CHECK_SLOT_03 == SPELL_ID then
140+ cid:sendCancelMessage("@SpellCooldown 03")
141+ return true
142+ else
143+ return false
144+ end
145+ else
146+ return false
147+ end
148+ return true
149+end
150+function onCastSpell(cid, var)
151+ if checkSpell14(cid) or cid:getGroup():getAccess() then
152+ local startPos = getCreaturePosition(cid)
153+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
154+ local starGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_03)
155+ local levelGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_07)
156+ min = onDamage(cid, GUN_ID, levelGun, starGun, "SKILL_MIN", SPELL_ID)
157+ max = min
158+ RunPart(combat0_Brush,cid,var)
159+ addEvent(RunPart,100,combat1_Brush_2,cid.uid,var)
160+ addEvent(RunPart,200,combat2_Brush_2,cid.uid,var)
161+ addEvent(RunPart,300,combat3_Brush_2,cid.uid,var)
162+ addEvent(RunPart,400,combat4_Brush_2,cid.uid,var)
163+ addEvent(RunPart,500,combat5_Brush_2,cid.uid,var)
164+ addEvent(RunPart,600,combat6_Brush_2,cid.uid,var)
165+ addEvent(RunPart,700,combat7_Brush_2,cid.uid,var)
166+ addEvent(RunPart,800,combat8_Brush_2,cid.uid,var)
167+ return true
168+ else
169+ cid:getPosition():sendMagicEffect(03)
170+ return false
171+ end
172+end
A data/spells/scripts/fire_rush.lua +73-0 View file
@@ -0,0 +1,73 @@
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, 3, 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+-- =============== 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+
33+function checkSpell11(cid)
34+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
35+ local CHECK_SLOT_01 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_04)
36+ local CHECK_SLOT_02 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_05)
37+ local CHECK_SLOT_03 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_06)
38+ SPELL_ID = 11
39+
40+ if GUN_ID > 0 then
41+ if CHECK_SLOT_01 == SPELL_ID then
42+ cid:sendCancelMessage("@SpellCooldown 01")
43+ return true
44+ elseif CHECK_SLOT_02 == SPELL_ID then
45+ cid:sendCancelMessage("@SpellCooldown 02")
46+ return true
47+ elseif CHECK_SLOT_03 == SPELL_ID then
48+ cid:sendCancelMessage("@SpellCooldown 03")
49+ return true
50+ else
51+ return false
52+ end
53+ else
54+ return false
55+ end
56+ return true
57+end
58+
59+function onCastSpell(cid, var)
60+ if checkSpell11(cid) or cid:getGroup():getAccess() then
61+ local startPos = getCreaturePosition(cid)
62+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
63+ local starGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_03)
64+ local levelGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_07)
65+ min = onDamage(cid, GUN_ID, levelGun, starGun, "SKILL_MIN", SPELL_ID)
66+ max = min
67+ RunPart(combat0_Brush,cid,var)
68+ return true
69+ else
70+ cid:getPosition():sendMagicEffect(03)
71+ return false
72+ end
73+end
Top