mirror of
https://github.com/ErikasKontenis/SabrehavenServer.git
synced 2025-10-13 22:34:53 +02:00
Full Distribution
This commit is contained in:
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
|
Reference in New Issue
Block a user