Skip to content
This repository has been archived by the owner on May 20, 2023. It is now read-only.

Commit

Permalink
Convert player spells, runes and monsters spells to revscriptsys (#2588)
Browse files Browse the repository at this point in the history
All player spells, runes and monsters spells have been converted to revscriptsys!

With the contribution of @LeoTK4 @DeroW-FD @Glatharth @APenDel

Spells converted:
- [x] Attack
- [x] Conjuring
- [x] Healing
- [x] House
- [x] Monster
- [x] Party
- [x] Runes
- [x] Summon
- [x] Support

It fixes:
- [x] #923 
- [x] #2506
- [x] #2507 
- [x] #2563 

Added methods: 
spell:allowOnSelf(true or false)
spell:pzLocked(true or false)

Removed: player:isPzLocked()
  • Loading branch information
beats-dh authored Aug 30, 2021
1 parent 32abdcc commit c7275bd
Show file tree
Hide file tree
Showing 1,356 changed files with 23,200 additions and 16,491 deletions.
507 changes: 507 additions & 0 deletions data/scripts/lib/register_spells.lua

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ spell:needTarget(true)
spell:isAggressive(false)
spell:allowFarUse(true)
spell:charges(25)
spell:vocation("sorcerer;true", "master sorcerer")
spell:vocation("sorcerer;true", "master sorcerer;true")
spell:register()

local conjureRune = Spell(SPELL_INSTANT)
Expand All @@ -48,5 +48,5 @@ conjureRune:isAggressive(false)
conjureRune:cooldown(2000)
conjureRune:groupCooldown(2000)
conjureRune:needLearn(false)
conjureRune:vocation("sorcerer", "master sorcerer")
conjureRune:vocation("sorcerer", "master sorcerer;true")
conjureRune:register()
37 changes: 37 additions & 0 deletions data/scripts/spells/attack/annihilation.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
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.17) + 13) + (levelTotal)) * 1.28, -(((skillTotal * 0.20) + 34) + (levelTotal)) * 1.28 -- TODO : Use New Real Formula instead of an %
end

combat:setCallback(CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")

local spell = Spell("instant")

function spell.onCastSpell(creature, var)
return combat:execute(creature, var)
end

spell:group("attack")
spell:id(62)
spell:name("Annihilation")
spell:words("exori gran ico")
spell:level(110)
spell:mana(300)
spell:isPremium(true)
spell:range(1)
spell:needTarget(true)
spell:blockWalls(true)
spell:needWeapon(true)
spell:cooldown(30 * 1000)
spell:groupCooldown(4 * 1000)
spell:needLearn(false)
spell:vocation("knight;true", "elite knight;true")
spell:register()
34 changes: 34 additions & 0 deletions data/scripts/spells/attack/apprentice's_strike.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_FIREATTACK)
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)

function onGetFormulaValues(player, level, maglevel)
local min = (level / 5) + (maglevel * 0.4) + 3
local max = (level / 5) + (maglevel * 0.7) + 5
return -min, -max
end

combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

local spell = Spell("instant")

function spell.onCastSpell(creature, var)
return combat:execute(creature, var)
end

spell:group("attack")
spell:id(169)
spell:name("Apprentice's Strike")
spell:words("exori min flam")
spell:level(8)
spell:mana(6)
spell:isPremium(false)
spell:range(3)
spell:needCasterTargetOrDirection(true)
spell:blockWalls(true)
spell:cooldown(2 * 1000)
spell:groupCooldown(2 * 1000)
spell:needLearn(false)
spell:vocation("druid;true", "elder druid;true", "sorcerer;true", "master sorcerer;true")
spell:register()
37 changes: 37 additions & 0 deletions data/scripts/spells/attack/berserk.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
combat:setParameter(COMBAT_PARAM_BLOCKARMOR, 1)
combat:setParameter(COMBAT_PARAM_USECHARGES, 1)
combat:setArea(createCombatArea(AREA_SQUARE1X1))

function onGetFormulaValues(player, skill, attack, factor)
local level = player:getLevel()

local min = (level / 5) + (skill + attack) * 0.5
local max = (level / 5) + (skill + attack) * 1.5

return -min * 1.1, -max * 1.1 -- TODO : Use New Real Formula instead of an %
end

combat:setCallback(CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")

local spell = Spell("instant")

function spell.onCastSpell(creature, var)
return combat:execute(creature, var)
end

spell:group("attack")
spell:id(80)
spell:name("Berserk")
spell:words("exori")
spell:level(35)
spell:mana(115)
spell:isPremium(true)
spell:needWeapon(true)
spell:cooldown(4 * 1000)
spell:groupCooldown(2 * 1000)
spell:needLearn(false)
spell:vocation("knight;true", "elite knight;true")
spell:register()
37 changes: 37 additions & 0 deletions data/scripts/spells/attack/brutal_strike.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
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.02) + 4) + (levelTotal)) * 1.28, -(((skillTotal * 0.04) + 9) + (levelTotal)) * 1.28 -- TODO : Use New Real Formula instead of an %
end

combat:setCallback(CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")

local spell = Spell("instant")

function spell.onCastSpell(creature, var)
return combat:execute(creature, var)
end

spell:group("attack")
spell:id(61)
spell:name("Brutal Strike")
spell:words("exori ico")
spell:level(16)
spell:mana(30)
spell:isPremium(false)
spell:range(1)
spell:needTarget(true)
spell:blockWalls(true)
spell:needWeapon(true)
spell:cooldown(6 * 1000)
spell:groupCooldown(2 * 1000)
spell:needLearn(false)
spell:vocation("knight;true", "elite knight;true")
spell:register()
35 changes: 35 additions & 0 deletions data/scripts/spells/attack/buzz.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_ENERGYAREA)
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY)

function onGetFormulaValues(player, level, maglevel)
local min = (level / 5) + (maglevel * 0.4) + 3
local max = (level / 5) + (maglevel * 0.7) + 5
return -min, -max
end

combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

local spell = Spell("instant")

function spell.onCastSpell(creature, var)
return combat:execute(creature, var)
end

spell:group("attack")
spell:id(177)
spell:name("Buzz")
spell:words("exori infir vis")
spell:level(1)
spell:mana(6)
spell:isAggressive(true)
spell:isPremium(false)
spell:range(3)
spell:needCasterTargetOrDirection(true)
spell:blockWalls(true)
spell:cooldown(2 * 1000)
spell:groupCooldown(2 * 1000)
spell:needLearn(false)
spell:vocation("sorcerer;true", "master sorcerer;true")
spell:register()
33 changes: 33 additions & 0 deletions data/scripts/spells/attack/chill_out.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_ICEAREA)
combat:setArea(createCombatArea(AREA_WAVE4, AREADIAGONAL_WAVE4))

function onGetFormulaValues(player, level, maglevel)
local min = (level / 5) + (maglevel * 0.3) + 2
local max = (level / 5) + (maglevel * 0.6) + 4
return -min, -max
end

combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

local spell = Spell("instant")

function spell.onCastSpell(creature, var)
return combat:execute(creature, var)
end

spell:group("attack")
spell:id(173)
spell:name("Chill Out")
spell:words("exevo infir frigo hur")
spell:level(1)
spell:mana(8)
spell:isPremium(false)
spell:range(1)
spell:needDirection(true)
spell:cooldown(4 * 1000)
spell:groupCooldown(2 * 1000)
spell:needLearn(false)
spell:vocation("druid;true", "elder druid;true")
spell:register()
48 changes: 48 additions & 0 deletions data/scripts/spells/attack/curse.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_SMALLCLOUDS)
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_DEATH)

local condition = Condition(CONDITION_CURSED)
condition:setParameter(CONDITION_PARAM_DELAYED, 1)

condition:addDamage(1, 3000, -45)
condition:addDamage(1, 3000, -40)
condition:addDamage(1, 3000, -35)
condition:addDamage(1, 3000, -34)
condition:addDamage(2, 3000, -33)
condition:addDamage(2, 3000, -32)
condition:addDamage(2, 3000, -31)
condition:addDamage(2, 3000, -30)
condition:addDamage(3, 3000, -29)
condition:addDamage(3, 3000, -25)
condition:addDamage(3, 3000, -24)
condition:addDamage(4, 3000, -23)
condition:addDamage(4, 3000, -20)
condition:addDamage(5, 3000, -19)
condition:addDamage(5, 3000, -15)
condition:addDamage(6, 3000, -10)
condition:addDamage(10, 3000, -5)
combat:addCondition(condition)

local spell = Spell("instant")

function spell.onCastSpell(creature, var)
return combat:execute(creature, var)
end

spell:group("attack")
spell:id(139)
spell:name("Curse")
spell:words("utori mort")
spell:level(75)
spell:mana(30)
spell:isAggressive(true)
spell:range(3)
spell:needTarget(true)
spell:blockWalls(true)
spell:cooldown(40 * 1000)
spell:groupCooldown(2 * 1000)
spell:needLearn(false)
spell:vocation("sorcerer;true", "master sorcerer;true")
spell:register()
34 changes: 34 additions & 0 deletions data/scripts/spells/attack/death_strike.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_DEATH)

function onGetFormulaValues(player, level, maglevel)
local min = (level / 5) + (maglevel * 1.403) + 8
local max = (level / 5) + (maglevel * 2.203) + 13
return -min, -max
end

combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

local spell = Spell("instant")

function spell.onCastSpell(creature, var)
return combat:execute(creature, var)
end

spell:group("attack")
spell:id(87)
spell:name("Death Strike")
spell:words("exori mort")
spell:level(16)
spell:mana(20)
spell:isPremium(true)
spell:range(3)
spell:needCasterTargetOrDirection(true)
spell:blockWalls(true)
spell:cooldown(1 * 1000)
spell:groupCooldown(1 * 1000)
spell:needLearn(false)
spell:vocation("sorcerer;true", "master sorcerer;true")
spell:register()
32 changes: 32 additions & 0 deletions data/scripts/spells/attack/divine_caldera.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_HOLYAREA)
combat:setArea(createCombatArea(AREA_CIRCLE3X3))

function onGetFormulaValues(player, level, maglevel)
local min = (level / 5) + (maglevel * 4)
local max = (level / 5) + (maglevel * 6)
return -min, -max
end

combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

local spell = Spell("instant")

function spell.onCastSpell(creature, var)
return combat:execute(creature, var)
end

spell:group("attack")
spell:id(124)
spell:name("Divine Caldera")
spell:words("exevo mas san")
spell:level(50)
spell:mana(160)
spell:isPremium(true)
spell:isSelfTarget(true)
spell:cooldown(4 * 1000)
spell:groupCooldown(2 * 1000)
spell:needLearn(false)
spell:vocation("paladin;true", "royal paladin;true")
spell:register()
33 changes: 33 additions & 0 deletions data/scripts/spells/attack/divine_missile.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_HOLYDAMAGE)
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SMALLHOLY)

function onGetFormulaValues(player, level, maglevel)
local min = (level / 5) + (maglevel * 1.79) + 11
local max = (level / 5) + (maglevel * 3) + 18
return -min, -max
end
combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

local spell = Spell("instant")

function spell.onCastSpell(creature, var)
return combat:execute(creature, var)
end

spell:group("attack")
spell:id(122)
spell:name("Divine Missile")
spell:words("exori san")
spell:level(40)
spell:mana(20)
spell:isPremium(true)
spell:range(4)
spell:needCasterTargetOrDirection(true)
spell:blockWalls(true)
spell:cooldown(2 * 1000)
spell:groupCooldown(2 * 1000)
spell:needLearn(false)
spell:vocation("paladin;true", "royal paladin;true")
spell:register()
Loading

0 comments on commit c7275bd

Please sign in to comment.