Log In
Sign Up
Go Gold
Home
Forum
Mail
Downloads
Game Search
Macro Editor
Notes
Membership
mpg_endurance.lua - Quest File
General Info
Quest File
-- -- MPG Raid Trial General Notes -- 1 MPG_hate - The Mastery of Hate (Raid) -- 2 MPG_endurance - The Mastery of Endurance (Raid) -- 4 MPG_foresight - The Mastery of Foresight (Raid) -- 8 MPG_specialization - The Mastery of Specialization (Raid) -- 16 MPG_adaptation - The Mastery of Adaptation (Raid) -- 32 MPG_corruption - The Mastery of Corruption (Raid) -- -- Mobs -- 305007 Ansdaicher_the_Ancient -- 305008 Zellucheraz_the_Ancient -- 305009 a_dragorn_antagonist -- 305010 a_dragorn_champion -- 305011 a_dragorn_defender -- 305012 a_frantic_discordling -- 305013 a_muramite_sentinel -- -- [9:09 PM] huffin: 3to66 -- [9:09 PM] huffin: 5to -- [9:10 PM] huffin: 6 @ 55 -- [9:25 PM] huffin: 3:100-66/\5:66-40/\6:40-30/\7:30-0 -- [9:26 PM] huffin: endurance adds . repop every 3 min -- [9:29 PM] huffin: so no excuses now. every1 knows =p local event_started = false; local event_finished = false local instance_id; local this_bit = 2; local player_list; local boss_hp; local wave; local minute; function Boss_Spawn(e) event_started = false; event_finished = false instance_id = eq.get_zone_instance_id(); player_list = eq.get_characters_in_instance(instance_id); this_bit = 2; boss_hp = 100; wave = 0; minute = 0; end function start_timers() eq.set_timer('win', 20 * 60 * 1000); eq.set_timer('hp', 12 * 1000); eq.set_timer('minute', 60 * 1000); end function Start_Event(e) eq.spawn_condition('chamberse', instance_id, 2, 1 ); eq.spawn2(305006, 0, 0, 0, 0, 0, 0); -- NPC: #death_touch eq.get_entity_list():GetNPCByNPCTypeID(305007):SetNPCFactionID(79); eq.get_entity_list():GetNPCByNPCTypeID(305008):SetNPCFactionID(79); -- 24 Will Not Aggro -- 25 Immune to Aggro -- 35 No Harm from Players eq.get_entity_list():GetNPCByNPCTypeID(305007):SetSpecialAbility(SpecialAbility.immune_aggro, 0); eq.get_entity_list():GetNPCByNPCTypeID(305007):SetSpecialAbility(SpecialAbility.immune_aggro_on, 0); eq.get_entity_list():GetNPCByNPCTypeID(305007):SetSpecialAbility(SpecialAbility.no_harm_from_client, 0); eq.get_entity_list():GetNPCByNPCTypeID(305008):SetSpecialAbility(SpecialAbility.immune_aggro, 0); eq.get_entity_list():GetNPCByNPCTypeID(305008):SetSpecialAbility(SpecialAbility.immune_aggro_on, 0); eq.get_entity_list():GetNPCByNPCTypeID(305008):SetSpecialAbility(SpecialAbility.no_harm_from_client, 0); event_started = true; start_timers(); end function Boss_Say(e) if ( event_started ~= true ) then if ( e.message:findi("hail") ) then e.self:Say("This is the Mastery of Endurance trial. You must survive an endless onslaught of enemies for as long as necessary. Are you ready to [ " .. eq.say_link('begin', false, 'begin') .. " ]?"); elseif ( e.message:findi("begin") ) then local dz = eq.get_expedition() if dz.valid then dz:SetLocked(true, ExpeditionLockMessage.Begin, 14) -- live uses "Event Messages" type 365 (not in emu clients) dz:AddReplayLockout(eq.seconds("3h")) end e.self:Say("Very well! Let the battle commence!"); Start_Event(e); Spawn_Adds(); end end end function Boss_Signal(e) if ( e.signal == 1 ) then event_started = true; end end function Spawn_Adds() if (wave == nil) then wave = 0; end wave = wave + 1; -- Wave Number: -- 1: 3 adds 100-65 (1,3,6) -- 2: 5 adds 65-40 (4,5) -- 3: 6 adds 40-30 (2) -- 4: 7 adds 30-0 (center) -- [9:25 PM] huffin: 3:100-66/\5:66-40/\6:40-30/\7:30-0 -- [9:26 PM] huffin: endurance adds . repop every 3 min -- -- 1st LOC: -161, 386, 58, 146 -- 2nd LOC: -254, 389, 58, 115 -- 3rd LOC: -317, 319, 58, 82 -- 4th LOC: -318, 226, 58, 50 -- 5th LOC: -251, 161, 58, 16 -- 6th LOC: -157, 158, 58, 239 -- Center.: -204, 274, 66, 72 -- -- 305009 A Dragorn Antagonist (Level 68): needs to be rooted and/or off-tanked; -- 305010 A Dragorn Champion (Level 68): needs to be rooted and/or off-tanked; -- 305011 A Dragorn Defender (Level 68): needs to be mezzed (they come from the south)... if you can keep them mezzed, you can ignore them for the duration or at least until the other MOB's in the wave are dead; -- 305012 A Frantic Discordling (Level 68): needs to be off-tanked; -- 305013 A Muramite Sentinel (Level 68): needs to be off-tanked (they come from the center); -- local mobs = {305009,305010,305011,305012,305013}; local mob; if (wave == 1) then mob = mobs[math.random(1,table.getn(mobs))]; eq.spawn2(mob, 0, 0, -161, 386, 58, 292); mob = mobs[math.random(1,table.getn(mobs))]; eq.spawn2(mob, 0, 0, -157, 158, 58, 478); mob = mobs[math.random(1,table.getn(mobs))]; eq.spawn2(mob, 0, 0, -317, 319, 58, 164); elseif (wave == 2) then mob = mobs[math.random(1,table.getn(mobs))]; eq.spawn2(mob, 0, 0, -318, 226, 58, 100); mob = mobs[math.random(1,table.getn(mobs))]; eq.spawn2(mob, 0, 0, -251, 161, 58, 32); elseif (wave == 3) then mob = mobs[math.random(1,table.getn(mobs))]; eq.spawn2(mob, 0, 0, -254, 389, 58, 230); elseif (wave == 4) then mob = mobs[math.random(1,table.getn(mobs))]; eq.spawn2(mob, 0, 0, -204, 274, 66, 144); end end function Boss_Timer(e) if (e.timer == 'win') then eq.stop_all_timers(); Event_Win(e); elseif (e.timer == 'minute' and e.self:GetNPCTypeID() == 305007) then minute = minute + 1; -- eq.zone_emote(15, "Min: " .. minute); elseif (e.timer == 'hp' and e.self:GetNPCTypeID() == 305007) then -- Lower both Boss mobs hps by 1% boss_hp = boss_hp - 1; local new_hp = e.self:GetMaxHP() * (boss_hp/100); -- eq.zone_emote(15, e.self:GetNPCTypeID() .. " Boss HP PCT: " .. boss_hp .. " new_hp: " .. new_hp); eq.get_entity_list():GetNPCByNPCTypeID(305007):SetHP(new_hp); eq.get_entity_list():GetNPCByNPCTypeID(305008):SetHP(new_hp); if (tonumber(boss_hp) == 65) then Spawn_Adds(); elseif (tonumber(boss_hp) == 40) then Spawn_Adds(); elseif (tonumber(boss_hp) == 30) then Spawn_Adds(); elseif (tonumber(boss_hp) < 1) then eq.stop_all_timers(); Event_Win(e); end end end function Boss_Combat(e) if (event_started == true and e.joined == false) then eq.stop_all_timers(); elseif(event_started == true and e.joined == true) then start_timers(); end end function Add_Death(e) local el = eq.get_entity_list(); if (el:IsMobSpawnedByNpcTypeID(305007) or el:IsMobSpawnedByNpcTypeID(305008)) then eq.spawn2(e.self:GetNPCTypeID(), 0, 0, e.self:GetX(), e.self:GetY(), e.self:GetZ(), e.self:GetHeading()); end end function Event_Win(e) if event_finished then return end event_finished = true eq.depop_all(305007); eq.depop_all(305008); eq.depop_all(305009); eq.depop_all(305010); eq.depop_all(305011); eq.depop_all(305012); eq.depop_all(305013); -- Disable the deathtouch eq.spawn_condition('chambersb', instance_id, 2, 0 ); eq.depop_all(305006); -- Spawn Shell of the Ancients eq.unique_spawn(305014, 0, 0, -204, 274, 66, 144); -- NPC: Shell_of_the_Ancients -- Update the Lockouts local dz = eq.get_expedition() if dz.valid then dz:AddReplayLockoutDuration(eq.seconds("5d")) -- 5 days + current timer (max 123 hours) end local mpg_helper = require("mpg_helper"); mpg_helper.UpdateRaidTrialLockout(player_list, this_bit, nil); end function event_encounter_load(e) eq.register_npc_event('mpg_endurance', Event.say, 305007, Boss_Say); eq.register_npc_event('mpg_endurance', Event.say, 305008, Boss_Say); eq.register_npc_event('mpg_endurance', Event.spawn, 305007, Boss_Spawn); eq.register_npc_event('mpg_endurance', Event.spawn, 305008, Boss_Spawn); eq.register_npc_event('mpg_endurance', Event.timer, 305007, Boss_Timer); eq.register_npc_event('mpg_endurance', Event.timer, 305008, Boss_Timer); eq.register_npc_event('mpg_endurance', Event.signal, 305007, Boss_Signal); eq.register_npc_event('mpg_endurance', Event.signal, 305008, Boss_Signal); eq.register_npc_event('mpg_endurance', Event.combat, 305007, Boss_Combat); eq.register_npc_event('mpg_endurance', Event.combat, 305008, Boss_Combat); eq.register_npc_event('mpg_endurance', Event.death_complete, 305009, Add_Death); eq.register_npc_event('mpg_endurance', Event.death, 305010, Add_Death); eq.register_npc_event('mpg_endurance', Event.death, 305011, Add_Death); eq.register_npc_event('mpg_endurance', Event.death, 305012, Add_Death); eq.register_npc_event('mpg_endurance', Event.death, 305013, Add_Death); end function event_encounter_unload(e) end
Source: 17 Jan 2022
Quest Source: 28 May 2022