I wanted to add Multi-shot in the hunter-rotation (even for single target (whenever there are no sheeps, shackel or fears ...).
While doing so I stumbled upon Aimed Shot not working at the moment.
When tracing the reason i came up with: The "SPELLCAST_STOP" event not working. So after the first Aimed Shot MB_RAIS_aimedStart stays false all the time.
So basically hunters are auto shooting 24/7 atm... Your top-center Hunter, for example, has full Mana after the fight.
https://www.youtube.com/watch?v=bUqP015BymI&feature=youtu.be&t=6386
For a fix:
I choose to remove the line in function PerfectAim():
if MB_RAIS_aimedStart then return end
I guess now the Auto Shot (diff)-timer is wrong, because the Aimed Shot resets the timing as well, do you use the MB_RAIS_aimedStart for anything else?
For now I added to PerfectAim some code, so If Aimed Shot was casted Multi-Shot is blocked and vice versa.
if not OnCooldown("Aimed Shot") and CooldownTime("Multi-Shot") > 0.5( (diff<.49 and diff>0) or diff>6) then CastSpellByName("Aimed Shot") return end
if not OnCooldown("Multi-Shot") and CooldownTime("Aimed Shot") > 0.5 and ( (diff<.49 and diff>0)) and FsMB_HunterMulti then echo ("Multi Now!") CastSpellByName("Multi-Shot")
To the FSMB:OnEvent() I added my bool-variable for knowing, if the toon can Multi-shot or not.
elseif arg1==MB_RAID.."_CC" then
FsMB_HunterMulti = false
elseif arg1==MB_RAID.."_FEAR" then
FsMB_HunterMulti = false
elseif arg1==MB_RAID.."CLR_TARG" then
FsMB_HunterMulti = true
I also modified the CastSpellByName - so Muli-Shot get's downranked, if the hunter runs low.
function CastSpellByName(spellName)
if ( spellName == "Aimed Shot" ) then
echo("Aimed Shot")
MB_Aimed_Start()
elseif (spellName == "Multi-Shot") then
echo("Multi-Shot")
if UnitMana("player") < 800 then
echo("Rank 1")
spellName = "Multi-Shot(Rank 1)"
end
end
MBCastSpellByName(spellName)
end
Side-note: there are three events, which are twice in the event-handling function.
elseif ( event == "START_AUTOREPEAT_SPELL" ) then
MB_Shot_Start();
elseif ( event == "STOP_AUTOREPEAT_SPELL" ) then
MB_Shot_End();
elseif ( event == "SPELLCAST_STOP" ) then
if ( MB_RAIS_aimedStart ~= false ) then
MB_RAIS_aimedStart = false
end
MB_GlobalCD_Check();
if ( MB_sSCD == 1.5 ) then
MB_sSTold = sST
end
elseif ( event == "START_AUTOREPEAT_SPELL" ) then
MB_Shot_Start();
elseif ( event == "STOP_AUTOREPEAT_SPELL" ) then
MB_Shot_End();
elseif ( event == "SPELLCAST_STOP" ) then
if ( MB_RAIS_aimedStart ~= false ) then
MB_RAIS_aimedStart = false
end
MB_GlobalCD_Check();
if (MB_sSCD == 1.5 ) then
MB_sSTold = MB_sST
end
ooh. good catch, will fix that!