local mod = DBM : NewMod ( 708 , " DBM-Party-MoP " , 5 , 321 )
local L = mod : GetLocalizedStrings ( )
mod.statTypes = " normal,heroic,challenge,timewalker "
mod : SetRevision ( " 20240623004247 " )
mod : SetCreatureID ( 61442 , 61444 , 61445 ) --61442 (Kuai the Brute), 61444 (Ming the Cunning), 61445 (Haiyan the Unstoppable)
mod : SetEncounterID ( 1442 )
--http://www.wowpedia.org/Clan_Leaders_of_the_Mogu
mod : RegisterCombat ( " combat " )
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 " ,
" INSTANCE_ENCOUNTER_ENGAGE_UNIT " ,
" UNIT_DIED "
)
mod : RegisterEvents (
" CHAT_MSG_MONSTER_YELL "
)
local warnRavage = mod : NewTargetNoFilterAnnounce ( 119946 , 3 ) --Mu'Shiba's Fixate 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 , nil , 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 timerRP = mod : NewCombatTimer ( 60 )
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 ( 10 , 120201 , nil , nil , nil , 3 ) --10-22?
local timerMeteorCD = mod : NewNextTimer ( 55 , 120195 , nil , nil , nil , 3 ) --Assumed based on limited data
local shockwaveCD = 15
local seenAdds = { }
--local kuai = DBM:EJ_GetSectionInfo(6015)
--local ming = DBM:EJ_GetSectionInfo(6019)
--local haiyan = DBM:EJ_GetSectionInfo(6023)
function mod : OnCombatStart ( )
table.wipe ( seenAdds )
--Initial timers started by INSTANCE_ENCOUNTER_ENGAGE_UNIT
end
function mod : SPELL_CAST_START ( args )
if args.spellId == 119922 then
if self : IsTanking ( " player " , nil , nil , true , args.sourceGUID ) then
specWarnShockwave : Show ( )
specWarnShockwave : Play ( " shockwave " )
end
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 : INSTANCE_ENCOUNTER_ENGAGE_UNIT ( )
for i = 1 , 5 do
local unitID = " boss " .. i
local GUID = UnitGUID ( unitID )
if GUID and not seenAdds [ GUID ] then
seenAdds [ GUID ] = true
local cid = self : GetCIDFromGUID ( GUID )
if cid == 61442 then --Kuai
shockwaveCD = 15
timerWhirlingDervishCD : Cancel ( )
timerConflagCD : Cancel ( )
timerMeteorCD : Cancel ( )
timerTraumaticBlowCD : Cancel ( )
timerShockwaveCD : Start ( 17.2 )
timerRavageCD : Start ( 21.6 )
elseif cid == 61444 then --Ming
timerShockwaveCD : Cancel ( )
timerRavageCD : Cancel ( )
timerConflagCD : Cancel ( )
timerMeteorCD : Cancel ( )
timerTraumaticBlowCD : Cancel ( )
timerWhirlingDervishCD : Start ( 22 ) --Not confirmed through multiple pulls, just one
elseif cid == 61445 then --Haiyan
timerWhirlingDervishCD : Cancel ( )
timerShockwaveCD : Cancel ( )
timerRavageCD : Cancel ( )
timerConflagCD : Start ( ) --Not confirmed through multiple pulls, just one
timerMeteorCD : Start ( 42 )
end
end
end
end
function mod : UNIT_DIED ( args )
local cid = self : GetCIDFromGUID ( args.destGUID )
if cid == 61453 then --Mu'Shiba, Kuai's Add
timerRavageCD : Cancel ( )
shockwaveCD = 10 --Need more data to confirm this but appears to be case.
end
end
--"<2.94 18:23:24> [CHAT_MSG_MONSTER_YELL] Useless, all of you! Even the guards you give me in tribute can't keep these lesser beings from my palace.#Xin the Weaponmaster###Xin the Weaponmaster##0#0##0#946#nil#0#false#false#false#fals
--"<24.62 18:23:45> [ENCOUNTER_START] 1442#Trial of the King#2#5",
--"<24.66 18:23:45> [PLAYER_REGEN_DISABLED] +Entering combat!",
--"<27.17 18:23:48> [INSTANCE_ENCOUNTER_ENGAGE_UNIT] Fake Args:#boss1#true#true#true#Kuai the Brute#
function mod : CHAT_MSG_MONSTER_YELL ( msg )
if msg == L.Pull then
self : SendSync ( " firstPull " )
end
end
function mod : OnSync ( msg )
if msg == " firstPull " then
timerRP : Start ( 21.7 ) --24.2 until an actually attackable mob, but we'll use it as a combat timer for now
end
end