project-meteor-server/Data/scripts/commands/magic/minuet_of_rigor.lua

55 lines
1.9 KiB
Lua

require("global");
require("magic");
function onMagicPrepare(caster, target, skill)
return 0;
end;
function onMagicStart(caster, target, skill)
--Miuet gives 35 ACC/MACC by default at level 50. Minuet does scale with level
--BV apparetnly gives 71 ACc/MACC
--Formula seems to be level - 15, not sure why BV gives 71 at 50 then
local acc = caster.GetLevel() - 15;
--8071405: Choral Ringbands: Enhances Minuet of Rigor
--With Choral Tights, Minuet gives 60 ACC/MACC at 50. Unsure what it is at lower levels (ie if it's a flat added 25 MP or a multiplier)
--Assuming it's a flat 25 because that makes more sense than multiplying by 1.714
if caster.HasItemEquippedInSlot(8071405, 13) then
acc = acc + 25;
end
--223253: Battle Voice
--Battle Voice doubles effect of songs
if caster.statusEffects.HasStatusEffect(223253) then
acc = acc * 2;
--Set status tier so we can check it later when BV falls off
skill.statusTier = 2;
end
skill.statusMagnitude = acc;
end;
function onSkillFinish(caster, target, skill, action, actionContainer)
--223224: Swiftsong
--223254: Ballad Of Magi
--223255: Paeon of War
--If target has one of these effects that was from this caster, remove it
local oldSong;
local swiftSong = target.statusEffects.GetStatusEffectById(223224);
local ballad = target.statusEffects.GetStatusEffectById(223254);
local paeon = target.statusEffects.GetStatusEffectById(223255);
if swiftSong and swiftSong.GetSource() == caster then
oldSong = swiftSong;
elseif ballad and ballad.GetSource() == caster then
oldSong = ballad;
elseif paeon and paeon.GetSource() == caster then
oldSong = paeon;
end
if oldSong then
target.statusEffects.RemoveStatusEffect(oldSong);
end
--DoAction handles rates, buffs, dealing damage
action.DoAction(caster, target, skill, actionContainer);
end;