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

📄 naxxramas.lua

📁 时间太紧了
💻 LUA
📖 第 1 页 / 共 5 页
字号:
	CT_RABoss_AddEvent("教官拉苏维奥斯", "CHAT_MSG_SPELL_CREATURE_VS_PARTY_DAMAGE", CT_RABoss_Razuvious_EventHandler);
	CT_RABoss_AddEvent("教官拉苏维奥斯", "CHAT_MSG_COMBAT_CREATURE_VS_CREATURE_HITS", CT_RABoss_Razuvious_EventHandler);
	CT_RABoss_AddEvent("教官拉苏维奥斯", "CHAT_MSG_COMBAT_CREATURE_VS_PARTY_HITS", CT_RABoss_Razuvious_EventHandler);
	CT_RABoss_AddEvent("教官拉苏维奥斯", "CHAT_MSG_COMBAT_CREATURE_VS_SELF_HITS", CT_RABoss_Razuvious_EventHandler);
	CT_RABoss_AddEvent("教官拉苏维奥斯", "CHAT_MSG_MONSTER_YELL", CT_RABoss_Razuvious_EventHandler);
	CT_RABoss_AddEvent("教官拉苏维奥斯", "CHAT_MSG_COMBAT_HOSTILE_DEATH", CT_RABoss_Razuvious_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("/razustop", CT_RABOSS_CMD_RAZUSTOP, 30, "RAZUSTOP", function()
		CT_RABoss_Razuvious_Stop();
	end, "/razustop");
end

function CT_RABoss_Razuvious_ShoutCast()
	CT_RABoss_Schedule("CT_RABoss_Razuvious_EventHandler", 15, "shoutPreWarn10");

	CT_RABoss_Announce(format(CT_RABOSS_RAZUVIOUS_SHOUT_PREALERT, "25"), CT_RABoss_Mods["教官拉苏维奥斯"]["announce"]);
	CT_RABoss_PlaySound(2);
	CT_RABoss_Mods["教官拉苏维奥斯"]["combat"] = 1;
end

function CT_RABoss_Razuvious_EventHandler(event)
	if ( not CT_RABoss_Mods["教官拉苏维奥斯"] or not CT_RABoss_Mods["教官拉苏维奥斯"]["status"] or not CT_RABoss_Mods["教官拉苏维奥斯"].enabled ) then
		return;
	end

	-- Encounter begin
	if ( event == "CHAT_MSG_MONSTER_YELL" and arg2 == CT_RABOSS_NAMES["教官拉苏维奥斯"] and not CT_RABoss_Mods["教官拉苏维奥斯"]["combat"] ) then
		if ( string.find(arg1, CT_RABOSS_RAZUVIOUS_YELL1_DETECT) or string.find(arg1, CT_RABOSS_RAZUVIOUS_YELL2_DETECT) or string.find(arg1, CT_RABOSS_RAZUVIOUS_YELL3_DETECT) or string.find(arg1, CT_RABOSS_RAZUVIOUS_YELL4_DETECT) ) then
			CT_RABoss_Mods["教官拉苏维奥斯"]["lastAction"] = GetTime();
			CT_RABoss_Razuvious_ShoutCast();
		end
	end
	
	-- Disrupting Shout detected
	if ( event == "CHAT_MSG_SPELL_CREATURE_VS_SELF_DAMAGE" or event == "CHAT_MSG_SPELL_CREATURE_VS_CREATURE_DAMAGE" or event == "CHAT_MSG_SPELL_CREATURE_VS_PARTY_DAMAGE" ) then
		if ( string.find(arg1, CT_RABOSS_RAZUVIOUS_SHOUT_DETECT) and not CT_RABoss_Mods["教官拉苏维奥斯"]["shoutTrip"] ) then
			CT_RABoss_Mods["教官拉苏维奥斯"]["shoutTrip"] = 1;
			CT_RABoss_Mods["教官拉苏维奥斯"]["lastAction"] = GetTime();

			CT_RABoss_UnSchedule("CT_RABoss_Razuvious_EventHandler", "shoutPreWarn10");
			CT_RABoss_UnSchedule("CT_RABoss_Razuvious_EventHandler", "shoutPreWarn5");
			CT_RABoss_UnSchedule("CT_RABoss_Razuvious_EventHandler", "shoutWarn");

			CT_RABoss_Razuvious_ShoutCast();
		end

	-- Disrupting Shout 10sec pre-alert
	elseif ( event == "shoutPreWarn10" ) then
		CT_RABoss_Mods["教官拉苏维奥斯"]["shoutTrip"] = nil;
		CT_RABoss_Schedule("CT_RABoss_Razuvious_EventHandler", 5, "shoutPreWarn5");
		CT_RABoss_Announce(format(CT_RABOSS_RAZUVIOUS_SHOUT_PREALERT, "10"), CT_RABoss_Mods["教官拉苏维奥斯"]["announce"]);

	-- Disrupting Shout 5sec pre-alert
	elseif ( event == "shoutPreWarn5" ) then
		CT_RABoss_Schedule("CT_RABoss_Razuvious_EventHandler", 5, "shoutWarn");
		CT_RABoss_Announce(format(CT_RABOSS_RAZUVIOUS_SHOUT_PREALERT, "5"), CT_RABoss_Mods["教官拉苏维奥斯"]["announce"]);

	-- Disrupting Shout alert
	elseif ( event == "shoutWarn" ) then
		CT_RABoss_Razuvious_ShoutCast();
	end

	-- Encounter end
	if ( event == "CHAT_MSG_COMBAT_HOSTILE_DEATH" and string.find(arg1, CT_RABOSS_RAZUVIOUS_DEATH_DETECT) ) then
		CT_RABoss_Razuvious_Stop();
	end

	if ( event == "CHAT_MSG_COMBAT_CREATURE_VS_CREATURE_HITS" or event == "CHAT_MSG_COMBAT_CREATURE_VS_PARTY_HITS" or event == "CHAT_MSG_COMBAT_CREATURE_VS_SELF_HITS" ) then
		if ( string.find(arg1, CT_RABOSS_NAMES["教官拉苏维奥斯"]) or string.find(arg1, CT_RABOSS_RAZUVIOUS_STUDENT_NAME) ) then
			CT_RABoss_Mods["教官拉苏维奥斯"]["lastAction"] = GetTime();
		end
	end

	if ( CT_RABoss_Mods["教官拉苏维奥斯"]["lastAction"] and (GetTime() - CT_RABoss_Mods["教官拉苏维奥斯"]["lastAction"]) > 20 ) then
		CT_RABoss_Razuvious_Stop();
	end
end


-- Gothik the Harvester (19/08/2006) - Changed naming.
function CT_RABoss_MRGothik_OnLoad()
	CT_RABoss_AddMod("收割者戈提克", CT_RABOSS_MRGOTHIK_INFO, 1, CT_RABOSS_LOCATIONS_NAXXRAMAS);
	CT_RABoss_AddEvent("收割者戈提克", "CHAT_MSG_MONSTER_YELL", CT_RABoss_MRGothik_EventHandler);
	CT_RABoss_AddEvent("收割者戈提克", "CHAT_MSG_COMBAT_HOSTILE_DEATH", CT_RABoss_MRGothik_EventHandler);

	CT_RABoss_AddDropDownButton("收割者戈提克", { CT_RABOSS_ANNOUNCE, CT_RABOSS_ANNOUNCE_INFO .. CT_RABOSS_REQ_LEADER_OR_PROM }, "CT_RABoss_ModInfo", "announce", "CT_RABoss_SetInfo");
end

function CT_RABoss_MRGothik_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" ) then
		if ( string.find(arg1, CT_RABOSS_MRGOTHIK_PHASE1_YELL1) ) then
			CT_RABoss_Announce(CT_RABOSS_MRGOTHIK_ENGAGED, CT_RABoss_Mods["收割者戈提克"]["announce"]);
			CT_RABoss_PlaySound(3);
			CT_RABoss_Schedule("CT_RABoss_MRGothik_EventHandler", 34, "inctimer");
			CT_RABoss_Schedule("CT_RABoss_MRGothik_EventHandler", 24, "inctrainee");
			CT_RABoss_Schedule("CT_RABoss_MRGothik_EventHandler", 74, "incknight");
			CT_RABoss_Schedule("CT_RABoss_MRGothik_EventHandler", 134, "incrider");
			CT_RABoss_Mods["收割者戈提克"]["timeleft"] = 4;
			CT_RABoss_Mods["收割者戈提克"]["stoptimer"] = false;
			CT_RABoss_Mods["收割者戈提克"]["lastaction"] = time();

			if ( CT_RA_Level >= 1 and CT_RABoss_Mods["收割者戈提克"]["announce"] ) then
				CT_RA_SendMessage(format(CT_RABOSS_MRMUKKA_STRING, "1", "20", CT_RABOSS_MRGOTHIK_TRAINEES, "20", "0*255*0"));
				CT_RA_SendMessage(format(CT_RABOSS_MRMUKKA_STRING, "2", "20", CT_RABOSS_MRGOTHIK_KNIGHTS, "70", "0*0*255"));
				CT_RA_SendMessage(format(CT_RABOSS_MRMUKKA_STRING, "3", "20", CT_RABOSS_MRGOTHIK_RIDERS, "130", "255*0*0"));
			end

		elseif ( arg1 == CT_RABOSS_MRGOTHIK_PHASE2_YELL1 ) then
			CT_RABoss_Announce(CT_RABOSS_MRGOTHIK_INC, CT_RABoss_Mods["收割者戈提克"]["announce"]);
			CT_RABoss_PlaySound(2);
			CT_RABoss_Mods["收割者戈提克"]["stoptimer"] = true;
		end
	
	elseif ( event == "CHAT_MSG_COMBAT_HOSTILE_DEATH" ) then
		if ( string.find(arg1, CT_RABOSS_MRGOTHIK_TRAINEE) ) then
			CT_RABoss_Mods["收割者戈提克"]["lastaction"] = time();

		elseif ( string.find(arg1, CT_RABOSS_MRGOTHIK_KNIGHT) ) then
			CT_RABoss_Announce(CT_RABOSS_MRGOTHIK_KNIGHT_DEAD, CT_RABoss_Mods["收割者戈提克"]["announce"]);
			CT_RABoss_Mods["收割者戈提克"]["lastaction"] = time();

		elseif ( string.find(arg1, CT_RABOSS_MRGOTHIK_RIDER) ) then
			CT_RABoss_Announce(CT_RABOSS_MRGOTHIK_RIDER_DEAD, CT_RABoss_Mods["收割者戈提克"]["announce"]);
			CT_RABoss_Mods["收割者戈提克"]["lastaction"] = time();
		end

	elseif ( event == "inctimer") then
		if ( not CT_RABoss_Mods["收割者戈提克"]["lastaction"] or ( time() - CT_RABoss_Mods["收割者戈提克"]["lastaction"] ) > 45 ) then
			CT_RABoss_Mods["收割者戈提克"]["stoptimer"] = true;

		elseif ( CT_RABoss_Mods["收割者戈提克"]["timeleft"] == 0.5 ) then
			CT_RABoss_Schedule("CT_RABoss_MRGothik_EventHandler", 20, "inc10");
			CT_RABoss_Announce(format(CT_RABOSS_MRGOTHIK_SECWARN, "30"), CT_RABoss_Mods["收割者戈提克"]["announce"]);
			CT_RABoss_PlaySound(3);
		else
			if ( CT_RABoss_Mods["收割者戈提克"]["timeleft"] == 1 ) then
				CT_RABoss_Announce(CT_RABOSS_MRGOTHIK_1MINWARN, CT_RABoss_Mods["收割者戈提克"]["announce"]);
			else
				CT_RABoss_Announce(format(CT_RABOSS_MRGOTHIK_WARN, CT_RABoss_Mods["收割者戈提克"]["timeleft"]), CT_RABoss_Mods["收割者戈提克"]["announce"]);
			end

			CT_RABoss_Mods["收割者戈提克"]["timeleft"] = CT_RABoss_Mods["收割者戈提克"]["timeleft"]-0.5;
			CT_RABoss_Schedule("CT_RABoss_MRGothik_EventHandler", 30, "inctimer");
			CT_RABoss_PlaySound(3);
		end

	elseif ( event == "inctrainee" and not CT_RABoss_Mods["收割者戈提克"]["stoptimer"] ) then
		CT_RABoss_Announce(format(CT_RABOSS_MRGOTHIK_ADD_INC, CT_RABOSS_MRGOTHIK_TRAINEES), CT_RABoss_Mods["收割者戈提克"]["announce"]);
		CT_RABoss_PlaySound(3);
		CT_RABoss_Schedule("CT_RABoss_MRGothik_EventHandler", 20, "inctrainee");

		if ( CT_RA_Level >= 1 and CT_RABoss_Mods["收割者戈提克"]["announce"] ) then
			CT_RA_SendMessage(format(CT_RABOSS_MRMUKKA_STRING, "1", "20", CT_RABOSS_MRGOTHIK_TRAINEES, "20", "0*255*0"));
		end

	elseif ( event == "incknight" and not CT_RABoss_Mods["收割者戈提克"]["stoptimer"] ) then
		CT_RABoss_Announce(format(CT_RABOSS_MRGOTHIK_ADD_INC, CT_RABOSS_MRGOTHIK_KNIGHTS), CT_RABoss_Mods["收割者戈提克"]["announce"]);
		CT_RABoss_PlaySound(3);
		CT_RABoss_Schedule("CT_RABoss_MRGothik_EventHandler", 25, "incknight");

		if ( CT_RA_Level >= 1 and CT_RABoss_Mods["收割者戈提克"]["announce"] ) then
			CT_RA_SendMessage(format(CT_RABOSS_MRMUKKA_STRING, "2", "25", CT_RABOSS_MRGOTHIK_KNIGHTS, "25", "0*0*255"));
		end

	elseif ( event == "incrider" and not CT_RABoss_Mods["收割者戈提克"]["stoptimer"] ) then
		CT_RABoss_Announce(format(CT_RABOSS_MRGOTHIK_ADD_INC, CT_RABOSS_MRGOTHIK_RIDERS), CT_RABoss_Mods["收割者戈提克"]["announce"]);
		CT_RABoss_PlaySound(3);
		CT_RABoss_Schedule("CT_RABoss_MRGothik_EventHandler", 30, "incrider");

		if ( CT_RA_Level >= 1 and CT_RABoss_Mods["收割者戈提克"]["announce"] ) then
			CT_RA_SendMessage(format(CT_RABOSS_MRMUKKA_STRING, "3", "30", CT_RABOSS_MRGOTHIK_RIDERS, "30", "255*0*0"));
		end

	elseif ( event == "inc10" ) then
		CT_RABoss_Announce(format(CT_RABOSS_MRGOTHIK_SECWARN, "10"), CT_RABoss_Mods["收割者戈提克"]["announce"]);
		CT_RABoss_PlaySound(3);

	end
end

-- The Four Horsemen (21/09/2006) - Updated code.
function CT_RABoss_MRHorsemen_OnLoad()
	CT_RABoss_AddMod("死亡骑士", CT_RABOSS_MRHORSEMEN_INFO, 1, CT_RABOSS_LOCATIONS_NAXXRAMAS);
	CT_RABoss_AddEvent("死亡骑士", "CHAT_MSG_SPELL_PERIODIC_CREATURE_BUFFS", CT_RABoss_MRHorsemen_EventHandler);
	CT_RABoss_AddEvent("死亡骑士", "CHAT_MSG_SPELL_CREATURE_VS_CREATURE_BUFF", CT_RABoss_MRHorsemen_EventHandler);
	CT_RABoss_AddEvent("死亡骑士", "CHAT_MSG_SPELL_CREATURE_VS_CREATURE_DAMAGE", CT_RABoss_MRHorsemen_EventHandler);
	CT_RABoss_AddEvent("死亡骑士", "CHAT_MSG_SPELL_PERIODIC_SELF_DAMAGE", CT_RABoss_MRHorsemen_EventHandler);
	CT_RABoss_AddEvent("死亡骑士", "CHAT_MSG_SPELL_PERIODIC_FRIENDLYPLAYER_DAMAGE", CT_RABoss_MRHorsemen_EventHandler);
	CT_RABoss_AddEvent("死亡骑士", "CHAT_MSG_SPELL_PERIODIC_PARTY_DAMAGE", CT_RABoss_MRHorsemen_EventHandler);

	CT_RABoss_AddDropDownButton("死亡骑士", { CT_RABOSS_ANNOUNCE, CT_RABOSS_ANNOUNCE_INFO .. CT_RABOSS_REQ_LEADER_OR_PROM }, "CT_RABoss_ModInfo", "announce", "CT_RABoss_SetInfo");
end

function CT_RABoss_MRHorsemen_Start()
	CT_RABoss_Announce(CT_RABOSS_MRHORSEMEN_ENGAGE, CT_RABoss_Mods["死亡骑士"]["announce"]);
	CT_RABoss_PlaySound(3);
	CT_RABoss_Mods["死亡骑士"]["engaged"] = true;
	CT_RABoss_Mods["死亡骑士"]["marks"] = 1;
	CT_RABoss_Mods["死亡骑士"]["lastaction"] = time();
	CT_RABoss_Schedule("CT_RABoss_MRHorsemen_EventHandler", 7, "mark5");

	if ( CT_RA_Level >= 1 and CT_RABoss_Mods["死亡骑士"]["announce"] ) then
		CT_RA_SendMessage(format(CT_RABOSS_MRMUKKA_STRING, "1", "12", CT_RABOSS_MRHORSEMEN_MARK, "12", "255*0*0"));
	end
end

function CT_RABoss_MRHorsemen_EventHandler(event)

	if ( CT_RABoss_Mods["死亡骑士"] and ( not CT_RABoss_Mods["死亡骑士"]["lastaction"] or ( time() - CT_RABoss_Mods["死亡骑士"]["lastaction"] ) > 60 ) ) then
		CT_RABoss_Mods["死亡骑士"]["engaged"] = false;
	end

	if ( event == "CHAT_MSG_SPELL_PERIODIC_SELF_DAMAGE" or event == "CHAT_MSG_SPELL_PERIODIC_PARTY_DAMAGE" ) then
		if ( string.find(arg1, CT_RABOSS_MRHORSEMEN_MARKSTRING) ) then
			if ( not CT_RABoss_Mods["死亡骑士"]["engaged"] ) then
				CT_RABoss_Mods["死亡骑士"]["engaged"] = true;
				CT_RABoss_Mods["死亡骑士"]["marks"] = 1;
			end

			CT_RABoss_Announce(format(CT_RABOSS_MRHORSEMEN_MARKNOW, CT_RABoss_Mods["死亡骑士"]["marks"]), CT_RABoss_Mods["死亡骑士"]["announce"]);
			CT_RABoss_PlaySound(2);
			CT_RABoss_Schedule("CT_RABoss_MRHorsemen_EventHandler", 7, "mark5");
			CT_RABoss_Mods["死亡骑士"]["marks"] = CT_RABoss_Mods["死亡骑士"]["marks"] + 1;

			if ( CT_RA_Level >= 1 and CT_RABoss_Mods["死亡骑士"]["announce"] ) then
				CT_RA_SendMessage(format(CT_RABOSS_MRMUKKA_STRING, "1", "12", CT_RABOSS_MRHORSEMEN_MARK, "12", "255*0*0"));
			end
		end

	elseif ( event == "CHAT_MSG_SPELL_CREATURE_VS_CREATURE_DAMAGE" or event == "CHAT_MSG_SPELL_CREATURE_VS_CREATURE_BUFF" ) then
		if ( string.find(arg1, CT_RABOSS_MRHORSEMEN_VOIDSTRING) ) then
			CT_RABoss_Announce(CT_RABOSS_MRHORSEMEN_VOIDWARN, CT_RABoss_Mods["死亡骑士"]["announce"]);
			CT_RABoss_PlaySound(3);
			CT_RABoss_Mods["死亡骑士"]["lastaction"] = time();

			if ( CT_RA_Level >= 1 and CT_RABoss_Mods["死亡骑士"]["announce"] ) then
				CT_RA_SendMessage(format(CT_RABOSS_MRMUKKA_STRING, "2", "12", CT_RABOSS_MRHORSEMEN_VOID, "12", "255*0*0"));
			end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -