local mod = BigWigs:NewBoss("루비 성소 부가 경고", "The Ruby Sanctum")
if not mod then return end
mod.otherMenu = "Northrend"
mod:RegisterEnableMob(39746, 39747, 39751, 39863, 40142)
mod.toggleOptions = {74384, 74367, "adds", 74404, 78722, {"beaconicon", "FLASHSHAKE"}, 74509, 75125, "brandicon", --[[{74562, "SAY"}, {74792, "SAY"},--]] "proximity"}

mod.optionHeaders = {
	[74384] = "장군 자리스리안",
	[74404] = "사비아나 레이지파이어",
	[74509] = "전쟁의 아들 발타루스",
	--[74562] = "할리온",
	proximity = "기타",
}
--------------------------------------------------------------------------------
-- Locals
--

local biTargets = mod:NewTargetList()
local brandTargets = mod:NewTargetList()

--------------------------------------------------------------------------------
-- Localization
--

local L = mod:NewLocale("koKR", true)
if L then
	--장군 자리스리안
	L.engage_trigger1 = "알렉스트라자가 쓸만한 동맹을 골랐군"
	
	L.adds = "몹 추가"
	L.adds_desc = "추가되는 몹에 대하여 알립니다."
	L.adds_trigger = "저놈들을 재로 만들어버려라!"
	L.adds_message = "몹 추가됨"
	
	L.armor_message = "갑옷 베기 %2$dx : %1$s"
	L.fear_bar = "다음 공포"
	
	--사비아나 레이지파이어
	L.engage_trigger2 = "침입한 대가를 치르게 해 주마!"
	
	L.breath_bar = "다음 숨결"
	
	L.enrage_message = "격노 - 지금 평정 사용!"
	L.enrage_removed = "격노 해제됨"
	L.enrage_bar = "격노"
	
	L.beaconicon = "봉화 대상 전술"
	L.beaconicon_desc = "봉화 대상에게 별, 원 & 다이아몬드 & 세모 & 달 전술을 지정합니다 (승급된 사람만 가능)."
	L.beaconicon_message = "당신은 화염 봉화!"
	L.beaconicon_bar = "다음 봉화"
	
	--전쟁의 아들 발타루스
	--L.engage_trigger3 = "아, 날 즐겁게 해주러 왔나"
	
	L.wave_message = "격퇴의 물결 - 분신 소환"
	
	L.brandicon = "무력의 낙인 대상 전술"
	L.brandicon_desc = "무력의 낙인 대상에게 별, 원 & 다이아몬드 & 세모 & 달 순서로 전술을 지정합니다 (승급된 사람만 가능)."
	
	--할리온
	--L.fire_say = "나에게 맹렬한 발화!"
	--L.shadow_say = "나에게 영혼 소진!"
end
L = mod:GetLocale()

--------------------------------------------------------------------------------
-- Initialization
--

function mod:OnBossEnable()
	self:Log("SPELL_CAST_START", "Fear", 74384)
	self:Log("SPELL_AURA_APPLIED", "CleaveArmor", 74367)
	self:Log("SPELL_AURA_APPLIED_DOSE", "CleaveArmor", 74367)
	
	self:Log("SPELL_CAST_START", "Breath", 74403, 74404)
	self:Log("SPELL_AURA_APPLIED", "Enrage", 78722)
	self:Log("SPELL_AURA_REMOVED", "EnrageRemoved", 78722)
	self:Log("SPELL_AURA_APPLIED", "Beaconicon", 74453)
		
	self:Log("SPELL_CAST_START", "Wave", 74509)
	self:Log("SPELL_AURA_APPLIED", "Whirlwind", 75125)
	self:Log("SPELL_AURA_APPLIED", "Brandicon", 74502, 74505)
	
	--self:Log("SPELL_AURA_APPLIED", "FireSay", 74562)
	--self:Log("SPELL_AURA_APPLIED", "ShadowSay", 74792)
	
	self:Log("SPELL_AURA_REMOVED", "Safe", 74453, 74502, 74505)
			
	self:Death("Disable", 39746, 39747, 39751, 39863, 40142)
	
	self:RegisterEvent("PLAYER_REGEN_ENABLED", "CheckForWipe")
	self:Yell("Engage1", L["engage_trigger1"])
	self:Yell("Engage2", L["engage_trigger2"])
	--self:Yell("Engage3", L["engage_trigger3"])
	self:Yell("Adds", L["adds_trigger"])
end

function mod:Engage1(msg)
	self:Bar(74384, L["fear_bar"], 14, 74384)
	self:Bar("adds", L["adds"], 45, 19879)
end

function mod:Engage2(msg)
	self:Bar(74404, L["breath_bar"], 12, 74404)
	self:Bar("beaconicon", L["beaconicon_bar"], 32, 74452)
end

--------------------------------------------------------------------------------
-- Event Handlers
--

function mod:CleaveArmor(player, spellId, _, _, _, stack)
	if stack and stack > 1 then
		self:TargetMessage(74367, L["armor_message"], player, "Urgent", spellId, nil, stack)
	end
end

function mod:Fear(_, spellId, _, _, spellName)
	self:Message(74384, spellName, "Important", spellId, "Alarm")
	self:Bar(74384, L["fear_bar"], 33, 74384)
end

function mod:Adds()
	self:Message("adds", L["adds_message"], "Attention", 19879)
	self:Bar("adds", L["adds"], 45, 19879)
end


function mod:Breath(_, spellId, _, _, spellName)
	self:Bar(74404, L["breath_bar"], 25, 74404)
end

function mod:Enrage(_, spellId, _, _, spellName)
	self:Message(78722, L["enrage_message"], "Important", spellId)
	self:Bar(78722, L["enrage_bar"], 10, spellId)
end

function mod:EnrageRemoved(_, spellId)
	self:Message(78722, L["enrage_removed"], "Positive", spellId, "Info")
	self:SendMessage("BigWigs_StopBar", self, L["enrage_bar"])
end

do
	local scheduled = nil
	local num = 1
	local function beaconWarn(spellName)
		mod:TargetMessage("beaconicon", spellName, biTargets, "Urgent", 74453)
		mod:Bar("beaconicon", L["beaconicon_bar"], 45, 74452)
		scheduled = nil
		num = 1
	end
	function mod:Beaconicon(player, spellId, _, _, spellName)
		biTargets[#biTargets + 1] = player
		if self.db.profile.beaconicon then
			SetRaidTarget(player, num)
			num = num + 1
		end
		if UnitIsUnit(player, "player") then
			self:LocalMessage(74453, L["beaconicon_message"], "Personal", spellId, "Alert")
			self:FlashShake(74453)
			self:OpenProximity(10)
			self:ScheduleTimer(self.CloseProximity, 15, self)
		end
		if not scheduled then
			scheduled = true
			self:ScheduleTimer(beaconWarn, 0.2, spellName)
		end
	end
end

function mod:Safe(player)
	SetRaidTarget(player, 0)
end


function mod:Wave(_, spellId, _, _, spellName)
	self:Message(74509, L["wave_message"], "Important", spellId, "Alarm")
end

function mod:Whirlwind(_, spellId, _, _, spellName)
	self:Message(75125, spellName, "Important", spellId)
	self:Bar(75125, spellName, 4, spellId)
	self:OpenProximity(12)
	self:ScheduleTimer(self.CloseProximity, 25, self)
end

do
	local scheduled = nil
	local num = 1
	local function brandWarn(spellName)
		mod:TargetMessage("brandicon", spellName, brandTargets, "Urgent", 74505)
		scheduled = nil
		num = 1
	end
	function mod:Brandicon(player, spellId, _, _, spellName)
		brandTargets[#brandTargets + 1] = player
		if self.db.profile.brandicon then
			SetRaidTarget(player, num)
			num = num + 1
		end
		if not scheduled then
			scheduled = true
			self:ScheduleTimer(brandWarn, 0.5, spellName)
		end
	end
end

--[[
function mod:FireSay(player, spellId)
	if self:GetInstanceDifficulty() > 2 then
		self:Bar(75125, L["fire_bar"], 20, spellId)
	else
		self:Bar(75125, L["fire_bar"], 25, spellId)
	end
	if UnitIsUnit(player, "player") then
		self:Say(74562, L["fire_say"])
	end
end

function mod:ShadowSay(player, spellId)
	if self:GetInstanceDifficulty() > 2 then
		self:Bar(75125, L["shadow_bar"], 20, spellId)
	else
		self:Bar(75125, L["shadow_bar"], 25, spellId)
	end
	if UnitIsUnit(player, "player") then
		self:Say(74792, L["shadow_say"])
	end
end
--]]