📄 blackwinglair.lua
字号:
CT_RABoss_PlaySound(3);
elseif ( (event == "CHAT_MSG_SPELL_PERIODIC_SELF_DAMAGE" or event == "CHAT_MSG_SPELL_PERIODIC_FRIENDLYPLAYER_DAMAGE" or event == "CHAT_MSG_SPELL_PERIODIC_PARTY_DAMAGE") and CT_RABoss_Mods["埃博诺克"]["shadowEbonroc"] ) then
local iStart, iEnd, sPlayer, sType = string.find(arg1, CT_RABOSS_EBONROC_AFFLICT_BOMB);
if ( sPlayer and sType ) then
if ( sPlayer == CT_RABOSS_SELF1 and sType == CT_RABOSS_SELF2 ) then
CT_RABoss_Announce(CT_RABOSS_EBONROC_SOEYOU);
CT_RABoss_Announce(CT_RABOSS_EBONROC_SOEYOU);
if ( CT_RA_Level >= 1 and CT_RABoss_Mods["埃博诺克"]["announce"] ) then
CT_RA_AddMessage("MS " .. format(CT_RABOSS_EBONROC_SOEOTHER, UnitName("player")));
end
CT_RABoss_PlaySound(1);
elseif ( CT_RABoss_Mods["埃博诺克"]["shadowEbonroc"] ) then
if ( CT_RABoss_Mods["埃博诺克"]["shadowEbonroc"] ) then
CT_RABoss_Announce(format(CT_RABOSS_EBONROC_SOEOTHER, sPlayer), CT_RABoss_Mods["埃博诺克"]["announce"]);
CT_RABoss_PlaySound(1);
end
end
end
elseif ( event == "PLAYER_REGEN_DISABLED" ) then
CT_RABoss_Schedule("CT_RABoss_Ebonroc_EventHandler", 10, "checkStart");
elseif ( event == "checkStart" ) then
if ( UnitName("target") == CT_RABOSS_NAMES["埃博诺克"] and UnitAffectingCombat("target") ) then
CT_RABoss_Announce(CT_RABOSS_EBONROC_BUFFET_WARN_FIRST, CT_RABoss_Mods["埃博诺克"]["announce"]);
CT_RABoss_Mods["埃博诺克"]["BuffetTrip"] = true;
CT_RABoss_PlaySound(2);
CT_RABoss_Schedule("CT_RABoss_Ebonroc_EventHandler", 19, "preBuffetWarning");
CT_RABoss_VisualTimer.addTimer("EbonrocBuffet", 22, CT_RABOSS_EBONROC_BUFFET_TIMER);
end
end
end
-- Flamegor Wing Buffet, Shadowflame, and Frenzy (Thanks to Sting of Blood Legion - Illidan Horde)
function CT_RABoss_Flamegor_OnLoad()
CT_RABoss_AddMod("弗莱格尔", CT_RABOSS_FLAMEGOR_INFO, 1, CT_RABOSS_LOCATIONS_BLACKWINGSLAIR);
CT_RABoss_AddEvent("弗莱格尔", "CHAT_MSG_SPELL_CREATURE_VS_CREATURE_DAMAGE", CT_RABoss_Flamegor_EventHandler);
CT_RABoss_AddEvent("弗莱格尔", "CHAT_MSG_MONSTER_EMOTE", CT_RABoss_Flamegor_EventHandler); -- Frenzy
CT_RABoss_AddEvent("弗莱格尔", "PLAYER_REGEN_DISABLED", CT_RABoss_Flamegor_EventHandler);
CT_RABoss_AddDropDownButton("弗莱格尔", { CT_RABOSS_ANNOUNCE, CT_RABOSS_ANNOUNCE_INFO .. CT_RABOSS_REQ_LEADER_OR_PROM }, "CT_RABoss_ModInfo", "announce", "CT_RABoss_SetInfo");
CT_RABoss_AddDropDownButton("弗莱格尔", { CT_RABOSS_FLAMEGOR_FRENZY, CT_RABOSS_FLAMEGOR_FRENZY_INFO }, "CT_RABoss_ModInfo", "frenzyAlert", "CT_RABoss_SetInfo");
CT_RABoss_AddDropDownButton("弗莱格尔", { CT_RABOSS_SHADOWFLAME, CT_RABOSS_SHADOWFLAME_INFO }, "CT_RABoss_ModInfo", "shadowflame", "CT_RABoss_SetInfo");
CT_RABoss_SetVar("弗莱格尔", "shadowflame", 1);
CT_RABoss_SetVar("弗莱格尔", "frenzyAlert", 1);
end
function CT_RABoss_Flamegor_EventHandler(event)
if ( not CT_RABoss_Mods["弗莱格尔"] or not CT_RABoss_Mods["弗莱格尔"]["status"] or not CT_RABoss_Mods["弗莱格尔"].enabled ) then
return;
end
if ( event == "CHAT_MSG_SPELL_CREATURE_VS_CREATURE_DAMAGE" and string.find(arg1, CT_RABOSS_FLAMEGOR_BUFFET) and not CT_RABoss_Mods["弗莱格尔"]["BuffetTrip"] ) then
CT_RABoss_Announce(CT_RABOSS_FLAMEGOR_BUFFET_WARN, CT_RABoss_Mods["弗莱格尔"]["announce"]);
CT_RABoss_Mods["弗莱格尔"]["BuffetTrip"] = true;
CT_RABoss_PlaySound(2);
CT_RABoss_Schedule("CT_RABoss_Flamegor_EventHandler", 29, "preBuffetWarning");
CT_RABoss_VisualTimer.addTimer("FlamegorBuffet", 32, CT_RABOSS_FLAMEGOR_BUFFET_TIMER);
elseif ( event == "preBuffetWarning" ) then
CT_RABoss_Mods["弗莱格尔"]["BuffetTrip"] = false;
CT_RABoss_Announce(CT_RABOSS_FLAMEGOR_3SECWARN, CT_RABoss_Mods["弗莱格尔"]["announce"]);
CT_RABoss_PlaySound(3);
elseif ( event == "CHAT_MSG_SPELL_CREATURE_VS_CREATURE_DAMAGE" and string.find(arg1, CT_RABOSS_FLAMEGOR_SHADOWFLAME_DETECT) and CT_RABoss_Mods["弗莱格尔"]["shadowflame"] ) then
CT_RABoss_Announce(CT_RABOSS_FLAMEGOR_SHADOWFLAME_WARN, CT_RABoss_Mods["弗莱格尔"]["announce"]);
CT_RABoss_PlaySound(3);
elseif ( event == "CHAT_MSG_MONSTER_EMOTE" and string.find(arg1, CT_RABOSS_FLAMEGOR_FRENZY_DETECT) and CT_RABoss_Mods["弗莱格尔"]["frenzyAlert"] ) then
CT_RABoss_Announce(CT_RABOSS_FLAMEGOR_TRANQSHOT, CT_RABoss_Mods["弗莱格尔"]["announce"]);
CT_RABoss_PlaySound(1);
elseif ( event == "PLAYER_REGEN_DISABLED" ) then
CT_RABoss_Schedule("CT_RABoss_Flamegor_EventHandler", 10, "checkStart");
elseif ( event == "checkStart" ) then
if ( UnitName("target") == CT_RABOSS_NAMES["弗莱格尔"] and UnitAffectingCombat("target") ) then
CT_RABoss_Announce(CT_RABOSS_FLAMEGOR_BUFFET_WARN_FIRST, CT_RABoss_Mods["弗莱格尔"]["announce"]);
CT_RABoss_Mods["弗莱格尔"]["BuffetTrip"] = true;
CT_RABoss_PlaySound(2);
CT_RABoss_Schedule("CT_RABoss_Flamegor_EventHandler", 19, "preBuffetWarning");
CT_RABoss_VisualTimer.addTimer("FlamegorBuffet", 22, CT_RABOSS_FLAMEGOR_BUFFET_TIMER);
end
end
end
-- Chromaggus
CT_RABoss_Chromaggus_PlayerDamageEvents =
{
["CHAT_MSG_SPELL_SELF_DAMAGE"] = true,
["CHAT_MSG_SPELL_PET_DAMAGE"] = true,
["CHAT_MSG_SPELL_PARTY_DAMAGE"] = true,
["CHAT_MSG_SPELL_FRIENDLYPLAYER_DAMAGE"] = true
};
function CT_RABoss_Chromaggus_OnLoad() -- Many many thanks to Silmalia of Ebon Order for the majority of code for this mod
CT_RABoss_AddMod("克洛玛古斯", CT_RABOSS_CHROMAGGUS_INFO, 1, CT_RABOSS_LOCATIONS_BLACKWINGSLAIR);
CT_RABoss_AddDropDownButton("克洛玛古斯", { CT_RABOSS_ANNOUNCE, CT_RABOSS_ANNOUNCE_INFO .. CT_RABOSS_REQ_LEADER_OR_PROM }, "CT_RABoss_ModInfo", "announce", "CT_RABoss_SetInfo");
CT_RABoss_AddDropDownButton("克洛玛古斯", { CT_RABOSS_CHROMAGGUS_BREATHWARNING, CT_RABOSS_CHROMAGGUS_BREATHWARNING_INFO }, "CT_RABoss_ModInfo", "breathWarning", "CT_RABoss_SetInfo");
CT_RABoss_AddDropDownButton("克洛玛古斯", { CT_RABOSS_CHROMAGGUS_CASTWARNING, CT_RABOSS_CHROMAGGUS_CASTWARNING_INFO }, "CT_RABoss_ModInfo", "castWarning", "CT_RABoss_SetInfo");
CT_RABoss_AddDropDownButton("克洛玛古斯", { CT_RABOSS_CHROMAGGUS_SHIELDWARNING, CT_RABOSS_CHROMAGGUS_SHIELDWARNING_INFO }, "CT_RABoss_ModInfo", "shieldWarning", "CT_RABoss_SetInfo");
CT_RABoss_AddDropDownButton("克洛玛古斯", { CT_RABOSS_CHROMAGGUS_FRENZYWARNING, CT_RABOSS_CHROMAGGUS_FRENZYWARNING_INFO }, "CT_RABoss_ModInfo", "frenzyWarning", "CT_RABoss_SetInfo");
CT_RABoss_UnSchedule("CT_RABoss_Chromaggus_OnEvent");
CT_RABoss_Mods["克洛玛古斯"][CT_RABOSS_CHROMAGGUS_BREATH1] = CT_RABOSS_CHROMAGGUS_BREATH1;
CT_RABoss_Mods["克洛玛古斯"][CT_RABOSS_CHROMAGGUS_BREATH2] = CT_RABOSS_CHROMAGGUS_BREATH2;
CT_RABoss_Mods["克洛玛古斯"]["LastBreath"] = nil;
CT_RABoss_Mods["克洛玛古斯"]["Vulnerability"] = nil;
CT_RABoss_Mods["克洛玛古斯"]["checkStart"] = nil;
CT_RABoss_SetVar("克洛玛古斯", "breathWarning", true);
CT_RABoss_SetVar("克洛玛古斯", "castWarning", false);
CT_RABoss_SetVar("克洛玛古斯", "frenzyWarning", false);
CT_RABoss_SetVar("克洛玛古斯", "shieldWarning", false);
CT_RABoss_AddEvent("克洛玛古斯", "CHAT_MSG_SPELL_CREATURE_VS_CREATURE_DAMAGE", CT_RABoss_Chromaggus_OnEvent); -- Breaths
CT_RABoss_AddEvent("克洛玛古斯", "CHAT_MSG_SPELL_PERIODIC_CREATURE_BUFFS", CT_RABoss_Chromaggus_OnEvent); -- Frenzy
CT_RABoss_AddEvent("克洛玛古斯", "CHAT_MSG_MONSTER_EMOTE", CT_RABoss_Chromaggus_OnEvent); -- Elemental Shield
CT_RABoss_AddEvent("克洛玛古斯", "PLAYER_REGEN_DISABLED", CT_RABoss_Chromaggus_OnEvent); -- Start of encounter
for k, v in CT_RABoss_Chromaggus_PlayerDamageEvents do
CT_RABoss_AddEvent("克洛玛古斯", k, CT_RABoss_Chromaggus_OnEvent); -- Detect Elemental Shield vulnerable school
end
end
function CT_RABoss_Chromaggus_ResetMod()
CT_RABoss_Mods["克洛玛古斯"][CT_RABOSS_CHROMAGGUS_BREATH1] = CT_RABOSS_CHROMAGGUS_BREATH1;
CT_RABoss_Mods["克洛玛古斯"][CT_RABOSS_CHROMAGGUS_BREATH2] = CT_RABOSS_CHROMAGGUS_BREATH2;
CT_RABoss_Mods["克洛玛古斯"]["LastBreath"] = nil;
CT_RABoss_Mods["克洛玛古斯"]["checkStart"] = nil;
CT_RABoss_Mods["克洛玛古斯"]["Vulnerability"] = nil;
CT_RABoss_UnSchedule("CT_RABoss_Chromaggus_OnEvent");
end
function CT_RABoss_Chromaggus_OnEvent(event)
-- Return if the mod is not enabled
if ( not CT_RABoss_Mods["克洛玛古斯"] or not CT_RABoss_Mods["克洛玛古斯"]["enabled"] or not CT_RABoss_Mods["克洛玛古斯"]["status"] ) then
return;
end
-- Set to current time
local currTime = GetTime();
if ( CT_RABoss_Mods["克洛玛古斯"][CT_RABOSS_CHROMAGGUS_BREATH1] and ( not CT_RABoss_Mods["克洛玛古斯"]["LastAction"] or ( currTime - CT_RABoss_Mods["克洛玛古斯"]["LastAction"] ) > CT_RABOSS_CHROMAGGUS_COMBATLIMIT ) and not CT_RABoss_Mods["克洛玛古斯"]["checkStart"] ) then
CT_RABoss_Debug(1, "Resetting mod", GetTime() - ( CT_RABoss_Mods["克洛玛古斯"]["LastAction"] or GetTime()+1 ));
CT_RABoss_Chromaggus_ResetMod();
end
if ( CT_RABoss_Mods["克洛玛古斯"]["breathWarning"] and ( event == CT_RABOSS_CHROMAGGUS_BREATH1 or event == CT_RABOSS_CHROMAGGUS_BREATH2 ) ) then
-- Breath warnings
-- local name = event;
-- if ( CT_RABoss_Mods["克洛玛古斯"][event] ) then
local name = CT_RABoss_Mods["克洛玛古斯"][event];
-- end
CT_RABoss_Debug(2, "Warning for scheduled breath", event, name);
CT_RABoss_Announce(format(CT_RABOSS_CHROMAGGUS_BREATH10SECWARNING, name), CT_RABoss_Mods["克洛玛古斯"]["announce"]);
CT_RABoss_PlaySound(1);
elseif ( event == "CHAT_MSG_SPELL_CREATURE_VS_CREATURE_DAMAGE" ) then
-- Breath attack
local iStart, iEnd, spellName = string.find(arg1, CT_RABOSS_CHROMAGGUS_BREATHCASTSTRING);
if ( spellName ) then
-- Set the names if they are not set yet
if ( CT_RABoss_Mods["克洛玛古斯"][CT_RABOSS_CHROMAGGUS_BREATH1] == CT_RABOSS_CHROMAGGUS_BREATH1 ) then
CT_RABoss_Mods["克洛玛古斯"][CT_RABOSS_CHROMAGGUS_BREATH1] = spellName;
CT_RABoss_Debug(3, "Setting breath 1", spellName);
elseif ( CT_RABoss_Mods["克洛玛古斯"][CT_RABOSS_CHROMAGGUS_BREATH2] == CT_RABOSS_CHROMAGGUS_BREATH2 ) then
CT_RABoss_Mods["克洛玛古斯"][CT_RABOSS_CHROMAGGUS_BREATH2] = spellName;
CT_RABoss_Debug(3, "Setting breath 2", spellName);
end
-- Used to make sure we're still fighting
CT_RABoss_Mods["克洛玛古斯"]["LastAction"] = currTime;
if ( CT_RABoss_Mods["克洛玛古斯"]["castWarning"] ) then
CT_RABoss_Announce(format(CT_RABOSS_CHROMAGGUS_BREATHCASTINGWARNING, spellName), CT_RABoss_Mods["克洛玛古斯"]["announce"]);
end
if ( CT_RABoss_Mods["克洛玛古斯"][CT_RABOSS_CHROMAGGUS_BREATH1] == spellName ) then
CT_RABoss_Schedule("CT_RABoss_Chromaggus_OnEvent", CT_RABOSS_CHROMAGGUS_BREATHWARNINGTIME, CT_RABOSS_CHROMAGGUS_BREATH1);
CT_RABoss_VisualTimer.addTimer("ChromaggusBreath", 30, CT_RABoss_Mods["克洛玛古斯"][CT_RABOSS_CHROMAGGUS_BREATH2]);
CT_RABoss_Debug(2, "Scheduling breath", CT_RABOSS_CHROMAGGUS_BREATH1);
elseif ( CT_RABoss_Mods["克洛玛古斯"][CT_RABOSS_CHROMAGGUS_BREATH2] == spellName ) then
CT_RABoss_Schedule("CT_RABoss_Chromaggus_OnEvent", CT_RABOSS_CHROMAGGUS_BREATHWARNINGTIME, CT_RABOSS_CHROMAGGUS_BREATH2);
CT_RABoss_VisualTimer.addTimer("ChromaggusBreath", 30, CT_RABoss_Mods["克洛玛古斯"][CT_RABOSS_CHROMAGGUS_BREATH1]);
CT_RABoss_Debug(2, "Scheduling breath", CT_RABOSS_CHROMAGGUS_BREATH2);
end
end
elseif ( event == "CHAT_MSG_MONSTER_EMOTE" ) then
-- Frenzy
if ( string.find(arg1, CT_RABOSS_CHROMAGGUS_FRENZYEMOTE) and arg2 == CT_RABOSS_NAMES["克洛玛古斯"] ) then
if ( CT_RABoss_Mods["克洛玛古斯"]["frenzyWarning"] ) then
CT_RABoss_Announce(CT_RABOSS_CHROMAGGUS_FRENZYCASTWARNING, CT_RABoss_Mods["克洛玛古斯"]["announce"]);
CT_RABoss_PlaySound(2);
end
-- Used to make sure we're still fighting
CT_RABoss_Mods["克洛玛古斯"]["LastAction"] = currTime;
-- Elemental Shield
elseif ( string.find(arg1, CT_RABOSS_CHROMAGGUS_SHIELDEMOTE) and arg2 == CT_RABOSS_NAMES["克洛玛古斯"] ) then
if ( CT_RABoss_Mods["克洛玛古斯"]["shieldWarning"] ) then
-- CT_RABoss_Announce(CT_RABOSS_CHROMAGGUS_NEWVULNERABILITYWARNING, CT_RABoss_Mods["克洛玛古斯"]["announce"]);
CT_RABoss_Announce(CT_RABOSS_CHROMAGGUS_NEWVULNERABILITYWARNING);
CT_RABoss_PlaySound(1);
end
-- Used to make sure we're still fighting
CT_RABoss_Mods["克洛玛古斯"]["LastAction"] = currTime;
-- Since spells that are in the air when Chromaggus changes resists will still hit him with vulnerability bonus, we wait 2.5 seconds before we clear resists.
CT_RABoss_Schedule( function() CT_RABoss_Mods["克洛玛古斯"]["Vulnerability"] = nil CT_RABoss_Debug(4, "Resetting vulnerability"); end, CT_RABOSS_CHROMAGGUS_WAITSHIELDCLEAR);
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -