From b18c0517c5b0219418b4b28b1184a032914ec368 Mon Sep 17 00:00:00 2001 From: ErikasKontenis Date: Sat, 10 Sep 2022 11:05:02 +0300 Subject: [PATCH] 8.0 spells from nostalrius --- data/spells/lib/spells.lua | 38 +--- data/spells/scripts/attack/ethereal spear.lua | 17 ++ data/spells/scripts/attack/groundshaker.lua | 18 ++ .../spells/scripts/attack/whirlwind throw.lua | 18 ++ data/spells/scripts/runes/cure poison.lua | 3 +- data/spells/scripts/runes/disintegrate.lua | 2 +- data/spells/scripts/runes/envenom.lua | 4 +- data/spells/scripts/runes/explosion.lua | 2 +- data/spells/scripts/runes/fireball.lua | 2 +- .../scripts/runes/heavy magic missile.lua | 9 +- data/spells/scripts/runes/intense healing.lua | 9 +- .../scripts/runes/light magic missile.lua | 7 +- data/spells/scripts/runes/soulfire.lua | 2 +- data/spells/scripts/runes/sudden death.lua | 7 +- .../spells/scripts/runes/ultimate healing.lua | 9 +- data/spells/scripts/runes/wild growth.lua | 7 + data/spells/scripts/spells/antidote.lua | 4 +- data/spells/scripts/spells/berserk.lua | 19 +- data/spells/scripts/spells/cure poison.lua | 8 + data/spells/scripts/spells/energy beam.lua | 2 +- data/spells/scripts/spells/energy wave.lua | 4 +- data/spells/scripts/spells/food.lua | 7 + .../scripts/spells/great energy beam.lua | 4 +- data/spells/scripts/spells/great light.lua | 2 +- data/spells/scripts/spells/heal friend.lua | 6 +- .../spells/scripts/spells/intense healing.lua | 9 +- data/spells/scripts/spells/invisible.lua | 3 + data/spells/scripts/spells/light healing.lua | 9 +- data/spells/scripts/spells/light.lua | 2 +- .../scripts/spells/light_heal_friend.lua | 23 +++ .../scripts/spells/mass healing_training.lua | 15 ++ data/spells/scripts/spells/poison wave.lua | 4 +- .../scripts/spells/ultimate explosion.lua | 2 +- .../scripts/spells/ultimate healing.lua | 9 +- data/spells/scripts/spells/ultimate light.lua | 2 +- data/spells/scripts/spells/wild growth.lua | 5 +- data/spells/spells.xml | 192 +++++++++--------- 37 files changed, 320 insertions(+), 165 deletions(-) create mode 100644 data/spells/scripts/attack/ethereal spear.lua create mode 100644 data/spells/scripts/attack/groundshaker.lua create mode 100644 data/spells/scripts/attack/whirlwind throw.lua create mode 100644 data/spells/scripts/runes/wild growth.lua create mode 100644 data/spells/scripts/spells/cure poison.lua create mode 100644 data/spells/scripts/spells/light_heal_friend.lua create mode 100644 data/spells/scripts/spells/mass healing_training.lua diff --git a/data/spells/lib/spells.lua b/data/spells/lib/spells.lua index 2c28f45..0fe11b7 100644 --- a/data/spells/lib/spells.lua +++ b/data/spells/lib/spells.lua @@ -1,37 +1,21 @@ -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 +function healingFormula(level, maglevel, base, variation) + local value = 2 * level + (3 * maglevel) + local min = value - math.random(variation) + base / 100 + local max = value + math.random(variation) + base / 100 return min, max end function damageFormula(level, maglevel, base, variation) - local value = 3 * maglevel + (2 * level) - - local min = value * (base - variation) / 100 - local max = value * (base + variation) / 100 - return min, max + local value = 2 * level + (3 * maglevel) + local min = value - math.random(variation) + base / 100 + local max = value + math.random(variation) + base / 100 + return -min, -max end function computeFormula(level, maglevel, base, variation) - local damage = base - if variation > 0 then - damage = math.random(-variation, variation) + damage - end - - local level_formula = 2 * level - local magic_formula = 3 * maglevel + level_formula - - return magic_formula * damage / 100 + local value = 2 * level + (3 * maglevel) + value = value + math.random(-variation, variation) + base / 100 + return value end --------------------------------------------------------------------------------------- diff --git a/data/spells/scripts/attack/ethereal spear.lua b/data/spells/scripts/attack/ethereal spear.lua new file mode 100644 index 0000000..53e7e46 --- /dev/null +++ b/data/spells/scripts/attack/ethereal spear.lua @@ -0,0 +1,17 @@ +local combat = Combat() +combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) +combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_HITAREA) +combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ETHEREALSPEAR) +combat:setParameter(COMBAT_PARAM_BLOCKARMOR, 1) + +function onGetFormulaValues(player, attack, factor) + local skillTotal = 2 * player:getEffectiveSkillLevel(SKILL_DISTANCE) + local levelTotal = player:getLevel() / 5 + return -(((skillTotal + attack / 3500) * 0.35) + (levelTotal) + 0), -(((skillTotal + attack / 3125) * 0.5) + (levelTotal) + 5) +end + +combat:setCallback(CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues") + +function onCastSpell(creature, var) + return combat:execute(creature, var) +end diff --git a/data/spells/scripts/attack/groundshaker.lua b/data/spells/scripts/attack/groundshaker.lua new file mode 100644 index 0000000..444d56a --- /dev/null +++ b/data/spells/scripts/attack/groundshaker.lua @@ -0,0 +1,18 @@ +local combat = Combat() +combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) +combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_GROUNDSHAKER) +combat:setParameter(COMBAT_PARAM_BLOCKARMOR, 1) +combat:setParameter(COMBAT_PARAM_USECHARGES, 1) +combat:setArea(createCombatArea(AREA_CIRCLE3X3)) + +function onGetFormulaValues(player, skill, attack, factor) + local skillTotal = skill * attack + local levelTotal = player:getLevel() / 5 + return -(((skillTotal * 0.02) + 4) + (levelTotal)), -(((skillTotal * 0.03) + 6) + (levelTotal)) +end + +combat:setCallback(CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues") + +function onCastSpell(creature, var) + return combat:execute(creature, var) +end diff --git a/data/spells/scripts/attack/whirlwind throw.lua b/data/spells/scripts/attack/whirlwind throw.lua new file mode 100644 index 0000000..2a0e872 --- /dev/null +++ b/data/spells/scripts/attack/whirlwind throw.lua @@ -0,0 +1,18 @@ +local combat = Combat() +combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) +combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_HITAREA) +combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_WEAPONTYPE) +combat:setParameter(COMBAT_PARAM_BLOCKARMOR, 1) +combat:setParameter(COMBAT_PARAM_USECHARGES, 1) + +function onGetFormulaValues(player, skill, attack, factor) + local skillTotal = skill * attack + local levelTotal = player:getLevel() / 5 + return -(((skillTotal * 0.01) + 1) + (levelTotal)), -(((skillTotal * 0.03) + 6) + (levelTotal)) +end + +combat:setCallback(CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues") + +function onCastSpell(creature, var) + return combat:execute(creature, var) +end diff --git a/data/spells/scripts/runes/cure poison.lua b/data/spells/scripts/runes/cure poison.lua index 444d92d..b248b41 100644 --- a/data/spells/scripts/runes/cure poison.lua +++ b/data/spells/scripts/runes/cure poison.lua @@ -1,9 +1,8 @@ local combat = Combat() combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) -combat:setParameter(COMBAT_PARAM_TARGETCASTERORTOPMOST, true) +combat:setParameter(COMBAT_PARAM_DISPEL, CONDITION_POISON) combat:setParameter(COMBAT_PARAM_AGGRESSIVE, false) function onCastSpell(creature, variant) - creature:removeCondition(CONDITION_POISON) return combat:execute(creature, variant) end \ No newline at end of file diff --git a/data/spells/scripts/runes/disintegrate.lua b/data/spells/scripts/runes/disintegrate.lua index 90a92dd..40ee2ab 100644 --- a/data/spells/scripts/runes/disintegrate.lua +++ b/data/spells/scripts/runes/disintegrate.lua @@ -1,7 +1,7 @@ local dead_human = { 4240, 4241, 4242, 4247, 4248 } -local removalLimit = 10 +local removalLimit = 500 function onCastSpell(creature, variant) local position = variant:getPosition() diff --git a/data/spells/scripts/runes/envenom.lua b/data/spells/scripts/runes/envenom.lua index 5947017..506548a 100644 --- a/data/spells/scripts/runes/envenom.lua +++ b/data/spells/scripts/runes/envenom.lua @@ -5,8 +5,8 @@ combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY) function onTargetCreature(creature, target) local player = Player(creature) - - local condition = Condition(CONDITION_POISON) + +local condition = Condition(CONDITION_POISON) condition:setTiming(computeFormula(player:getLevel(), player:getMagicLevel(), 70, 20)) target:addCondition(condition) end diff --git a/data/spells/scripts/runes/explosion.lua b/data/spells/scripts/runes/explosion.lua index 84b113e..193c36d 100644 --- a/data/spells/scripts/runes/explosion.lua +++ b/data/spells/scripts/runes/explosion.lua @@ -6,7 +6,7 @@ combat:setParameter(COMBAT_PARAM_BLOCKARMOR, true) combat:setArea(createCombatArea(AREA_CROSS1X1)) function onGetFormulaValues(player, level, maglevel) - local base = 60 + local base = 70 local variation = 40 local formula = 3 * maglevel + (2 * level) diff --git a/data/spells/scripts/runes/fireball.lua b/data/spells/scripts/runes/fireball.lua index 0225655..a5a32fe 100644 --- a/data/spells/scripts/runes/fireball.lua +++ b/data/spells/scripts/runes/fireball.lua @@ -6,7 +6,7 @@ combat:setArea(createCombatArea(AREA_CIRCLE2X2)) function onGetFormulaValues(player, level, maglevel) local base = 20 - local variation = 10 + local variation = 5 local formula = 3 * maglevel + (2 * level) diff --git a/data/spells/scripts/runes/heavy magic missile.lua b/data/spells/scripts/runes/heavy magic missile.lua index 107cd40..cd4b05f 100644 --- a/data/spells/scripts/runes/heavy magic missile.lua +++ b/data/spells/scripts/runes/heavy magic missile.lua @@ -1,10 +1,15 @@ +local area = { +{1} +} + 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) +combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY) +combat:setArea(createCombatArea(area)) function onGetFormulaValues(player, level, maglevel) - local base = 30 + local base = 32 local variation = 10 local formula = 3 * maglevel + (2 * level) diff --git a/data/spells/scripts/runes/intense healing.lua b/data/spells/scripts/runes/intense healing.lua index 37f4d0a..c93a2ea 100644 --- a/data/spells/scripts/runes/intense healing.lua +++ b/data/spells/scripts/runes/intense healing.lua @@ -5,7 +5,14 @@ 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) + 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") diff --git a/data/spells/scripts/runes/light magic missile.lua b/data/spells/scripts/runes/light magic missile.lua index 65fb7bb..6e12b79 100644 --- a/data/spells/scripts/runes/light magic missile.lua +++ b/data/spells/scripts/runes/light magic missile.lua @@ -1,7 +1,12 @@ +local area = { +{1} +} + 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) +combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY) +combat:setArea(createCombatArea(area)) function onGetFormulaValues(player, level, maglevel) local base = 15 diff --git a/data/spells/scripts/runes/soulfire.lua b/data/spells/scripts/runes/soulfire.lua index 33ad3e6..35587bf 100644 --- a/data/spells/scripts/runes/soulfire.lua +++ b/data/spells/scripts/runes/soulfire.lua @@ -6,7 +6,7 @@ combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE) function onTargetCreature(creature, target) local player = Player(creature) - local condition = Condition(CONDITION_FIRE) +local condition = Condition(CONDITION_FIRE) condition:setTiming(computeFormula(player:getLevel(), player:getMagicLevel(), 120, 20)) target:addCondition(condition) end diff --git a/data/spells/scripts/runes/sudden death.lua b/data/spells/scripts/runes/sudden death.lua index 4911c5d..f37abdd 100644 --- a/data/spells/scripts/runes/sudden death.lua +++ b/data/spells/scripts/runes/sudden death.lua @@ -1,10 +1,15 @@ +local area = { +{1} +} + 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) +combat:setArea(createCombatArea(area)) function onGetFormulaValues(player, level, maglevel) - local base = 150 + local base = 160 local variation = 20 local formula = 3 * maglevel + (2 * level) diff --git a/data/spells/scripts/runes/ultimate healing.lua b/data/spells/scripts/runes/ultimate healing.lua index 9274f21..ce0ca4c 100644 --- a/data/spells/scripts/runes/ultimate healing.lua +++ b/data/spells/scripts/runes/ultimate healing.lua @@ -6,7 +6,14 @@ combat:setParameter(COMBAT_PARAM_TARGETCASTERORTOPMOST, true) combat:setParameter(COMBAT_PARAM_AGGRESSIVE, false) function onGetFormulaValues(player, level, maglevel) - return healingFormula(level, maglevel, 250, 0, 100) + local base = 280 + 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") diff --git a/data/spells/scripts/runes/wild growth.lua b/data/spells/scripts/runes/wild growth.lua new file mode 100644 index 0000000..c865b0d --- /dev/null +++ b/data/spells/scripts/runes/wild growth.lua @@ -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 \ No newline at end of file diff --git a/data/spells/scripts/spells/antidote.lua b/data/spells/scripts/spells/antidote.lua index abecde8..b248b41 100644 --- a/data/spells/scripts/spells/antidote.lua +++ b/data/spells/scripts/spells/antidote.lua @@ -1,8 +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) - creature:removeCondition(CONDITION_POISON) return combat:execute(creature, variant) -end +end \ No newline at end of file diff --git a/data/spells/scripts/spells/berserk.lua b/data/spells/scripts/spells/berserk.lua index 67e46ec..f090695 100644 --- a/data/spells/scripts/spells/berserk.lua +++ b/data/spells/scripts/spells/berserk.lua @@ -1,21 +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_USECHARGES, true) combat:setArea(createCombatArea(AREA_SQUARE1X1)) -function onGetFormulaValues(player, level, maglevel) - local base = 80 - local variation = 20 +function onGetFormulaValues(player, skill, attack, factor) + local levelHi = player:getLevel() - 8 + local level = 8 - local formula = 4 * level + local min = math.floor(((level + levelHi) * 32.0) / 10) + local max = math.floor(((level + levelHi) * 42.0) / 10) - local min = (formula * (base - variation)) / 100 - local max = (formula * (base + variation)) / 100 - return -min, -max + return -min, -max end -combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") +combat:setCallback(CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues") function onCastSpell(creature, variant) - return combat:execute(creature, variant) + return combat:execute(creature, variant) end \ No newline at end of file diff --git a/data/spells/scripts/spells/cure poison.lua b/data/spells/scripts/spells/cure poison.lua new file mode 100644 index 0000000..b248b41 --- /dev/null +++ b/data/spells/scripts/spells/cure poison.lua @@ -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 \ No newline at end of file diff --git a/data/spells/scripts/spells/energy beam.lua b/data/spells/scripts/spells/energy beam.lua index 2858301..6366a53 100644 --- a/data/spells/scripts/spells/energy beam.lua +++ b/data/spells/scripts/spells/energy beam.lua @@ -4,7 +4,7 @@ combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONHIT) combat:setArea(createCombatArea(AREA_BEAM5, AREADIAGONAL_BEAM5)) function onGetFormulaValues(player, level, maglevel) - local base = 60 + local base = 65 local variation = 20 local formula = 3 * maglevel + (2 * level) diff --git a/data/spells/scripts/spells/energy wave.lua b/data/spells/scripts/spells/energy wave.lua index 158850a..c53f108 100644 --- a/data/spells/scripts/spells/energy wave.lua +++ b/data/spells/scripts/spells/energy wave.lua @@ -4,8 +4,8 @@ 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 base = 195 + local variation = 45 local formula = 3 * maglevel + (2 * level) diff --git a/data/spells/scripts/spells/food.lua b/data/spells/scripts/spells/food.lua index bf185ec..edc08da 100644 --- a/data/spells/scripts/spells/food.lua +++ b/data/spells/scripts/spells/food.lua @@ -3,6 +3,13 @@ local food = { } function onCastSpell(creature, variant) + local player = Player(creature:getId()) + if player then + if SafeZone.cache_players[player:getId()] then + player:sendTextMessage(MESSAGE_STATUS_SMALL, "You can't use spells inside of this event.") + return false + end + end creature:addItem(food[math.random(#food)]) creature:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) return true diff --git a/data/spells/scripts/spells/great energy beam.lua b/data/spells/scripts/spells/great energy beam.lua index a5de443..75f4be8 100644 --- a/data/spells/scripts/spells/great energy beam.lua +++ b/data/spells/scripts/spells/great energy beam.lua @@ -4,8 +4,8 @@ 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 base = 135 + local variation = 35 local formula = 3 * maglevel + (2 * level) diff --git a/data/spells/scripts/spells/great light.lua b/data/spells/scripts/spells/great light.lua index 25e8be0..65e869e 100644 --- a/data/spells/scripts/spells/great light.lua +++ b/data/spells/scripts/spells/great light.lua @@ -3,7 +3,7 @@ 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_LEVEL, 10) condition:setParameter(CONDITION_PARAM_LIGHT_COLOR, 215) condition:setParameter(CONDITION_PARAM_TICKS, (11 * 60 + 35) * 1000) combat:setCondition(condition) diff --git a/data/spells/scripts/spells/heal friend.lua b/data/spells/scripts/spells/heal friend.lua index eff6de3..dc39f22 100644 --- a/data/spells/scripts/spells/heal friend.lua +++ b/data/spells/scripts/spells/heal friend.lua @@ -5,11 +5,11 @@ 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 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 diff --git a/data/spells/scripts/spells/intense healing.lua b/data/spells/scripts/spells/intense healing.lua index 95ff7e6..0148793 100644 --- a/data/spells/scripts/spells/intense healing.lua +++ b/data/spells/scripts/spells/intense healing.lua @@ -5,7 +5,14 @@ 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) + local base = 60 + 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") diff --git a/data/spells/scripts/spells/invisible.lua b/data/spells/scripts/spells/invisible.lua index f538e45..f067141 100644 --- a/data/spells/scripts/spells/invisible.lua +++ b/data/spells/scripts/spells/invisible.lua @@ -7,5 +7,8 @@ condition:setParameter(CONDITION_PARAM_TICKS, 200000) combat:setCondition(condition) function onCastSpell(creature, variant) + if SafeZone.cache_players[creature:getId()] then + return false + end return combat:execute(creature, variant) end \ No newline at end of file diff --git a/data/spells/scripts/spells/light healing.lua b/data/spells/scripts/spells/light healing.lua index ecce6f2..9fd6011 100644 --- a/data/spells/scripts/spells/light healing.lua +++ b/data/spells/scripts/spells/light healing.lua @@ -5,7 +5,14 @@ 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) + local base = 35 + 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") diff --git a/data/spells/scripts/spells/light.lua b/data/spells/scripts/spells/light.lua index dd9e624..f07e5ca 100644 --- a/data/spells/scripts/spells/light.lua +++ b/data/spells/scripts/spells/light.lua @@ -3,7 +3,7 @@ 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_LEVEL, 9) condition:setParameter(CONDITION_PARAM_LIGHT_COLOR, 215) condition:setParameter(CONDITION_PARAM_TICKS, (6 * 60 + 10) * 1000) combat:setCondition(condition) diff --git a/data/spells/scripts/spells/light_heal_friend.lua b/data/spells/scripts/spells/light_heal_friend.lua new file mode 100644 index 0000000..7292b1a --- /dev/null +++ b/data/spells/scripts/spells/light_heal_friend.lua @@ -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 = 80 + 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) + creature:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) + return combat:execute(creature, variant) +end \ No newline at end of file diff --git a/data/spells/scripts/spells/mass healing_training.lua b/data/spells/scripts/spells/mass healing_training.lua new file mode 100644 index 0000000..3234794 --- /dev/null +++ b/data/spells/scripts/spells/mass healing_training.lua @@ -0,0 +1,15 @@ +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) + +function onTargetCreature(creature, target) + doTargetCombatHealth(0, target, COMBAT_HEALING, 500, 1000, CONST_ME_NONE) + return true +end + +combat:setCallback(CALLBACK_PARAM_TARGETCREATURE, "onTargetCreature") + +function onCastSpell(creature, variant) + return combat:execute(creature, variant) +end \ No newline at end of file diff --git a/data/spells/scripts/spells/poison wave.lua b/data/spells/scripts/spells/poison wave.lua index b2893d5..9d42fef 100644 --- a/data/spells/scripts/spells/poison wave.lua +++ b/data/spells/scripts/spells/poison wave.lua @@ -4,8 +4,8 @@ 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 base = 195 + local variation = 45 local formula = 3 * maglevel + (2 * level) diff --git a/data/spells/scripts/spells/ultimate explosion.lua b/data/spells/scripts/spells/ultimate explosion.lua index 8c19f46..007741d 100644 --- a/data/spells/scripts/spells/ultimate explosion.lua +++ b/data/spells/scripts/spells/ultimate explosion.lua @@ -6,7 +6,7 @@ combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONAREA) combat:setArea(createCombatArea(AREA_CIRCLE5X5)) function onGetFormulaValues(player, level, maglevel) - local base = 250 + local base = 260 local variation = 50 local formula = 3 * maglevel + (2 * level) diff --git a/data/spells/scripts/spells/ultimate healing.lua b/data/spells/scripts/spells/ultimate healing.lua index 436efff..19aa349 100644 --- a/data/spells/scripts/spells/ultimate healing.lua +++ b/data/spells/scripts/spells/ultimate healing.lua @@ -5,7 +5,14 @@ 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) + 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") diff --git a/data/spells/scripts/spells/ultimate light.lua b/data/spells/scripts/spells/ultimate light.lua index 254d2d1..5730caa 100644 --- a/data/spells/scripts/spells/ultimate light.lua +++ b/data/spells/scripts/spells/ultimate light.lua @@ -3,7 +3,7 @@ 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_LEVEL, 11) condition:setParameter(CONDITION_PARAM_LIGHT_COLOR, 215) condition:setParameter(CONDITION_PARAM_TICKS, (60 * 33 + 10) * 1000) combat:setCondition(condition) diff --git a/data/spells/scripts/spells/wild growth.lua b/data/spells/scripts/spells/wild growth.lua index c865b0d..cedabbb 100644 --- a/data/spells/scripts/spells/wild growth.lua +++ b/data/spells/scripts/spells/wild growth.lua @@ -1,7 +1,8 @@ local combat = Combat() -combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY) +combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE) +combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_TELEPORT) combat:setParameter(COMBAT_PARAM_CREATEITEM, 2130) -function onCastSpell(creature, variant, isHotkey) +function onCastSpell(creature, variant) return combat:execute(creature, variant) end \ No newline at end of file diff --git a/data/spells/spells.xml b/data/spells/spells.xml index 71c9945..960e266 100644 --- a/data/spells/spells.xml +++ b/data/spells/spells.xml @@ -1,5 +1,8 @@ + + + @@ -11,7 +14,7 @@ - + @@ -29,19 +32,45 @@ + + + + + + + + + + + + + + + + + + + + + + - + - + - + + + + + @@ -49,28 +78,21 @@ - + - - + - + - + - - - - - - @@ -101,7 +123,7 @@ - + @@ -110,8 +132,8 @@ - - + + @@ -121,7 +143,7 @@ - + @@ -129,7 +151,7 @@ - + @@ -139,19 +161,13 @@ - + - - - - - - - + @@ -164,7 +180,7 @@ - + @@ -188,9 +204,9 @@ + - @@ -211,7 +227,7 @@ - + @@ -223,69 +239,66 @@ - + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - + + + + - - + + - + - + - + - - - - - + - + @@ -293,13 +306,10 @@ - + - - - - + @@ -308,20 +318,18 @@ - + - - - + + - @@ -332,23 +340,19 @@ - + + + - - - - - - - + - + @@ -358,13 +362,13 @@ - + - + @@ -382,13 +386,13 @@ - + - + @@ -402,11 +406,11 @@ - + - + @@ -418,13 +422,13 @@ - + - + @@ -436,7 +440,7 @@ - + @@ -448,7 +452,7 @@ - +