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/monster/mutated_bat_curse.lua +13-0 View file
@@ -0,0 +1,13 @@
1+local combat = Combat()
2+combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
3+combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_SMALLCLOUDS)
4+combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_DEATH)
5+combat:setArea(createCombatArea(AREA_SQUAREWAVE7))
6+
7+function onCastSpell(creature, variant)
8+ local damage = math.random(10, 21)
9+ for _, target in ipairs(combat:getTargets(creature, variant)) do
10+ creature:addDamageCondition(target, CONDITION_CURSED, DAMAGELIST_EXPONENTIAL_DAMAGE, damage)
11+ end
12+ return true
13+end
A data/spells/scripts/monster/phantasm_drown.lua +11-0 View file
@@ -0,0 +1,11 @@
1+local combat = Combat()
2+combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_DROWNDAMAGE)
3+combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
4+combat:setArea(createCombatArea(AREA_SQUAREWAVE7))
5+
6+function onCastSpell(creature, variant)
7+ for _, target in ipairs(combat:getTargets(creature, variant)) do
8+ creature:addDamageCondition(target, CONDITION_DROWN, DAMAGELIST_CONSTANT_PERIOD, 20, 5, 20)
9+ end
10+ return true
11+end
A data/spells/scripts/monster/pirate_corsair_skill_reducer.lua +15-0 View file
@@ -0,0 +1,15 @@
1+local combat = Combat()
2+combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_SOUND_PURPLE)
3+combat:setArea(createCombatArea(AREA_BEAM1))
4+
5+local parameters = {
6+ {key = CONDITION_PARAM_TICKS, value = 4 * 1000},
7+ {key = CONDITION_PARAM_SKILL_MELEEPERCENT, value = 25}
8+}
9+
10+function onCastSpell(creature, variant)
11+ for _, target in ipairs(combat:getTargets(creature, variant)) do
12+ target:addAttributeCondition(parameters)
13+ end
14+ return true
15+end
A data/spells/scripts/monster/quara_constrictor_electrify.lua +11-0 View file
@@ -0,0 +1,11 @@
1+local combat = Combat()
2+combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
3+combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_ENERGYHIT)
4+combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY)
5+
6+function onCastSpell(creature, variant)
7+ for _, target in ipairs(combat:getTargets(creature, variant)) do
8+ creature:addDamageCondition(target, CONDITION_ENERGY, DAMAGELIST_VARYING_PERIOD, 25, {10, 12}, 3)
9+ end
10+ return true
11+end
A data/spells/scripts/monster/quara_constrictor_freeze.lua +11-0 View file
@@ -0,0 +1,11 @@
1+local combat = Combat()
2+combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
3+combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
4+combat:setArea(createCombatArea(AREA_SQUARE1X1))
5+
6+function onCastSpell(creature, variant)
7+ for _, target in ipairs(combat:getTargets(creature, variant)) do
8+ creature:addDamageCondition(target, CONDITION_FREEZING, DAMAGELIST_VARYING_PERIOD, 8, {8, 10}, 10)
9+ end
10+ return true
11+end
A data/spells/scripts/monster/rustheap golem electrify.lua +16-0 View file
@@ -0,0 +1,16 @@
1+local combat = Combat()
2+combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
3+combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
4+combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY)
5+
6+local condition = Condition(CONDITION_ENERGY)
7+condition:setParameter(CONDITION_PARAM_DELAYED, 1)
8+condition:addDamage(17, 10000, -25)
9+combat:addCondition(condition)
10+
11+local area = createCombatArea(AREA_SQUARE1X1)
12+combat:setArea(area)
13+
14+function onCastSpell(creature, var)
15+ return combat:execute(creature, var)
16+end
A data/spells/scripts/monster/rustheap golem wave.lua +18-0 View file
@@ -0,0 +1,18 @@
1+local combat = Combat()
2+combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_LIFEDRAIN)
3+combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_BLACKSMOKE)
4+
5+ arr = {
6+ {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},
7+ {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
8+ {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
9+ {0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0}
10+ }
11+
12+local area = createCombatArea(arr)
13+ combat:setArea(area)
14+
15+
16+function onCastSpell(creature, var)
17+ return combat:execute(creature, var)
18+end
A data/spells/scripts/monster/sea_serpent_drown.lua +11-0 View file
@@ -0,0 +1,11 @@
1+local combat = Combat()
2+combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_DROWNDAMAGE)
3+combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_WATERSPLASH)
4+combat:setArea(createCombatArea(AREA_SQUARE1X1))
5+
6+function onCastSpell(creature, variant)
7+ for _, target in ipairs(combat:getTargets(creature, variant)) do
8+ creature:addDamageCondition(target, CONDITION_DROWN, DAMAGELIST_CONSTANT_PERIOD, 20, 5, 12)
9+ end
10+ return true
11+end
A data/spells/scripts/monster/shock_head_skill_reducer_1.lua +16-0 View file
@@ -0,0 +1,16 @@
1+local combat = Combat()
2+combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_GROUNDSHAKER)
3+combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_EXPLOSION)
4+combat:setArea(createCombatArea(AREA_CIRCLE2X2))
5+
6+local parameters = {
7+ {key = CONDITION_PARAM_TICKS, value = 6 * 1000},
8+ {key = CONDITION_PARAM_SKILL_SHIELDPERCENT, value = 65}
9+}
10+
11+function onCastSpell(creature, variant)
12+ for _, target in ipairs(combat:getTargets(creature, variant)) do
13+ target:addAttributeCondition(parameters)
14+ end
15+ return true
16+end
A data/spells/scripts/monster/shock_head_skill_reducer_2.lua +15-0 View file
@@ -0,0 +1,15 @@
1+local combat = Combat()
2+combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_STUN)
3+combat:setArea(createCombatArea(AREA_CIRCLE6X6))
4+
5+local parameters = {
6+ {key = CONDITION_PARAM_TICKS, value = 4 * 1000},
7+ {key = CONDITION_PARAM_STAT_MAGICPOINTSPERCENT, value = 70}
8+}
9+
10+function onCastSpell(creature, variant)
11+ for _, target in ipairs(combat:getTargets(creature, variant)) do
12+ target:addAttributeCondition(parameters)
13+ end
14+ return true
15+end
A data/spells/scripts/monster/silencer_skill_reducer.lua +18-0 View file
@@ -0,0 +1,18 @@
1+local combat = Combat()
2+combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_ENERGYHIT)
3+combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY)
4+combat:setArea(createCombatArea(AREA_CIRCLE2X2))
5+
6+local parameters = {
7+ {key = CONDITION_PARAM_TICKS, value = 6 * 1000},
8+ {key = CONDITION_PARAM_STAT_MAGICPOINTSPERCENT, value = nil}
9+}
10+
11+function onCastSpell(creature, variant)
12+ parameters[2].value = math.random(20, 70)
13+
14+ for _, target in ipairs(combat:getTargets(creature, variant)) do
15+ target:addAttributeCondition(parameters)
16+ end
17+ return true
18+end
A data/spells/scripts/monster/souleater_drown.lua +11-0 View file
@@ -0,0 +1,11 @@
1+local combat = Combat()
2+combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_DROWNDAMAGE)
3+combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
4+combat:setArea(createCombatArea(AREA_CIRCLE2X2))
5+
6+function onCastSpell(creature, variant)
7+ for _, target in ipairs(combat:getTargets(creature, variant)) do
8+ creature:addDamageCondition(target, CONDITION_DROWN, DAMAGELIST_CONSTANT_PERIOD, 20, 5, 10)
9+ end
10+ return true
11+end
A data/spells/scripts/monster/spectre_drown.lua +11-0 View file
@@ -0,0 +1,11 @@
1+local combat = Combat()
2+combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_DROWNDAMAGE)
3+combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_GREEN)
4+combat:setArea(createCombatArea(AREA_CIRCLE3X3))
5+
6+function onCastSpell(creature, variant)
7+ for _, target in ipairs(combat:getTargets(creature, variant)) do
8+ creature:addDamageCondition(target, CONDITION_DROWN, DAMAGELIST_CONSTANT_PERIOD, 20, 5, 20)
9+ end
10+ return true
11+end
A data/spells/scripts/monster/stampor_skill_reducer.lua +20-0 View file
@@ -0,0 +1,20 @@
1+local combat = Combat()
2+combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_SMALLPLANTS)
3+combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SMALLEARTH)
4+combat:setArea(createCombatArea(AREA_BEAM1))
5+
6+local parameters = {
7+ {key = CONDITION_PARAM_TICKS, value = 4 * 1000},
8+ {key = CONDITION_PARAM_SKILL_SHIELDPERCENT, value = nil},
9+ {key = CONDITION_PARAM_SKILL_MELEEPERCENT, value = nil}
10+}
11+
12+function onCastSpell(creature, variant)
13+ parameters[2].value = math.random(60, 85)
14+ parameters[3].value = parameters[2].value
15+
16+ for _, target in ipairs(combat:getTargets(creature, variant)) do
17+ target:addAttributeCondition(parameters)
18+ end
19+ return true
20+end
A data/spells/scripts/monster/undead_dragon_curse.lua +13-0 View file
@@ -0,0 +1,13 @@
1+local combat = Combat()
2+combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
3+combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_SMALLCLOUDS)
4+combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_DEATH)
5+combat:setArea(createCombatArea(AREA_SQUAREWAVE7))
6+
7+function onCastSpell(creature, variant)
8+ local damage = math.random(154, 266)
9+ for _, target in ipairs(combat:getTargets(creature, variant)) do
10+ creature:addDamageCondition(target, CONDITION_CURSED, DAMAGELIST_EXPONENTIAL_DAMAGE, damage)
11+ end
12+ return true
13+end
A data/spells/scripts/monster/vulcongra_soulfire.lua +11-0 View file
@@ -0,0 +1,11 @@
1+local combat = Combat()
2+combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
3+combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_HITBYFIRE)
4+combat:setArea(createCombatArea(AREA_SQUARE1X1))
5+
6+function onCastSpell(creature, variant)
7+ for _, target in ipairs(combat:getTargets(creature, variant)) do
8+ creature:addDamageCondition(target, CONDITION_FIRE, DAMAGELIST_VARYING_PERIOD, 10, {8, 10}, 20)
9+ end
10+ return true
11+end
A data/spells/scripts/monster/warlock_skill_reducer.lua +17-0 View file
@@ -0,0 +1,17 @@
1+local combat = Combat()
2+combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_ICEAREA)
3+combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ICE)
4+combat:setArea(createCombatArea(AREA_BEAM1))
5+
6+local parameters = {
7+ {key = CONDITION_PARAM_TICKS, value = 5 * 1000},
8+ {key = CONDITION_PARAM_SKILL_SHIELDPERCENT, value = 50},
9+ {key = CONDITION_PARAM_SKILL_MELEEPERCENT, value = 50}
10+}
11+
12+function onCastSpell(creature, variant)
13+ for _, target in ipairs(combat:getTargets(creature, variant)) do
14+ target:addAttributeCondition(parameters)
15+ end
16+ return true
17+end
A data/spells/scripts/monster/war_golem_electrify.lua +10-0 View file
@@ -0,0 +1,10 @@
1+local combat = Combat()
2+combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
3+combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_ENERGYHIT)
4+
5+function onCastSpell(creature, variant)
6+ for _, target in ipairs(combat:getTargets(creature, variant)) do
7+ creature:addDamageCondition(target, CONDITION_ENERGY, DAMAGELIST_VARYING_PERIOD, 25, {10, 12}, 8)
8+ end
9+ return true
10+end
A data/spells/scripts/monster/war_golem_skill_reducer.lua +15-0 View file
@@ -0,0 +1,15 @@
1+local combat = Combat()
2+combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_STUN)
3+combat:setArea(createCombatArea(AREA_BEAM8))
4+
5+local parameters = {
6+ {key = CONDITION_PARAM_TICKS, value = 3 * 1000},
7+ {key = CONDITION_PARAM_SKILL_SHIELDPERCENT, value = 70}
8+}
9+
10+function onCastSpell(creature, variant)
11+ for _, target in ipairs(combat:getTargets(creature, variant)) do
12+ target:addAttributeCondition(parameters)
13+ end
14+ return true
15+end
A data/spells/scripts/monster/werewolf_skill_reducer.lua +16-0 View file
@@ -0,0 +1,16 @@
1+local combat = Combat()
2+combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_DRAWBLOOD)
3+combat:setArea(createCombatArea(AREA_BEAM1))
4+
5+local parameters = {
6+ {key = CONDITION_PARAM_TICKS, value = 4 * 1000},
7+ {key = CONDITION_PARAM_SKILL_SHIELDPERCENT, value = 65},
8+ {key = CONDITION_PARAM_SKILL_MELEEPERCENT, value = 65}
9+}
10+
11+function onCastSpell(creature, variant)
12+ for _, target in ipairs(combat:getTargets(creature, variant)) do
13+ target:addAttributeCondition(parameters)
14+ end
15+ return true
16+end
A data/spells/scripts/monster/young_sea_serpent_drown.lua +11-0 View file
@@ -0,0 +1,11 @@
1+local combat = Combat()
2+combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_DROWNDAMAGE)
3+combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_WATERSPLASH)
4+combat:setArea(createCombatArea(AREA_SQUARE1X1))
5+
6+function onCastSpell(creature, variant)
7+ for _, target in ipairs(combat:getTargets(creature, variant)) do
8+ creature:addDamageCondition(target, CONDITION_DROWN, DAMAGELIST_CONSTANT_PERIOD, 20, 5, 6)
9+ end
10+ return true
11+end
A data/spells/scripts/moss_smash.lua +121-0 View file
@@ -0,0 +1,121 @@
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_STONES)
9+setCombatParam(combat0_Brush, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_EARTH)
10+setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
11+setCombatArea(combat0_Brush,createCombatArea({{3}}))
12+function getDmg_Brush(cid, level, maglevel)
13+
14+ return -min, -max
15+end
16+setCombatCallback(combat0_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
17+
18+-- Areas/Combat for 200ms
19+local combat2_Brush_2 = createCombatObject()
20+setCombatParam(combat2_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_SMALLPLANTS)
21+setCombatParam(combat2_Brush_2, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
22+setCombatArea(combat2_Brush_2,createCombatArea({{0, 1, 0},
23+{1, 2, 1},
24+{0, 1, 0}}))
25+function getDmg_Brush_2(cid, level, maglevel)
26+
27+ return -min, -max
28+end
29+setCombatCallback(combat2_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
30+
31+-- Areas/Combat for 400ms
32+local combat4_Brush_2 = createCombatObject()
33+setCombatParam(combat4_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_SMALLPLANTS)
34+setCombatParam(combat4_Brush_2, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
35+setCombatArea(combat4_Brush_2,createCombatArea({{0, 0, 1, 0, 0},
36+{0, 1, 0, 1, 0},
37+{1, 0, 2, 0, 1},
38+{0, 1, 0, 1, 0},
39+{0, 0, 1, 0, 0}}))
40+function getDmg_Brush_2(cid, level, maglevel)
41+
42+ return -min, -max
43+end
44+setCombatCallback(combat4_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")
45+
46+-- Areas/Combat for 1100ms
47+local combat11_Brush_3 = createCombatObject()
48+setCombatParam(combat11_Brush_3, COMBAT_PARAM_EFFECT, CONST_ME_STONES)
49+setCombatParam(combat11_Brush_3, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
50+setCombatArea(combat11_Brush_3,createCombatArea({{0, 1, 0},
51+{1, 2, 1},
52+{0, 1, 0}}))
53+
54+
55+-- Areas/Combat for 1300ms
56+local combat13_Brush_3 = createCombatObject()
57+setCombatParam(combat13_Brush_3, COMBAT_PARAM_EFFECT, CONST_ME_STONES)
58+setCombatParam(combat13_Brush_3, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
59+setCombatArea(combat13_Brush_3,createCombatArea({{0, 0, 1, 0, 0},
60+{0, 1, 0, 1, 0},
61+{1, 0, 2, 0, 1},
62+{0, 1, 0, 1, 0},
63+{0, 0, 1, 0, 0}}))
64+
65+
66+-- =============== CORE FUNCTIONS ===============
67+local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
68+ if (isCreature(cid)) then
69+ doCombat(cid, c, var)
70+ if (dirList ~= nil) then -- Emit distance effects
71+ local i = 2;
72+ while (i < #dirList) do
73+ doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
74+ i = i + 2
75+ end
76+ end
77+ end
78+end
79+function checkSpell52(cid)
80+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
81+ local CHECK_SLOT_01 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_04)
82+ local CHECK_SLOT_02 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_05)
83+ local CHECK_SLOT_03 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_06)
84+ SPELL_ID = 52
85+
86+ if GUN_ID > 0 then
87+ if CHECK_SLOT_01 == SPELL_ID then
88+ cid:sendCancelMessage("@SpellCooldown 01")
89+ return true
90+ elseif CHECK_SLOT_02 == SPELL_ID then
91+ cid:sendCancelMessage("@SpellCooldown 02")
92+ return true
93+ elseif CHECK_SLOT_03 == SPELL_ID then
94+ cid:sendCancelMessage("@SpellCooldown 03")
95+ return true
96+ else
97+ return false
98+ end
99+ else
100+ return false
101+ end
102+end
103+function onCastSpell(cid, var)
104+ if checkSpell52(cid) or cid:getGroup():getAccess() then
105+ local startPos = getCreaturePosition(cid)
106+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
107+ local starGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_03)
108+ local levelGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_07)
109+ min = onDamage(cid, GUN_ID, levelGun, starGun, "SKILL_MIN", SPELL_ID)
110+ max = min
111+ RunPart(combat0_Brush,cid,var)
112+ addEvent(RunPart,200,combat2_Brush_2,cid.uid,var)
113+ addEvent(RunPart,400,combat4_Brush_2,cid.uid,var)
114+ addEvent(RunPart,1100,combat11_Brush_3,cid.uid,var)
115+ addEvent(RunPart,1300,combat13_Brush_3,cid.uid,var)
116+ return true
117+ else
118+ cid:getPosition():sendMagicEffect(03)
119+ return false
120+ end
121+end
A data/spells/scripts/nature_wave.lua +134-0 View file
@@ -0,0 +1,134 @@
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, 0, 1, 0, 0},
11+{0, 0, 0, 0, 0},
12+{1, 0, 2, 0, 1},
13+{0, 0, 0, 0, 0},
14+{0, 0, 1, 0, 0}}))
15+function getDmg_Brush(cid, level, maglevel)
16+
17+ return -min, -max
18+end
19+setCombatCallback(combat1_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
20+
21+-- Areas/Combat for 0ms
22+local combat0_Brush = createCombatObject()
23+setCombatParam(combat0_Brush, COMBAT_PARAM_EFFECT, CONST_ME_SMALLPLANTS)
24+setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
25+setCombatArea(combat0_Brush,createCombatArea({{0, 1, 0},
26+{1, 2, 1},
27+{0, 1, 0}}))
28+function getDmg_Brush(cid, level, maglevel)
29+
30+ return -min, -max
31+end
32+setCombatCallback(combat0_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
33+
34+-- Areas/Combat for 200ms
35+local combat2_Brush = createCombatObject()
36+setCombatParam(combat2_Brush, COMBAT_PARAM_EFFECT, CONST_ME_SMALLPLANTS)
37+setCombatParam(combat2_Brush, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
38+setCombatArea(combat2_Brush,createCombatArea({{0, 0, 0, 1, 0, 0, 0},
39+{0, 0, 0, 0, 0, 0, 0},
40+{0, 0, 0, 0, 0, 0, 0},
41+{1, 0, 0, 2, 0, 0, 1},
42+{0, 0, 0, 0, 0, 0, 0},
43+{0, 0, 0, 0, 0, 0, 0},
44+{0, 0, 0, 1, 0, 0, 0}}))
45+function getDmg_Brush(cid, level, maglevel)
46+
47+ return -min, -max
48+end
49+setCombatCallback(combat2_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
50+
51+-- Areas/Combat for 300ms
52+local combat3_Brush = createCombatObject()
53+setCombatParam(combat3_Brush, COMBAT_PARAM_EFFECT, CONST_ME_SMALLPLANTS)
54+setCombatParam(combat3_Brush, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
55+setCombatArea(combat3_Brush,createCombatArea({{1, 0, 1},
56+{0, 2, 0},
57+{1, 0, 1}}))
58+function getDmg_Brush(cid, level, maglevel)
59+
60+ return -min, -max
61+end
62+setCombatCallback(combat3_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
63+
64+-- Areas/Combat for 400ms
65+local combat4_Brush = createCombatObject()
66+setCombatParam(combat4_Brush, COMBAT_PARAM_EFFECT, CONST_ME_SMALLPLANTS)
67+setCombatParam(combat4_Brush, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
68+setCombatArea(combat4_Brush,createCombatArea({{1, 0, 0, 0, 1},
69+{0, 0, 0, 0, 0},
70+{0, 0, 2, 0, 0},
71+{0, 0, 0, 0, 0},
72+{1, 0, 0, 0, 1}}))
73+function getDmg_Brush(cid, level, maglevel)
74+
75+ return -min, -max
76+end
77+setCombatCallback(combat4_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
78+
79+-- =============== CORE FUNCTIONS ===============
80+local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
81+ if (isCreature(cid)) then
82+ doCombat(cid, c, var)
83+ if (dirList ~= nil) then -- Emit distance effects
84+ local i = 2;
85+ while (i < #dirList) do
86+ doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
87+ i = i + 2
88+ end
89+ end
90+ end
91+end
92+function checkSpell59(cid)
93+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
94+ local CHECK_SLOT_01 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_04)
95+ local CHECK_SLOT_02 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_05)
96+ local CHECK_SLOT_03 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_06)
97+ SPELL_ID = 59
98+
99+ if GUN_ID > 0 then
100+ if CHECK_SLOT_01 == SPELL_ID then
101+ cid:sendCancelMessage("@SpellCooldown 01")
102+ return true
103+ elseif CHECK_SLOT_02 == SPELL_ID then
104+ cid:sendCancelMessage("@SpellCooldown 02")
105+ return true
106+ elseif CHECK_SLOT_03 == SPELL_ID then
107+ cid:sendCancelMessage("@SpellCooldown 03")
108+ return true
109+ else
110+ return false
111+ end
112+ else
113+ return false
114+ end
115+end
116+function onCastSpell(cid, var)
117+ if checkSpell59(cid) or cid:getGroup():getAccess() then
118+ local startPos = getCreaturePosition(cid)
119+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
120+ local starGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_03)
121+ local levelGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_07)
122+ min = onDamage(cid, GUN_ID, levelGun, starGun, "SKILL_MIN", SPELL_ID)
123+ max = min
124+ addEvent(RunPart,100,combat1_Brush,cid.uid,var)
125+ RunPart(combat0_Brush,cid,var)
126+ addEvent(RunPart,200,combat2_Brush,cid.uid,var)
127+ addEvent(RunPart,300,combat3_Brush,cid.uid,var)
128+ addEvent(RunPart,400,combat4_Brush,cid.uid,var)
129+ return true
130+ else
131+ cid:getPosition():sendMagicEffect(03)
132+ return false
133+ end
134+end
A data/spells/scripts/obliteration_bomb.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 = createCombatObject()
8+setCombatParam(combat1_Brush, COMBAT_PARAM_EFFECT, CONST_ME_BLOCKHIT)
9+setCombatParam(combat1_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
10+setCombatArea(combat1_Brush,createCombatArea({{1, 1, 1, 1, 1, 1, 1},
11+{1, 0, 0, 0, 0, 0, 1},
12+{1, 0, 0, 0, 0, 0, 1},
13+{1, 0, 0, 2, 0, 0, 1},
14+{1, 0, 0, 0, 0, 0, 1},
15+{1, 0, 0, 0, 0, 0, 1},
16+{1, 1, 1, 1, 1, 1, 1}}))
17+function getDmg_Brush(cid, level, maglevel)
18+
19+ return -min, -max
20+end
21+setCombatCallback(combat1_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
22+
23+-- Areas/Combat for 0ms
24+local combat0_Brush = createCombatObject()
25+setCombatParam(combat0_Brush, COMBAT_PARAM_EFFECT, CONST_ME_BLOCKHIT)
26+setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
27+setCombatArea(combat0_Brush,createCombatArea({{1, 1, 1, 1, 1, 1, 1, 1, 1},
28+{1, 0, 0, 0, 0, 0, 0, 0, 1},
29+{1, 0, 0, 0, 0, 0, 0, 0, 1},
30+{1, 0, 0, 0, 0, 0, 0, 0, 1},
31+{1, 0, 0, 0, 2, 0, 0, 0, 1},
32+{1, 0, 0, 0, 0, 0, 0, 0, 1},
33+{1, 0, 0, 0, 0, 0, 0, 0, 1},
34+{1, 0, 0, 0, 0, 0, 0, 0, 1},
35+{1, 1, 1, 1, 1, 1, 1, 1, 1}}))
36+function getDmg_Brush(cid, level, maglevel)
37+
38+ return -min, -max
39+end
40+setCombatCallback(combat0_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
41+
42+-- Areas/Combat for 200ms
43+local combat2_Brush = createCombatObject()
44+setCombatParam(combat2_Brush, COMBAT_PARAM_EFFECT, CONST_ME_BLOCKHIT)
45+setCombatParam(combat2_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
46+setCombatArea(combat2_Brush,createCombatArea({{1, 1, 1, 1, 1},
47+{1, 0, 0, 0, 1},
48+{1, 0, 2, 0, 1},
49+{1, 0, 0, 0, 1},
50+{1, 1, 1, 1, 1}}))
51+function getDmg_Brush(cid, level, maglevel)
52+
53+ return -min, -max
54+end
55+setCombatCallback(combat2_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
56+
57+-- Areas/Combat for 300ms
58+local combat3_Brush = createCombatObject()
59+setCombatParam(combat3_Brush, COMBAT_PARAM_EFFECT, CONST_ME_BLOCKHIT)
60+setCombatParam(combat3_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
61+setCombatArea(combat3_Brush,createCombatArea({{1, 1, 1},
62+{1, 2, 1},
63+{1, 1, 1}}))
64+function getDmg_Brush(cid, level, maglevel)
65+
66+ return -min, -max
67+end
68+setCombatCallback(combat3_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
69+
70+-- Areas/Combat for 600ms
71+local combat6_Brush_2 = createCombatObject()
72+setCombatParam(combat6_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONAREA)
73+setCombatParam(combat6_Brush_2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
74+setCombatArea(combat6_Brush_2,createCombatArea({{1, 1, 1, 0, 0, 0, 1, 1, 1},
75+{1, 1, 1, 1, 1, 1, 1, 1, 1},
76+{1, 1, 1, 1, 1, 1, 1, 1, 1},
77+{0, 1, 1, 1, 1, 1, 1, 1, 0},
78+{0, 1, 1, 1, 2, 1, 1, 1, 0},
79+{0, 1, 1, 1, 1, 1, 1, 1, 0},
80+{1, 1, 1, 1, 1, 1, 1, 1, 1},
81+{1, 1, 1, 1, 1, 1, 1, 1, 1},
82+{1, 1, 1, 0, 0, 0, 1, 1, 1}}))
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+-- =============== CORE FUNCTIONS ===============
90+local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
91+ if (isCreature(cid)) then
92+ doCombat(cid, c, var)
93+ if (dirList ~= nil) then -- Emit distance effects
94+ local i = 2;
95+ while (i < #dirList) do
96+ doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
97+ i = i + 2
98+ end
99+ end
100+ end
101+end
102+function checkSpell38(cid)
103+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
104+ local CHECK_SLOT_01 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_04)
105+ local CHECK_SLOT_02 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_05)
106+ local CHECK_SLOT_03 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_06)
107+ SPELL_ID = 38
108+
109+ if GUN_ID > 0 then
110+ if CHECK_SLOT_01 == SPELL_ID then
111+ cid:sendCancelMessage("@SpellCooldown 01")
112+ return true
113+ elseif CHECK_SLOT_02 == SPELL_ID then
114+ cid:sendCancelMessage("@SpellCooldown 02")
115+ return true
116+ elseif CHECK_SLOT_03 == SPELL_ID then
117+ cid:sendCancelMessage("@SpellCooldown 03")
118+ return true
119+ else
120+ return false
121+ end
122+ else
123+ return false
124+ end
125+end
126+function onCastSpell(cid, var)
127+ if checkSpell38(cid) or cid:getGroup():getAccess() then
128+ local startPos = getCreaturePosition(cid)
129+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
130+ local starGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_03)
131+ local levelGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_07)
132+ min = onDamage(cid, GUN_ID, levelGun, starGun, "SKILL_MIN", SPELL_ID)
133+ max = min
134+ addEvent(RunPart,100,combat1_Brush,cid.uid,var)
135+ RunPart(combat0_Brush,cid,var)
136+ addEvent(RunPart,200,combat2_Brush,cid.uid,var)
137+ addEvent(RunPart,300,combat3_Brush,cid.uid,var)
138+ addEvent(RunPart,600,combat6_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/perversion_beam.lua +429-0 View file
@@ -0,0 +1,429 @@
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({{0, 2},
11+{1, 0}}))
12+function getDmg_Brush(cid, level, maglevel)
13+
14+ return -min, -max
15+end
16+setCombatCallback(combat1_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
17+local dfcombat1_Brush = {CONST_ANI_SUDDENDEATH,-1,1}
18+
19+-- Areas/Combat for 0ms
20+local combat0_Brush = createCombatObject()
21+setCombatParam(combat0_Brush, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
22+setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
23+setCombatArea(combat0_Brush,createCombatArea({{2},
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")
30+local dfcombat0_Brush = {CONST_ANI_SUDDENDEATH,0,1}
31+
32+-- Areas/Combat for 200ms
33+local combat2_Brush = createCombatObject()
34+setCombatParam(combat2_Brush, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
35+setCombatParam(combat2_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
36+setCombatArea(combat2_Brush,createCombatArea({{1, 2}}))
37+function getDmg_Brush(cid, level, maglevel)
38+
39+ return -min, -max
40+end
41+setCombatCallback(combat2_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
42+local dfcombat2_Brush = {CONST_ANI_SUDDENDEATH,-1,0}
43+
44+-- Areas/Combat for 300ms
45+local combat3_Brush = createCombatObject()
46+setCombatParam(combat3_Brush, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
47+setCombatParam(combat3_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
48+setCombatArea(combat3_Brush,createCombatArea({{1, 0},
49+{0, 2}}))
50+function getDmg_Brush(cid, level, maglevel)
51+
52+ return -min, -max
53+end
54+setCombatCallback(combat3_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
55+local dfcombat3_Brush = {CONST_ANI_SUDDENDEATH,-1,-1}
56+
57+-- Areas/Combat for 400ms
58+local combat4_Brush = createCombatObject()
59+setCombatParam(combat4_Brush, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
60+setCombatParam(combat4_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
61+setCombatArea(combat4_Brush,createCombatArea({{1},
62+{2}}))
63+function getDmg_Brush(cid, level, maglevel)
64+
65+ return -min, -max
66+end
67+setCombatCallback(combat4_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
68+local dfcombat4_Brush = {CONST_ANI_SUDDENDEATH,0,-1}
69+
70+-- Areas/Combat for 500ms
71+local combat5_Brush = createCombatObject()
72+setCombatParam(combat5_Brush, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
73+setCombatParam(combat5_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
74+setCombatArea(combat5_Brush,createCombatArea({{0, 1},
75+{2, 0}}))
76+function getDmg_Brush(cid, level, maglevel)
77+
78+ return -min, -max
79+end
80+setCombatCallback(combat5_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
81+local dfcombat5_Brush = {CONST_ANI_SUDDENDEATH,1,-1}
82+
83+-- Areas/Combat for 600ms
84+local combat6_Brush = createCombatObject()
85+setCombatParam(combat6_Brush, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
86+setCombatParam(combat6_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
87+setCombatArea(combat6_Brush,createCombatArea({{2, 1}}))
88+function getDmg_Brush(cid, level, maglevel)
89+
90+ return -min, -max
91+end
92+setCombatCallback(combat6_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
93+local dfcombat6_Brush = {CONST_ANI_SUDDENDEATH,1,0}
94+
95+-- Areas/Combat for 700ms
96+local combat7_Brush = createCombatObject()
97+setCombatParam(combat7_Brush, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
98+setCombatParam(combat7_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
99+setCombatArea(combat7_Brush,createCombatArea({{2, 0},
100+{0, 1}}))
101+function getDmg_Brush(cid, level, maglevel)
102+
103+ return -min, -max
104+end
105+setCombatCallback(combat7_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
106+local dfcombat7_Brush = {CONST_ANI_SUDDENDEATH,1,1}
107+
108+-- Areas/Combat for 800ms
109+local combat8_Brush = createCombatObject()
110+setCombatParam(combat8_Brush, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
111+setCombatParam(combat8_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
112+setCombatArea(combat8_Brush,createCombatArea({{2, 0},
113+{0, 0},
114+{0, 1}}))
115+function getDmg_Brush(cid, level, maglevel)
116+
117+ return -min, -max
118+end
119+setCombatCallback(combat8_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
120+local dfcombat8_Brush = {CONST_ANI_SUDDENDEATH,1,2}
121+
122+-- Areas/Combat for 900ms
123+local combat9_Brush = createCombatObject()
124+setCombatParam(combat9_Brush, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
125+setCombatParam(combat9_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
126+setCombatArea(combat9_Brush,createCombatArea({{2},
127+{0},
128+{1}}))
129+function getDmg_Brush(cid, level, maglevel)
130+
131+ return -min, -max
132+end
133+setCombatCallback(combat9_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
134+local dfcombat9_Brush = {CONST_ANI_SUDDENDEATH,0,2}
135+
136+-- Areas/Combat for 1000ms
137+local combat10_Brush = createCombatObject()
138+setCombatParam(combat10_Brush, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
139+setCombatParam(combat10_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
140+setCombatArea(combat10_Brush,createCombatArea({{0, 2},
141+{0, 0},
142+{1, 0}}))
143+function getDmg_Brush(cid, level, maglevel)
144+
145+ return -min, -max
146+end
147+setCombatCallback(combat10_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
148+local dfcombat10_Brush = {CONST_ANI_SUDDENDEATH,-1,2}
149+
150+-- Areas/Combat for 1100ms
151+local combat11_Brush = createCombatObject()
152+setCombatParam(combat11_Brush, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
153+setCombatParam(combat11_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
154+setCombatArea(combat11_Brush,createCombatArea({{0, 0, 2},
155+{0, 0, 0},
156+{1, 0, 0}}))
157+function getDmg_Brush(cid, level, maglevel)
158+
159+ return -min, -max
160+end
161+setCombatCallback(combat11_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
162+local dfcombat11_Brush = {CONST_ANI_SUDDENDEATH,-2,2}
163+
164+-- Areas/Combat for 1200ms
165+local combat12_Brush = createCombatObject()
166+setCombatParam(combat12_Brush, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
167+setCombatParam(combat12_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
168+setCombatArea(combat12_Brush,createCombatArea({{0, 0, 2},
169+{1, 0, 0}}))
170+function getDmg_Brush(cid, level, maglevel)
171+
172+ return -min, -max
173+end
174+setCombatCallback(combat12_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
175+local dfcombat12_Brush = {CONST_ANI_SUDDENDEATH,-2,1}
176+
177+-- Areas/Combat for 1300ms
178+local combat13_Brush = createCombatObject()
179+setCombatParam(combat13_Brush, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
180+setCombatParam(combat13_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
181+setCombatArea(combat13_Brush,createCombatArea({{1, 0, 2}}))
182+function getDmg_Brush(cid, level, maglevel)
183+
184+ return -min, -max
185+end
186+setCombatCallback(combat13_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
187+local dfcombat13_Brush = {CONST_ANI_SUDDENDEATH,-2,0}
188+
189+-- Areas/Combat for 1400ms
190+local combat14_Brush = createCombatObject()
191+setCombatParam(combat14_Brush, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
192+setCombatParam(combat14_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
193+setCombatArea(combat14_Brush,createCombatArea({{1, 0, 0},
194+{0, 0, 2}}))
195+function getDmg_Brush(cid, level, maglevel)
196+
197+ return -min, -max
198+end
199+setCombatCallback(combat14_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
200+local dfcombat14_Brush = {CONST_ANI_SUDDENDEATH,-2,-1}
201+
202+-- Areas/Combat for 1500ms
203+local combat15_Brush = createCombatObject()
204+setCombatParam(combat15_Brush, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
205+setCombatParam(combat15_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
206+setCombatArea(combat15_Brush,createCombatArea({{1, 0, 0},
207+{0, 0, 0},
208+{0, 0, 2}}))
209+function getDmg_Brush(cid, level, maglevel)
210+
211+ return -min, -max
212+end
213+setCombatCallback(combat15_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
214+local dfcombat15_Brush = {CONST_ANI_SUDDENDEATH,-2,-2}
215+
216+-- Areas/Combat for 1600ms
217+local combat16_Brush = createCombatObject()
218+setCombatParam(combat16_Brush, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
219+setCombatParam(combat16_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
220+setCombatArea(combat16_Brush,createCombatArea({{1, 0},
221+{0, 0},
222+{0, 2}}))
223+function getDmg_Brush(cid, level, maglevel)
224+
225+ return -min, -max
226+end
227+setCombatCallback(combat16_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
228+local dfcombat16_Brush = {CONST_ANI_SUDDENDEATH,-1,-2}
229+
230+-- Areas/Combat for 1700ms
231+local combat17_Brush = createCombatObject()
232+setCombatParam(combat17_Brush, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
233+setCombatParam(combat17_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
234+setCombatArea(combat17_Brush,createCombatArea({{1},
235+{0},
236+{2}}))
237+function getDmg_Brush(cid, level, maglevel)
238+
239+ return -min, -max
240+end
241+setCombatCallback(combat17_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
242+local dfcombat17_Brush = {CONST_ANI_SUDDENDEATH,0,-2}
243+
244+-- Areas/Combat for 1800ms
245+local combat18_Brush = createCombatObject()
246+setCombatParam(combat18_Brush, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
247+setCombatParam(combat18_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
248+setCombatArea(combat18_Brush,createCombatArea({{0, 1},
249+{0, 0},
250+{2, 0}}))
251+function getDmg_Brush(cid, level, maglevel)
252+
253+ return -min, -max
254+end
255+setCombatCallback(combat18_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
256+local dfcombat18_Brush = {CONST_ANI_SUDDENDEATH,1,-2}
257+
258+-- Areas/Combat for 1900ms
259+local combat19_Brush = createCombatObject()
260+setCombatParam(combat19_Brush, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
261+setCombatParam(combat19_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
262+setCombatArea(combat19_Brush,createCombatArea({{0, 0, 1},
263+{0, 0, 0},
264+{2, 0, 0}}))
265+function getDmg_Brush(cid, level, maglevel)
266+
267+ return -min, -max
268+end
269+setCombatCallback(combat19_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
270+local dfcombat19_Brush = {CONST_ANI_SUDDENDEATH,2,-2}
271+
272+-- Areas/Combat for 2000ms
273+local combat20_Brush = createCombatObject()
274+setCombatParam(combat20_Brush, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
275+setCombatParam(combat20_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
276+setCombatArea(combat20_Brush,createCombatArea({{0, 0, 1},
277+{2, 0, 0}}))
278+function getDmg_Brush(cid, level, maglevel)
279+
280+ return -min, -max
281+end
282+setCombatCallback(combat20_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
283+local dfcombat20_Brush = {CONST_ANI_SUDDENDEATH,2,-1}
284+
285+-- Areas/Combat for 2100ms
286+local combat21_Brush = createCombatObject()
287+setCombatParam(combat21_Brush, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
288+setCombatParam(combat21_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
289+setCombatArea(combat21_Brush,createCombatArea({{2, 0, 1}}))
290+function getDmg_Brush(cid, level, maglevel)
291+
292+ return -min, -max
293+end
294+setCombatCallback(combat21_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
295+local dfcombat21_Brush = {CONST_ANI_SUDDENDEATH,2,0}
296+
297+-- Areas/Combat for 2200ms
298+local combat22_Brush = createCombatObject()
299+setCombatParam(combat22_Brush, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
300+setCombatParam(combat22_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
301+setCombatArea(combat22_Brush,createCombatArea({{2, 0, 0},
302+{0, 0, 1}}))
303+function getDmg_Brush(cid, level, maglevel)
304+
305+ return -min, -max
306+end
307+setCombatCallback(combat22_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
308+local dfcombat22_Brush = {CONST_ANI_SUDDENDEATH,2,1}
309+
310+-- Areas/Combat for 2300ms
311+local combat23_Brush = createCombatObject()
312+setCombatParam(combat23_Brush, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
313+setCombatParam(combat23_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
314+setCombatArea(combat23_Brush,createCombatArea({{2, 0, 0},
315+{0, 0, 0},
316+{0, 0, 1}}))
317+function getDmg_Brush(cid, level, maglevel)
318+
319+ return -min, -max
320+end
321+setCombatCallback(combat23_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
322+local dfcombat23_Brush = {CONST_ANI_SUDDENDEATH,2,2}
323+
324+-- Areas/Combat for 2400ms
325+local combat24_Brush = createCombatObject()
326+setCombatParam(combat24_Brush, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
327+setCombatParam(combat24_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
328+setCombatArea(combat24_Brush,createCombatArea({{2, 0},
329+{0, 0},
330+{0, 1}}))
331+function getDmg_Brush(cid, level, maglevel)
332+
333+ return -min, -max
334+end
335+setCombatCallback(combat24_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
336+local dfcombat24_Brush = {CONST_ANI_SUDDENDEATH,1,2}
337+
338+-- Areas/Combat for 2500ms
339+local combat25_Brush = createCombatObject()
340+setCombatParam(combat25_Brush, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
341+setCombatParam(combat25_Brush, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
342+setCombatArea(combat25_Brush,createCombatArea({{2},
343+{0},
344+{1}}))
345+function getDmg_Brush(cid, level, maglevel)
346+
347+ return -min, -max
348+end
349+setCombatCallback(combat25_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
350+local dfcombat25_Brush = {CONST_ANI_SUDDENDEATH,0,2}
351+
352+-- =============== CORE FUNCTIONS ===============
353+local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
354+ if (isCreature(cid)) then
355+ doCombat(cid, c, var)
356+ if (dirList ~= nil) then -- Emit distance effects
357+ local i = 2;
358+ while (i < #dirList) do
359+ doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
360+ i = i + 2
361+ end
362+ end
363+ end
364+end
365+function checkSpell28(cid)
366+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
367+ local CHECK_SLOT_01 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_04)
368+ local CHECK_SLOT_02 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_05)
369+ local CHECK_SLOT_03 = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_06)
370+ SPELL_ID = 28
371+
372+ if GUN_ID > 0 then
373+ if CHECK_SLOT_01 == SPELL_ID then
374+ cid:sendCancelMessage("@SpellCooldown 01")
375+ return true
376+ elseif CHECK_SLOT_02 == SPELL_ID then
377+ cid:sendCancelMessage("@SpellCooldown 02")
378+ return true
379+ elseif CHECK_SLOT_03 == SPELL_ID then
380+ cid:sendCancelMessage("@SpellCooldown 03")
381+ return true
382+ else
383+ return false
384+ end
385+ else
386+ return false
387+ end
388+ return true
389+end
390+function onCastSpell(cid, var)
391+ if checkSpell28(cid) or cid:getGroup():getAccess() then
392+ local startPos = getCreaturePosition(cid)
393+ local GUN_ID = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
394+ local starGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_03)
395+ local levelGun = cid:getStorageValue(_SYSTEM.INVENTARIO[04].UID_07)
396+ min = onDamage(cid, GUN_ID, levelGun, starGun, "SKILL_MIN", SPELL_ID)
397+ max = min
398+ addEvent(RunPart,100,combat1_Brush,cid.uid,var,dfcombat1_Brush,startPos)
399+ RunPart(combat0_Brush,cid,var,dfcombat0_Brush,startPos)
400+ addEvent(RunPart,200,combat2_Brush,cid.uid,var,dfcombat2_Brush,startPos)
401+ addEvent(RunPart,300,combat3_Brush,cid.uid,var,dfcombat3_Brush,startPos)
402+ addEvent(RunPart,400,combat4_Brush,cid.uid,var,dfcombat4_Brush,startPos)
403+ addEvent(RunPart,500,combat5_Brush,cid.uid,var,dfcombat5_Brush,startPos)
404+ addEvent(RunPart,600,combat6_Brush,cid.uid,var,dfcombat6_Brush,startPos)
405+ addEvent(RunPart,700,combat7_Brush,cid.uid,var,dfcombat7_Brush,startPos)
406+ addEvent(RunPart,800,combat8_Brush,cid.uid,var,dfcombat8_Brush,startPos)
407+ addEvent(RunPart,900,combat9_Brush,cid.uid,var,dfcombat9_Brush,startPos)
408+ addEvent(RunPart,1000,combat10_Brush,cid.uid,var,dfcombat10_Brush,startPos)
409+ addEvent(RunPart,1100,combat11_Brush,cid.uid,var,dfcombat11_Brush,startPos)
410+ addEvent(RunPart,1200,combat12_Brush,cid.uid,var,dfcombat12_Brush,startPos)
411+ addEvent(RunPart,1300,combat13_Brush,cid.uid,var,dfcombat13_Brush,startPos)
412+ addEvent(RunPart,1400,combat14_Brush,cid.uid,var,dfcombat14_Brush,startPos)
413+ addEvent(RunPart,1500,combat15_Brush,cid.uid,var,dfcombat15_Brush,startPos)
414+ addEvent(RunPart,1600,combat16_Brush,cid.uid,var,dfcombat16_Brush,startPos)
415+ addEvent(RunPart,1700,combat17_Brush,cid.uid,var,dfcombat17_Brush,startPos)
416+ addEvent(RunPart,1800,combat18_Brush,cid.uid,var,dfcombat18_Brush,startPos)
417+ addEvent(RunPart,1900,combat19_Brush,cid.uid,var,dfcombat19_Brush,startPos)
418+ addEvent(RunPart,2000,combat20_Brush,cid.uid,var,dfcombat20_Brush,startPos)
419+ addEvent(RunPart,2100,combat21_Brush,cid.uid,var,dfcombat21_Brush,startPos)
420+ addEvent(RunPart,2200,combat22_Brush,cid.uid,var,dfcombat22_Brush,startPos)
421+ addEvent(RunPart,2300,combat23_Brush,cid.uid,var,dfcombat23_Brush,startPos)
422+ addEvent(RunPart,2400,combat24_Brush,cid.uid,var,dfcombat24_Brush,startPos)
423+ addEvent(RunPart,2500,combat25_Brush,cid.uid,var,dfcombat25_Brush,startPos)
424+ return true
425+ else
426+ cid:getPosition():sendMagicEffect(03)
427+ return false
428+ end
429+end
Top