Log In
Sign Up
Go Gold
Home
Forum
Mail
Downloads
Game Search
Macro Editor
Notes
Membership
zone_status.lua - Quest File
General Info
Quest File
-- NPC ID 223097 -- initialize variables global to this NPC local current_phase = "Phase0"; local event_started = 0; local event_counter = 0; local instance_id = 0; local qglobals = {}; function event_spawn(e) -- get the zone instance id instance_id = eq.get_zone_instance_id(); -- turn off all the spawn conditions ResetSpawnConditions(); -- load the current quest globals qglobals = eq.get_qglobals(); -- grab the entity list so we can unlock doors if needed. local entity_list = eq.get_entity_list(); -- set the start time so we know what to compare with for the fail timer. event_started = os.time(); -- if there is no phase_bit qglobal for this instance, create one if (qglobals[instance_id.."_potimeb_phase_bit"] == nil) then eq.set_global(instance_id.."_potimeb_phase_bit","0",7,"H13"); end -- then check the value to decide what to pop if (qglobals[instance_id.."_potimeb_status"] == nil) then -- if there is no global at all boot all toons and destroy the instance -- TODO!!! elseif (qglobals[instance_id.."_potimeb_status"] == "Phase1") then -- just in case the instance ID gets reused before this one expires, make sure to set phase_bit to 0 eq.set_global(instance_id.."_potimeb_phase_bit","0",7,"H13"); -- Spawn phase 1 eq.spawn2(223169,0,0,13.5,1632.4,492.3,0); -- earth trigger eq.spawn2(223170,0,0,10.1,1350,492.6,0); -- air trigger eq.spawn2(223171,0,0,18.0,1107,492.2,0); -- undead trigger eq.spawn2(223172,0,0,11.5,857,492.5,0); -- water trigger eq.spawn2(223173,0,0,13.2,574.2,492.3,0); -- fire trigger elseif (qglobals[instance_id.."_potimeb_status"] == "Phase2") then -- unlock all the phase 1 doors. UnlockPhaseOneDoors(entity_list); -- offset event_started by the prior phase(s) since we are not starting at 1 event_started = event_started - 3600; UpdateFailTimer(3600,3600); current_phase = "Phase2"; -- send signal to flavor text NPC eq.signal(223227,2); -- NPC: zone_emoter -- spawn phase 2 mobs without the named SpawnPhaseTwo(false); elseif (qglobals[instance_id.."_potimeb_status"] == "Phase3") then -- unlock all the phase 1 and 2 doors. UnlockPhaseOneDoors(entity_list); UnlockPhaseTwoDoors(entity_list); -- offset event_started by the prior phase(s) since we are not starting at 1 event_started = event_started - 7200; UpdateFailTimer(7200,4500); current_phase = "Phase3"; -- send signal to flavor text NPC eq.signal(223227,3); -- NPC: zone_emoter -- begin Phase 3 ControlPhaseThree(); elseif (qglobals[instance_id.."_potimeb_status"] == "Phase4") then -- unlock all the phase 1 and 2 doors. UnlockPhaseOneDoors(entity_list); UnlockPhaseTwoDoors(entity_list); -- unlock the portal from phase 3 to phase 4 door = entity_list:FindDoor(62); if(door ~= nil) then door:SetLockPick(0); end -- offset event_started by the prior phase(s) since we are not starting at 1 event_started = event_started - 11700; UpdateFailTimer(11700,14400); current_phase = "Phase4"; -- send signal to flavor text NPC eq.signal(223227,4); -- NPC: zone_emoter SpawnPhaseFour(); elseif (qglobals[instance_id.."_potimeb_status"] == "Phase5") then -- unlock all the phase 1 and 2 doors. UnlockPhaseOneDoors(entity_list); UnlockPhaseTwoDoors(entity_list); -- unlock the portal from phase 3 to phase 4 door = entity_list:FindDoor(62); if(door ~= nil) then door:SetLockPick(0); end -- unlock the stone from phase 4 to phase 5 door = entity_list:FindDoor(83); if(door ~= nil) then door:SetLockPick(0); end -- offset event_started by the prior phase(s) since we are not starting at 1 event_started = event_started - 26100; UpdateFailTimer(26100,14400); current_phase = "Phase5"; -- send signal to flavor text NPC eq.signal(223227,5); -- NPC: zone_emoter SpawnPhaseFive(); elseif (qglobals[instance_id.."_potimeb_status"] == "Phase6") then -- unlock all the phase 1 and 2 doors. UnlockPhaseOneDoors(entity_list); UnlockPhaseTwoDoors(entity_list); -- unlock the portal from phase 3 to phase 4 door = entity_list:FindDoor(62); if(door ~= nil) then door:SetLockPick(0); end -- unlock the stone from phase 4 to phase 5 door = entity_list:FindDoor(83); if(door ~= nil) then door:SetLockPick(0); end -- unlock the stone from phase 5 to phase 6 door = entity_list:FindDoor(51); if(door ~= nil) then door:SetLockPick(0); end -- offset event_started by the prior phase(s) since we are not starting at 1 event_started = event_started - 40500; UpdateFailTimer(40500,7200); current_phase = "Phase6"; -- send signal to flavor text NPC eq.signal(223227,6); -- NPC: zone_emoter -- spawn Quarm eq.spawn2(223201,0,0,-401,-1106,32.5,185.625); -- NPC: Quarm -- spawn #A_Servitor_of_Peace eq.spawn2(223101,0,0,244,-1106,-1.125,194.0625); -- NPC: #A_Servitor_of_Peace -- spawn untargetable Zebuxoruk's Cage eq.spawn2(223228,0,0,-579,-1119,60.625,0); -- NPC: _ Zebuxoruk's Cage end end function event_signal(e) -- grab the entity_list local entity_list = eq.get_entity_list(); -- signal 1 comes from the phase 1 trigger mobs if (e.signal == 1 and current_phase == "Phase0") then -- npc global for status tracking. current_phase = "Phase1"; -- send signal to flavor text NPC eq.signal(223227,1); -- NPC: zone_emoter UpdateFailTimer(0,3600); -- signal 2 comes from the mobs in the final wave of each phase 1 event elseif (e.signal == 2 and current_phase == "Phase1") then -- check that all 5 phase 1 events are down. event_counter = event_counter + 1; if (event_counter == 5) then -- update the qglobal in the zone gets reset. eq.set_global(instance_id.."_potimeb_status","Phase2",7,"H13"); current_phase = "Phase2"; -- unlock all the phase 1 doors. UnlockPhaseOneDoors(entity_list); -- add 1 hour (3600 seconds) to the fail timer UpdateFailTimer(3600,3600); -- send signal to flavor text NPC eq.signal(223227,2); -- NPC: zone_emoter -- reset counter for later use event_counter = 0; -- spawn phase 2 mobs without the named SpawnPhaseTwo(); end -- signal 3 comes from the phase 2 mobs. elseif (e.signal == 3) then ControlPhaseTwo(); -- signal 4 comes from the phase 3 mobs. elseif (e.signal == 4) then ControlPhaseThree(); -- signal 5 comes from the phase 4 gods. elseif (e.signal == 5) then event_counter = event_counter + 1; if (event_counter == 4) then -- update the qglobal in the zone gets reset. eq.set_global(instance_id.."_potimeb_status","Phase5",7,"H13"); eq.set_global(instance_id.."_potimeb_phase_bit","0",7,"H13"); current_phase = "Phase5"; -- add 4 hours (14400 seconds) to the fail timer UpdateFailTimer(26100,14400); -- send signal to flavor text NPC eq.signal(223227,5); -- NPC: zone_emoter -- reset counter for later use event_counter = 0; -- spawn phase 5 SpawnPhaseFive(); -- unlock the stone from phase 4 to phase 5 door = entity_list:FindDoor(83); if(door ~= nil) then door:SetLockPick(0); end end -- signal 6 comes from the phase 5 gods. elseif (e.signal == 6) then event_counter = event_counter + 1; if (event_counter == 4) then -- disable the spawn condition eq.spawn_condition("potimeb",instance_id,1,0); -- update the qglobal in the zone gets reset. eq.set_global(instance_id.."_potimeb_status","Phase6",7,"H13"); current_phase = "Phase6"; -- add 2 hours (7200 seconds) to the fail timer UpdateFailTimer(40500,7200); -- send signal to flavor text NPC eq.signal(223227,6); -- NPC: zone_emoter -- reset counter for later use event_counter = 0; -- spawn Quarm eq.spawn2(223201,0,0,-401,-1106,32.5,185.625); -- NPC: Quarm -- spawn #A_Servitor_of_Peace eq.spawn2(223101,0,0,244,-1106,-1.125,194.0625); -- NPC: #A_Servitor_of_Peace -- spawn untargetable Zebuxoruk's Cage eq.spawn2(223228,0,0,-579,-1119,60.625,0); -- NPC: _ Zebuxoruk's Cage -- unlock the stone from phase 5 to phase 6 door = entity_list:FindDoor(51); if(door ~= nil) then door:SetLockPick(0); end end -- signal 7 comes from Quarm elseif (e.signal == 7) then -- update the player lockout UpdateLockoutGlobal("potimeb_lockout","Phase6","H132"); -- signal 8 comes from Druzzil_Ro elseif (e.signal == 8) then -- destroy the instance. this will ensure everyone is removed from the instance eq.destroy_instance(instance_id); -- port everyone in the zone back to the PoK library top floor local client_list = entity_list:GetClientList(); for c in client_list.entries do if (c.valid) then c:MovePC(202,1015,20,392,264); -- Zone: poknowledge end end -- depop the zone nothing else to do here eq.depop_zone(false); end end function ResetSpawnConditions() -- reset all spawn conditions to 0 we want nothing up at zone boot or repop for i = 1, 10, 1 do eq.spawn_condition("potimeb",instance_id,i,0); end end function ControlPhaseTwo() if (current_phase == "Phase2") then event_counter = event_counter + 1; if (event_counter == 50) then event_counter = 0; current_phase = "Phase3"; ControlPhaseThree(); -- send signal to flavor text NPC eq.signal(223227,3); -- NPC: zone_emoter -- grab the entity list so we can unlock doors. local entity_list = eq.get_entity_list(); -- unlock all of the Phase 2 doors UnlockPhaseTwoDoors(entity_list); -- update the status global eq.set_global(instance_id.."_potimeb_status","Phase3",7,"H13"); -- add 1 hour and 15 minutes (4500 seconds) to the fail timer UpdateFailTimer(7200,4500); -- update the lockout for all players to 5 days 12 hours. -- need to figure out how to do this end end end function SpawnPhaseTwo() if (eq.get_spawn_condition("potimeb",instance_id,10) == 0) then -- if it is not set, set it. eq.spawn_condition("potimeb",instance_id,10,1); eq.spawn2(223134,0,0,262,1644,493,385); -- NPC: Earthen_Overseer eq.spawn2(223118,0,0,262,1354,493,385); -- NPC: Windshapen_Warlord_of_Air eq.spawn2(223127,0,0,262,1109,493,385); -- NPC: Ralthos_Enrok eq.spawn2(223096,0,0,262,869,493,385); -- NPC: War_Shapen_Emissary eq.spawn2(223146,0,0,262,574,493,385); -- NPC: Gutripping_War_Beast end end function ControlPhaseThree() if (current_phase == "Phase3") then --spawn phase 3 -- set the spawn condition for the first wave eq.spawn_condition("potimeb",instance_id,2,1); -- spawn the untargetable version of the phase 3 named eq.spawn2(223010,0,0,1280,1010,359.38,390); -- A_Needletusk_Warboar eq.spawn2(223011,0,0,1280,1030,359.38,390); -- Deathbringer_Rianit eq.spawn2(223012,0,0,1260,1250,359.38,390); -- Sinrunal_Gorgedreal eq.spawn2(223013,0,0,1260,1270,359.38,390); -- Herlsoakian eq.spawn2(223014,0,0,1280,1210,359.38,390); -- Xerskel_Gerodnsal eq.spawn2(223015,0,0,1280,1190,359.38,390); -- Dersool_Fal`Giersnaol eq.spawn2(223016,0,0,1260,970,359.38,390); -- Xeroan_Xi`Geruonask eq.spawn2(223017,0,0,1260,950,359.38,390); -- Kraksmaal_Fir`Dethsin eq.spawn2(223018,0,0,1300,1070,359.38,390); -- Dreamwarp eq.spawn2(223019,0,0,1300,1090,359.38,390); -- Champion_of_Torment eq.spawn2(223020,0,0,1300,1130,359.38,390); -- Dark_Knight_of_Terris eq.spawn2(223021,0,0,1300,1150,359.38,390); -- Undead_Squad_Leader eq.spawn2(223022,0,0,1230,1330,359.38,350); -- A_Deadly_Warboar eq.spawn2(223023,0,0,1230,1310,359.38,350); -- Deathbringer_Skullsmash --eq.spawn2(223155,0,0,1250,1135,359.5,384); -- A_Ferocious_Warboar --eq.spawn2(223156,0,0,1250,1085,359.5,384); -- Deathbringer_Blackheart -- depop untargetable and pop targetable versions --eq.depop(223155); -- A_Ferocious_Warboar --eq.depop(223156); -- Deathbringer_Blackheart eq.spawn2(223008,0,0,1250,1135,359.5,384); -- A_Ferocious_Warboar eq.spawn2(223009,0,0,1250,1085,359.5,384); -- Deathbringer_Blackheart current_phase = "Phase3.1"; elseif (current_phase == "Phase3.1") then event_counter = event_counter + 1; if (event_counter == 10) then event_counter = 0; current_phase = "Phase3.2"; -- spawn phase 3 wave 2 eq.spawn_condition("potimeb",instance_id,2,0); eq.clear_spawn_timers(); eq.spawn_condition("potimeb",instance_id,3,1); -- depop untargetable and pop targetable versions eq.depop(223016); -- Xeroan_Xi`Geruonask eq.depop(223017); -- Kraksmaal_Fir`Dethsin eq.spawn2(223024,0,0,1250,1085,359.5,384); -- Kraksmaal_Fir`Dethsin eq.spawn2(223025,0,0,1250,1135,359.5,384); -- Xeroan_Xi`Geruonask end elseif (current_phase == "Phase3.2") then event_counter = event_counter + 1; if (event_counter == 10) then event_counter = 0; current_phase = "Phase3.3"; -- spawn phase 3 wave 3 eq.spawn_condition("potimeb",instance_id,3,0); eq.clear_spawn_timers(); eq.spawn_condition("potimeb",instance_id,4,1); eq.depop(223022); -- A_Deadly_Warboar eq.depop(223023); -- Deathbringer_Skullsmash eq.spawn2(223031,0,0,1250,1085,359.5,384); -- Deathbringer_Skullsmash eq.spawn2(223032,0,0,1250,1135,359.5,384); -- A_Deadly_Warboar end elseif (current_phase == "Phase3.3") then event_counter = event_counter + 1; if (event_counter == 10) then event_counter = 0; current_phase = "Phase3.4"; -- spawn phase 3 wave 4 eq.spawn_condition("potimeb",instance_id,4,0); eq.clear_spawn_timers(); eq.spawn_condition("potimeb",instance_id,5,1); eq.depop(223012); -- Sinrunal_Gorgedreal eq.depop(223013); -- Herlsoakian eq.spawn2(223038,0,0,1250,1085,359.5,384); -- Sinrunal_Gorgedreal eq.spawn2(223037,0,0,1250,1135,359.5,384); -- Herlsoakian end elseif (current_phase == "Phase3.4") then event_counter = event_counter + 1; if (event_counter == 10) then event_counter = 0; current_phase = "Phase3.5"; -- spawn phase 3 wave 5 eq.spawn_condition("potimeb",instance_id,5,0); eq.clear_spawn_timers(); eq.spawn_condition("potimeb",instance_id,6,1); eq.depop(223010); -- A_Needletusk_Warboar eq.depop(223011); -- Deathbringer_Rianit eq.spawn2(223047,0,0,1250,1085,359.5,384); -- A_Needletusk_Warboar eq.spawn2(223046,0,0,1250,1135,359.5,384); -- Deathbringer_Rianit end elseif (current_phase == "Phase3.5") then event_counter = event_counter + 1; if (event_counter == 10) then event_counter = 0; current_phase = "Phase3.6"; -- spawn phase 3 wave 6 eq.spawn_condition("potimeb",instance_id,6,0); eq.clear_spawn_timers(); eq.spawn_condition("potimeb",instance_id,7,1); eq.depop(223014); -- Xerskel_Gerodnsal eq.depop(223015); -- Dersool_Fal`Giersnaol eq.spawn2(223050,0,0,1250,1085,359.5,384); -- Dersool_Fal`Giersnaol eq.spawn2(223051,0,0,1250,1135,359.5,384); -- Xerskel_Gerodnsal end elseif (current_phase == "Phase3.6") then event_counter = event_counter + 1; if (event_counter == 10) then event_counter = 0; current_phase = "Phase3.7"; -- spawn phase 3 wave 7 eq.spawn_condition("potimeb",instance_id,7,0); eq.clear_spawn_timers(); eq.spawn_condition("potimeb",instance_id,8,1); eq.depop(223020); -- Dark_Knight_of_Terris eq.depop(223021); -- Undead_Squad_Leader eq.spawn2(223058,0,0,1250,1085,359.5,384); -- Dark_Knight_of_Terris eq.spawn2(223057,0,0,1250,1135,359.5,384); -- Undead_Squad_Leader end elseif (current_phase == "Phase3.7") then event_counter = event_counter + 1; if (event_counter == 10) then event_counter = 0; current_phase = "Phase3.8"; -- spawn phase 3 wave 8 eq.spawn_condition("potimeb",instance_id,8,0); eq.clear_spawn_timers(); eq.spawn_condition("potimeb",instance_id,9,1); eq.depop(223018); -- Dreamwarp eq.depop(223019); -- Champion_of_Torment eq.spawn2(223066,0,0,1250,1085,359.5,384); -- Dreamwarp eq.spawn2(223065,0,0,1250,1135,359.5,384); -- Champion_of_Torment end elseif (current_phase == "Phase3.8") then event_counter = event_counter + 1; if (event_counter == 10) then event_counter = 0; current_phase = "Phase3.9"; -- turn off spawn condition for wave 8 eq.spawn_condition("potimeb",instance_id,9,0); eq.clear_spawn_timers(); -- spawn golems eq.spawn2(223073,0,0,1492,1110,374.1,391); -- Avatar_of_the_Elements eq.spawn2(223074,0,0,1563,1110,374.1,391); -- Supernatural_Guardian end elseif (current_phase == "Phase3.9") then event_counter = event_counter + 1; if (event_counter == 2) then event_counter = 0; current_phase = "Phase4"; -- send signal to flavor text NPC eq.signal(223227,4); -- NPC: zone_emoter -- grab the entity list so we can unlock door. local entity_list = eq.get_entity_list(); -- unlock the portal to port up to phase 4 local door = nil; door = entity_list:FindDoor(62); if(door ~= nil) then door:SetLockPick(0); end -- update the status global eq.set_global(instance_id.."_potimeb_status","Phase4",7,"H13"); -- add 4 hours (14400 seconds) to the fail timer UpdateFailTimer(11700,14400); -- update the lockout for all players to 5 days 12 hours. UpdateLockoutGlobal("potimeb_lockout","Phase3","H132"); -- spawn phase 4 SpawnPhaseFour(); end end end function SpawnPhaseFour() -- update qglobals qglobals = eq.get_qglobals(); local phase_bit = tonumber(qglobals[instance_id.."_potimeb_phase_bit"]); if (phase_bit == 15) then -- this a rare crash handling instance. extremely hard to make happen eq.set_global(instance_id.."_potimeb_status","Phase5",7,"H13"); eq.set_global(instance_id.."_potimeb_phase_bit","0",7,"H13"); eq.repop_zone(); else if (bit.band(phase_bit, 1) == 0) then eq.spawn2(223075,0,0,-310,307,365,190); -- Terris Thule else event_counter = event_counter + 1; end if (bit.band(phase_bit, 2) == 0) then eq.spawn2(223076,0,0,-320,-316,358,65); -- Saryrn else event_counter = event_counter + 1; end if (bit.band(phase_bit, 4) == 0) then eq.spawn2(223077,0,0,405,-84,358,384); -- Tallon Zek else event_counter = event_counter + 1; end if (bit.band(phase_bit, 8) == 0) then eq.spawn2(223078,0,0,405,75,358,384); -- Vallon Zek else event_counter = event_counter + 1; end end end function SpawnPhaseFive() -- update qglobals qglobals = eq.get_qglobals(); local phase_bit = tonumber(qglobals[instance_id.."_potimeb_phase_bit"]); if (phase_bit == 15) then -- this a rare crash handling instance. extremely hard to make happen eq.set_global(instance_id.."_potimeb_status","Phase6",7,"H13"); eq.set_global(instance_id.."_potimeb_phase_bit","0",7,"H13"); eq.repop_zone(); else -- Armies haven't been killed. Spawn Armies and fake version of each -- god that hasn't yet been killed. if (bit.band(phase_bit, 16) == 0) then if (bit.band(phase_bit, 1) == 0) then eq.spawn2(223098,0,0,-299,-297,23.3,62); -- Fake Bertoxxulous else event_counter = event_counter + 1; end if (bit.band(phase_bit, 2) == 0) then eq.spawn2(223165,0,0,-257,255,6,203); -- Fake Cazic else event_counter = event_counter + 1; end if (bit.band(phase_bit, 4) == 0) then eq.spawn2(223000,0,0,303.3,306,13.3,323); -- Fake Innoruuk else event_counter = event_counter + 1; end if (bit.band(phase_bit, 8) == 0) then eq.spawn2(223001,0,0,264,-279,18.75,435); -- Fake Rallos else event_counter = event_counter + 1; end -- spawn the armies -- TO DO: need to split armies into spawn groups for each god. eq.spawn_condition("potimeb",instance_id,1,1); -- timer is waiting for the armies to be killed so we can set that bit. eq.set_timer(instance_id .. "_potimeb_p5army", 3000); -- Armies are dead, which gods should we pop else if (bit.band(phase_bit, 1) == 0) then eq.spawn2(223142,0,0,-299,-297,23.3,62); -- Real Bertoxxulous else event_counter = event_counter + 1; end if (bit.band(phase_bit, 2) == 0) then eq.spawn2(223166,0,0,-257,255,6,203); -- Real Cazic else event_counter = event_counter + 1; end if (bit.band(phase_bit, 4) == 0) then eq.spawn2(223167,0,0,303.3,306,13.3,323); -- Real Innoruuk else event_counter = event_counter + 1; end if (bit.band(phase_bit, 8) == 0) then eq.spawn2(223168,0,0,264,-279,18.75,435); -- Real Rallos else event_counter = event_counter + 1; end end end end function UpdateLockoutGlobal(global_name,global_value,global_duration) -- not active pending implmentation of a eq.get_players_in_instance --[[ local player_list = eq.get_players_in_instance(instance_id); -- Lua loop basics: -- k = key which is generally the current index of the array -- v = value for the current key, in this example it would be the character ID for k,v in pairs(player_list) do eq.target_global(global_name, global_value, global_duration, 0,v, 0); end --]] end function UpdateFailTimer(prior_phases,seconds_to_add) -- calculate the remaining time since the event started. local current_remainder = prior_phases - os.difftime(os.time(),event_started); --[[ -- usefull example for showing what you are setting leaving commented out. eq.zone_emote(14,"event_start = " .. event_started); eq.zone_emote(14,"prior_phases = " .. prior_phases); eq.zone_emote(14,"current_remainder = " .. current_remainder); eq.zone_emote(14,"seconds_to_add = " .. seconds_to_add); eq.zone_emote(14,"(current_remainder + seconds_to_add) = " .. (current_remainder + seconds_to_add)); --]] -- stop and restart the timer with the new time added. eq.stop_timer("fail_timer"); eq.set_timer("fail_timer",(current_remainder + seconds_to_add) * 1000); -- * 1000 to convert to milliseconds -- eq.zone_emote(14,"fail_timer set to " .. ((current_remainder + seconds_to_add) * 1000) .. " milliseconds"); end function event_timer(e) if (e.timer == "fail_timer") then -- change the qglobal so zone status will not reset things if the zone reboots. eq.set_global(instance_id.."_potimeb_status","Failed",7,"H13"); current_status = "Failed"; eq.stop_timer("fail_timer"); -- destroy the instance. this will ensure everyone is removed from the instance eq.destroy_instance(instance_id); -- depop the zone on event fail. eq.depop_zone(false); elseif (e.timer == instance_id .. "_potimeb_p5army") then -- List of NPCIDs of the army npcs local myTable = { 223194, 223195, 223196, 223197, 223198, 223199, 223200, 223002, 223003 }; local armiesdead = 1; for i=1,#myTable do if ( eq.get_entity_list():IsMobSpawnedByNpcTypeID(myTable[i]) == true ) then armiesdead = 0; end end if ( armiesdead == 1 ) then local phase_bit = tonumber(qglobals[instance_id.."_potimeb_phase_bit"]); eq.set_global(instance_id.."_potimeb_phase_bit",tostring(bit.bor(phase_bit,16)),7,"H13"); eq.stop_timer(instance_id .. "_potimeb_p5army"); end end end -- on Live the doors do not show as locked when clicked. instead the player receives the collowing emote in white text: -- [Thu Jul 25 19:43:29 2013] The wall feels both insubstantial and solid at the same time, almost as if you were not in phase with it. -- to make this work on PEQ, we can set the doors to have an open type in the DB that does not move the door -- and then change the open type on the fly with a quest interaction. function UnlockPhaseOneDoors(entity_list) -- all the clock doors are numbered 1-4, 5-8, etc. from top left (hours 9-12) going clockwise. -- the open type needs change as follows to allow them to open properly. -- opentype 81: bottom left (hours 6-9) -- opentype 79: top left (hours 9-12) -- opentype 78: top right (hours 12-3) -- opentype 80: bottom right (hours 3-6) for i = 1, 20, 4 do entity_list:FindDoor(i+0):SetOpenType(78); -- top left entity_list:FindDoor(i+1):SetOpenType(79); -- top right entity_list:FindDoor(i+2):SetOpenType(80); -- bottom right entity_list:FindDoor(i+3):SetOpenType(81); -- bottom left end end function UnlockPhaseTwoDoors(entity_list) -- same thing here for i = 21, 32, 4 do entity_list:FindDoor(i+0):SetOpenType(78); -- top left entity_list:FindDoor(i+1):SetOpenType(79); -- top right entity_list:FindDoor(i+2):SetOpenType(80); -- bottom right entity_list:FindDoor(i+3):SetOpenType(81); -- bottom left end end
Source: 17 Jan 2022
Quest Source: 28 May 2022