init
This commit is contained in:
@@ -0,0 +1,154 @@
|
||||
local mod = DBM:NewMod("RomuloAndJulianne", "DBM-Karazhan")
|
||||
local L = mod:GetLocalizedStrings()
|
||||
|
||||
mod:SetRevision(("$Revision: 175 $"):sub(12, -3))
|
||||
mod:SetCreatureID(17534, 17533)
|
||||
|
||||
mod:RegisterCombat("yell", L.RJ_Pull)
|
||||
mod:RegisterKill("yell", L.Bogus)--there isn't actually a yell, but we use this to prevent mod from ending combat early using UNIT_DIED after they both die once.
|
||||
mod:SetWipeTime(25)--guesswork
|
||||
|
||||
mod:RegisterEvents(
|
||||
"SPELL_CAST_START",
|
||||
"SPELL_AURA_APPLIED",
|
||||
"SPELL_AURA_APPLIED_DOSE",
|
||||
"SPELL_AURA_REMOVED",
|
||||
"CHAT_MSG_MONSTER_YELL",
|
||||
"UNIT_DIED",
|
||||
"CHAT_MSG_RAID_WARNING"
|
||||
)
|
||||
|
||||
local warnPhase2 = mod:NewPhaseAnnounce(2)
|
||||
local warnPhase3 = mod:NewPhaseAnnounce(3)
|
||||
local warningHeal = mod:NewCastAnnounce(30878, 4)
|
||||
local warningDaring = mod:NewTargetAnnounce(30841, 3)
|
||||
local warningDevotion = mod:NewTargetAnnounce(30887, 3)
|
||||
local warningPosion = mod:NewAnnounce("warningPosion", 2, 30830, mod:IsHealer() or mod:IsTank())
|
||||
|
||||
-- Heroic
|
||||
local WarnHeartbroken = mod:NewAnnounce(L.WarnHeartbroken, 2, 85237)
|
||||
local WarnLove = mod:NewAnnounce(L.WarnLove, 2, 85236)
|
||||
|
||||
local timerHeal = mod:NewCastTimer(5, 30878)
|
||||
local timerDaring = mod:NewTargetTimer(8, 30841)
|
||||
local timerDevotion = mod:NewTargetTimer(10, 30887)
|
||||
local timerCombatStart = mod:NewTimer(55, "TimerCombatStart", 2457)
|
||||
local timerNextSpotlight = mod:NewTimer(30, L.OperaSpotlight, 85112)
|
||||
|
||||
mod:AddBoolOption("HealthFrame", true)
|
||||
|
||||
local phases = {}
|
||||
local JulianneDied = 0
|
||||
local RomuloDied = 0
|
||||
local LoversSpam = 0
|
||||
local heartbrokenStacks = 0
|
||||
|
||||
local function updateHealthFrame(phase)--WIP
|
||||
if phases[phase] then
|
||||
return
|
||||
end
|
||||
phases[phase] = true
|
||||
if phase == 1 then
|
||||
DBM.BossHealth:Clear()
|
||||
DBM.BossHealth:AddBoss(17534, L.Julianne)
|
||||
elseif phase == 2 then--UNIT_DIED event triggers not tested yet
|
||||
DBM.BossHealth:AddBoss(17533, L.Romulo)
|
||||
warnPhase2:Show()
|
||||
elseif phase == 3 then
|
||||
DBM.BossHealth:AddBoss(17534, L.Julianne)
|
||||
DBM.BossHealth:AddBoss(17533, L.Romulo)
|
||||
end
|
||||
end
|
||||
|
||||
function mod:OnCombatStart(delay)
|
||||
updateHealthFrame(1)
|
||||
JulianneDied = 0
|
||||
RomuloDied = 0
|
||||
timerNextSpotlight:Start(20-delay)
|
||||
self.vb.phase = 1
|
||||
heartbrokenStacks = 0
|
||||
end
|
||||
|
||||
function mod:SPELL_CAST_START(args)
|
||||
if args:IsSpellID(30878) then
|
||||
warningHeal:Show()
|
||||
if mod:IsDifficulty("normal25", "heroic10", "heroic25") then
|
||||
timerHeal:Start()
|
||||
else
|
||||
timerHeal:Start(2)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function mod:SPELL_AURA_APPLIED(args)
|
||||
if args:IsSpellID(30822, 30830) then
|
||||
warningPosion:Show(args.spellName, args.destName, args.amount or 1)
|
||||
elseif args:IsSpellID(30841) then
|
||||
warningDaring:Show(args.destName)
|
||||
timerDaring:Start(args.destName)
|
||||
elseif args:IsSpellID(30887) then
|
||||
warningDevotion:Show(args.destName)
|
||||
timerDevotion:Start(args.destName)
|
||||
elseif args:IsSpellID(85237) then -- Heartbroken
|
||||
heartbrokenStacks = args.amount
|
||||
if args.amount and (GetTime() - LoversSpam) > 5 and args.amount >= 10 and args.amount % 5 == 0 then
|
||||
LoversSpam = GetTime()
|
||||
WarnHeartbroken:Show(args.amount, args.spellName)
|
||||
end
|
||||
elseif args:IsSpellID(85236) then
|
||||
if heartbrokenStacks > 0 then
|
||||
heartbrokenStacks = heartbrokenStacks - 0.5
|
||||
end
|
||||
|
||||
if args.amount and (GetTime() - LoversSpam) > 5 and heartbrokenStacks <= 5 and args.amount % 5 == 0 and args.amount >= 15 then -- The Power of Love
|
||||
LoversSpam = GetTime()
|
||||
WarnLove:Show(args.amount, args.spellName)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED
|
||||
|
||||
function mod:SPELL_AURA_REMOVED(args)
|
||||
if args:IsSpellID(30841) then
|
||||
timerDaring:Cancel(args.destName)
|
||||
elseif args:IsSpellID(30887) then
|
||||
timerDevotion:Cancel(args.destName)
|
||||
end
|
||||
end
|
||||
|
||||
function mod:CHAT_MSG_MONSTER_YELL(msg)
|
||||
if msg == L.DBM_RJ_PHASE2_YELL or msg:find(L.DBM_RJ_PHASE2_YELL) then
|
||||
warnPhase3:Show()
|
||||
updateHealthFrame(3)
|
||||
self.vb.phase = 3
|
||||
elseif msg == L.Event or msg:find(L.Event) then
|
||||
timerCombatStart:Start()
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
function mod:UNIT_DIED(args)
|
||||
local cid = self:GetCIDFromGUID(args.destGUID)
|
||||
if cid == 17534 then
|
||||
if phase == 3 then--Only want to remove from boss health frame first time they die, and kill only in phase 3.
|
||||
JulianneDied = GetTime()
|
||||
if (GetTime() - RomuloDied) < 10 then
|
||||
mod:EndCombat()
|
||||
end
|
||||
else
|
||||
DBM.BossHealth:RemoveBoss(cid)
|
||||
updateHealthFrame(2)
|
||||
self.vb.phase = 2
|
||||
end
|
||||
elseif cid == 17533 then
|
||||
if phase == 3 then--Only want to remove from boss health frame first time they die, and kill only in phase 3.
|
||||
RomuloDied = GetTime()
|
||||
if (GetTime() - JulianneDied) < 10 then
|
||||
mod:EndCombat()
|
||||
end
|
||||
else
|
||||
DBM.BossHealth:RemoveBoss(cid)
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user