local bboss = BabbleLib:GetInstance("Boss 1.2") local metro = Metrognome:GetInstance("1") BigWigsHeigan = AceAddon:new({ name = "BigWigsHeigan", cmd = AceChatCmd:new({}, {}), zonename = BabbleLib:GetInstance("Zone 1.2")("Naxxramas"), enabletrigger = bboss("Heigan the Unclean"), bossname = bboss("Heigan the Unclean"), toggleoptions = { notStartWarn = "Start warning", notTeleport = "Teleport warning", notTeleport10Sec = "Teleport 10-sec warning", notTeleportBar = "Teleport bar", notBosskill = "Boss death", }, optionorder = {"notStartWarn", "notTeleport", "notTeleport10Sec", "notTeleportBar", "notBosskill"}, loc = { disabletrigger = "Heigan the Unclean takes his last breath.", bosskill = "Heigan the Unclean has been defeated!", starttrigger = "You are mine now.", starttrigger2 = "You are next.", starttrigger3 = "I see you.", teleporttrigger = "The end is upon you.", startwarn = "Heigan the Unclean engaged! 90 seconds till teleport", teleportwarn = "Teleport! He's on the platform!", teleportwarn2 = "Teleport in 10 seconds!", teleportbar = "Teleport!", backbar = "Back in room!", backwarn = "He's back in the room! Teleport in 90 seconds!", backwarn2 = "10 seconds until he's back in the room!", }, }) function BigWigsHeigan:Initialize() self.disabled = true self:TriggerEvent("BIGWIGS_REGISTER_MODULE", self) end function BigWigsHeigan:Enable() self.disabled = nil self.timeroom = 90 self.timeplatform = 45 self:RegisterEvent("PLAYER_REGEN_ENABLED") self:RegisterEvent("CHAT_MSG_MONSTER_YELL") self:RegisterEvent("CHAT_MSG_MONSTER_EMOTE") self:RegisterEvent("BIGWIGS_MESSAGE") metro:Unregister("BigWigs Heigan ToPlatform") metro:Unregister("BigWigs Heigan ToRoom") metro:Register("BigWigs Heigan ToPlatform", self.teleportToPlatform, self.timeroom, self) metro:Register("BigWigs Heigan ToRoom", self.teleportToRoom, self.timeplatform, self) metro:Register("BigWigs_Heigan_CheckWipe", self.PLAYER_REGEN_ENABLED, 2, self) end function BigWigsHeigan:Disable() self.disabled = true self:UnregisterAllEvents() self:TriggerEvent("BIGWIGS_DELAYEDMESSAGE_CANCEL", self.loc.teleportwarn2) self:TriggerEvent("BIGWIGS_DELAYEDMESSAGE_CANCEL", self.loc.backwarn2) self:TriggerEvent("BIGWIGS_BAR_CANCEL", self.loc.teleportbar) self:TriggerEvent("BIGWIGS_BAR_CANCEL", self.loc.backbar) metro:Unregister("BigWigs Heigan ToPlatform") metro:Unregister("BigWigs Heigan ToRoom") metro:Unregister("BigWigs_Heigan_CheckWipe") self.prior = nil end function BigWigsHeigan:Scan() if (UnitName("target") == self.bossname and UnitAffectingCombat("target")) then return true elseif (UnitName("playertarget") == self.bossname and UnitAffectingCombat("playertarget")) then return true else local i for i = 1, GetNumRaidMembers(), 1 do if (UnitName("raid"..i.."target") == self.bossname and UnitAffectingCombat("raid"..i.."target")) then return true end end end return false end function BigWigsHeigan:PLAYER_REGEN_ENABLED() local go = self:Scan() local _,_,running = Metro:Status("BigWigs_Heigan_CheckWipe") if (not go) then self:Disable() Metro:Stop("BigWigs_Heigan_CheckWipe") elseif (not running) then Metro:Start("BigWigs_Heigan_CheckWipe") end end function BigWigsHeigan:CHAT_MSG_MONSTER_EMOTE() if (string.find(arg1, self.loc.disabletrigger)) then if not self:GetOpt("notBosskill") then self:TriggerEvent("BIGWIGS_MESSAGE", self.loc.bosskill, "Green", nil, "Victory") end self:Disable() end end function BigWigsHeigan:teleportToPlatform() if not self:GetOpt("notTeleport") then self:TriggerEvent("BIGWIGS_MESSAGE", self.loc.teleportwarn, "Red") end if not self:GetOpt("notTeleportBar") then self:TriggerEvent("BIGWIGS_BAR_START", self.loc.backbar, self.timeplatform, 2, "Orange", "Interface\\Icons\\Spell_Magic_LesserInvisibilty") end if not self:GetOpt("notTeleport10Sec") then self:TriggerEvent("BIGWIGS_DELAYEDMESSAGE_START", self.loc.backwarn2, self.timeplatform - 10) end -- Trigger the Timers metro:Stop("BigWigs Heigan ToPlatform") metro:Start("BigWigs Heigan ToRoom") end function BigWigsHeigan:teleportToRoom() if not self:GetOpt("notTeleport") then self:TriggerEvent("BIGWIGS_MESSAGE", string.format(self.loc.backwarn, self.timeroom), "Red") end if not self:GetOpt("notTeleportBar") then self:TriggerEvent("BIGWIGS_BAR_START", self.loc.teleportbar, self.timeroom, 2, "Yellow", "Interface\\Icons\\Spell_Magic_LesserInvisibilty") end if not self:GetOpt("notTeleport10Sec") then self:TriggerEvent("BIGWIGS_DELAYEDMESSAGE_START", self.loc.teleportwarn2, self.timeroom - 10) end -- Trigger the Timers metro:Stop("BigWigs Heigan ToRoom") metro:Start("BigWigs Heigan ToPlatform") end function BigWigsHeigan:CHAT_MSG_MONSTER_YELL() if (arg1 == self.loc.starttrigger1 or arg1 == self.loc.starttrigger2 or arg1 == self.loc.starttrigger3) then if not self:GetOpt("notStartWarn") then self:TriggerEvent("BIGWIGS_MESSAGE", self.loc.startwarn, "Red") end if not self:GetOpt("notTeleportBar") then self:TriggerEvent("BIGWIGS_BAR_START", self.loc.teleportbar, self.timeroom, 0, "Yellow", "Interface\\Icons\\Spell_Magic_LesserInvisibilty") end if not self:GetOpt("notTeleport10Sec") then self:TriggerEvent("BIGWIGS_DELAYEDMESSAGE_START", self.loc.teleportwarn2, self.timeroom - 10, "Orange") end -- make sure if a engage trigger fires the teleport timer can fire self.prior = nil end if (string.find(arg1, self.loc.teleporttrigger) and not self.prior) then metro:Start("BigWigs Heigan ToPlatform") -- we only want this to start the timer once self.prior = true end end -------------------------------- -- Load this bitch! -- -------------------------------- BigWigsHeigan:RegisterForLoad()