mirror of
https://github.com/ErikasKontenis/SabrehavenServer.git
synced 2025-11-28 15:46:49 +01:00
Full Distribution
This commit is contained in:
220
data/spells/lib/spells.lua
Normal file
220
data/spells/lib/spells.lua
Normal file
@@ -0,0 +1,220 @@
|
||||
function healingFormula(level, maglevel, base, variation)
|
||||
local value = 2 * level + (3 * maglevel)
|
||||
local min = value - math.random(variation) + base / 100
|
||||
local max = value + math.random(variation) + base / 100
|
||||
return min, max
|
||||
end
|
||||
|
||||
function damageFormula(level, maglevel, base, variation)
|
||||
local value = 2 * level + (3 * maglevel)
|
||||
local min = value - math.random(variation) + base / 100
|
||||
local max = value + math.random(variation) + base / 100
|
||||
return -min, -max
|
||||
end
|
||||
|
||||
function computeFormula(level, maglevel, base, variation)
|
||||
local damage = base
|
||||
if variation > 0 then
|
||||
damage = math.random(-variation, variation) + damage
|
||||
end
|
||||
|
||||
local level_formula = 2 * level
|
||||
local magic_formula = 3 * maglevel + level_formula
|
||||
|
||||
return magic_formula * damage / 100
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------------------------
|
||||
|
||||
AREA_WAVE3 = {
|
||||
{1, 1, 1},
|
||||
{1, 1, 1},
|
||||
{0, 3, 0}
|
||||
}
|
||||
|
||||
AREA_WAVE4 = {
|
||||
{1, 1, 1, 1, 1},
|
||||
{0, 1, 1, 1, 0},
|
||||
{0, 1, 1, 1, 0},
|
||||
{0, 0, 3, 0, 0}
|
||||
}
|
||||
|
||||
AREA_WAVE6 = {
|
||||
{0, 0, 0, 0, 0},
|
||||
{0, 1, 3, 1, 0},
|
||||
{0, 0, 0, 0, 0}
|
||||
}
|
||||
|
||||
AREA_SQUAREWAVE5 = {
|
||||
{1, 1, 1},
|
||||
{1, 1, 1},
|
||||
{1, 1, 1},
|
||||
{0, 1, 0},
|
||||
{0, 3, 0}
|
||||
}
|
||||
|
||||
AREA_SQUAREWAVE6 = {
|
||||
{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
|
||||
{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
|
||||
{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
|
||||
{0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
|
||||
{0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
|
||||
{0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
|
||||
{0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},
|
||||
{0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},
|
||||
{0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
|
||||
{0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
|
||||
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
|
||||
{0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0}
|
||||
}
|
||||
|
||||
AREA_SQUAREWAVE7 = {
|
||||
{0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
|
||||
{0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
|
||||
{0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},
|
||||
{0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},
|
||||
{0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},
|
||||
{0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},
|
||||
{0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
|
||||
{0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
|
||||
{0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
|
||||
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
|
||||
{0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0}
|
||||
}
|
||||
|
||||
--Diagonal waves
|
||||
AREADIAGONAL_WAVE4 = {
|
||||
{0, 0, 0, 0, 1, 0},
|
||||
{0, 0, 0, 1, 1, 0},
|
||||
{0, 0, 1, 1, 1, 0},
|
||||
{0, 1, 1, 1, 1, 0},
|
||||
{1, 1, 1, 1, 1, 0},
|
||||
{0, 0, 0, 0, 0, 3}
|
||||
}
|
||||
|
||||
AREADIAGONAL_SQUAREWAVE5 = {
|
||||
{1, 1, 1, 0, 0},
|
||||
{1, 1, 1, 0, 0},
|
||||
{1, 1, 1, 0, 0},
|
||||
{0, 0, 0, 1, 0},
|
||||
{0, 0, 0, 0, 3}
|
||||
}
|
||||
|
||||
AREADIAGONAL_WAVE6 = {
|
||||
{0, 0, 1},
|
||||
{0, 3, 0},
|
||||
{1, 0, 0}
|
||||
}
|
||||
|
||||
--Beams
|
||||
AREA_BEAM1 = {
|
||||
{3}
|
||||
}
|
||||
|
||||
AREA_BEAM5 = {
|
||||
{1},
|
||||
{1},
|
||||
{1},
|
||||
{1},
|
||||
{3}
|
||||
}
|
||||
|
||||
AREA_BEAM7 = {
|
||||
{1},
|
||||
{1},
|
||||
{1},
|
||||
{1},
|
||||
{1},
|
||||
{1},
|
||||
{3}
|
||||
}
|
||||
|
||||
AREA_BEAM8 = {
|
||||
{1},
|
||||
{1},
|
||||
{1},
|
||||
{1},
|
||||
{1},
|
||||
{1},
|
||||
{1},
|
||||
{3}
|
||||
}
|
||||
|
||||
--Diagonal Beams
|
||||
AREADIAGONAL_BEAM5 = {
|
||||
{1, 0, 0, 0, 0},
|
||||
{0, 1, 0, 0, 0},
|
||||
{0, 0, 1, 0, 0},
|
||||
{0, 0, 0, 1, 0},
|
||||
{0, 0, 0, 0, 3}
|
||||
}
|
||||
|
||||
AREADIAGONAL_BEAM7 = {
|
||||
{1, 0, 0, 0, 0, 0, 0},
|
||||
{0, 1, 0, 0, 0, 0, 0},
|
||||
{0, 0, 1, 0, 0, 0, 0},
|
||||
{0, 0, 0, 1, 0, 0, 0},
|
||||
{0, 0, 0, 0, 1, 0, 0},
|
||||
{0, 0, 0, 0, 0, 1, 0},
|
||||
{0, 0, 0, 0, 0, 0, 3}
|
||||
}
|
||||
|
||||
--Circles
|
||||
AREA_CIRCLE2X2 = {
|
||||
{0, 1, 1, 1, 0},
|
||||
{1, 1, 1, 1, 1},
|
||||
{1, 1, 3, 1, 1},
|
||||
{1, 1, 1, 1, 1},
|
||||
{0, 1, 1, 1, 0}
|
||||
}
|
||||
|
||||
AREA_CIRCLE3X3 = {
|
||||
{0, 0, 1, 1, 1, 0, 0},
|
||||
{0, 1, 1, 1, 1, 1, 0},
|
||||
{1, 1, 1, 1, 1, 1, 1},
|
||||
{1, 1, 1, 3, 1, 1, 1},
|
||||
{1, 1, 1, 1, 1, 1, 1},
|
||||
{0, 1, 1, 1, 1, 1, 0},
|
||||
{0, 0, 1, 1, 1, 0, 0}
|
||||
}
|
||||
|
||||
-- Crosses
|
||||
AREA_CROSS1X1 = {
|
||||
{0, 1, 0},
|
||||
{1, 3, 1},
|
||||
{0, 1, 0}
|
||||
}
|
||||
|
||||
AREA_CIRCLE5X5 = {
|
||||
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
|
||||
{0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},
|
||||
{0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
|
||||
{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
|
||||
{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
|
||||
{1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1},
|
||||
{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
|
||||
{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
|
||||
{0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
|
||||
{0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},
|
||||
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}
|
||||
}
|
||||
|
||||
--Squares
|
||||
AREA_SQUARE1X1 = {
|
||||
{1, 1, 1},
|
||||
{1, 3, 1},
|
||||
{1, 1, 1}
|
||||
}
|
||||
|
||||
-- Walls
|
||||
AREA_WALLFIELD = {
|
||||
{1, 1, 3, 1, 1}
|
||||
}
|
||||
|
||||
AREADIAGONAL_WALLFIELD = {
|
||||
{0, 0, 0, 0, 1},
|
||||
{0, 0, 0, 1, 1},
|
||||
{0, 1, 3, 1, 0},
|
||||
{1, 1, 0, 0, 0},
|
||||
{1, 0, 0, 0, 0},
|
||||
}
|
||||
29
data/spells/scripts/runes/animate dead.lua
Normal file
29
data/spells/scripts/runes/animate dead.lua
Normal file
@@ -0,0 +1,29 @@
|
||||
local humanBodies = {
|
||||
4240, 4241, 4247, 4248
|
||||
}
|
||||
|
||||
function onCastSpell(creature, variant)
|
||||
local position = Variant.getPosition(variant)
|
||||
local tile = Tile(position)
|
||||
if tile then
|
||||
local corpse = tile:getTopDownItem()
|
||||
if corpse then
|
||||
local itemType = corpse:getType()
|
||||
if not table.contains(humanBodies, itemType:getId()) then
|
||||
if itemType:isCorpse() and itemType:isMovable() then
|
||||
local monster = Game.createMonster("Skeleton", position)
|
||||
if monster then
|
||||
corpse:remove()
|
||||
monster:setMaster(creature)
|
||||
position:sendMagicEffect(CONST_ME_MAGIC_BLUE)
|
||||
return true
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
creature:getPosition():sendMagicEffect(CONST_ME_POFF)
|
||||
creature:sendCancelMessage(RETURNVALUE_NOTPOSSIBLE)
|
||||
return false
|
||||
end
|
||||
8
data/spells/scripts/runes/cure poison.lua
Normal file
8
data/spells/scripts/runes/cure poison.lua
Normal file
@@ -0,0 +1,8 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
|
||||
combat:setParameter(COMBAT_PARAM_DISPEL, CONDITION_POISON)
|
||||
combat:setParameter(COMBAT_PARAM_AGGRESSIVE, false)
|
||||
|
||||
function onCastSpell(creature, variant)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
||||
29
data/spells/scripts/runes/destroy field.lua
Normal file
29
data/spells/scripts/runes/destroy field.lua
Normal file
@@ -0,0 +1,29 @@
|
||||
local fieldIds = {
|
||||
2118, 2119, 2120, 2121, 2122, 2123, 2124, 2125,
|
||||
2126, 2127, 2131, 2132, 2133, 2134, 2135
|
||||
}
|
||||
|
||||
function onCastSpell(creature, variant, isHotkey)
|
||||
local position = Variant.getPosition(variant)
|
||||
local tile = Tile(position)
|
||||
local field = tile and tile:getItemByType(ITEM_TYPE_MAGICFIELD)
|
||||
|
||||
if field and table.contains(fieldIds, field:getId()) then
|
||||
field:remove()
|
||||
position:sendMagicEffect(CONST_ME_POFF)
|
||||
return true
|
||||
end
|
||||
|
||||
for _, id in ipairs(fieldIds) do
|
||||
field = tile and tile:getItemById(id)
|
||||
if field then
|
||||
field:remove()
|
||||
position:sendMagicEffect(CONST_ME_POFF)
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
creature:sendCancelMessage(RETURNVALUE_NOTPOSSIBLE)
|
||||
creature:getPosition():sendMagicEffect(CONST_ME_POFF)
|
||||
return false
|
||||
end
|
||||
26
data/spells/scripts/runes/disintegrate.lua
Normal file
26
data/spells/scripts/runes/disintegrate.lua
Normal file
@@ -0,0 +1,26 @@
|
||||
local dead_human = {
|
||||
4240, 4241, 4242, 4247, 4248
|
||||
}
|
||||
local removalLimit = 10
|
||||
|
||||
function onCastSpell(creature, variant)
|
||||
local position = variant:getPosition()
|
||||
local tile = Tile(position)
|
||||
if tile then
|
||||
local items = tile:getItems()
|
||||
if items then
|
||||
for i, item in ipairs(items) do
|
||||
if item:getType():isMovable() and item:getActionId() == 0 and not table.contains(dead_human, item:getId()) then
|
||||
item:remove()
|
||||
end
|
||||
|
||||
if i == removalLimit then
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
position:sendMagicEffect(CONST_ME_POFF)
|
||||
return true
|
||||
end
|
||||
9
data/spells/scripts/runes/energy field.lua
Normal file
9
data/spells/scripts/runes/energy field.lua
Normal file
@@ -0,0 +1,9 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
|
||||
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY)
|
||||
combat:setParameter(COMBAT_PARAM_MAGICEFFECT, CONST_ME_ENERGYHIT)
|
||||
combat:setParameter(COMBAT_PARAM_CREATEITEM, 2122)
|
||||
|
||||
function onCastSpell(creature, variant, isHotkey)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
||||
10
data/spells/scripts/runes/energy wall.lua
Normal file
10
data/spells/scripts/runes/energy wall.lua
Normal file
@@ -0,0 +1,10 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
|
||||
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY)
|
||||
combat:setParameter(COMBAT_PARAM_MAGICEFFECT, CONST_ME_ENERGYHIT)
|
||||
combat:setParameter(COMBAT_PARAM_CREATEITEM, 2122)
|
||||
combat:setArea(createCombatArea(AREA_WALLFIELD, AREADIAGONAL_WALLFIELD))
|
||||
|
||||
function onCastSpell(creature, variant, isHotkey)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
||||
10
data/spells/scripts/runes/energybomb.lua
Normal file
10
data/spells/scripts/runes/energybomb.lua
Normal file
@@ -0,0 +1,10 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
|
||||
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY)
|
||||
combat:setParameter(COMBAT_PARAM_MAGICEFFECT, CONST_ME_ENERGYHIT)
|
||||
combat:setParameter(COMBAT_PARAM_CREATEITEM, 2122)
|
||||
combat:setArea(createCombatArea(AREA_SQUARE1X1))
|
||||
|
||||
function onCastSpell(creature, variant, isHotkey)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
||||
18
data/spells/scripts/runes/envenom.lua
Normal file
18
data/spells/scripts/runes/envenom.lua
Normal file
@@ -0,0 +1,18 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
|
||||
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_HITBYPOISON)
|
||||
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY)
|
||||
|
||||
function onTargetCreature(creature, target)
|
||||
local player = Player(creature)
|
||||
|
||||
local condition = Condition(CONDITION_POISON)
|
||||
condition:setTiming(computeFormula(player:getLevel(), player:getMagicLevel(), 70, 20))
|
||||
target:addCondition(condition)
|
||||
end
|
||||
|
||||
combat:setCallback(CALLBACK_PARAM_TARGETCREATURE, "onTargetCreature")
|
||||
|
||||
function onCastSpell(creature, variant)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
||||
23
data/spells/scripts/runes/explosion.lua
Normal file
23
data/spells/scripts/runes/explosion.lua
Normal file
@@ -0,0 +1,23 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
|
||||
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONAREA)
|
||||
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
|
||||
combat:setParameter(COMBAT_PARAM_BLOCKARMOR, true)
|
||||
combat:setArea(createCombatArea(AREA_CROSS1X1))
|
||||
|
||||
function onGetFormulaValues(player, level, maglevel)
|
||||
local base = 60
|
||||
local variation = 40
|
||||
|
||||
local formula = 3 * maglevel + (2 * level)
|
||||
|
||||
local min = (formula * (base - variation)) / 100
|
||||
local max = (formula * (base + variation)) / 100
|
||||
return -min, -max
|
||||
end
|
||||
|
||||
combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
|
||||
|
||||
function onCastSpell(creature, variant, isHotkey)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
||||
9
data/spells/scripts/runes/fire field.lua
Normal file
9
data/spells/scripts/runes/fire field.lua
Normal file
@@ -0,0 +1,9 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
|
||||
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
|
||||
combat:setParameter(COMBAT_PARAM_MAGICEFFECT, CONST_ME_HITBYFIRE)
|
||||
combat:setParameter(COMBAT_PARAM_CREATEITEM, 2118)
|
||||
|
||||
function onCastSpell(creature, variant, isHotkey)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
||||
10
data/spells/scripts/runes/fire wall.lua
Normal file
10
data/spells/scripts/runes/fire wall.lua
Normal file
@@ -0,0 +1,10 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
|
||||
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
|
||||
combat:setParameter(COMBAT_PARAM_MAGICEFFECT, CONST_ME_HITBYFIRE)
|
||||
combat:setParameter(COMBAT_PARAM_CREATEITEM, 2118)
|
||||
combat:setArea(createCombatArea(AREA_WALLFIELD, AREADIAGONAL_WALLFIELD))
|
||||
|
||||
function onCastSpell(creature, variant, isHotkey)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
||||
22
data/spells/scripts/runes/fireball.lua
Normal file
22
data/spells/scripts/runes/fireball.lua
Normal file
@@ -0,0 +1,22 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
|
||||
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
|
||||
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
|
||||
combat:setArea(createCombatArea(AREA_CIRCLE2X2))
|
||||
|
||||
function onGetFormulaValues(player, level, maglevel)
|
||||
local base = 20
|
||||
local variation = 5
|
||||
|
||||
local formula = 3 * maglevel + (2 * level)
|
||||
|
||||
local min = (formula * (base - variation)) / 100
|
||||
local max = (formula * (base + variation)) / 100
|
||||
return -min, -max
|
||||
end
|
||||
|
||||
combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
|
||||
|
||||
function onCastSpell(creature, variant, isHotkey)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
||||
10
data/spells/scripts/runes/firebomb.lua
Normal file
10
data/spells/scripts/runes/firebomb.lua
Normal file
@@ -0,0 +1,10 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
|
||||
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
|
||||
combat:setParameter(COMBAT_PARAM_MAGICEFFECT, CONST_ME_HITBYFIRE)
|
||||
combat:setParameter(COMBAT_PARAM_CREATEITEM, 2118)
|
||||
combat:setArea(createCombatArea(AREA_SQUARE1X1))
|
||||
|
||||
function onCastSpell(creature, variant, isHotkey)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
||||
22
data/spells/scripts/runes/great fireball.lua
Normal file
22
data/spells/scripts/runes/great fireball.lua
Normal file
@@ -0,0 +1,22 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
|
||||
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
|
||||
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
|
||||
combat:setArea(createCombatArea(AREA_CIRCLE3X3))
|
||||
|
||||
function onGetFormulaValues(player, level, maglevel)
|
||||
local base = 50
|
||||
local variation = 15
|
||||
|
||||
local formula = 3 * maglevel + (2 * level)
|
||||
|
||||
local min = (formula * (base - variation)) / 100
|
||||
local max = (formula * (base + variation)) / 100
|
||||
return -min, -max
|
||||
end
|
||||
|
||||
combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
|
||||
|
||||
function onCastSpell(creature, variant, isHotkey)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
||||
21
data/spells/scripts/runes/heavy magic missile.lua
Normal file
21
data/spells/scripts/runes/heavy magic missile.lua
Normal file
@@ -0,0 +1,21 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
|
||||
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONHIT)
|
||||
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY)
|
||||
|
||||
function onGetFormulaValues(player, level, maglevel)
|
||||
local base = 30
|
||||
local variation = 10
|
||||
|
||||
local formula = 3 * maglevel + (2 * level)
|
||||
|
||||
local min = (formula * (base - variation)) / 100
|
||||
local max = (formula * (base + variation)) / 100
|
||||
return -min, -max
|
||||
end
|
||||
|
||||
combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
|
||||
|
||||
function onCastSpell(creature, variant, isHotkey)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
||||
22
data/spells/scripts/runes/intense healing.lua
Normal file
22
data/spells/scripts/runes/intense healing.lua
Normal file
@@ -0,0 +1,22 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_HEALING)
|
||||
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
|
||||
combat:setParameter(COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)
|
||||
combat:setParameter(COMBAT_PARAM_AGGRESSIVE, false)
|
||||
|
||||
function onGetFormulaValues(player, level, maglevel)
|
||||
local base = 70
|
||||
local variation = 30
|
||||
|
||||
local formula = 3 * maglevel + (2 * level)
|
||||
|
||||
local min = (formula * (base - variation)) / 100
|
||||
local max = (formula * (base + variation)) / 100
|
||||
return min, max
|
||||
end
|
||||
|
||||
combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
|
||||
|
||||
function onCastSpell(creature, variant)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
||||
21
data/spells/scripts/runes/light magic missile.lua
Normal file
21
data/spells/scripts/runes/light magic missile.lua
Normal file
@@ -0,0 +1,21 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
|
||||
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONHIT)
|
||||
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY)
|
||||
|
||||
function onGetFormulaValues(player, level, maglevel)
|
||||
local base = 15
|
||||
local variation = 5
|
||||
|
||||
local formula = 3 * maglevel + (2 * level)
|
||||
|
||||
local min = (formula * (base - variation)) / 100
|
||||
local max = (formula * (base + variation)) / 100
|
||||
return -min, -max
|
||||
end
|
||||
|
||||
combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
|
||||
|
||||
function onCastSpell(creature, variant, isHotkey)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
||||
7
data/spells/scripts/runes/magic wall.lua
Normal file
7
data/spells/scripts/runes/magic wall.lua
Normal file
@@ -0,0 +1,7 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY)
|
||||
combat:setParameter(COMBAT_PARAM_CREATEITEM, 2128)
|
||||
|
||||
function onCastSpell(creature, variant, isHotkey)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
||||
16
data/spells/scripts/runes/paralyze.lua
Normal file
16
data/spells/scripts/runes/paralyze.lua
Normal file
@@ -0,0 +1,16 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_RED)
|
||||
|
||||
local condition = Condition(CONDITION_PARALYZE)
|
||||
condition:setParameter(CONDITION_PARAM_TICKS, 10000)
|
||||
condition:setSpeedDelta(-101)
|
||||
combat:setCondition(condition)
|
||||
|
||||
function onCastSpell(creature, variant, isHotkey)
|
||||
if not combat:execute(creature, variant) then
|
||||
return false
|
||||
end
|
||||
|
||||
creature:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN)
|
||||
return true
|
||||
end
|
||||
10
data/spells/scripts/runes/poison bomb.lua
Normal file
10
data/spells/scripts/runes/poison bomb.lua
Normal file
@@ -0,0 +1,10 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
|
||||
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
|
||||
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_POISON)
|
||||
combat:setParameter(COMBAT_PARAM_CREATEITEM, 2121)
|
||||
combat:setArea(createCombatArea(AREA_SQUARE1X1))
|
||||
|
||||
function onCastSpell(creature, variant, isHotkey)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
||||
9
data/spells/scripts/runes/poison field.lua
Normal file
9
data/spells/scripts/runes/poison field.lua
Normal file
@@ -0,0 +1,9 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
|
||||
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
|
||||
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_POISON)
|
||||
combat:setParameter(COMBAT_PARAM_CREATEITEM, 2121)
|
||||
|
||||
function onCastSpell(creature, variant, isHotkey)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
||||
10
data/spells/scripts/runes/poison wall.lua
Normal file
10
data/spells/scripts/runes/poison wall.lua
Normal file
@@ -0,0 +1,10 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
|
||||
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
|
||||
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_POISON)
|
||||
combat:setParameter(COMBAT_PARAM_CREATEITEM, 2121)
|
||||
combat:setArea(createCombatArea(AREA_WALLFIELD, AREADIAGONAL_WALLFIELD))
|
||||
|
||||
function onCastSpell(creature, variant, isHotkey)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
||||
18
data/spells/scripts/runes/soulfire.lua
Normal file
18
data/spells/scripts/runes/soulfire.lua
Normal file
@@ -0,0 +1,18 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
|
||||
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_HITBYFIRE)
|
||||
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
|
||||
|
||||
function onTargetCreature(creature, target)
|
||||
local player = Player(creature)
|
||||
|
||||
local condition = Condition(CONDITION_FIRE)
|
||||
condition:setTiming(computeFormula(player:getLevel(), player:getMagicLevel(), 120, 20))
|
||||
target:addCondition(condition)
|
||||
end
|
||||
|
||||
combat:setCallback(CALLBACK_PARAM_TARGETCREATURE, "onTargetCreature")
|
||||
|
||||
function onCastSpell(creature, variant)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
||||
21
data/spells/scripts/runes/sudden death.lua
Normal file
21
data/spells/scripts/runes/sudden death.lua
Normal file
@@ -0,0 +1,21 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
|
||||
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
|
||||
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_DEATH)
|
||||
|
||||
function onGetFormulaValues(player, level, maglevel)
|
||||
local base = 150
|
||||
local variation = 20
|
||||
|
||||
local formula = 3 * maglevel + (2 * level)
|
||||
|
||||
local min = (formula * (base - variation)) / 100
|
||||
local max = (formula * (base + variation)) / 100
|
||||
return -min, -max
|
||||
end
|
||||
|
||||
combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
|
||||
|
||||
function onCastSpell(creature, variant, isHotkey)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
||||
23
data/spells/scripts/runes/ultimate healing.lua
Normal file
23
data/spells/scripts/runes/ultimate healing.lua
Normal file
@@ -0,0 +1,23 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_HEALING)
|
||||
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
|
||||
combat:setParameter(COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)
|
||||
combat:setParameter(COMBAT_PARAM_TARGETCASTERORTOPMOST, true)
|
||||
combat:setParameter(COMBAT_PARAM_AGGRESSIVE, false)
|
||||
|
||||
function onGetFormulaValues(player, level, maglevel)
|
||||
local base = 250
|
||||
local variation = 0
|
||||
|
||||
local formula = 3 * maglevel + (2 * level)
|
||||
|
||||
local min = (formula * (base - variation)) / 100
|
||||
local max = (formula * (base + variation)) / 100
|
||||
return min, max
|
||||
end
|
||||
|
||||
combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
|
||||
|
||||
function onCastSpell(creature, variant, isHotkey)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
||||
7
data/spells/scripts/runes/wild growth.lua
Normal file
7
data/spells/scripts/runes/wild growth.lua
Normal file
@@ -0,0 +1,7 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY)
|
||||
combat:setParameter(COMBAT_PARAM_CREATEITEM, 2130)
|
||||
|
||||
function onCastSpell(creature, variant, isHotkey)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
||||
8
data/spells/scripts/spells/antidote.lua
Normal file
8
data/spells/scripts/spells/antidote.lua
Normal file
@@ -0,0 +1,8 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
|
||||
combat:setParameter(COMBAT_PARAM_DISPEL, CONDITION_POISON)
|
||||
combat:setParameter(COMBAT_PARAM_AGGRESSIVE, false)
|
||||
|
||||
function onCastSpell(creature, variant)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
||||
22
data/spells/scripts/spells/berserk.lua
Normal file
22
data/spells/scripts/spells/berserk.lua
Normal file
@@ -0,0 +1,22 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
|
||||
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
|
||||
combat:setParameter(COMBAT_PARAM_BLOCKARMOR, true)
|
||||
combat:setParameter(COMBAT_PARAM_BLOCKSHIELD, false)
|
||||
combat:setParameter(COMBAT_PARAM_USECHARGES, true)
|
||||
combat:setArea(createCombatArea(AREA_SQUARE1X1))
|
||||
|
||||
function onGetFormulaValues(player, skill, attack, fightMode)
|
||||
local base = 80
|
||||
local variation = 20
|
||||
local formula = 3 * player:getMagicLevel() + (2 * player:getLevel())
|
||||
local damage = formula * base / 100
|
||||
damage = damage * attack / 25
|
||||
return -damage - variation, -damage + variation
|
||||
end
|
||||
|
||||
combat:setCallback(CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")
|
||||
|
||||
function onCastSpell(creature, variant)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
||||
8
data/spells/scripts/spells/cancel invisibility.lua
Normal file
8
data/spells/scripts/spells/cancel invisibility.lua
Normal file
@@ -0,0 +1,8 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
|
||||
combat:setParameter(COMBAT_PARAM_DISPEL, CONDITION_INVISIBLE)
|
||||
combat:setArea(createCombatArea(AREA_CIRCLE3X3))
|
||||
|
||||
function onCastSpell(creature, variant)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
||||
13
data/spells/scripts/spells/challenge.lua
Normal file
13
data/spells/scripts/spells/challenge.lua
Normal file
@@ -0,0 +1,13 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
|
||||
combat:setArea(createCombatArea(AREA_SQUARE1X1))
|
||||
|
||||
function onTargetCreature(creature, target)
|
||||
return doChallengeCreature(creature, target)
|
||||
end
|
||||
|
||||
combat:setCallback(CALLBACK_PARAM_TARGETCREATURE, "onTargetCreature")
|
||||
|
||||
function onCastSpell(creature, variant)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
||||
21
data/spells/scripts/spells/energy beam.lua
Normal file
21
data/spells/scripts/spells/energy beam.lua
Normal file
@@ -0,0 +1,21 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
|
||||
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONHIT)
|
||||
combat:setArea(createCombatArea(AREA_BEAM5, AREADIAGONAL_BEAM5))
|
||||
|
||||
function onGetFormulaValues(player, level, maglevel)
|
||||
local base = 60
|
||||
local variation = 20
|
||||
|
||||
local formula = 3 * maglevel + (2 * level)
|
||||
|
||||
local min = (formula * (base - variation)) / 100
|
||||
local max = (formula * (base + variation)) / 100
|
||||
return -min, -max
|
||||
end
|
||||
|
||||
combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
|
||||
|
||||
function onCastSpell(creature, variant)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
||||
20
data/spells/scripts/spells/energy strike.lua
Normal file
20
data/spells/scripts/spells/energy strike.lua
Normal file
@@ -0,0 +1,20 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
|
||||
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_TELEPORT)
|
||||
|
||||
function onGetFormulaValues(player, level, maglevel)
|
||||
local base = 45
|
||||
local variation = 10
|
||||
|
||||
local formula = 3 * maglevel + (2 * level)
|
||||
|
||||
local min = (formula * (base - variation)) / 100
|
||||
local max = (formula * (base + variation)) / 100
|
||||
return -min, -max
|
||||
end
|
||||
|
||||
combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
|
||||
|
||||
function onCastSpell(creature, variant)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
||||
21
data/spells/scripts/spells/energy wave.lua
Normal file
21
data/spells/scripts/spells/energy wave.lua
Normal file
@@ -0,0 +1,21 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
|
||||
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_TELEPORT)
|
||||
combat:setArea(createCombatArea(AREA_SQUAREWAVE5))
|
||||
|
||||
function onGetFormulaValues(player, level, maglevel)
|
||||
local base = 150
|
||||
local variation = 50
|
||||
|
||||
local formula = 3 * maglevel + (2 * level)
|
||||
|
||||
local min = (formula * (base - variation)) / 100
|
||||
local max = (formula * (base + variation)) / 100
|
||||
return -min, -max
|
||||
end
|
||||
|
||||
combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
|
||||
|
||||
function onCastSpell(creature, variant)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
||||
21
data/spells/scripts/spells/fire wave.lua
Normal file
21
data/spells/scripts/spells/fire wave.lua
Normal file
@@ -0,0 +1,21 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
|
||||
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_HITBYFIRE)
|
||||
combat:setArea(createCombatArea(AREA_WAVE4, AREADIAGONAL_WAVE4))
|
||||
|
||||
function onGetFormulaValues(player, level, maglevel)
|
||||
local base = 30
|
||||
local variation = 10
|
||||
|
||||
local formula = 3 * maglevel + (2 * level)
|
||||
|
||||
local min = (formula * (base - variation)) / 100
|
||||
local max = (formula * (base + variation)) / 100
|
||||
return -min, -max
|
||||
end
|
||||
|
||||
combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
|
||||
|
||||
function onCastSpell(creature, variant)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
||||
20
data/spells/scripts/spells/flame strike.lua
Normal file
20
data/spells/scripts/spells/flame strike.lua
Normal file
@@ -0,0 +1,20 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
|
||||
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
|
||||
|
||||
function onGetFormulaValues(player, level, maglevel)
|
||||
local base = 45
|
||||
local variation = 10
|
||||
|
||||
local formula = 3 * maglevel + (2 * level)
|
||||
|
||||
local min = (formula * (base - variation)) / 100
|
||||
local max = (formula * (base + variation)) / 100
|
||||
return -min, -max
|
||||
end
|
||||
|
||||
combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
|
||||
|
||||
function onCastSpell(creature, variant)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
||||
9
data/spells/scripts/spells/food.lua
Normal file
9
data/spells/scripts/spells/food.lua
Normal file
@@ -0,0 +1,9 @@
|
||||
local food = {
|
||||
3577, 3582, 3585, 3592, 3602
|
||||
}
|
||||
|
||||
function onCastSpell(creature, variant)
|
||||
creature:addItem(food[math.random(#food)])
|
||||
creature:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN)
|
||||
return true
|
||||
end
|
||||
20
data/spells/scripts/spells/force strike.lua
Normal file
20
data/spells/scripts/spells/force strike.lua
Normal file
@@ -0,0 +1,20 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
|
||||
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
|
||||
|
||||
function onGetFormulaValues(player, level, maglevel)
|
||||
local base = 45
|
||||
local variation = 10
|
||||
|
||||
local formula = 3 * maglevel + (2 * level)
|
||||
|
||||
local min = (formula * (base - variation)) / 100
|
||||
local max = (formula * (base + variation)) / 100
|
||||
return -min, -max
|
||||
end
|
||||
|
||||
combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
|
||||
|
||||
function onCastSpell(creature, variant)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
||||
21
data/spells/scripts/spells/great energy beam.lua
Normal file
21
data/spells/scripts/spells/great energy beam.lua
Normal file
@@ -0,0 +1,21 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
|
||||
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
|
||||
combat:setArea(createCombatArea(AREA_BEAM8))
|
||||
|
||||
function onGetFormulaValues(player, level, maglevel)
|
||||
local base = 120
|
||||
local variation = 80
|
||||
|
||||
local formula = 3 * maglevel + (2 * level)
|
||||
|
||||
local min = (formula * (base - variation)) / 100
|
||||
local max = (formula * (base + variation)) / 100
|
||||
return -min, -max
|
||||
end
|
||||
|
||||
combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
|
||||
|
||||
function onCastSpell(creature, variant)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
||||
13
data/spells/scripts/spells/great light.lua
Normal file
13
data/spells/scripts/spells/great light.lua
Normal file
@@ -0,0 +1,13 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
|
||||
combat:setParameter(COMBAT_PARAM_AGGRESSIVE, false)
|
||||
|
||||
local condition = Condition(CONDITION_LIGHT)
|
||||
condition:setParameter(CONDITION_PARAM_LIGHT_LEVEL, 8)
|
||||
condition:setParameter(CONDITION_PARAM_LIGHT_COLOR, 215)
|
||||
condition:setParameter(CONDITION_PARAM_TICKS, (11 * 60 + 35) * 1000)
|
||||
combat:setCondition(condition)
|
||||
|
||||
function onCastSpell(creature, variant)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
||||
12
data/spells/scripts/spells/haste.lua
Normal file
12
data/spells/scripts/spells/haste.lua
Normal file
@@ -0,0 +1,12 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_GREEN)
|
||||
combat:setParameter(COMBAT_PARAM_AGGRESSIVE, false)
|
||||
|
||||
local condition = Condition(CONDITION_HASTE)
|
||||
condition:setParameter(CONDITION_PARAM_TICKS, 30000)
|
||||
condition:setSpeedDelta(30)
|
||||
combat:setCondition(condition)
|
||||
|
||||
function onCastSpell(creature, variant)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
||||
23
data/spells/scripts/spells/heal friend.lua
Normal file
23
data/spells/scripts/spells/heal friend.lua
Normal file
@@ -0,0 +1,23 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_HEALING)
|
||||
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_GREEN)
|
||||
combat:setParameter(COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)
|
||||
combat:setParameter(COMBAT_PARAM_AGGRESSIVE, false)
|
||||
|
||||
function onGetFormulaValues(player, level, maglevel)
|
||||
local base = 120
|
||||
local variation = 40
|
||||
|
||||
local formula = 3 * maglevel + (2 * level)
|
||||
|
||||
local min = (formula * (base - variation)) / 100
|
||||
local max = (formula * (base + variation)) / 100
|
||||
return min, max
|
||||
end
|
||||
|
||||
combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
|
||||
|
||||
function onCastSpell(creature, variant)
|
||||
creature:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
||||
22
data/spells/scripts/spells/intense healing.lua
Normal file
22
data/spells/scripts/spells/intense healing.lua
Normal file
@@ -0,0 +1,22 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_HEALING)
|
||||
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
|
||||
combat:setParameter(COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)
|
||||
combat:setParameter(COMBAT_PARAM_AGGRESSIVE, false)
|
||||
|
||||
function onGetFormulaValues(player, level, maglevel)
|
||||
local base = 40
|
||||
local variation = 20
|
||||
|
||||
local formula = 3 * maglevel + (2 * level)
|
||||
|
||||
local min = (formula * (base - variation)) / 100
|
||||
local max = (formula * (base + variation)) / 100
|
||||
return min, max
|
||||
end
|
||||
|
||||
combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
|
||||
|
||||
function onCastSpell(creature, variant)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
||||
11
data/spells/scripts/spells/invisible.lua
Normal file
11
data/spells/scripts/spells/invisible.lua
Normal file
@@ -0,0 +1,11 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
|
||||
combat:setParameter(COMBAT_PARAM_AGGRESSIVE, false)
|
||||
|
||||
local condition = Condition(CONDITION_INVISIBLE)
|
||||
condition:setParameter(CONDITION_PARAM_TICKS, 200000)
|
||||
combat:setCondition(condition)
|
||||
|
||||
function onCastSpell(creature, variant)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
||||
22
data/spells/scripts/spells/light healing.lua
Normal file
22
data/spells/scripts/spells/light healing.lua
Normal file
@@ -0,0 +1,22 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_HEALING)
|
||||
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
|
||||
combat:setParameter(COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)
|
||||
combat:setParameter(COMBAT_PARAM_AGGRESSIVE, false)
|
||||
|
||||
function onGetFormulaValues(player, level, maglevel)
|
||||
local base = 20
|
||||
local variation = 10
|
||||
|
||||
local formula = 3 * maglevel + (2 * level)
|
||||
|
||||
local min = (formula * (base - variation)) / 100
|
||||
local max = (formula * (base + variation)) / 100
|
||||
return min, max
|
||||
end
|
||||
|
||||
combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
|
||||
|
||||
function onCastSpell(creature, variant)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
||||
13
data/spells/scripts/spells/light.lua
Normal file
13
data/spells/scripts/spells/light.lua
Normal file
@@ -0,0 +1,13 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
|
||||
combat:setParameter(COMBAT_PARAM_AGGRESSIVE, false)
|
||||
|
||||
local condition = Condition(CONDITION_LIGHT)
|
||||
condition:setParameter(CONDITION_PARAM_LIGHT_LEVEL, 6)
|
||||
condition:setParameter(CONDITION_PARAM_LIGHT_COLOR, 215)
|
||||
condition:setParameter(CONDITION_PARAM_TICKS, (6 * 60 + 10) * 1000)
|
||||
combat:setCondition(condition)
|
||||
|
||||
function onCastSpell(creature, variant)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
||||
23
data/spells/scripts/spells/magic rope.lua
Normal file
23
data/spells/scripts/spells/magic rope.lua
Normal file
@@ -0,0 +1,23 @@
|
||||
local ropeSpots = {
|
||||
386, 421
|
||||
}
|
||||
|
||||
function onCastSpell(creature, variant)
|
||||
local position = creature:getPosition()
|
||||
position:sendMagicEffect(CONST_ME_POFF)
|
||||
|
||||
local tile = Tile(position)
|
||||
if table.contains(ropeSpots, tile:getGround():getId()) then
|
||||
tile = Tile(position:moveUpstairs())
|
||||
if tile then
|
||||
creature:teleportTo(position)
|
||||
position:sendMagicEffect(CONST_ME_TELEPORT)
|
||||
else
|
||||
creature:sendCancelMessage(RETURNVALUE_NOTENOUGHROOM)
|
||||
end
|
||||
else
|
||||
creature:sendCancelMessage(RETURNVALUE_NOTPOSSIBLE)
|
||||
return false
|
||||
end
|
||||
return true
|
||||
end
|
||||
11
data/spells/scripts/spells/magic shield.lua
Normal file
11
data/spells/scripts/spells/magic shield.lua
Normal file
@@ -0,0 +1,11 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
|
||||
combat:setParameter(COMBAT_PARAM_AGGRESSIVE, false)
|
||||
|
||||
local condition = Condition(CONDITION_MANASHIELD)
|
||||
condition:setParameter(CONDITION_PARAM_TICKS, 200000)
|
||||
combat:setCondition(condition)
|
||||
|
||||
function onCastSpell(creature, variant)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
||||
34
data/spells/scripts/spells/mass healing.lua
Normal file
34
data/spells/scripts/spells/mass healing.lua
Normal file
@@ -0,0 +1,34 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
|
||||
combat:setParameter(COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)
|
||||
combat:setParameter(COMBAT_PARAM_AGGRESSIVE, false)
|
||||
combat:setArea(createCombatArea(AREA_CIRCLE3X3))
|
||||
|
||||
local healMonsters = true
|
||||
|
||||
function onTargetCreature(creature, target)
|
||||
if not healMonsters then
|
||||
local master = target:getMaster()
|
||||
if target:isMonster() and not master or master and master:isMonster() then
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
local player = creature:getPlayer()
|
||||
|
||||
local base = 200
|
||||
local variation = 40
|
||||
|
||||
local value = math.random(-variation, variation) + base
|
||||
local formula = 3 * player:getMagicLevel() + (2 * player:getLevel())
|
||||
local total = formula * value / 100
|
||||
|
||||
doTargetCombatHealth(0, target, COMBAT_HEALING, total, total, CONST_ME_NONE)
|
||||
return true
|
||||
end
|
||||
|
||||
combat:setCallback(CALLBACK_PARAM_TARGETCREATURE, "onTargetCreature")
|
||||
|
||||
function onCastSpell(creature, variant)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
||||
18
data/spells/scripts/spells/poison storm.lua
Normal file
18
data/spells/scripts/spells/poison storm.lua
Normal file
@@ -0,0 +1,18 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
|
||||
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
|
||||
combat:setArea(createCombatArea(AREA_CIRCLE5X5))
|
||||
|
||||
function onTargetCreature(creature, target)
|
||||
local player = Player(creature)
|
||||
|
||||
local condition = Condition(CONDITION_POISON)
|
||||
condition:setTiming(computeFormula(player:getLevel(), player:getMagicLevel(), 200, 50))
|
||||
target:addCondition(condition)
|
||||
end
|
||||
|
||||
combat:setCallback(CALLBACK_PARAM_TARGETCREATURE, "onTargetCreature")
|
||||
|
||||
function onCastSpell(creature, variant)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
||||
12
data/spells/scripts/spells/strong haste.lua
Normal file
12
data/spells/scripts/spells/strong haste.lua
Normal file
@@ -0,0 +1,12 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_GREEN)
|
||||
combat:setParameter(COMBAT_PARAM_AGGRESSIVE, false)
|
||||
|
||||
local condition = Condition(CONDITION_HASTE)
|
||||
condition:setParameter(CONDITION_PARAM_TICKS, 20000)
|
||||
condition:setSpeedDelta(70)
|
||||
combat:setCondition(condition)
|
||||
|
||||
function onCastSpell(creature, variant)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
||||
23
data/spells/scripts/spells/ultimate explosion.lua
Normal file
23
data/spells/scripts/spells/ultimate explosion.lua
Normal file
@@ -0,0 +1,23 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
|
||||
combat:setParameter(COMBAT_PARAM_BLOCKARMOR, 1)
|
||||
combat:setParameter(COMBAT_PARAM_BLOCKSHIELD, 1)
|
||||
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONAREA)
|
||||
combat:setArea(createCombatArea(AREA_CIRCLE5X5))
|
||||
|
||||
function onGetFormulaValues(player, level, maglevel)
|
||||
local base = 250
|
||||
local variation = 50
|
||||
|
||||
local formula = 3 * maglevel + (2 * level)
|
||||
|
||||
local min = (formula * (base - variation)) / 100
|
||||
local max = (formula * (base + variation)) / 100
|
||||
return -min, -max
|
||||
end
|
||||
|
||||
combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
|
||||
|
||||
function onCastSpell(creature, variant)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
||||
22
data/spells/scripts/spells/ultimate healing.lua
Normal file
22
data/spells/scripts/spells/ultimate healing.lua
Normal file
@@ -0,0 +1,22 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_HEALING)
|
||||
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
|
||||
combat:setParameter(COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)
|
||||
combat:setParameter(COMBAT_PARAM_AGGRESSIVE, false)
|
||||
|
||||
function onGetFormulaValues(player, level, maglevel)
|
||||
local base = 250
|
||||
local variation = 50
|
||||
|
||||
local formula = 3 * maglevel + (2 * level)
|
||||
|
||||
local min = (formula * (base - variation)) / 100
|
||||
local max = (formula * (base + variation)) / 100
|
||||
return min, max
|
||||
end
|
||||
|
||||
combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
|
||||
|
||||
function onCastSpell(creature, variant)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
||||
13
data/spells/scripts/spells/ultimate light.lua
Normal file
13
data/spells/scripts/spells/ultimate light.lua
Normal file
@@ -0,0 +1,13 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
|
||||
combat:setParameter(COMBAT_PARAM_AGGRESSIVE, false)
|
||||
|
||||
local condition = Condition(CONDITION_LIGHT)
|
||||
condition:setParameter(CONDITION_PARAM_LIGHT_LEVEL, 8)
|
||||
condition:setParameter(CONDITION_PARAM_LIGHT_COLOR, 215)
|
||||
condition:setParameter(CONDITION_PARAM_TICKS, (60 * 33 + 10) * 1000)
|
||||
combat:setCondition(condition)
|
||||
|
||||
function onCastSpell(creature, variant)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
||||
34
data/spells/scripts/spells/undead legion.lua
Normal file
34
data/spells/scripts/spells/undead legion.lua
Normal file
@@ -0,0 +1,34 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
|
||||
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
|
||||
combat:setArea(createCombatArea(AREA_CIRCLE5X5))
|
||||
|
||||
local humanBodies = {
|
||||
4240, 4241, 4247, 4248
|
||||
}
|
||||
|
||||
function onCastSpell(creature, variant)
|
||||
local position = Variant.getPosition(variant)
|
||||
local tile = Tile(position)
|
||||
if tile then
|
||||
local corpse = tile:getTopDownItem()
|
||||
if corpse then
|
||||
local itemType = corpse:getType()
|
||||
if not table.contains(humanBodies, itemType:getId()) then
|
||||
if itemType:isCorpse() and itemType:isMovable() then
|
||||
local monster = Game.createMonster("Skeleton", position)
|
||||
if monster then
|
||||
corpse:remove()
|
||||
monster:setMaster(creature)
|
||||
position:sendMagicEffect(CONST_ME_MAGIC_BLUE)
|
||||
return true
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
creature:getPosition():sendMagicEffect(CONST_ME_POFF)
|
||||
creature:sendCancelMessage(RETURNVALUE_NOTPOSSIBLE)
|
||||
return false
|
||||
end
|
||||
425
data/spells/spells.xml
Normal file
425
data/spells/spells.xml
Normal file
@@ -0,0 +1,425 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<spells>
|
||||
<!-- Sorcerer Spells -->
|
||||
<instant name="Force Strike" words="exori mort" lvl="16" mana="20" prem="1" cooldown="1000" range="3" direction="1" blockwalls="1" needlearn="0" script="spells/force strike.lua">
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
</instant>
|
||||
<instant name="Fire Wave" words="exevo flam hur" lvl="18" mana="80" direction="1" needlearn="0" script="spells/fire wave.lua">
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
</instant>
|
||||
<instant name="Energy Beam" words="exevo vis lux" lvl="23" mana="100" direction="1" needlearn="0" script="spells/energy beam.lua">
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
</instant>
|
||||
<instant name="Great Energy Beam" words="exevo gran vis lux" lvl="29" mana="110" direction="1" needlearn="0" script="spells/great energy beam.lua">
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
</instant>
|
||||
<instant name="Energy Wave" words="exevo mort hur" lvl="38" mana="250" direction="1" needlearn="0" script="spells/energy wave.lua">
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
</instant>
|
||||
<instant name="Ultimate Explosion" words="exevo gran mas vis" lvl="60" mana="1200" selftarget="1" prem="1" needlearn="0" script="spells/ultimate explosion.lua">
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
</instant>
|
||||
|
||||
<!-- Druid Spells -->
|
||||
<instant name="Food" words="exevo pan" lvl="14" mana="120" soul="1" aggressive="0" needlearn="0" script="spells/food.lua">
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Elder Druid" />
|
||||
</instant>
|
||||
<instant name="Heal Friend" words="exura sio" lvl="18" mana="70" prem="1" aggressive="0" blockwalls="1" needtarget="1" playernameparam="1" params="1" needlearn="0" script="spells/heal friend.lua">
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Elder Druid" />
|
||||
</instant>
|
||||
<instant name="Undead Legion" words="exana mas mort" lvl="30" mana="500" prem="1" aggressive="1" needlearn="0" script="spells/undead legion.lua">
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Elder Druid" />
|
||||
</instant>
|
||||
<instant name="Mass Healing" words="exura gran mas res" lvl="36" mana="150" prem="1" aggressive="0" needlearn="0" script="spells/mass healing.lua">
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Elder Druid" />
|
||||
</instant>
|
||||
<instant name="Poison Storm" words="exevo gran mas pox" lvl="50" mana="600" prem="1" aggressive="1" needlearn="0" script="spells/poison storm.lua">
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Elder Druid" />
|
||||
</instant>
|
||||
|
||||
<!-- Knight Spells -->
|
||||
<instant name="Challenge" words="exeta res" lvl="20" mana="30" prem="1" aggressive="0" needlearn="0" script="spells/challenge.lua">
|
||||
<vocation name="Elite Knight" />
|
||||
</instant>
|
||||
<instant name="Berserk" words="exori" lvl="35" manapercent="4" prem="1" needweapon="1" needlearn="0" script="spells/berserk.lua">
|
||||
<vocation name="Knight" />
|
||||
<vocation name="Elite Knight" />
|
||||
</instant>
|
||||
|
||||
<!-- Other -->
|
||||
<instant name="Find Person" words="exiva" lvl="8" mana="20" aggressive="0" playernameparam="1" params="1" needlearn="0" function="searchPlayer">
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Paladin" />
|
||||
<vocation name="Knight" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
<vocation name="Elder Druid" />
|
||||
<vocation name="Royal Paladin" />
|
||||
<vocation name="Elite Knight" />
|
||||
</instant>
|
||||
<instant name="Light" words="utevo lux" lvl="8" mana="20" aggressive="0" selftarget="1" needlearn="0" script="spells/light.lua">
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Paladin" />
|
||||
<vocation name="Knight" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
<vocation name="Elder Druid" />
|
||||
<vocation name="Royal Paladin" />
|
||||
<vocation name="Elite Knight" />
|
||||
</instant>
|
||||
<instant name="Light Healing" words="exura" lvl="9" mana="25" aggressive="0" selftarget="1" needlearn="0" script="spells/light healing.lua">
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Paladin" />
|
||||
<vocation name="Knight" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
<vocation name="Elder Druid" />
|
||||
<vocation name="Royal Paladin" />
|
||||
<vocation name="Elite Knight" />
|
||||
</instant>
|
||||
<instant name="Magic Rope" words="exani tera" lvl="9" mana="20" prem="1" aggressive="0" selftarget="1" needlearn="0" script="spells/magic rope.lua">
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Paladin" />
|
||||
<vocation name="Knight" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
<vocation name="Elder Druid" />
|
||||
<vocation name="Royal Paladin" />
|
||||
<vocation name="Elite Knight" />
|
||||
</instant>
|
||||
<instant name="Antidote" words="exana pox" lvl="10" mana="30" aggressive="0" selftarget="1" needlearn="0" script="spells/antidote.lua">
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Paladin" />
|
||||
<vocation name="Knight" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
<vocation name="Elder Druid" />
|
||||
<vocation name="Royal Paladin" />
|
||||
<vocation name="Elite Knight" />
|
||||
</instant>
|
||||
<instant name="Intense Healing" words="exura gran" lvl="11" mana="40" aggressive="0" selftarget="1" needlearn="0" script="spells/intense healing.lua">
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Paladin" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
<vocation name="Elder Druid" />
|
||||
<vocation name="Royal Paladin" />
|
||||
</instant>
|
||||
<instant name="Levitate" words="exani hur" lvl="12" mana="50" prem="1" aggressive="0" params="1" needlearn="0" function="Levitate">
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Paladin" />
|
||||
<vocation name="Knight" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
<vocation name="Elder Druid" />
|
||||
<vocation name="Royal Paladin" />
|
||||
<vocation name="Elite Knight" />
|
||||
</instant>
|
||||
<instant name="Energy Strike" words="exori vis" lvl="12" mana="20" prem="1" cooldown="1000" range="3" direction="1" blockwalls="1" needlearn="0" script="spells/energy strike.lua">
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
<vocation name="Elder Druid" />
|
||||
</instant>
|
||||
<instant name="Great Light" words="utevo gran lux" lvl="13" mana="60" aggressive="0" selftarget="1" needlearn="0" script="spells/great light.lua">
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Paladin" />
|
||||
<vocation name="Knight" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
<vocation name="Elder Druid" />
|
||||
<vocation name="Royal Paladin" />
|
||||
<vocation name="Elite Knight" />
|
||||
</instant>
|
||||
<instant name="Magic Shield" words="utamo vita" lvl="14" mana="50" aggressive="0" selftarget="1" needlearn="0" script="spells/magic shield.lua">
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
<vocation name="Elder Druid" />
|
||||
</instant>
|
||||
<instant name="Flame Strike" words="exori flam" lvl="14" mana="20" prem="1" cooldown="1000" range="3" direction="1" blockwalls="1" needlearn="0" script="spells/flame strike.lua">
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
<vocation name="Elder Druid" />
|
||||
</instant>
|
||||
<instant name="Haste" words="utani hur" lvl="14" mana="60" prem="1" aggressive="0" selftarget="1" needlearn="0" script="spells/haste.lua">
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Paladin" />
|
||||
<vocation name="Knight" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
<vocation name="Elder Druid" />
|
||||
<vocation name="Royal Paladin" />
|
||||
<vocation name="Elite Knight" />
|
||||
</instant>
|
||||
<instant name="Ultimate Healing" words="exura vita" lvl="20" mana="160" aggressive="0" selftarget="1" needlearn="0" script="spells/ultimate healing.lua">
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
<vocation name="Elder Druid" />
|
||||
<vocation name="Paladin" />
|
||||
<vocation name="Royal Paladin" />
|
||||
</instant>
|
||||
<instant name="Strong Haste" words="utani gran hur" lvl="20" mana="100" prem="1" aggressive="0" selftarget="1" needlearn="0" script="spells/strong haste.lua">
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
<vocation name="Elder Druid" />
|
||||
</instant>
|
||||
<instant name="Creature Illusion" words="utevo res ina" lvl="23" mana="100" aggressive="0" params="1" needlearn="0" function="Illusion">
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
<vocation name="Elder Druid" />
|
||||
</instant>
|
||||
<instant name="Summon Creature" words="utevo res" lvl="25" params="1" needlearn="0" function="summonMonster">
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
<vocation name="Elder Druid" />
|
||||
</instant>
|
||||
<instant name="Cancel Invisibility" words="exana ina" lvl="26" mana="200" prem="1" aggressive="0" selftarget="1" needlearn="0" script="spells/cancel invisibility.lua">
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
<vocation name="Elder Druid" />
|
||||
</instant>
|
||||
<instant name="Ultimate Light" words="utevo vis lux" lvl="26" mana="140" prem="1" aggressive="0" selftarget="1" needlearn="0" script="spells/ultimate light.lua">
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
<vocation name="Elder Druid" />
|
||||
</instant>
|
||||
<instant name="Invisible" words="utana vid" lvl="35" mana="440" aggressive="0" selftarget="1" needlearn="0" script="spells/invisible.lua">
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
<vocation name="Elder Druid" />
|
||||
</instant>
|
||||
|
||||
<!-- Attack Rune Spells -->
|
||||
<rune name="Poison Field" id="3172" allowfaruse="1" charges="3" maglv="0" blocktype="solid" script="runes/poison field.lua" />
|
||||
<rune name="Poison Bomb" id="3173" allowfaruse="1" charges="2" maglv="4" blocktype="solid" script="runes/poison bomb.lua" />
|
||||
<rune name="Poison Wall" id="3176" allowfaruse="1" charges="4" maglv="5" blocktype="solid" script="runes/poison wall.lua" />
|
||||
<rune name="Fire Field" id="3188" allowfaruse="1" charges="3" maglv="1" blocktype="solid" script="runes/fire field.lua" />
|
||||
<rune name="Firebomb" id="3192" allowfaruse="1" charges="2" maglv="5" blocktype="solid" script="runes/firebomb.lua" />
|
||||
<rune name="Fire Wall" id="3190" allowfaruse="1" charges="4" maglv="6" blocktype="solid" script="runes/fire wall.lua" />
|
||||
<rune name="Energy Field" id="3164" allowfaruse="1" charges="3" maglv="3" blocktype="solid" script="runes/energy field.lua" />
|
||||
<rune name="Energybomb" id="3151" allowfaruse="1" charges="2" maglv="10" blocktype="solid" script="runes/energybomb.lua" />
|
||||
<rune name="Energy Wall" id="3166" allowfaruse="1" charges="4" maglv="9" blocktype="solid" script="runes/energy wall.lua" />
|
||||
<rune name="Soulfire" id="3195" allowfaruse="1" charges="3" maglv="7" needtarget="1" blocktype="solid" script="runes/soulfire.lua" />
|
||||
<rune name="Envenom" id="3179" allowfaruse="1" charges="1" maglv="4" needtarget="1" blocktype="solid" script="runes/envenom.lua" />
|
||||
<rune name="Fireball" id="3189" allowfaruse="1" charges="5" maglv="4" needtarget="0" blocktype="solid" script="runes/fireball.lua" />
|
||||
<rune name="Great Fireball" id="3191" allowfaruse="1" charges="4" maglv="4" blocktype="solid" script="runes/great fireball.lua" />
|
||||
<rune name="Light Magic Missile" id="3174" allowfaruse="1" charges="10" maglv="0" needtarget="1" blocktype="solid" script="runes/light magic missile.lua" />
|
||||
<rune name="Heavy Magic Missile" id="3198" allowfaruse="1" charges="10" maglv="3" needtarget="1" blocktype="solid" script="runes/heavy magic missile.lua" />
|
||||
<rune name="Explosion" id="3200" allowfaruse="1" charges="6" maglv="6" blocktype="solid" script="runes/explosion.lua" />
|
||||
<rune name="Sudden Death" id="3155" allowfaruse="1" charges="1" maglv="15" needtarget="1" blocktype="solid" script="runes/sudden death.lua" />
|
||||
|
||||
<!-- Healing Rune Spells -->
|
||||
<rune name="Antidote Rune" id="3153" allowfaruse="1" charges="1" maglv="0" aggressive="0" needtarget="1" blocktype="solid" script="runes/cure poison.lua" />
|
||||
<rune name="Intense Healing Rune" id="3152" allowfaruse="1" charges="1" maglv="1" aggressive="0" needtarget="1" blocktype="solid" script="runes/intense healing.lua" />
|
||||
<rune name="Ultimate Healing Rune" id="3160" allowfaruse="1" charges="1" maglv="4" aggressive="0" needtarget="1" blocktype="solid" script="runes/ultimate healing.lua" />
|
||||
<rune name="Convince Creature" id="3177" allowfaruse="1" charges="1" maglv="5" needtarget="1" blocktype="solid" function="convince" />
|
||||
|
||||
<!-- Support Rune Spells -->
|
||||
<rune name="Animate Dead" id="3203" allowfaruse="1" charges="1" maglv="4" script="runes/animate dead.lua" />
|
||||
<rune name="Disintegrate" id="3197" allowfaruse="0" charges="3" maglv="4" blocking="false" range="1" script="runes/disintegrate.lua" />
|
||||
<rune name="Destroy Field" id="3148" allowfaruse="1" charges="3" maglv="3" aggressive="0" range="5" script="runes/destroy field.lua" />
|
||||
<rune name="Chameleon" id="3178" allowfaruse="1" charges="1" maglv="4" aggressive="0" selftarget="1" blocktype="solid" function="chameleon" />
|
||||
<rune name="Magic Wall" id="3180" allowfaruse="1" charges="3" maglv="9" blocktype="all" script="runes/magic wall.lua" />
|
||||
<rune name="Wild Growth" id="3156" allowfaruse="1" charges="2" maglv="8" blocktype="all" script="runes/wild growth.lua">
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Elder Druid" showInDescription="0" />
|
||||
</rune>
|
||||
<rune name="Paralyze" id="3165" allowfaruse="1" charges="1" maglv="18" mana="1400" needtarget="1" blocktype="solid" script="runes/paralyze.lua">
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Elder Druid" showInDescription="0" />
|
||||
</rune>
|
||||
|
||||
<!-- Conjure Spells -->
|
||||
<conjure name="Conjure Arrow" words="exevo con" lvl="13" mana="100" soul="1" conjureId="3447" conjureCount="10" needlearn="0" function="conjureItem">
|
||||
<vocation name="Paladin" />
|
||||
<vocation name="Royal Paladin" />
|
||||
</conjure>
|
||||
<conjure name="Conjure Poison Arrow" words="exevo con pox" lvl="16" mana="130" soul="2" conjureId="3448" conjureCount="7" needlearn="0" function="conjureItem">
|
||||
<vocation name="Paladin" />
|
||||
<vocation name="Royal Paladin" />
|
||||
</conjure>
|
||||
<conjure name="Conjure Explosive Arrow" words="exevo con flam" lvl="25" mana="290" soul="3" conjureId="3449" conjureCount="8" needlearn="0" function="conjureItem">
|
||||
<vocation name="Paladin" />
|
||||
<vocation name="Royal Paladin" />
|
||||
</conjure>
|
||||
<conjure name="Conjure Bolt" words="exevo con mort" lvl="17" mana="140" soul="2" prem="1" conjureId="3446" conjureCount="5" needlearn="0" function="conjureItem">
|
||||
<vocation name="Paladin" />
|
||||
<vocation name="Royal Paladin" />
|
||||
</conjure>
|
||||
<conjure name="Conjure Power Bolt" words="exevo con vis" lvl="59" mana="800" soul="4" prem="1" conjureId="3450" conjureCount="10" needlearn="0" function="conjureItem">
|
||||
<vocation name="Royal Paladin" />
|
||||
</conjure>
|
||||
<conjure name="Enchant Staff" words="exeta vis" lvl="41" mana="80" prem="1" conjureId="3321" reagentId="3289" needlearn="0" function="conjureItem">
|
||||
<vocation name="Master Sorcerer" />
|
||||
</conjure>
|
||||
<conjure name="Poison Field" words="adevo grav pox" lvl="14" mana="200" soul="1" reagentId="3147" conjureId="3172" conjureCount="3" needlearn="0" function="conjureRune">
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
<vocation name="Elder Druid" />
|
||||
</conjure>
|
||||
<conjure name="Light Magic Missile" words="adori" lvl="15" mana="120" soul="1" reagentId="3147" conjureId="3174" conjureCount="5" needlearn="0" function="conjureRune">
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
<vocation name="Elder Druid" />
|
||||
</conjure>
|
||||
<conjure name="Heavy Magic Missile" words="adori gran" lvl="25" mana="280" soul="2" reagentId="3147" conjureId="3198" conjureCount="5" needlearn="0" function="conjureRune">
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Elder Druid" />
|
||||
</conjure>
|
||||
<conjure name="Fire Field" words="adevo grav flam" lvl="15" mana="240" soul="1" reagentId="3147" conjureId="3188" conjureCount="3" needlearn="0" function="conjureRune">
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
<vocation name="Elder Druid" />
|
||||
</conjure>
|
||||
<conjure name="Fireball" words="adori flam" lvl="17" mana="160" soul="2" prem="1" reagentId="3147" conjureId="3189" conjureCount="2" needlearn="0" function="conjureRune">
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
</conjure>
|
||||
<conjure name="Envenom" words="adevo res pox" lvl="21" mana="400" soul="2" reagentId="3147" conjureId="3179" conjureCount="1" needlearn="0" function="conjureRune">
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Elder Druid" />
|
||||
</conjure>
|
||||
<conjure name="Energy Field" words="adevo grav vis" lvl="18" mana="320" soul="2" reagentId="3147" conjureId="3164" conjureCount="3" needlearn="0" function="conjureRune">
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
<vocation name="Elder Druid" />
|
||||
</conjure>
|
||||
<conjure name="Great Fireball" words="adori gran flam" lvl="23" mana="480" soul="3" reagentId="3147" conjureId="3191" conjureCount="2" needlearn="0" function="conjureRune">
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
</conjure>
|
||||
<conjure name="Poison Bomb" words="adevo mas pox" lvl="25" mana="520" soul="2" prem="1" reagentId="3147" conjureId="3173" conjureCount="2" needlearn="0" function="conjureRune">
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Elder Druid" />
|
||||
</conjure>
|
||||
<conjure name="Firebomb" words="adevo mas flam" lvl="27" mana="600" soul="4" reagentId="3147" conjureId="3192" conjureCount="2" needlearn="0" function="conjureRune">
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
<vocation name="Elder Druid" />
|
||||
</conjure>
|
||||
<conjure name="Soulfire" words="adevo res flam" lvl="27" mana="600" soul="3" prem="1" reagentId="3147" conjureId="3195" conjureCount="3" needlearn="0" function="conjureRune">
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
<vocation name="Elder Druid" />
|
||||
</conjure>
|
||||
<conjure name="Poison Wall" words="adevo mas grav pox" lvl="29" mana="640" soul="3" reagentId="3147" conjureId="3176" conjureCount="4" needlearn="0" function="conjureRune">
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
<vocation name="Elder Druid" />
|
||||
</conjure>
|
||||
<conjure name="Explosion" words="adevo mas hur" lvl="31" mana="720" soul="4" reagentId="3147" conjureId="3200" conjureCount="6" needlearn="0" function="conjureRune">
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
<vocation name="Elder Druid" />
|
||||
</conjure>
|
||||
<conjure name="Fire Wall" words="adevo mas grav flam" lvl="33" mana="780" soul="4" reagentId="3147" conjureId="3190" conjureCount="4" needlearn="0" function="conjureRune">
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
<vocation name="Elder Druid" />
|
||||
</conjure>
|
||||
<conjure name="Energybomb" words="adevo mas vis" lvl="37" mana="880" soul="5" prem="1" reagentId="3147" conjureId="3151" conjureCount="2" needlearn="0" function="conjureRune">
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
</conjure>
|
||||
<conjure name="Energy Wall" words="adevo mas grav vis" lvl="41" mana="1000" soul="5" reagentId="3147" conjureId="3166" conjureCount="4" needlearn="0" function="conjureRune">
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
<vocation name="Elder Druid" />
|
||||
</conjure>
|
||||
<conjure name="Sudden Death" words="adori vita vis" lvl="45" mana="880" soul="5" reagentId="3147" conjureId="3155" conjureCount="1" needlearn="0" function="conjureRune">
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
</conjure>
|
||||
<conjure name="Antidote Rune" words="adana pox" lvl="15" mana="200" soul="1" reagentId="3147" conjureId="3153" conjureCount="1" needlearn="0" function="conjureRune">
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Elder Druid" />
|
||||
</conjure>
|
||||
<conjure name="Intense Healing Rune" words="adura gran" lvl="15" mana="240" soul="2" reagentId="3147" conjureId="3152" conjureCount="1" needlearn="0" function="conjureRune">
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Elder Druid" />
|
||||
</conjure>
|
||||
<conjure name="Ultimate Healing Rune" words="adura vita" lvl="24" mana="400" soul="3" reagentId="3147" conjureId="3160" conjureCount="1" needlearn="0" function="conjureRune">
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Elder Druid" />
|
||||
</conjure>
|
||||
<conjure name="Convince Creature" words="adeta sio" lvl="16" mana="200" soul="3" reagentId="3147" conjureId="3177" conjureCount="1" needlearn="0" function="conjureRune">
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Elder Druid" />
|
||||
</conjure>
|
||||
<conjure name="Animate Dead" words="adana mort" lvl="27" mana="600" soul="5" prem="1" reagentId="3147" conjureId="3203" conjureCount="1" needlearn="0" function="conjureRune">
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
<vocation name="Elder Druid" />
|
||||
</conjure>
|
||||
<conjure name="Chameleon" words="adevo ina" lvl="27" mana="600" soul="2" reagentId="3147" conjureId="3178" conjureCount="1" needlearn="0" function="conjureRune">
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Elder Druid" />
|
||||
</conjure>
|
||||
<conjure name="Destroy Field" words="adito grav" lvl="17" mana="120" soul="2" reagentId="3147" conjureId="3148" conjureCount="3" needlearn="0" function="conjureRune">
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Paladin" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
<vocation name="Elder Druid" />
|
||||
<vocation name="Royal Paladin" />
|
||||
</conjure>
|
||||
<conjure name="Desintegrate" words="adito tera" lvl="21" mana="200" soul="3" prem="1" reagentId="3147" conjureId="3197" blocking="false" conjureCount="3" needlearn="0" function="conjureRune">
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Paladin" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
<vocation name="Elder Druid" />
|
||||
<vocation name="Royal Paladin" />
|
||||
</conjure>
|
||||
<conjure name="Magic Wall" words="adevo grav tera" lvl="32" mana="750" soul="5" prem="1" reagentId="3147" conjureId="3180" conjureCount="3" needlearn="0" function="conjureRune">
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
</conjure>
|
||||
<conjure name="Wild Growth" words="exevo grav vita" lvl="27" mana="220" soul="5" prem="1" reagentId="3147" conjureId="3156" conjureCount="2" needlearn="0" function="conjureRune">
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Elder Druid" />
|
||||
</conjure>
|
||||
<conjure name="Paralyze" words="adana ani" lvl="54" mana="1400" soul="3" prem="1" reagentId="3147" conjureId="3165" conjureCount="1" needlearn="0" function="conjureRune">
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Elder Druid" />
|
||||
</conjure>
|
||||
|
||||
<!-- House Spells -->
|
||||
<instant name="House Guest List" words="aleta sio" selftarget="1" aggressive="0" function="editHouseGuest" />
|
||||
<instant name="House Subowner List" words="aleta som" selftarget="1" aggressive="0" function="editHouseSubOwner" />
|
||||
<instant name="House Door List" words="aleta grav" selftarget="1" aggressive="0" function="editHouseDoor" />
|
||||
<instant name="House Kick" words="alana sio" params="1" aggressive="0" function="houseKick" />
|
||||
</spells>
|
||||
Reference in New Issue
Block a user