kito2
www.masteria.net
This two spells are very nice for ots, I seted them for druids and it helps a lot.
This to Spells.xml
Create a mana party.lua
Create a mana drain.lua
This to Spells.xml
PHP:
<instant name="Mana Drain" words="drain" casterTargetOrDirection="1" needWeapon="0" soul="0" exhaustion="5000" range="5" prem="1" enabled="1" mana="500" maglv="70" lvl="150" event="script" value="mana drain.lua">
<vocation name="Elder Druid"/>
</instant>
PHP:
<instant name="Mass Mana Healer" words="drain gran mas res" lvl="100" manapercent="20" prem="0" aggressive="0" exhaustion="2000" needlearn="0" event="script" value="mana party.lua">
<vocation name="Elder Druid"/>
</instant>
Create a mana party.lua
PHP:
local combat = createCombatObject()
local area = createCombatArea(AREA_CROSS5X5)
setCombatArea(combat, area)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, FALSE)
local condition = createConditionObject(CONDITION_REGENERATION)
setConditionParam(condition, CONDITION_PARAM_SUBID, 1)
setConditionParam(condition, CONDITION_PARAM_BUFF, TRUE)
setConditionParam(condition, CONDITION_PARAM_TICKS, 2 * 60 * 1000)
setConditionParam(condition, CONDITION_PARAM_MANAGAIN, 40)
setConditionParam(condition, CONDITION_PARAM_MANATICKS, 2000)
local baseMana = 120
function onCastSpell(cid, var)
local pos = getCreaturePosition(cid)
local membersList = getPartyMembers(cid)
if(membersList == nil or type(membersList) ~= 'table' or table.maxn(membersList) <= 1) then
doPlayerSendDefaultCancel(cid, RETURNVALUE_NOPARTYMEMBERSINRANGE)
doSendMagicEffect(pos, CONST_ME_POFF)
return LUA_ERROR
end
local affectedList = {}
for _, pid in ipairs(membersList) do
if(getDistanceBetween(getCreaturePosition(pid), pos) <= 36) then
table.insert(affectedList, pid)
end
end
local tmp = table.maxn(affectedList)
if(tmp <= 1) then
doPlayerSendDefaultCancel(cid, RETURNVALUE_NOPARTYMEMBERSINRANGE)
doSendMagicEffect(pos, CONST_ME_POFF)
return LUA_ERROR
end
local mana = math.ceil((0.9 ^ (tmp - 1) * baseMana) * tmp)
if(getCreatureMana(cid) < mana) then
doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTENOUGHMANA)
doSendMagicEffect(pos, CONST_ME_POFF)
return LUA_ERROR
end
if(doCombat(cid, combat, var) ~= LUA_NO_ERROR) then
doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
doSendMagicEffect(pos, CONST_ME_POFF)
return LUA_ERROR
end
doCreatureAddMana(cid, -(mana - baseMana), FALSE)
doPlayerAddSpentMana(cid, (mana - baseMana))
for _, pid in ipairs(affectedList) do
doAddCondition(pid, condition)
end
return LUA_NO_ERROR
end
Create a mana drain.lua
PHP:
-- Credits to Cykotitan
-- Damage Configuration
local MIN = 200
local MAX = 300
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_MANADRAIN)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_RED)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -0.4, -MIN, -0.4, -MAX)
function onCastSpell(cid, var)
return doCombat(cid, combat, var)
end