mirror of
https://github.com/ErikasKontenis/SabrehavenServer.git
synced 2025-11-03 13:26:23 +01:00
Full Distribution
This commit is contained in:
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