📄 naxxramas.lua
字号:
-- Spider Wing
tinsert(CT_RABoss_ModsToLoad, "CT_RABoss_AnubRekhan_OnLoad");
tinsert(CT_RABoss_ModsToLoad, "CT_RABoss_Faerlina_OnLoad");
tinsert(CT_RABoss_ModsToLoad, "CT_RABoss_Maexxna_OnLoad");
-- Necro Wing
tinsert(CT_RABoss_ModsToLoad, "CT_RABoss_MRNoth_OnLoad");
tinsert(CT_RABoss_ModsToLoad, "CT_RABoss_MRHeigan_OnLoad");
tinsert(CT_RABoss_ModsToLoad, "CT_RABoss_MRLoatheb_OnLoad");
-- Deathknight Wing
tinsert(CT_RABoss_ModsToLoad, "CT_RABoss_Razuvious_OnLoad");
tinsert(CT_RABoss_ModsToLoad, "CT_RABoss_MRGothik_OnLoad");
tinsert(CT_RABoss_ModsToLoad, "CT_RABoss_MRHorsemen_OnLoad");
-- Abomination Wing
tinsert(CT_RABoss_ModsToLoad, "CT_RABoss_MRPatchwerk_OnLoad");
tinsert(CT_RABoss_ModsToLoad, "CT_RABoss_Grobbulus_OnLoad");
tinsert(CT_RABoss_ModsToLoad, "CT_RABoss_MRGluth_OnLoad");
tinsert(CT_RABoss_ModsToLoad, "CT_RABoss_MRThaddius_OnLoad");
-- Anub'Rekhan
function CT_RABoss_AnubRekhan_End()
CT_RABoss_UnSchedule("CT_RABoss_AnubRekhan_EventHandler");
CT_RABoss_UnSchedule("CT_RABoss_AnubRekhan_EventHandler");
CT_RABoss_UnSchedule("CT_RABoss_AnubRekhan_EventHandler");
CT_RABoss_Mods["阿努布雷坎"]["fight"] = nil;
CT_RABoss_Mods["阿努布雷坎"]["lastAction"] = nil;
CT_RABoss_VisualTimer.removeTimer("AnubLocustSwarm");
end
function CT_RABoss_AnubRekhan_OnLoad()
CT_RABoss_AddMod("阿努布雷坎", CT_RABOSS_ANUBREKHAN_INFO, 1, CT_RABOSS_LOCATIONS_NAXXRAMAS);
CT_RABoss_AddEvent("阿努布雷坎", "CHAT_MSG_COMBAT_FRIENDLY_DEATH", CT_RABoss_AnubRekhan_EventHandler);
CT_RABoss_AddEvent("阿努布雷坎", "CHAT_MSG_COMBAT_HOSTILE_DEATH", CT_RABoss_AnubRekhan_EventHandler);
CT_RABoss_AddEvent("阿努布雷坎", "CHAT_MSG_MONSTER_YELL", CT_RABoss_AnubRekhan_EventHandler);
CT_RABoss_AddEvent("阿努布雷坎", "CHAT_MSG_SPELL_PERIODIC_CREATURE_BUFFS", CT_RABoss_AnubRekhan_EventHandler);
CT_RABoss_AddEvent("阿努布雷坎", "CHAT_MSG_SPELL_CREATURE_VS_CREATURE_DAMAGE", CT_RABoss_AnubRekhan_EventHandler);
CT_RABoss_AddEvent("阿努布雷坎", "CHAT_MSG_SPELL_CREATURE_VS_CREATURE_BUFF", CT_RABoss_AnubRekhan_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_ANUBREKHAN_DEATH, CT_RABOSS_ANUBREKHAN_DEATH_INFO}, "CT_RABoss_ModInfo", "playerDeath", "CT_RABoss_SetInfo");
CT_RA_RegisterSlashCmd("/anubstop", CT_RABOSS_CMD_ANUBSTOP, 30, "ANUBSTOP", function()
CT_RABoss_AnubRekhan_End();
end, "/anubstop");
CT_RABoss_Mods["阿努布雷坎"]["fight"] = nil;
CT_RABoss_Mods["阿努布雷坎"]["lastAction"] = nil;
end
function CT_RABoss_AnubRekhan_LocustSwarm()
CT_RABoss_Announce(format(CT_RABOSS_ANUBREKHAN_SWARM_PREALERT, "90", "100"), CT_RABoss_Mods["阿努布雷坎"]["announce"]);
CT_RABoss_PlaySound(2);
CT_RABoss_Mods["阿努布雷坎"]["fight"] = 1;
CT_RABoss_Mods["阿努布雷坎"]["lastAction"] = GetTime();
CT_RABoss_Schedule("CT_RABoss_AnubRekhan_EventHandler", 60, "locustSwarmPreWarn30");
CT_RABoss_Schedule("CT_RABoss_AnubRekhan_EventHandler", 75, "locustSwarmPreWarn15");
CT_RABoss_Schedule("CT_RABoss_AnubRekhan_EventHandler", 85, "locustSwarmPreWarn5");
end
function CT_RABoss_AnubRekhan_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_MONSTER_YELL" and arg2 == CT_RABOSS_NAMES["阿努布雷坎"] ) then
if ( string.find(arg1, CT_RABOSS_ANUBREKHAN_YELL1_DETECT) or string.find(arg1, CT_RABOSS_ANUBREKHAN_YELL2_DETECT) or string.find(arg1, CT_RABOSS_ANUBREKHAN_YELL3_DETECT) ) then
CT_RABoss_AnubRekhan_LocustSwarm();
end
elseif ( (event == "CHAT_MSG_SPELL_CREATURE_VS_CREATURE_DAMAGE" or event == "CHAT_MSG_SPELL_CREATURE_VS_CREATURE_BUFF") and string.find(arg1, CT_RABOSS_ANUBREKHAN_SWARM_CAST_DETECT) ) then
CT_RABoss_Announce(CT_RABOSS_ANUBREKHAN_SWARM_IMMINENT_ALERT, CT_RABoss_Mods["阿努布雷坎"]["announce"]);
CT_RABoss_PlaySound(3);
CT_RABoss_VisualTimer.addTimer("AnubLocustSwarm", 23, CT_RABOSS_ANUBREKHAN_SWARMEND_TIMER);
CT_RABoss_UnSchedule("CT_RABoss_AnubRekhan_EventHandler", "locustSwarmPreWarn30");
CT_RABoss_UnSchedule("CT_RABoss_AnubRekhan_EventHandler", "locustSwarmPreWarn15");
CT_RABoss_UnSchedule("CT_RABoss_AnubRekhan_EventHandler", "locustSwarmPreWarn5");
CT_RABoss_Schedule("CT_RABoss_AnubRekhan_EventHandler", 13, "locustSwarmEndWarn10");
CT_RABoss_Schedule("CT_RABoss_AnubRekhan_EventHandler", 20, "locustSwarmEndWarn3");
CT_RABoss_AnubRekhan_LocustSwarm();
elseif ( event == "CHAT_MSG_SPELL_PERIODIC_CREATURE_BUFFS" and string.find(arg1, CT_RABOSS_ANUBREKHAN_SWARM_GAIN_DETECT) ) then
CT_RABoss_Announce(CT_RABOSS_ANUBREKHAN_SWARM_ALERT, CT_RABoss_Mods["阿努布雷坎"]["announce"]);
CT_RABoss_Mods["阿努布雷坎"]["lastAction"] = GetTime();
CT_RABoss_PlaySound(3);
elseif ( event == "locustSwarmPreWarn30" ) then
CT_RABoss_Announce(format(CT_RABOSS_ANUBREKHAN_SWARM_PREALERT, "30", "40"), CT_RABoss_Mods["阿努布雷坎"]["announce"]);
elseif ( event == "locustSwarmPreWarn15" ) then
CT_RABoss_Announce(format(CT_RABOSS_ANUBREKHAN_SWARM_PREALERT, "15", "25"), CT_RABoss_Mods["阿努布雷坎"]["announce"]);
elseif ( event == "locustSwarmPreWarn5" ) then
CT_RABoss_Announce(format(CT_RABOSS_ANUBREKHAN_SWARM_PREALERT, "5", "15"), CT_RABoss_Mods["阿努布雷坎"]["announce"]);
CT_RABoss_PlaySound(1);
elseif ( event == "locustSwarmEndWarn10" ) then
CT_RABoss_Announce(format(CT_RABOSS_ANUBREKHAN_SWARM_END_PREALERT, "10"), CT_RABoss_Mods["阿努布雷坎"]["announce"]);
elseif ( event == "locustSwarmEndWarn3" ) then
CT_RABoss_Announce(format(CT_RABOSS_ANUBREKHAN_SWARM_END_PREALERT, "3"), CT_RABoss_Mods["阿努布雷坎"]["announce"]);
CT_RABoss_PlaySound(1);
end
if ( event == "CHAT_MSG_COMBAT_FRIENDLY_DEATH" and CT_RABoss_Mods["阿努布雷坎"]["playerDeath"] and CT_RABoss_Mods["阿努布雷坎"]["fight"] ) then
if ( not CT_RABoss_Mods["阿努布雷坎"]["lastAction"] or (GetTime() - CT_RABoss_Mods["阿努布雷坎"]["lastAction"] > 120) ) then
CT_RABoss_AnubRekhan_End();
return;
end
local _, _, nameSelf = string.find(arg1, CT_RABOSS_ANUBREKHAN_DEATHSELF_DETECT);
local _, _, name = string.find(arg1, CT_RABOSS_ANUBREKHAN_DEATHPLAYER_DETECT);
if ( name ~= nil ) then
CT_RABoss_Announce(format(CT_RABOSS_ANUBREKHAN_SCARAB_SPAWN_ALERT, name), CT_RABoss_Mods["阿努布雷坎"]["announce"]);
elseif ( nameSelf == CT_RABOSS_SELF1 ) then
name = UnitName("player");
CT_RABoss_Announce(format(CT_RABOSS_ANUBREKHAN_SCARAB_SPAWN_ALERT, name), CT_RABoss_Mods["阿努布雷坎"]["announce"]);
end
end
if ( event == "CHAT_MSG_COMBAT_HOSTILE_DEATH" and string.find(arg1, CT_RABOSS_ANUBREKHAN_DEATH_DETECT) ) then
CT_RABoss_AnubRekhan_End();
end
end
-- Grand Widow Faerlina (19/08/2006) - Changed naming.
-- Faerlina
function CT_RABoss_Faerlina_Reset()
CT_RABoss_Mods["黑女巫法琳娜"]["engaged"] = nil;
CT_RABoss_Mods["黑女巫法琳娜"]["enraged"] = nil;
CT_RABoss_Mods["黑女巫法琳娜"]["silenced"] = nil;
CT_RABoss_Mods["黑女巫法琳娜"]["lastAction"] = nil;
end
function CT_RABoss_Faerlina_OnLoad()
CT_RABoss_AddMod("黑女巫法琳娜", CT_RABOSS_FAERLINA_INFO, 1, CT_RABOSS_LOCATIONS_NAXXRAMAS);
CT_RABoss_AddEvent("黑女巫法琳娜", "CHAT_MSG_MONSTER_YELL", CT_RABoss_Faerlina_EventHandler);
CT_RABoss_AddEvent("黑女巫法琳娜", "CHAT_MSG_SPELL_FRIENDLYPLAYER_BUFF", CT_RABoss_Faerlina_EventHandler);
CT_RABoss_AddEvent("黑女巫法琳娜", "CHAT_MSG_SPELL_PARTY_BUFF", CT_RABoss_Faerlina_EventHandler);
CT_RABoss_AddEvent("黑女巫法琳娜", "CHAT_MSG_SPELL_PERIODIC_CREATURE_DAMAGE", CT_RABoss_Faerlina_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_RA_RegisterSlashCmd("/faerlinareset", "黑女巫法琳娜报警重置命令", 30, "FAERLINARESET", function()
CT_RABoss_Faerlina_Reset();
end, "/faerlinareset");
CT_RABoss_Mods["黑女巫法琳娜"]["lastAction"] = nil;
end
function CT_RABoss_Faerlina_UnSchedule()
CT_RABoss_UnSchedule("CT_RABoss_Faerlina_EventHandler", "enragePreWarn30");
CT_RABoss_UnSchedule("CT_RABoss_Faerlina_EventHandler", "enragePreWarn15");
CT_RABoss_UnSchedule("CT_RABoss_Faerlina_EventHandler", "enragePreWarn5");
CT_RABoss_UnSchedule("CT_RABoss_Faerlina_EventHandler", "enrageWarn");
end
function CT_RABoss_Faerlina_Schedule(totalTime)
CT_RABoss_Mods["黑女巫法琳娜"]["lastAction"] = GetTime();
CT_RABoss_Schedule("CT_RABoss_Faerlina_EventHandler", totalTime-30, "enragePreWarn30");
CT_RABoss_Schedule("CT_RABoss_Faerlina_EventHandler", totalTime-15, "enragePreWarn15");
CT_RABoss_Schedule("CT_RABoss_Faerlina_EventHandler", totalTime-5, "enragePreWarn5");
CT_RABoss_Schedule("CT_RABoss_Faerlina_EventHandler", totalTime, "enrageWarn");
end
function CT_RABoss_Faerlina_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_MONSTER_YELL" and arg2 == CT_RABOSS_NAMES["黑女巫法琳娜"] ) then
if ( not CT_RABoss_Mods["黑女巫法琳娜"]["lastAction"] or (GetTime() - CT_RABoss_Mods["黑女巫法琳娜"]["lastAction"] > 90) ) then
CT_RABoss_Faerlina_Reset();
end
if ( string.find(arg1, CT_RABOSS_FAERLINA_YELL1_DETECT) or string.find(arg1, CT_RABOSS_FAERLINA_YELL2_DETECT) or string.find(arg1, CT_RABOSS_FAERLINA_YELL3_DETECT) or string.find(arg1, CT_RABOSS_FAERLINA_YELL4_DETECT) ) then
if ( not CT_RABoss_Mods["黑女巫法琳娜"]["engaged"] ) then
CT_RABoss_Faerlina_Schedule(60);
CT_RABoss_VisualTimer.addTimer("FaerlinaEnrage", 60, CT_RABOSS_FAERLINA_ENRAGE_TIMER, "red");
CT_RABoss_Mods["黑女巫法琳娜"]["engaged"] = 1;
CT_RABoss_Mods["黑女巫法琳娜"]["enraged"] = nil;
CT_RABoss_Mods["黑女巫法琳娜"]["silenced"] = nil;
else
CT_RABoss_Announce(CT_RABOSS_FAERLINA_ENRAGE_ALERT, CT_RABoss_Mods["黑女巫法琳娜"]["announce"]);
CT_RABoss_PlaySound(2);
CT_RABoss_Mods["黑女巫法琳娜"]["enrageTimer"] = GetTime();
CT_RABoss_Mods["黑女巫法琳娜"]["enraged"] = 1;
CT_RABoss_Mods["黑女巫法琳娜"]["silenced"] = nil;
CT_RABoss_Faerlina_UnSchedule();
end
end
elseif ( event == "CHAT_MSG_SPELL_PERIODIC_CREATURE_DAMAGE" and string.find(arg1, CT_RABOSS_FAERLINA_EMBRACE_DETECT) ) then
if ( not CT_RABoss_Mods["黑女巫法琳娜"]["silenced"] ) then
CT_RABoss_Schedule("CT_RABoss_Faerlina_EventHandler", 5, "silence");
local enrageDiff = 60;
CT_RABoss_Mods["黑女巫法琳娜"]["silenced"] = 1;
CT_RABoss_Mods["黑女巫法琳娜"]["engaged"] = 1;
if ( CT_RABoss_Mods["黑女巫法琳娜"]["enraged"] ) then
enrageDiff = 60 - (GetTime() - CT_RABoss_Mods["黑女巫法琳娜"]["enrageTimer"]);
CT_RABoss_Announce(CT_RABOSS_FAERLINA_ENRAGE_SILENCED_ALERT, CT_RABoss_Mods["黑女巫法琳娜"]["announce"]);
CT_RABoss_Faerlina_Schedule(enrageDiff);
CT_RABoss_VisualTimer.addTimer("FaerlinaEnrage", enrageDiff, CT_RABOSS_FAERLINA_ENRAGE_TIMER, "red");
CT_RABoss_PlaySound(3);
CT_RABoss_Mods["黑女巫法琳娜"]["enraged"] = nil;
else
CT_RABoss_Announce(CT_RABOSS_FAERLINA_SILENCED_ALERT, CT_RABoss_Mods["黑女巫法琳娜"]["announce"]);
CT_RABoss_PlaySound(3);
CT_RABoss_Faerlina_UnSchedule()
CT_RABoss_Faerlina_Schedule(30);
CT_RABoss_VisualTimer.addTimer("FaerlinaEnrage", 30, CT_RABOSS_FAERLINA_ENRAGE_TIMER, "red");
end
end
elseif ( event == "silence") then
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -