Gicu
Well-Known Member
- Joined
- Feb 26, 2011
- Messages
- 187
- Reaction score
- 52
Hello and let's go!
TFS 1.2 10.98
This spell give a buff to ALL PARTY MEMBERS! Here is for SHIELDING 50% of you skill add other! And Party Healing! ( Yes Regeneration no Heal ) U can set longer duration and make regeneration buff too. Sorry for that mess. Low English Detected!
add line:
/data/spells/spells.xml
create:
/data/spells/scripts/support/party_buff.lua
create:
/data/spells/scripts/support/party_heal.lua
local time = 10 * 60 * 1000 ------- 10 min
local time2 = 10 --------- 10 min
local slvl = creature:getEffectiveSkillLevel(SKILL_SHIELD) / 2 --------- 50% of YOU Shielding added to all party members
local min = (lvl * 6) + (mlvl * 6) + 10 -------- how mach heal
TFS 1.2 10.98
This spell give a buff to ALL PARTY MEMBERS! Here is for SHIELDING 50% of you skill add other! And Party Healing! ( Yes Regeneration no Heal ) U can set longer duration and make regeneration buff too. Sorry for that mess. Low English Detected!
add line:
/data/spells/spells.xml
Lua:
<instant group="support" spellid="23" name="Party Wisdom" words="Party Wisdom" lvl="1" mana="10" aggressive="0" selftarget="1" cooldown="1000" groupcooldown="1000" needlearn="1" script="support/party_buff.lua">
</instant>
create:
/data/spells/scripts/support/party_buff.lua
Lua:
local combat = Combat()
combat:setParameter(COMBAT_PARAM_EFFECT, 45)
combat:setParameter(COMBAT_PARAM_AGGRESSIVE, false)
local baseMana = 1000
function onCastSpell(creature, variant, isHotkey)
local position = creature:getPosition()
local party = creature:getParty()
if not party then
creature:sendCancelMessage("No party members in range.")
position:sendMagicEffect(CONST_ME_POFF)
return false
end
local membersList = party:getMembers()
membersList[#membersList + 1] = party:getLeader()
if membersList == nil or type(membersList) ~= 'table' or #membersList <= 1 then
creature:sendCancelMessage("No party members in range.")
position:sendMagicEffect(CONST_ME_POFF)
return false
end
local affectedList = {}
for _, targetPlayer in ipairs(membersList) do
if targetPlayer:getPosition():getDistance(position) <= 36 then
affectedList[#affectedList + 1] = targetPlayer
end
end
local count = #affectedList
if count <= 1 then
creature:sendCancelMessage("No party members in range.")
position:sendMagicEffect(CONST_ME_POFF)
return false
end
local mana = math.ceil((0.9 ^ (count - 1) * baseMana) * count)
if creature:getMana() < mana then
creature:sendCancelMessage(RETURNVALUE_NOTENOUGHMANA)
position:sendMagicEffect(CONST_ME_POFF)
return false
elseif not combat:execute(creature, variant) then
creature:sendCancelMessage(RETURNVALUE_NOTPOSSIBLE)
position:sendMagicEffect(CONST_ME_POFF)
return false
end
creature:addMana(baseMana - mana, false)
creature:addManaSpent(mana - baseMana)
for _, targetPlayer in ipairs(affectedList) do
local position = targetPlayer:getPosition()
local pos = creature:getPosition()
pos:sendDistanceEffect(position, 12)
position:sendMagicEffect(45)
local time = 10 * 60 * 1000
local time2 = 10
local slvl = creature:getEffectiveSkillLevel(SKILL_SHIELD) / 2
doPlayerSendTextMessage(targetPlayer, MESSAGE_INFO_DESCR, "Defense + [" .. slvl .. "/s] for [" .. time2 .."] min!")
local skill = Condition(CONDITION_ATTRIBUTES)
skill:setParameter(CONDITION_PARAM_SUBID, 550)
skill:setParameter(CONDITION_PARAM_TICKS, time)
skill:setParameter(CONDITION_PARAM_SKILL_SHIELD, slvl)
skill:setParameter(CONDITION_PARAM_BUFF_SPELL, true)
combat:setCondition(skill)
targetPlayer:addCondition(skill)
end
return true
end
create:
/data/spells/scripts/support/party_heal.lua
local time = 10 * 60 * 1000 ------- 10 min
local time2 = 10 --------- 10 min
local slvl = creature:getEffectiveSkillLevel(SKILL_SHIELD) / 2 --------- 50% of YOU Shielding added to all party members
Lua:
local combat = Combat()
combat:setParameter(COMBAT_PARAM_EFFECT, 50)
combat:setParameter(COMBAT_PARAM_AGGRESSIVE, false)
local baseMana = 200
function onCastSpell(creature, variant, isHotkey)
local position = creature:getPosition()
local party = creature:getParty()
if not party then
creature:sendCancelMessage("No party members in range.")
position:sendMagicEffect(CONST_ME_POFF)
return false
end
local membersList = party:getMembers()
membersList[#membersList + 1] = party:getLeader()
if membersList == nil or type(membersList) ~= 'table' or #membersList <= 1 then
creature:sendCancelMessage("No party members in range.")
position:sendMagicEffect(CONST_ME_POFF)
return false
end
local affectedList = {}
for _, targetPlayer in ipairs(membersList) do
if targetPlayer:getPosition():getDistance(position) <= 36 then
affectedList[#affectedList + 1] = targetPlayer
end
end
local count = #affectedList
if count <= 1 then
creature:sendCancelMessage("No party members in range.")
position:sendMagicEffect(CONST_ME_POFF)
return false
end
local mana = math.ceil((0.9 ^ (count - 1) * baseMana) * count)
if creature:getMana() < mana then
creature:sendCancelMessage(RETURNVALUE_NOTENOUGHMANA)
position:sendMagicEffect(CONST_ME_POFF)
return false
elseif not combat:execute(creature, variant) then
creature:sendCancelMessage(RETURNVALUE_NOTPOSSIBLE)
position:sendMagicEffect(CONST_ME_POFF)
return false
end
creature:addMana(baseMana - mana, false)
creature:addManaSpent(mana - baseMana)
for _, targetPlayer in ipairs(affectedList) do
local position = targetPlayer:getPosition()
local pos = creature:getPosition()
pos:sendDistanceEffect(position, 31)
position:sendMagicEffect(50)
local lvl = creature:getLevel()
local mlvl = creature:getMagicLevel()
local min = (lvl * 6) + (mlvl * 6) + 10
local condition = Condition(CONDITION_REGENERATION)
condition:setParameter(CONDITION_PARAM_SUBID, 520)
condition:setParameter(CONDITION_PARAM_TICKS, 100)
condition:setParameter(CONDITION_PARAM_HEALTHGAIN, min)
condition:setParameter(CONDITION_PARAM_HEALTHTICKS, 100)
condition:setParameter(CONDITION_PARAM_BUFF_SPELL, true)
targetPlayer:addCondition(condition)
end
return true
end