📄 ahnqiraj.lua
字号:
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 + -