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

📄 ahnqiraj.lua

📁 时间太紧了
💻 LUA
📖 第 1 页 / 共 4 页
字号:

function CT_RABoss_Mindslayer_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_PERIODIC_SELF_DAMAGE" or event == "CHAT_MSG_SPELL_PERIODIC_FRIENDLYPLAYER_DAMAGE" or event == "CHAT_MSG_SPELL_PERIODIC_PARTY_DAMAGE" ) then
		local _, _, playerName, playerType = string.find(arg1, CT_RABOSS_MINDSLAYER_MINDFLAY_DETECT);

		if ( playerName and playerType) then
			if ( playerType == CT_RABOSS_SELF2 and playerName == CT_RABOSS_SELF1 ) then
				playerName = UnitName("player");
			end

			CT_RABoss_PlaySound(2);
			CT_RABoss_Announce(string.format(CT_RABOSS_MINDSLAYER_MINDFLAY_ALERT, playerName), CT_RABoss_Mods["其拉洗脑者"]["announce"]);
		end
	end
end


-- C'Thun
function CT_RABoss_CThun_Reset()
	CT_RABoss_SetVar("克苏恩", "fight", nil);
	CT_RABoss_SetVar("克苏恩", "phase", 1);
	CT_RABoss_SetVar("克苏恩", "type", nil);

	CT_RABoss_UnSchedule("CT_RABoss_CThun_EventHandler");
	CT_RABoss_VisualTimer.removeTimer("CThunTentakle");
	CT_RABoss_VisualTimer.removeTimer("CThunDarkGlare");
	CT_RABoss_VisualTimer.removeTimer("CThunGiantTentacle");
end

function CT_RABoss_CThun_OnLoad()
	CT_RABoss_AddMod("克苏恩", CT_RABOSS_CTHUN_INFO, 1, CT_RABOSS_LOCATIONS_AHNQIRAJ);

	CT_RABoss_AddEvent("克苏恩", "CHAT_MSG_ADDON", CT_RABoss_CThun_EventHandler);
	CT_RABoss_AddEvent("克苏恩", "PLAYER_ENTERING_WORLD", CT_RABoss_CThun_EventHandler);
	CT_RABoss_AddEvent("克苏恩", "PLAYER_REGEN_DISABLED", CT_RABoss_CThun_EventHandler);
	CT_RABoss_AddEvent("克苏恩", "CHAT_MSG_MONSTER_EMOTE", CT_RABoss_CThun_EventHandler);
	CT_RABoss_AddEvent("克苏恩", "CHAT_MSG_COMBAT_HOSTILE_DEATH", CT_RABoss_CThun_EventHandler);
	CT_RABoss_AddEvent("克苏恩", "CHAT_MSG_SPELL_CREATURE_VS_CREATURE_DAMAGE", CT_RABoss_CThun_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("/cthunstop", CT_RABOSS_CMD_CTHUNSTOP, 30, "CTHUNSTOP", function()
		CT_RABoss_CThun_Reset();
		if ( CT_RA_Level >= 1 ) then
			CT_RA_SendMessage("CTHUNDIESYNCHRO");
		end
	end, "/cthunstop");

	CT_RA_RegisterSlashCmd("/cthunstart", CT_RABOSS_CMD_CTHUNSTART, 30, "CTHUNSTART", function()
		CT_RABoss_CThun_Start();
	end, "/cthunstart");
	CT_RABoss_SetVar("克苏恩", "fight", nil);
	CT_RABoss_SetVar("克苏恩", "phase", 1);
end

function CT_RABoss_CThun_Start()
	CT_RABoss_SetVar("克苏恩", "fight", 1);
	CT_RABoss_SetVar("克苏恩", "phase", 1);

	CT_RABoss_Announce(CT_RABOSS_CTHUN_START_ALERT, CT_RABoss_Mods["克苏恩"]["announce"]);
	CT_RABoss_Schedule("CT_RABoss_CThun_EventHandler", 40, "tentacle5");
	CT_RABoss_Schedule("CT_RABoss_CThun_EventHandler", 43, "darkglare5");
	CT_RABoss_VisualTimer.addTimer("CThunTentakle", 45, CT_RABOSS_CTHUN_TENTAKLE_TIMER);
	CT_RABoss_VisualTimer.addTimer("CThunDarkGlare", 48, CT_RABOSS_CTHUN_DARKGLARE_TIMER);
end

function CT_RABoss_CThun_Phase2()
	CT_RABoss_SetVar("克苏恩", "phase", 2);
	CT_RABoss_SetVar("克苏恩", "type", 1);

	CT_RABoss_Announce(CT_RABOSS_CTHUN_PHASE2_ALERT, CT_RABoss_Mods["克苏恩"]["announce"]);
	CT_RABoss_UnSchedule("CT_RABoss_CThun_EventHandler");
	CT_RABoss_Schedule("CT_RABoss_CThun_EventHandler", 35, "tentacle5");
	CT_RABoss_Schedule("CT_RABoss_CThun_EventHandler", 5, "gianttentacle5");
	CT_RABoss_VisualTimer.removeTimer("CThunTentakle");
	CT_RABoss_VisualTimer.removeTimer("CThunDarkGlare");
	CT_RABoss_VisualTimer.addTimer("CThunTentakle", 40, CT_RABOSS_CTHUN_TENTAKLE_TIMER);
	CT_RABoss_VisualTimer.addTimer("CThunGiantTentacle", 10, CT_RABOSS_CTHUN_GIANTTENTACLE[CT_RABoss_Mods["克苏恩"]["type"]], "orange");
end

function CT_RABoss_CThun_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 == "PLAYER_REGEN_DISABLED" and not CT_RABoss_Mods["克苏恩"]["fight"] ) then
		if ( UnitExists("target") and UnitName("target") == CT_RABOSS_CTHUN_BOSSNAME_PHASE1 ) then
			CT_RABoss_CThun_Start();

			if ( CT_RA_Level >= 1 ) then
				CT_RA_SendMessage("CTHUNSTARTSYNCHRO");
			end
		end
	end

	-- Eye tentacle pop alert
	if ( event == "tentacle" ) then
		if ( CT_RABoss_Mods["克苏恩"]["phase"] == 2 ) then
		CT_RABoss_Announce(CT_RABOSS_CTHUN_TENTACLE_ALERT, CT_RABoss_Mods["克苏恩"]["announce"]);
		end

		-- Phase 1 => 45 sec
		if ( CT_RABoss_Mods["克苏恩"]["phase"] == 1 ) then
			CT_RABoss_Schedule("CT_RABoss_CThun_EventHandler", 40, "tentacle5");
			CT_RABoss_VisualTimer.addTimer("CThunTentakle", 45, CT_RABOSS_CTHUN_TENTAKLE_TIMER);

		-- Phase 2 => 30 sec
		elseif ( CT_RABoss_Mods["克苏恩"]["phase"] == 2 ) then
			CT_RABoss_Schedule("CT_RABoss_CThun_EventHandler", 25, "tentacle5");
			CT_RABoss_VisualTimer.addTimer("CThunTentakle", 30, CT_RABOSS_CTHUN_TENTAKLE_TIMER);
		end

	-- Eye tentacle 5sec prealert
	elseif ( event == "tentacle5" ) then
		if ( CT_RABoss_Mods["克苏恩"]["phase"] == 2 ) then
		CT_RABoss_Announce(format(CT_RABOSS_CTHUN_TENTACLE_PREALERT, "5"), CT_RABoss_Mods["克苏恩"]["announce"]);
		end
		CT_RABoss_Schedule("CT_RABoss_CThun_EventHandler", 5, "tentacle");
	end

	-- Darkglare pop alert
	if ( event == "darkglare" and CT_RABoss_Mods["克苏恩"]["phase"] == 1 ) then
		CT_RABoss_Announce(CT_RABOSS_CTHUN_DARKGLARE_ALERT, CT_RABoss_Mods["克苏恩"]["announce"]);
		CT_RABoss_Schedule("CT_RABoss_CThun_EventHandler", 28, "darkglareEnd10");
		CT_RABoss_Schedule("CT_RABoss_CThun_EventHandler", 38, "darkglareEnd");
		CT_RABoss_Schedule("CT_RABoss_CThun_EventHandler", 81, "darkglare5");
		CT_RABoss_VisualTimer.addTimer("CThunDarkGlare", 38, CT_RABOSS_CTHUN_DARKGLARE_TIMER, "orange");

	-- Darkglare 5sec prealert
	elseif ( event == "darkglare5" and CT_RABoss_Mods["克苏恩"]["phase"] == 1 ) then
		CT_RABoss_Announce(format(CT_RABOSS_CTHUN_DARKGLARE_PREALERT, "5"), CT_RABoss_Mods["克苏恩"]["announce"]);
		CT_RABoss_Schedule("CT_RABoss_CThun_EventHandler", 5, "darkglare");

		local CThunTarget = nil;
		
		-- Get name and raid group of CThun's target before Dark Glare cast
		for i = 1, GetNumRaidMembers(), 1 do
			name, _, subgroup, _, _, _, _, _ = GetRaidRosterInfo(i);
			if ( UnitExists("raid"..i.."target") and UnitName("raid"..i.."target") == CT_RABOSS_CTHUN_BOSSNAME_PHASE1 ) then
				CThunTarget = UnitName("raid"..i.."targettarget")
				break;
			end
		end
		
		if ( CThunTarget and subgroup ) then
			CT_RABoss_Announce(format(CT_RABOSS_CTHUN_DARKGLARE_ONGROUP, subgroup.."("..CThunTarget..")"), CT_RABoss_Mods["克苏恩"]["announce"]);
		end

	-- Darkglare 5sec until end
	elseif ( event == "darkglareEnd10" and CT_RABoss_Mods["克苏恩"]["phase"] == 1 ) then
		CT_RABoss_Announce(CT_RABOSS_CTHUN_DARKGLARE_END_PREALERT, CT_RABoss_Mods["克苏恩"]["announce"]);

	-- Darkglare end
	elseif ( event == "darkglareEnd" and CT_RABoss_Mods["克苏恩"]["phase"] == 1 )then
		CT_RABoss_Announce(CT_RABOSS_CTHUN_DARKGLARE_END_ALERT, CT_RABoss_Mods["克苏恩"]["announce"]);
		CT_RABoss_VisualTimer.addTimer("CThunDarkGlare", 48, CT_RABOSS_CTHUN_DARKGLARE_TIMER);
	end
	
	if ( event == "gianttentacle") then
		CT_RABoss_Announce(format(CT_RABOSS_CTHUN_GIANTTENTACLE_ALERT, CT_RABOSS_CTHUN_GIANTTENTACLE[CT_RABoss_Mods["克苏恩"]["type"]]), CT_RABoss_Mods["克苏恩"]["announce"]);
		CT_RABoss_Schedule("CT_RABoss_CThun_EventHandler", 25, "gianttentacle5");
		if ( CT_RABoss_Mods["克苏恩"]["type"] == 1) then
			CT_RABoss_SetVar("克苏恩", "type", 2);
		else
			CT_RABoss_SetVar("克苏恩", "type", 1);
		end
		CT_RABoss_VisualTimer.addTimer("CThunGiantTentacle", 30, CT_RABOSS_CTHUN_GIANTTENTACLE[CT_RABoss_Mods["克苏恩"]["type"]], "orange");
	elseif ( event == "gianttentacle5" ) then
		CT_RABoss_Announce(format(CT_RABOSS_CTHUN_GIANTTENTACLE_PREALERT, "5", CT_RABOSS_CTHUN_GIANTTENTACLE[CT_RABoss_Mods["克苏恩"]["type"]]), CT_RABoss_Mods["克苏恩"]["announce"]);
		CT_RABoss_Schedule("CT_RABoss_CThun_EventHandler", 5, "gianttentacle");
	end

	-- Phase 2 begin
	if ( event == "CHAT_MSG_COMBAT_HOSTILE_DEATH") then
		if ( arg1 == CT_RABOSS_CTHUN_PHASE1_DIE_DETECT ) then
		CT_RABoss_CThun_Phase2();
			if ( CT_RA_Level >= 1 ) then
				CT_RA_SendMessage("CTHUNPHASE2SYNCHRO");
			end
		elseif ( arg1 == CT_RABOSS_CTHUN_PHASE2_DIE_DETECT ) then
			CT_RABoss_CThun_Reset();
		if ( CT_RA_Level >= 1 ) then
				CT_RA_SendMessage("CTHUNDIESYNCHRO");
			end
		end
	end

	-- Phase 1&2 begin by synchronisation
	if ( event == "CHAT_MSG_ADDON" and arg1 == "CTRA_BOSS" and arg3 == "RAID" ) then
		if ( arg2 == "CTHUNSTARTSYNCHRO" and not CT_RABoss_Mods["克苏恩"]["fight"] ) then
			CT_RABoss_CThun_Start();
		elseif ( arg2 == "CTHUNPHASE2SYNCHRO" and CT_RABoss_Mods["克苏恩"]["phase"] == 1 ) then
			CT_RABoss_CThun_Phase2();
		elseif ( arg2 == "CTHUNDIESYNCHRO" ) then
			CT_RABoss_CThun_Reset();
		end
	end

	-- C'Thun weakened
	if ( event == "CHAT_MSG_MONSTER_EMOTE" and string.find(arg1, CT_RABOSS_CTHUN_WEAKENED_DETECT) ) then
		CT_RABoss_UnSchedule("CT_RABoss_CThun_EventHandler");
		CT_RABoss_VisualTimer.removeTimer("CThunTentakle");
		CT_RABoss_VisualTimer.removeTimer("CThunGiantTentacle");
		CT_RABoss_Announce(CT_RABOSS_CTHUN_WEAK_ALERT, CT_RABoss_Mods["克苏恩"]["announce"]);
		CT_RABoss_Schedule("CT_RABoss_CThun_EventHandler", 35, "invul10");
		CT_RABoss_VisualTimer.addTimer("CThunWeakened", 45, CT_RABOSS_CTHUN_WEAKENED_TIMER);
		CT_RABoss_SetVar("克苏恩", "type", 1);

	-- C'Thun weakened end 10 sec
	elseif ( event == "invul10" ) then
		CT_RABoss_Announce(CT_RABOSS_CTHUN_INVUL_PREALERT, CT_RABoss_Mods["克苏恩"]["announce"]);
		CT_RABoss_Schedule("CT_RABoss_CThun_EventHandler", 10, "invul");

	-- C'Thun weakened end
	elseif ( event == "invul" ) then
		CT_RABoss_Announce(CT_RABOSS_CTHUN_INVUL_ALERT, CT_RABoss_Mods["克苏恩"]["announce"]);
		CT_RABoss_Schedule("CT_RABoss_CThun_EventHandler", 32, "tentacle5");
		CT_RABoss_Schedule("CT_RABoss_CThun_EventHandler", 2, "gianttentacle5");
		CT_RABoss_VisualTimer.addTimer("CThunTentakle", 37, CT_RABOSS_CTHUN_TENTAKLE_TIMER);
		CT_RABoss_VisualTimer.addTimer("CThunGiantTentacle", 7, CT_RABOSS_CTHUN_GIANTTENTACLE[CT_RABoss_Mods["克苏恩"]["type"]], "orange");
	end

	if ( event == "CHAT_MSG_SPELL_CREATURE_VS_CREATURE_DAMAGE" and arg1 == CT_RABOSS_CTHUN_EYE_BEAM_DETECT ) then
		CT_RABoss_Announce(CT_RABOSS_CTHUN_EYE_BEAM_ALERT, CT_RABoss_Mods["克苏恩"]["announce"]);
	end
	-- Reseting mod when zoning
	if ( event == "PLAYER_ENTERING_WORLD" ) then
		CT_RABoss_CThun_Reset();
	end
end

⌨️ 快捷键说明

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