-- -- La Vendetta Instructor Razuvious Raid Warning AddOn -- (c) by Nitram from La Vendetta on DE-Azshara -- -- DE-INFO: -- Damit dieses Addon Funktioniert muss beim Pull ein PET oder -- ein Spieler in Sichtlinie zu dem Instructor sein und den -- Disrupting Shout abbekommen. (einmalig) -- Dieses Addon gibt den Manaklassen die Möglichkeit ähnlich wie -- bei Chromagus aus Sicht zu laufen und damit zu überleben. -- -- EN-INFO: -- To get this Addon working, a Pet or Player needs to be in -- Line of Side to the Instructor and afflicted by his spell -- Disruptiog Shout. (one Time) -- This Addon allows the Mana Classes to be in LOS to the -- Inspector and running out at the right Time like Chromagus. -- IR_Options = { ["Version"] = "1.1", ["Enabled"] = true, ["Lastshout"] = 0; ["OnLoop"] = false; } if (GetLocale() == "enGB") or (GetLocale() == "enUS") then IR_SPELL_1 = "Disrupting Shout"; end IR_Events = { "CHAT_MSG_SPELL_CREATURE_VS_SELF_DAMAGE", -- Disrupting Shout on YOU "CHAT_MSG_SPELL_CREATURE_VS_PARTY_DAMAGE", -- on Party "CHAT_MSG_SPELL_CREATURE_VS_CREATURE_DAMAGE", -- on Raid / Pet "PLAYER_REGEN_ENABLED", -- Automatik Stop the LOOP } function IR_OnLoad() SLASH_LVINSTRUCTORRAZUVIOUS1 = "/ir"; SLASH_LVINSTRUCTORRAZUVIOUS2 = "/instructor"; SlashCmdList["LVINSTRUCTORRAZUVIOUS"] = IR_SlashCmd; if (IR_Options.Enabled) then IR_Register(); end IR_AddMsg("Instructor Razuvious AddOn v"..IR_Options.Version.." by La Vendetta|Nitram @ EU-Azshara"); IR_AddMsg("/ir on|off"); end function IR_SlashCmd(msg) if (string.lower(msg) == "on") then IR_Register(); IR_Options.Enabled = true; IR_AddMsg("raid warning enabled!"); elseif (string.lower(msg) == "off") then IR_Unregister(); IR_Options.Enabled = false; IR_AddMsg("raid warning disabled!"); elseif (string.lower(msg) == "stop") then CT_RABoss_UnSchedule("IR_OnEvent", "StartNewDShoutTimer"); CT_RABoss_UnSchedule("IR_OnEvent", "DShout10SecWarning"); CT_RABoss_UnSchedule("IR_OnEvent", "DShout5SecWarning"); CT_RABoss_UnSchedule("IR_OnEvent", "DShout3SecWarning"); IR_Options.OnLoop = false; IR_AddMsg("Loop Stopped!"); else IR_AddMsg("AddOn v"..IR_Options.Version.." by La Vendetta|Nitram @ EU-Azshara"); IR_AddMsg("/ir on|off"); IR_AddMsg("/ir stop - Stops the Loop"); end end function IR_OnEvent(event) if (IR_Options.Enabled) then if ( event == "PLAYER_REGEN_ENABLED" and IR_Options.OnLoop ) then IR_SlashCmd("stop"); end if ( event == "CHAT_MSG_SPELL_CREATURE_VS_CREATURE_DAMAGE" or event == "CHAT_MSG_SPELL_CREATURE_VS_SELF_DAMAGE" or event == "CHAT_MSG_SPELL_CREATURE_VS_PARTY_DAMAGE" ) then if( string.find(arg1, IR_SPELL_1) )then if( IR_Options.Lastshout > 0 and math.floor(time() - IR_Options.Lastshout) > 0 ) then SendChatMessage("*** TIMER UPDATE DONE ***", "RAID"); -- To see that the Loop is Sync to the Shout IR_AddMsg("Time since last D-Shout : ".. (time() - IR_Options.Lastshout) ); IR_OnEvent("StartNewDShoutTimer"); IR_Options.Lastshout = time(); else IR_OnEvent("StartNewDShoutTimer"); IR_Options.Lastshout = time(); end end end if (event == "StartNewDShoutTimer") then if( math.floor(time() - IR_Options.Lastshout) < 2 ) then return true; end -- Don't need Spam CT_RABoss_UnSchedule("IR_OnEvent", "StartNewDShoutTimer"); -- Don't need the Loop CT_RABoss_UnSchedule("IR_OnEvent", "DShout10SecWarning"); -- Don't need Warnings anymore CT_RABoss_UnSchedule("IR_OnEvent", "DShout5SecWarning"); CT_RABoss_UnSchedule("IR_OnEvent", "DShout3SecWarning"); SendChatMessage("*** Disrupting Shout in 25 Sek ***", "RAID_WARNING"); -- Callout Warning CT_RABoss_Schedule("IR_OnEvent", 15, "DShout10SecWarning"); -- Shedule Warnings CT_RABoss_Schedule("IR_OnEvent", 20, "DShout5SecWarning"); CT_RABoss_Schedule("IR_OnEvent", 22, "DShout3SecWarning"); IR_Options.OnLoop = true; elseif (event == "DShout10SecWarning") then SendChatMessage("*** Disrupting Shout in 10 Sek ***", "RAID_WARNING"); elseif (event == "DShout5SecWarning") then SendChatMessage("*** Disrupting Shout in 5 Sek ***", "RAID_WARNING"); elseif (event == "DShout3SecWarning") then SendChatMessage("*** Disrupting Shout in 3 Sek ***", "RAID_WARNING"); CT_RABoss_Schedule("IR_OnEvent", 4, "StartNewDShoutTimer"); -- Shedule Loop end end end function IR_Register(event) for index, value in IR_Events do LVInstructor:RegisterEvent(value); end end function IR_Unregister(event) for index, value in IR_Events do LVInstructor:UnregisterEvent(value); end end function IR_AddMsg(msg) if (DEFAULT_CHAT_FRAME) then DEFAULT_CHAT_FRAME:AddMessage("[Instructor Razuvious]: "..msg, 0.0, 0.8, 0.0, 0.3); end end