218 lines
14 KiB
Lua
218 lines
14 KiB
Lua
local gas_1_range = {-293, -263, -769, -718}
|
|
local gas_2_range = {-886, -850, -801, -750}
|
|
local player_minimum = 6;
|
|
|
|
function event_enter_zone(e)
|
|
local qglobals = eq.get_qglobals(e.self);
|
|
local instance_id = eq.get_zone_instance_id();
|
|
|
|
if qglobals[instance_id.. '_spectre_door'] ~= nil then
|
|
eq.get_entity_list():FindDoor(4):SetLockPick(0);
|
|
end
|
|
|
|
if qglobals[instance_id.. '_destoff'] == nil then
|
|
auracast(e);
|
|
eq.set_timer("aura", 90 * 1000); -- 90 sec
|
|
end
|
|
end
|
|
|
|
function auracast(e)
|
|
local qglobals = eq.get_qglobals(e.self);
|
|
local instance_id = eq.get_zone_instance_id();
|
|
|
|
local rangeditem = (e.self:GetItemIDAt(Slot.Range) == 67736 or e.self:GetItemIDAt(Slot.Range) == 67737 or e.self:GetItemIDAt(Slot.Range) == 67738 or e.self:GetItemIDAt(Slot.Range) == 67739);
|
|
local secondaryitem = (e.self:GetItemIDAt(Slot.Secondary) == 67736 or e.self:GetItemIDAt(Slot.Secondary) == 67737 or e.self:GetItemIDAt(Slot.Secondary) == 67738 or e.self:GetItemIDAt(Slot.Secondary) == 67739);
|
|
local hasbuff = e.self:FindBuff(756);
|
|
|
|
if qglobals[instance_id.. '_destper'] ~= nil then
|
|
eq.SelfCast(5051);
|
|
elseif rangeditem or secondaryitem or hasbuff then
|
|
e.self:Message(MT.White, "Tendrils of murky shadow creep toward you but the trinket you carry seems to hold them at bay.");
|
|
else
|
|
eq.SelfCast(5051);
|
|
end
|
|
end
|
|
|
|
function event_timer(e)
|
|
local qglobals = eq.get_qglobals(e.self);
|
|
local instance_id = eq.get_zone_instance_id();
|
|
|
|
if qglobals[instance_id.. '_destoff'] == nil then
|
|
auracast(e);
|
|
else
|
|
eq.stop_timer("aura");
|
|
end
|
|
end
|
|
|
|
function event_click_door(e)
|
|
local door = e.door:GetDoorID();
|
|
local dz = eq.get_expedition()
|
|
local qglobals = eq.get_qglobals(e.self);
|
|
local instance_id = eq.get_zone_instance_id();
|
|
|
|
-- Keys: | Cracked = 67707 | Dusty = 67708 | Polished = 67709 | Jagged = 67710 |
|
|
if door == 9 then
|
|
local cursor_check = e.self:GetItemIDAt(Slot.Cursor)
|
|
local keycheck = tonumber(qglobals[instance_id.. '_gaschmb1']) or 999999
|
|
local is_complete = qglobals[instance_id.. '_gaschmb1complete'] ~= nil
|
|
local is_gm = (e.self:Admin() > 80)
|
|
local player_list = eq.get_entity_list():GetClientList();
|
|
local count = 0;
|
|
|
|
if player_list ~= nil then
|
|
for pc in player_list.entries do
|
|
if pc:GetX() >= gas_1_range[1] and pc:GetX() <= gas_1_range[2] and pc:GetY() >= gas_1_range[3] and pc:GetY() <= gas_1_range[4] and not pc:GetGM() then
|
|
count = count + 1;
|
|
end
|
|
end
|
|
end
|
|
|
|
if is_complete then
|
|
eq.get_entity_list():FindDoor(9):SetLockPick(0);
|
|
eq.get_entity_list():FindDoor(9):ForceOpen(e.self);
|
|
elseif count >= player_minimum or is_gm then
|
|
if keycheck == 67707 and e.self:HasItem(67707) then -- Cracked Key
|
|
if e.self:HasItem(67708) or e.self:HasItem(67709) or e.self:HasItem(67710) then -- Fail
|
|
e.self:Message(MT.Red,"You locate a recession on the slab which closely matches the unusual key in your possession. It's a perfect fit. You insert the key into place and rotate it slightly. There is an audible clank from the north and south as both doors seal shut. The small chamber begins to heat up dramatically.");
|
|
eq.signal(292051,1); -- Gas Chamber 1
|
|
else -- Win
|
|
eq.get_entity_list():FindDoor(9):SetLockPick(0);
|
|
eq.get_entity_list():FindDoor(9):ForceOpen(e.self);
|
|
eq.set_global(instance_id.."_gaschmb1complete","1",3,"H6");
|
|
eq.signal(292051,2); -- Gas Chamber 1
|
|
eq.signal(292080,1); -- #Gas_Chamber_Cheater
|
|
e.self:Message(MT.Red,"You locate a recession on the slab which closely matches the unusual key in your possession. It's a perfect fit. You insert the key into place and rotate it slightly. With the help of your companions, you heave at the stone slab and it slides away. Oddly, you realize that once the majority of your forces have crossed the threshold of the door, stragglers will be able to pass through safely without needing a key.");
|
|
end
|
|
elseif keycheck == 67708 and e.self:HasItem(67708) then -- Dusty Key
|
|
if e.self:HasItem(67707) or e.self:HasItem(67709) or e.self:HasItem(67710) then -- Fail
|
|
e.self:Message(MT.Red,"You locate a recession on the slab which closely matches the unusual key in your possession. It's a perfect fit. You insert the key into place and rotate it slightly. There is an audible clank from the north and south as both doors seal shut. The small chamber begins to heat up dramatically.");
|
|
eq.signal(292051,1); -- Gas Chamber 1
|
|
else -- Win
|
|
eq.get_entity_list():FindDoor(9):SetLockPick(0);
|
|
eq.get_entity_list():FindDoor(9):ForceOpen(e.self);
|
|
eq.set_global(instance_id.."_gaschmb1complete","1",3,"H6");
|
|
eq.signal(292051,2); -- Gas Chamber 1
|
|
eq.signal(292080,1); -- #Gas_Chamber_Cheater
|
|
e.self:Message(MT.Red,"You locate a recession on the slab which closely matches the unusual key in your possession. It's a perfect fit. You insert the key into place and rotate it slightly. With the help of your companions, you heave at the stone slab and it slides away. Oddly, you realize that once the majority of your forces have crossed the threshold of the door, stragglers will be able to pass through safely without needing a key.");
|
|
end
|
|
elseif keycheck == 67709 and e.self:HasItem(67709) then -- Polished Key
|
|
if e.self:HasItem(67708) or e.self:HasItem(67707) or e.self:HasItem(67710) then -- Fail
|
|
e.self:Message(MT.Red,"You locate a recession on the slab which closely matches the unusual key in your possession. It's a perfect fit. You insert the key into place and rotate it slightly. There is an audible clank from the north and south as both doors seal shut. The small chamber begins to heat up dramatically.");
|
|
eq.signal(292051,1); -- Gas Chamber 1
|
|
else -- Win
|
|
eq.get_entity_list():FindDoor(9):SetLockPick(0);
|
|
eq.get_entity_list():FindDoor(9):ForceOpen(e.self);
|
|
eq.set_global(instance_id.."_gaschmb1complete","1",3,"H6");
|
|
eq.signal(292051,2); -- Gas Chamber 1
|
|
eq.signal(292080,1); -- #Gas_Chamber_Cheater
|
|
e.self:Message(MT.Red,"You locate a recession on the slab which closely matches the unusual key in your possession. It's a perfect fit. You insert the key into place and rotate it slightly. With the help of your companions, you heave at the stone slab and it slides away. Oddly, you realize that once the majority of your forces have crossed the threshold of the door, stragglers will be able to pass through safely without needing a key.");
|
|
end
|
|
elseif keycheck == 67710 and e.self:HasItem(67710) then -- Jagged Key
|
|
if e.self:HasItem(67708) or e.self:HasItem(67709) or e.self:HasItem(67707) then -- Fail
|
|
e.self:Message(MT.Red,"You locate a recession on the slab which closely matches the unusual key in your possession. It's a perfect fit. You insert the key into place and rotate it slightly. There is an audible clank from the north and south as both doors seal shut. The small chamber begins to heat up dramatically.");
|
|
eq.signal(292051,1); -- Gas Chamber 1
|
|
else -- Win
|
|
eq.get_entity_list():FindDoor(9):SetLockPick(0);
|
|
eq.get_entity_list():FindDoor(9):ForceOpen(e.self);
|
|
eq.set_global(instance_id.."_gaschmb1complete","1",3,"H6");
|
|
eq.signal(292051,2); -- Gas Chamber 1
|
|
eq.signal(292080,1); -- #Gas_Chamber_Cheater
|
|
e.self:Message(MT.Red,"You locate a recession on the slab which closely matches the unusual key in your possession. It's a perfect fit. You insert the key into place and rotate it slightly. With the help of your companions, you heave at the stone slab and it slides away. Oddly, you realize that once the majority of your forces have crossed the threshold of the door, stragglers will be able to pass through safely without needing a key.");
|
|
end
|
|
else -- Fail
|
|
eq.signal(292051,1); -- Gas Chamber 1
|
|
end
|
|
else
|
|
eq.zone_emote(MT.Yellow,"You heave at the stone slab, but it does not budge. Without more people to assist you it will be impossible to open.");
|
|
end
|
|
elseif door == 12 then
|
|
local cursor_check = e.self:GetItemIDAt(Slot.Cursor)
|
|
local keycheck = tonumber(qglobals[instance_id.. '_gaschmb2']) or 999999
|
|
local is_complete = qglobals[instance_id.. '_gaschmb2complete'] ~= nil
|
|
local is_gm = (e.self:Admin() > 80)
|
|
local player_list = eq.get_entity_list():GetClientList();
|
|
local count = 0;
|
|
|
|
if player_list ~= nil then
|
|
for pc in player_list.entries do
|
|
if pc:GetX() >= gas_2_range[1] and pc:GetX() <= gas_2_range[2] and pc:GetY() >= gas_2_range[3] and pc:GetY() <= gas_2_range[4] and not pc:GetGM() then
|
|
count = count + 1;
|
|
end
|
|
end
|
|
end
|
|
|
|
if is_complete then
|
|
eq.get_entity_list():FindDoor(12):SetLockPick(0);
|
|
eq.get_entity_list():FindDoor(12):ForceOpen(e.self);
|
|
elseif count >= player_minimum or is_gm then
|
|
if keycheck == 67707 and e.self:HasItem(67707) then -- Cracked Key
|
|
if e.self:HasItem(67708) or e.self:HasItem(67709) or e.self:HasItem(67710) then -- Fail
|
|
eq.signal(292052,1); -- Gas Chamber 2
|
|
e.self:Message(MT.Red,"You locate a recession on the slab which closely matches the unusual key in your possession. It's a perfect fit. You insert the key into place and rotate it slightly. There is an audible clank from the north and south as both doors seal shut. The small chamber begins to heat up dramatically.");
|
|
else -- Win
|
|
eq.get_entity_list():FindDoor(12):SetLockPick(0);
|
|
eq.get_entity_list():FindDoor(12):ForceOpen(e.self);
|
|
eq.set_global(instance_id.."_gaschmb2complete","1",3,"H6");
|
|
eq.signal(292052,2); -- Gas Chamber 2
|
|
eq.signal(292081,1); -- #Gas_Chamber_Cheater_2
|
|
e.self:Message(MT.Red,"You locate a recession on the slab which closely matches the unusual key in your possession. It's a perfect fit. You insert the key into place and rotate it slightly. With the help of your companions, you heave at the stone slab and it slides away. Oddly, you realize that once the majority of your forces have crossed the threshold of the door, stragglers will be able to pass through safely without needing a key.");
|
|
end
|
|
elseif keycheck == 67708 and e.self:HasItem(67708) then -- Dusty Key
|
|
if e.self:HasItem(67707) or e.self:HasItem(67709) or e.self:HasItem(67710) then -- Fail
|
|
eq.signal(292052,1); -- Gas Chamber 2
|
|
e.self:Message(MT.Red,"You locate a recession on the slab which closely matches the unusual key in your possession. It's a perfect fit. You insert the key into place and rotate it slightly. There is an audible clank from the north and south as both doors seal shut. The small chamber begins to heat up dramatically.");
|
|
else -- Win
|
|
eq.get_entity_list():FindDoor(12):SetLockPick(0);
|
|
eq.get_entity_list():FindDoor(12):ForceOpen(e.self);
|
|
eq.set_global(instance_id.."_gaschmb2complete","1",3,"H6");
|
|
eq.signal(292052,2); -- Gas Chamber 2
|
|
eq.signal(292081,1); -- #Gas_Chamber_Cheater_2
|
|
e.self:Message(MT.Red,"You locate a recession on the slab which closely matches the unusual key in your possession. It's a perfect fit. You insert the key into place and rotate it slightly. With the help of your companions, you heave at the stone slab and it slides away. Oddly, you realize that once the majority of your forces have crossed the threshold of the door, stragglers will be able to pass through safely without needing a key.");
|
|
end
|
|
elseif keycheck == 67709 and e.self:HasItem(67709) then -- Polished Key
|
|
if e.self:HasItem(67708) or e.self:HasItem(67707) or e.self:HasItem(67710) then -- Fail
|
|
eq.signal(292052,1); -- Gas Chamber 2
|
|
e.self:Message(MT.Red,"You locate a recession on the slab which closely matches the unusual key in your possession. It's a perfect fit. You insert the key into place and rotate it slightly. There is an audible clank from the north and south as both doors seal shut. The small chamber begins to heat up dramatically.");
|
|
else -- Win
|
|
eq.get_entity_list():FindDoor(12):SetLockPick(0);
|
|
eq.get_entity_list():FindDoor(12):ForceOpen(e.self);
|
|
eq.set_global(instance_id.."_gaschmb2complete","1",3,"H6");
|
|
eq.signal(292052,2); -- Gas Chamber 2
|
|
eq.signal(292081,1); -- #Gas_Chamber_Cheater_2
|
|
e.self:Message(MT.Red,"You locate a recession on the slab which closely matches the unusual key in your possession. It's a perfect fit. You insert the key into place and rotate it slightly. With the help of your companions, you heave at the stone slab and it slides away. Oddly, you realize that once the majority of your forces have crossed the threshold of the door, stragglers will be able to pass through safely without needing a key.");
|
|
end
|
|
elseif keycheck == 67710 and e.self:HasItem(67710) then -- Jagged Key
|
|
if e.self:HasItem(67708) or e.self:HasItem(67709) or e.self:HasItem(67707) then -- Fail
|
|
eq.signal(292052,1); -- Gas Chamber 2
|
|
e.self:Message(MT.Red,"You locate a recession on the slab which closely matches the unusual key in your possession. It's a perfect fit. You insert the key into place and rotate it slightly. There is an audible clank from the north and south as both doors seal shut. The small chamber begins to heat up dramatically.");
|
|
else -- Win
|
|
eq.get_entity_list():FindDoor(12):SetLockPick(0);
|
|
eq.get_entity_list():FindDoor(12):ForceOpen(e.self);
|
|
eq.set_global(instance_id.."_gaschmb2complete","1",3,"H6");
|
|
eq.signal(292052,2); -- Gas Chamber 2
|
|
eq.signal(292081,1); -- #Gas_Chamber_Cheater_2
|
|
e.self:Message(MT.Red,"You locate a recession on the slab which closely matches the unusual key in your possession. It's a perfect fit. You insert the key into place and rotate it slightly. With the help of your companions, you heave at the stone slab and it slides away. Oddly, you realize that once the majority of your forces have crossed the threshold of the door, stragglers will be able to pass through safely without needing a key.");
|
|
end
|
|
else -- Fail
|
|
eq.signal(292052,1); -- Gas Chamber 2
|
|
end
|
|
else
|
|
eq.zone_emote(MT.Yellow,"You heave at the stone slab, but it does not budge. Without more people to assist you it will be impossible to open.");
|
|
end
|
|
elseif door == 4 then
|
|
if qglobals[instance_id.. '_spectre_door'] ~= nil then
|
|
if dz.valid and not dz:IsLocked() then
|
|
dz:SetLocked(true); -- Lock DZ so no additional people can join.
|
|
eq.zone_emote(MT.Yellow, "Your expedition is nearing its close. You cannot bring any additional people into your expedition at this time.");
|
|
end
|
|
end
|
|
elseif door == 3 then
|
|
if qglobals[instance_id.. '_uquaragedoor'] ~=nil and qglobals[instance_id.. '_uquaragedoor'] == '1' then
|
|
eq.get_entity_list():FindDoor(3):ForceOpen(e.self);
|
|
end
|
|
elseif door == 2 then
|
|
if qglobals[instance_id.. '_uquafurydoor'] ~=nil and qglobals[instance_id.. '_uquafurydoor'] == '1' then
|
|
eq.get_entity_list():FindDoor(2):ForceOpen(e.self);
|
|
end
|
|
end
|
|
end
|