mirror of
https://github.com/otland/forgottenserver
synced 2026-08-15 16:32:07 -04:00
* Move runes to dedicated folder * Redirect old XML and lib folder to new location * Drop unused custom spells
64 lines
1.8 KiB
Lua
64 lines
1.8 KiB
Lua
local spell = Spell(SPELL_INSTANT)
|
|
|
|
function spell.onCastSpell(creature, variant)
|
|
if creature:getSkull() == SKULL_BLACK then
|
|
creature:sendCancelMessage(RETURNVALUE_NOTPOSSIBLE)
|
|
return false
|
|
end
|
|
|
|
local monsterName = variant:getString()
|
|
local monsterType = MonsterType(monsterName)
|
|
|
|
if not monsterType then
|
|
creature:sendCancelMessage(RETURNVALUE_NOTPOSSIBLE)
|
|
creature:getPosition():sendMagicEffect(CONST_ME_POFF)
|
|
return false
|
|
end
|
|
|
|
if not creature:hasFlag(PlayerFlag_CanSummonAll) then
|
|
if not monsterType:isSummonable() then
|
|
creature:sendCancelMessage(RETURNVALUE_NOTPOSSIBLE)
|
|
creature:getPosition():sendMagicEffect(CONST_ME_POFF)
|
|
return false
|
|
end
|
|
|
|
if #creature:getSummons() >= 2 then
|
|
creature:sendCancelMessage("You cannot summon more creatures.")
|
|
creature:getPosition():sendMagicEffect(CONST_ME_POFF)
|
|
return false
|
|
end
|
|
end
|
|
|
|
local manaCost = monsterType:getManaCost()
|
|
if creature:getMana() < manaCost and not creature:hasFlag(PlayerFlag_HasInfiniteMana) then
|
|
creature:sendCancelMessage(RETURNVALUE_NOTENOUGHMANA)
|
|
creature:getPosition():sendMagicEffect(CONST_ME_POFF)
|
|
return false
|
|
end
|
|
|
|
local position = creature:getPosition()
|
|
local summon = Game.createMonster(monsterName, position, true)
|
|
if not summon then
|
|
creature:sendCancelMessage(RETURNVALUE_NOTENOUGHROOM)
|
|
position:sendMagicEffect(CONST_ME_POFF)
|
|
return false
|
|
end
|
|
|
|
creature:addMana(-manaCost)
|
|
creature:addManaSpent(manaCost)
|
|
creature:addSummon(summon)
|
|
position:sendMagicEffect(CONST_ME_MAGIC_BLUE)
|
|
summon:getPosition():sendMagicEffect(CONST_ME_TELEPORT)
|
|
return true
|
|
end
|
|
|
|
spell:group("support")
|
|
spell:id(9)
|
|
spell:name("Summon Creature")
|
|
spell:words("utevo res")
|
|
spell:level(25)
|
|
spell:hasParams(true)
|
|
spell:cooldown(2000)
|
|
spell:groupCooldown(2000)
|
|
spell:vocation("sorcerer;true", "druid;true", "master sorcerer;true", "elder druid;true")
|
|
spell:register()
|