⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 naxxramas.lua

📁 时间太紧了
💻 LUA
📖 第 1 页 / 共 5 页
字号:
	-- 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 + -