First commit
This commit is contained in:
230
app/SabrehavenServer/data/spells/lib/spells.lua
Normal file
230
app/SabrehavenServer/data/spells/lib/spells.lua
Normal file
@@ -0,0 +1,230 @@
|
||||
function healingFormula(level, maglevel, base, variation, value_min, value_max)
|
||||
local value = 3 * maglevel + (2 * level)
|
||||
|
||||
if value_min ~= nil and value <= value_min then
|
||||
value = value_min
|
||||
end
|
||||
|
||||
if value_max ~= nil and value >= value_max then
|
||||
value = value_max
|
||||
end
|
||||
|
||||
local min = value * (base - variation) / 100
|
||||
local max = value * (base + variation) / 100
|
||||
return min, max
|
||||
end
|
||||
|
||||
function damageFormula(level, maglevel, base, variation)
|
||||
local value = 3 * maglevel + (2 * level)
|
||||
|
||||
local min = value * (base - variation) / 100
|
||||
local max = value * (base + variation) / 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},
|
||||
}
|
@@ -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
|
@@ -0,0 +1,9 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
|
||||
combat:setParameter(COMBAT_PARAM_TARGETCASTERORTOPMOST, true)
|
||||
combat:setParameter(COMBAT_PARAM_AGGRESSIVE, false)
|
||||
|
||||
function onCastSpell(creature, variant)
|
||||
creature:removeCondition(CONDITION_POISON)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
@@ -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
|
@@ -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
|
@@ -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
|
@@ -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
|
@@ -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
app/SabrehavenServer/data/spells/scripts/runes/envenom.lua
Normal file
18
app/SabrehavenServer/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
app/SabrehavenServer/data/spells/scripts/runes/explosion.lua
Normal file
23
app/SabrehavenServer/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
|
@@ -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
app/SabrehavenServer/data/spells/scripts/runes/fire wall.lua
Normal file
10
app/SabrehavenServer/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
app/SabrehavenServer/data/spells/scripts/runes/fireball.lua
Normal file
22
app/SabrehavenServer/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 = 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
|
10
app/SabrehavenServer/data/spells/scripts/runes/firebomb.lua
Normal file
10
app/SabrehavenServer/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
|
@@ -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
|
@@ -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_FIRE)
|
||||
|
||||
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
|
@@ -0,0 +1,15 @@
|
||||
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)
|
||||
return healingFormula(level, maglevel, 70, 30, 100)
|
||||
end
|
||||
|
||||
combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
|
||||
|
||||
function onCastSpell(creature, variant)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
@@ -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_FIRE)
|
||||
|
||||
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
|
@@ -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
app/SabrehavenServer/data/spells/scripts/runes/paralyze.lua
Normal file
16
app/SabrehavenServer/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
|
@@ -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
|
@@ -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
|
@@ -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
app/SabrehavenServer/data/spells/scripts/runes/soulfire.lua
Normal file
18
app/SabrehavenServer/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
|
@@ -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
|
@@ -0,0 +1,16 @@
|
||||
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)
|
||||
return healingFormula(level, maglevel, 250, 0, 100)
|
||||
end
|
||||
|
||||
combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
|
||||
|
||||
function onCastSpell(creature, variant, isHotkey)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
@@ -0,0 +1,8 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
|
||||
combat:setParameter(COMBAT_PARAM_AGGRESSIVE, false)
|
||||
|
||||
function onCastSpell(creature, variant)
|
||||
creature:removeCondition(CONDITION_POISON)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
21
app/SabrehavenServer/data/spells/scripts/spells/berserk.lua
Normal file
21
app/SabrehavenServer/data/spells/scripts/spells/berserk.lua
Normal file
@@ -0,0 +1,21 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
|
||||
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
|
||||
combat:setArea(createCombatArea(AREA_SQUARE1X1))
|
||||
|
||||
function onGetFormulaValues(player, level, maglevel)
|
||||
local base = 80
|
||||
local variation = 20
|
||||
|
||||
local formula = 4 * 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
|
@@ -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
|
@@ -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
|
@@ -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
|
@@ -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
|
@@ -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
|
@@ -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
|
@@ -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
app/SabrehavenServer/data/spells/scripts/spells/food.lua
Normal file
9
app/SabrehavenServer/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
|
@@ -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
|
@@ -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
|
@@ -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
app/SabrehavenServer/data/spells/scripts/spells/haste.lua
Normal file
12
app/SabrehavenServer/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
|
@@ -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
|
@@ -0,0 +1,15 @@
|
||||
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)
|
||||
return healingFormula(level, maglevel, 40, 20, 100)
|
||||
end
|
||||
|
||||
combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
|
||||
|
||||
function onCastSpell(creature, variant)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
@@ -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
|
@@ -0,0 +1,15 @@
|
||||
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)
|
||||
return healingFormula(level, maglevel, 20, 10, 100)
|
||||
end
|
||||
|
||||
combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
|
||||
|
||||
function onCastSpell(creature, variant)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
13
app/SabrehavenServer/data/spells/scripts/spells/light.lua
Normal file
13
app/SabrehavenServer/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
|
@@ -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
|
@@ -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
|
@@ -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
|
@@ -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
|
@@ -0,0 +1,20 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
|
||||
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
|
||||
|
||||
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
|
@@ -0,0 +1,21 @@
|
||||
local combat = Combat()
|
||||
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
|
||||
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
|
||||
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
|
@@ -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
|
@@ -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
|
@@ -0,0 +1,15 @@
|
||||
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)
|
||||
return healingFormula(level, maglevel, 250, 50, 100)
|
||||
end
|
||||
|
||||
combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
|
||||
|
||||
function onCastSpell(creature, variant)
|
||||
return combat:execute(creature, variant)
|
||||
end
|
@@ -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, 9)
|
||||
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
|
@@ -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
|
@@ -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
|
461
app/SabrehavenServer/data/spells/spells.xml
Normal file
461
app/SabrehavenServer/data/spells/spells.xml
Normal file
@@ -0,0 +1,461 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<spells>
|
||||
<!-- Sorcerer Spells -->
|
||||
<instant name="Force Strike" words="exori mort" maglv="2" mana="20" prem="0" cooldown="1000" range="3" direction="1" blockwalls="1" needlearn="0" script="spells/force strike.lua">
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Elder Druid" />
|
||||
</instant>
|
||||
<instant name="Fire Wave" words="exevo flam hur" maglv="7" 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" maglv="10" 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" maglv="14" mana="200" 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" maglv="20" 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" maglv="40" mana="800" selftarget="1" prem="0" needlearn="0" script="spells/ultimate explosion.lua">
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
</instant>
|
||||
|
||||
<!-- Druid Spells -->
|
||||
<instant name="Heal Friend" words="exura sio" maglv="7" mana="70" prem="0" 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" maglv="15" mana="400" prem="0" 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" maglv="19" mana="120" prem="0" 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" maglv="28" mana="400" prem="0" aggressive="1" needlearn="0" script="spells/poison storm.lua">
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Elder Druid" />
|
||||
</instant>
|
||||
<instant name="Poison Wave" words="exevo pox hur" maglv="20" mana="250" direction="1" needlearn="0" script="spells/poison wave.lua">
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Elder Druid" />
|
||||
</instant>
|
||||
<instant name="Wild Growth" words="exevo grav vita" maglv="13" mana="150" prem="0" cooldown="1000" range="3" direction="1" blocktype="all" needlearn="0" script="spells/wild growth.lua">
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Elder Druid" />
|
||||
</instant>
|
||||
|
||||
|
||||
<!-- Knight Spells -->
|
||||
<instant name="Challenge" words="exeta res" maglv="4" mana="30" prem="0" aggressive="0" needlearn="0" script="spells/challenge.lua">
|
||||
<vocation name="Elite Knight" />
|
||||
</instant>
|
||||
<instant name="Berserk" words="exori" maglv="5" mana="150" prem="0" needweapon="1" needlearn="0" script="spells/berserk.lua">
|
||||
<vocation name="Knight" />
|
||||
<vocation name="Elite Knight" />
|
||||
</instant>
|
||||
|
||||
<!-- Other -->
|
||||
<instant name="Food" words="exevo pan" maglv="0" mana="30" soul="0" aggressive="0" needlearn="0" script="spells/food.lua">
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Elder Druid" />
|
||||
<vocation name="Paladin" />
|
||||
<vocation name="Royal Paladin" />
|
||||
</instant>
|
||||
<instant name="Find Person" words="exiva" maglv="0" 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" maglv="0" 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" maglv="1" 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" maglv="1" mana="20" prem="0" 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" maglv="2" 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" maglv="2" 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" maglv="3" mana="50" prem="0" 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" maglv="4" mana="20" prem="0" 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="Poison Strike" words="exori pox" maglv="2" mana="20" prem="0" cooldown="1000" range="3" direction="1" blockwalls="1" needlearn="0" script="spells/poison 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" maglv="3" 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" maglv="4" mana="50" aggressive="0" selftarget="1" needlearn="0" script="spells/magic shield.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="Flame Strike" words="exori flam" maglv="3" mana="20" prem="0" 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" maglv="4" mana="60" prem="0" 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" maglv="8" mana="80" 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" maglv="8" mana="100" prem="0" 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" maglv="10" 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" maglv="16" 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" maglv="12" mana="250" prem="0" 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" maglv="12" mana="140" prem="0" 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" maglv="15" mana="210" aggressive="0" selftarget="1" needlearn="0" script="spells/invisible.lua">
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
<vocation name="Elder Druid" />
|
||||
<vocation name="Paladin" />
|
||||
<vocation name="Royal Paladin" />
|
||||
</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="Fire Bomb" 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="Energy Bomb" id="3149" 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="2" maglv="7" needtarget="1" blocktype="solid" script="runes/soulfire.lua" />
|
||||
<rune name="Envenom" id="3179" allowfaruse="1" charges="3" maglv="4" needtarget="1" blocktype="solid" script="runes/envenom.lua" />
|
||||
<rune name="Fireball" id="3189" allowfaruse="1" charges="3" maglv="2" needtarget="0" blocktype="solid" script="runes/fireball.lua" />
|
||||
<rune name="Great Fireball" id="3191" allowfaruse="1" charges="2" maglv="4" blocktype="solid" script="runes/great fireball.lua" />
|
||||
<rune name="Light Magic Missile" id="3174" allowfaruse="1" charges="5" maglv="0" needtarget="1" blocktype="solid" script="runes/light magic missile.lua" />
|
||||
<rune name="Heavy Magic Missile" id="3198" allowfaruse="1" charges="5" maglv="1" 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="2" 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="4" maglv="9" blocktype="all" script="runes/magic wall.lua" />
|
||||
<rune name="Paralyze" id="3165" allowfaruse="1" charges="1" maglv="18" mana="900" needtarget="1" blocktype="solid" script="runes/paralyze.lua">
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Elder Druid" showInDescription="0" />
|
||||
</rune>
|
||||
|
||||
<!-- Conjure Spells -->
|
||||
<conjure name="Conjure Blank Rune" words="adori blank" maglv="10" mana="10" soul="10" conjureId="3147" conjureCount="1" needlearn="0" function="conjureItem">
|
||||
<vocation name="Paladin" />
|
||||
<vocation name="Royal Paladin" />
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
<vocation name="Elder Druid" />
|
||||
</conjure>
|
||||
<conjure name="Conjure Arrow" words="exevo con" maglv="2" mana="40" soul="0" conjureId="3447" conjureCount="15" needlearn="0" function="conjureItem">
|
||||
<vocation name="Paladin" />
|
||||
<vocation name="Royal Paladin" />
|
||||
</conjure>
|
||||
<conjure name="Conjure Poison Arrow" words="exevo con pox" maglv="5" mana="70" soul="0" conjureId="3448" conjureCount="5" needlearn="0" function="conjureItem">
|
||||
<vocation name="Paladin" />
|
||||
<vocation name="Royal Paladin" />
|
||||
</conjure>
|
||||
<conjure name="Conjure Explosive Arrow" words="exevo con flam" maglv="10" mana="120" soul="0" conjureId="3449" conjureCount="8" needlearn="0" function="conjureItem">
|
||||
<vocation name="Paladin" />
|
||||
<vocation name="Royal Paladin" />
|
||||
</conjure>
|
||||
<conjure name="Conjure Bolt" words="exevo con mort" maglv="6" mana="70" soul="0" prem="0" conjureId="3446" conjureCount="10" needlearn="0" function="conjureItem">
|
||||
<vocation name="Paladin" />
|
||||
<vocation name="Royal Paladin" />
|
||||
</conjure>
|
||||
<conjure name="Conjure Power Bolt" words="exevo con vis" maglv="14" mana="200" soul="0" prem="0" conjureId="3450" conjureCount="2" needlearn="0" function="conjureItem">
|
||||
<vocation name="Royal Paladin" />
|
||||
</conjure>
|
||||
<conjure name="Conjure Infernal Bolt" words="exevo con mort flam" maglv="16" mana="180" soul="0" prem="0" conjureId="6528" conjureCount="1" needlearn="0" function="conjureItem">
|
||||
<vocation name="Royal Paladin" />
|
||||
</conjure>
|
||||
<conjure name="Enchant Staff" words="exeta vis" maglv="22" mana="80" prem="0" conjureId="3321" reagentId="3289" needlearn="0" function="conjureItem">
|
||||
<vocation name="Master Sorcerer" />
|
||||
</conjure>
|
||||
<conjure name="Poison Field" words="adevo grav pox" maglv="2" mana="50" soul="0" 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" maglv="1" mana="40" soul="0" reagentId="3147" conjureId="3174" conjureCount="5" needlearn="0" function="conjureRune">
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
<vocation name="Elder Druid" />
|
||||
<vocation name="Paladin" />
|
||||
<vocation name="Royal Paladin" />
|
||||
</conjure>
|
||||
<conjure name="Heavy Magic Missile" words="adori gran" maglv="3" mana="70" soul="0" reagentId="3147" conjureId="3198" conjureCount="5" needlearn="0" function="conjureRune">
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Elder Druid" />
|
||||
<vocation name="Paladin" />
|
||||
<vocation name="Royal Paladin" />
|
||||
</conjure>
|
||||
<conjure name="Fire Field" words="adevo grav flam" maglv="3" mana="60" soul="0" 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" maglv="5" mana="60" soul="0" prem="0" reagentId="3147" conjureId="3189" conjureCount="3" needlearn="0" function="conjureRune">
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
<vocation name="Paladin" />
|
||||
<vocation name="Royal Paladin" />
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Elder Druid" />
|
||||
</conjure>
|
||||
<conjure name="Envenom" words="adevo res pox" maglv="7" mana="100" soul="0" reagentId="3147" conjureId="3179" conjureCount="3" needlearn="0" function="conjureRune">
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Elder Druid" />
|
||||
</conjure>
|
||||
<conjure name="Energy Field" words="adevo grav vis" maglv="5" mana="80" soul="0" 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" maglv="9" mana="120" soul="0" reagentId="3147" conjureId="3191" conjureCount="2" needlearn="0" function="conjureRune">
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
<vocation name="Elder Druid" />
|
||||
</conjure>
|
||||
<conjure name="Poison Bomb" words="adevo mas pox" maglv="8" mana="130" soul="0" prem="0" reagentId="3147" conjureId="3173" conjureCount="2" needlearn="0" function="conjureRune">
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Elder Druid" />
|
||||
</conjure>
|
||||
<conjure name="Fire Bomb" words="adevo mas flam" maglv="9" mana="150" soul="0" 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" maglv="13" mana="150" soul="0" prem="0" reagentId="3147" conjureId="3195" conjureCount="2" 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" maglv="11" mana="160" soul="0" 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" maglv="12" mana="180" soul="0" reagentId="3147" conjureId="3200" conjureCount="3" 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" maglv="13" mana="200" soul="0" 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="Energy Bomb" words="adevo mas vis" maglv="18" mana="220" soul="0" prem="0" reagentId="3147" conjureId="3149" conjureCount="2" needlearn="0" function="conjureRune">
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
</conjure>
|
||||
<conjure name="Energy Wall" words="adevo mas grav vis" maglv="18" mana="250" soul="0" 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" maglv="25" mana="220" soul="0" 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" maglv="5" mana="50" soul="0" 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" maglv="4" mana="60" soul="0" 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" maglv="11" mana="100" soul="0" 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" maglv="10" mana="100" soul="0" 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" maglv="7" mana="300" soul="0" prem="0" reagentId="3147" conjureId="3203" conjureCount="2" 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" maglv="11" mana="150" soul="0" 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" maglv="6" mana="60" soul="0" 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" maglv="8" mana="100" soul="0" prem="0" 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" maglv="14" mana="250" soul="0" prem="0" reagentId="3147" conjureId="3180" conjureCount="4" needlearn="0" function="conjureRune">
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
</conjure>
|
||||
<conjure name="Paralyze" words="adana ani" maglv="35" mana="600" soul="0" prem="0" 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