local mod = DBM : NewMod ( 708 , " DBM-Party-MoP " , 5 , 321 )
local L = mod : GetLocalizedStrings ( )
mod.statTypes = " normal,heroic,challenge,timewalker "
mod : SetRevision ( " 20231226124347 " )
mod : SetCreatureID ( 61442 , 61444 , 61445 ) --61442 (Kuai the Brute), 61453 (Mu'Shiba, Kuai's Add), 61444 (Ming the Cunning), 61445 (Haiyan the Unstoppable)
mod : SetEncounterID ( 1442 )
--http://www.wowpedia.org/Clan_Leaders_of_the_Mogu
mod : RegisterCombat ( " yell " , L.Pull , L.Kuai , L.Ming , L.Haiyan ) -- Common pull not fires if you've wiped. Other trigger is backup.
mod : RegisterKill ( " yell " , L.Defeat ) --Defeat off first line said after all are defeated.
mod : SetWipeTime ( 30 ) --Based on data, phase transitions are 10-16 seconds, 20 should be enough, but can raise if needed.
mod : RegisterEventsInCombat (
" SPELL_AURA_APPLIED 119946 123655 120201 " ,
" SPELL_CAST_START 119922 119981 123654 " ,
" CHAT_MSG_MONSTER_YELL " ,
" UNIT_DIED "
)
--TODO, rework phase changes with UNIT events?
--TODO, rework combat detection to use ES/EE?
local warnRavage = mod : NewTargetNoFilterAnnounce ( 119946 , 3 ) --Mu'Shiba's Fixate attack
local warnShockwave = mod : NewSpellAnnounce ( 119922 , 4 ) --Kuai's Attack
local warnWhirlingDervish = mod : NewSpellAnnounce ( 119981 , 3 ) --Ming's Attack
local warnTraumaticBlow = mod : NewTargetNoFilterAnnounce ( 123655 , 3 , nil , " Healer " ) --Haiyan's Attack
local warnConflag = mod : NewTargetNoFilterAnnounce ( 120201 , 3 , nil , " Healer " ) --Haiyan's Attack
local specWarnShockwave = mod : NewSpecialWarningDodge ( 119922 , " Tank " , nil , nil , 1 , 2 ) --Not sure if he always faced it toward tank, or did it blackhorn style, if it's blackhorn style this needs to be changed to a targetscan if possible
local specWarnLightningBolt = mod : NewSpecialWarningInterrupt ( 123654 , false , nil , nil , 1 , 2 )
local timerRavageCD = mod : NewCDTimer ( 20 , 119946 , nil , nil , nil , 3 )
local timerShockwaveCD = mod : NewCDTimer ( 10.9 , 119922 , nil , nil , nil , 5 , nil , DBM_COMMON_L.TANK_ICON )
local timerWhirlingDervishCD = mod : NewCDTimer ( 22 , 119981 , nil , nil , nil , 3 )
local timerTraumaticBlowCD = mod : NewCDTimer ( 17 , 123655 , nil , nil , nil , 5 , nil , DBM_COMMON_L.TANK_ICON ) --17-21sec variation
local timerConflagCD = mod : NewCDTimer ( 22 , 120201 , nil , nil , nil , 3 ) --Limited data, may not be completely accurate
local timerMeteorCD = mod : NewNextTimer ( 55 , 120195 , nil , nil , nil , 3 ) --Assumed based on limited data
local shockwaveCD = 15
local kuai = DBM : EJ_GetSectionInfo ( 6015 )
local ming = DBM : EJ_GetSectionInfo ( 6019 )
local haiyan = DBM : EJ_GetSectionInfo ( 6023 )
--function mod:OnCombatStart(delay)
--end
function mod : SPELL_CAST_START ( args )
if args.spellId == 119922 then
specWarnShockwave : Show ( )
specWarnShockwave : Play ( " shockwave " )
timerShockwaveCD : Start ( shockwaveCD )
elseif args.spellId == 119981 then
warnWhirlingDervish : Show ( )
timerWhirlingDervishCD : Start ( )
elseif args.spellId == 123654 and self : CheckInterruptFilter ( args.sourceGUID , false , true ) then
specWarnLightningBolt : Show ( args.sourceName )
specWarnLightningBolt : Play ( " kickcast " )
end
end
function mod : SPELL_AURA_APPLIED ( args )
if args.spellId == 119946 then
warnRavage : Show ( args.destName )
timerRavageCD : Start ( )
elseif args.spellId == 123655 then
warnTraumaticBlow : Show ( args.destName )
timerTraumaticBlowCD : Start ( )
elseif args.spellId == 120201 then
warnConflag : Show ( args.destName )
timerConflagCD : Start ( )
end
end
function mod : CHAT_MSG_MONSTER_YELL ( msg )
if msg == L.Kuai or msg : find ( L.Kuai ) then
shockwaveCD = 15
timerWhirlingDervishCD : Cancel ( )
timerConflagCD : Cancel ( )
timerMeteorCD : Cancel ( )
timerTraumaticBlowCD : Cancel ( )
timerShockwaveCD : Start ( 17.2 )
timerRavageCD : Start ( 26 )
elseif msg == L.Ming or msg : find ( L.Ming ) then
timerShockwaveCD : Cancel ( )
timerRavageCD : Cancel ( )
timerConflagCD : Cancel ( )
timerMeteorCD : Cancel ( )
timerTraumaticBlowCD : Cancel ( )
timerWhirlingDervishCD : Start ( 22 ) --Not confirmed through multiple pulls, just one
elseif msg == L.Haiyan or msg : find ( L.Haiyan ) then
timerWhirlingDervishCD : Cancel ( )
timerShockwaveCD : Cancel ( )
timerRavageCD : Cancel ( )
timerConflagCD : Start ( ) --Not confirmed through multiple pulls, just one
timerMeteorCD : Start ( 42 )
end
end
function mod : UNIT_DIED ( args )
local cid = self : GetCIDFromGUID ( args.destGUID )
if cid == 61453 then
timerRavageCD : Cancel ( )
shockwaveCD = 10 --Need more data to confirm this but appears to be case.
end
end