1
Fork 0
mirror of https://bitbucket.org/Ioncannon/project-meteor-server.git synced 2025-04-21 12:17:46 +00:00
project-meteor-server/Data/scripts/commands/magic/ballad_of_magi.lua

57 lines
No EOL
1.9 KiB
Lua

require("global");
require("magic");
function onMagicPrepare(caster, target, skill)
return 0;
end;
function onMagicStart(caster, target, skill)
--Ballad gives 20 MP a tick at 50
--BV gives 40 MP per tick
--Formula seems to be 0.8 * level - 20, not sure why BV gives 71 at 50 then
local mpPerTick = (0.8 * caster.GetLevel()) - 20;
--8032705: Choral Shirt: Enhances Ballad of Magi
--With Choral Shirt, Ballad gives 26 mp a tick. It could be a flat 6 or multiply by 1.3
--Because minuet seemed like a normal addition I'm assuming this is too
if caster.HasItemEquippedInSlot(8032705, 10) then
mpPerTick = mpPerTick + 6;
end
--223253: Battle Voice
--Battle Voice doubles effect of songs
if caster.statusEffects.HasStatusEffect(223253) then
mpPerTick = mpPerTick * 2;
--Set status tier so we can check it later when BV falls off
skill.statusTier = 2;
end
skill.statusMagnitude = mpPerTick;
end;
function onSkillFinish(caster, target, skill, action, actionContainer)
--223224: Swiftsong
--223255: Paeon of War
--223256: Minuet of Rigor
--
local oldSong;
local swiftSong = target.statusEffects.GetStatusEffectById(223224);
local paeon = target.statusEffects.GetStatusEffectById(223255);
local minuet = target.statusEffects.GetStatusEffectById(223256);
if swiftSong and swiftSong.GetSource() == caster then
oldSong = swiftSong;
elseif paeon and paeon.GetSource() == caster then
oldSong = paeon;
elseif minuet and minuet.GetSource() == caster then
oldSong = minuet;
elseif ballad and ballad.GetSource() == caster then
oldSong = ballad;
end
if oldSong then
target.statusEffects.RemoveStatusEffect(oldSong);
end
--DoAction handles rates, buffs, dealing damage
action.DoAction(caster, target, skill, actionContainer);
end;