157 lines
5.3 KiB
Lua
157 lines
5.3 KiB
Lua
-- Group Trial Version 1 of zone
|
|
-- Raid Trial Version 2 of zone
|
|
--
|
|
-- MPG Group Trial Bits:
|
|
-- 1 MPG_fear
|
|
-- 2 MPG_ingenuity
|
|
-- 4 MPG_weaponry
|
|
-- 8 MPG_subversion
|
|
-- 16 MPG_efficiency
|
|
-- 32 MPG_destruciton
|
|
--
|
|
-- Lockout on Win: 72 hours
|
|
-- Lockout on Loss: 2 hours
|
|
--
|
|
-- MPG Raid Trial General Notes
|
|
-- 1 MPG_hate - The Mastery of Hate (Raid) - Mastery of Mind Rune 52407
|
|
-- 2 MPG_endurance - The Mastery of Endurance (Raid) - Mastery of Body Rune 52408
|
|
-- 4 MPG_foresight - The Mastery of Foresight (Raid) - Mastery of Tactics Rune 52409
|
|
-- 8 MPG_specialization - The Mastery of Specialization (Raid) - Mastery of Arcana Rune 52410
|
|
-- 16 MPG_adaptation - The Mastery of Adaptation (Raid) - Mastery of Realms Rune 52411
|
|
-- 32 MPG_corruption - The Mastery of Corruption (Raid) - Mastery of Power Rune 52412
|
|
--
|
|
-- Lockout on Win: 5 days
|
|
-- Lockout on Loss: 2 hours (think the instance lives for 3 hours now so its really 3 hours)
|
|
-- items: 52413
|
|
local mpg_helper = {};
|
|
|
|
-- Function: UpdateGroupTrialFlag
|
|
--
|
|
-- Description:
|
|
-- Extracted code such that it can be reused in all 6 of the group MPG trials.
|
|
--
|
|
-- Example Usage:
|
|
-- local this_bit = 1;
|
|
-- local mpg_helper = require("mpg_helper");
|
|
-- mpg_helper.UpdateGroupTrialFlag(player_list, this_bit);
|
|
|
|
function mpg_helper.UpdateGroupTrialFlag(player_list_in, this_bit_in)
|
|
local entity_list = eq.get_entity_list();
|
|
local client;
|
|
local client_globals;
|
|
|
|
for k,v in pairs(player_list_in) do
|
|
client = entity_list:GetClientByCharID(v)
|
|
if client.valid then
|
|
client_globals = eq.get_qglobals(client);
|
|
-- Get the bits of the MPG Trials completed; we should only award an AA the first time
|
|
-- a Character complets a trial.
|
|
local mpg_group_trials = tonumber(client_globals["mpg_group_trials"]);
|
|
if mpg_group_trials == nil then
|
|
mpg_group_trials = 0;
|
|
end
|
|
|
|
local has_done_this_trial;
|
|
if bit.band(mpg_group_trials, this_bit_in) == 0 then
|
|
has_done_this_trial = false;
|
|
else
|
|
has_done_this_trial = true;
|
|
end
|
|
|
|
-- Has character done this trial before?
|
|
if not has_done_this_trial then
|
|
local trial_bit_list = {1,2,4,8,16,32};
|
|
local aas_to_grant = 0;
|
|
for bitkey,bitval in pairs(trial_bit_list) do
|
|
if bit.band(mpg_group_trials,bitval) == 0 then
|
|
else
|
|
aas_to_grant = aas_to_grant + 1;
|
|
end
|
|
end
|
|
aas_to_grant = aas_to_grant + 1;
|
|
|
|
-- Log Trial Flag and Grant AA
|
|
eq.target_global("mpg_group_trials", tostring(bit.bor(mpg_group_trials, this_bit_in)), "F", 0, v, 0);
|
|
client:GrantAlternateAdvancementAbility(466, aas_to_grant);
|
|
client:Message(MT.Yellow, "The understanding you have gained by completing one of Mata Muram's trials has increased your maximum resistances.");
|
|
else
|
|
client:Message(MT.Yellow, "You have again mastered this trial. Congratulations.");
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
function mpg_helper.UpdateRaidTrialFlag(player_list_in, this_bit_in)
|
|
local el = eq.get_entity_list();
|
|
local client;
|
|
|
|
for k,v in pairs(player_list_in) do
|
|
client = el:GetClientByCharID(v);
|
|
if client.valid then
|
|
-- Client is in the zone update the raid bit
|
|
mpg_helper.RaidAnguishAccess(client, this_bit_in);
|
|
else
|
|
-- Client is not in the zone so set a 'temporary' global on the charcter which
|
|
-- will update the bit the next time the character zones into this trial.
|
|
eq.target_global('mpg_raid_trial_won', tostring(this_bit_in), 'F', 0, v, 0);
|
|
end
|
|
end
|
|
end
|
|
|
|
function mpg_helper.RaidAnguishAccess(client, lockout_bit_in)
|
|
-- 1 (Hate) Mastery of Mind Rune 52407
|
|
-- 2 (Endurance) Mastery of Body Rune 52408
|
|
-- 4 (Foresight) Mastery of Tactics Rune 52409
|
|
-- 8 (Spec) Mastery of Arcana Rune 52410
|
|
-- 16 (Adaptation) Mastery of Realms Rune 52411
|
|
-- 32 (Corruption) Mastery of Power Rune 52412
|
|
local client_globals = eq.get_qglobals(client);
|
|
local trial_bit_list = {{1,52407},{2,52408},{4,52409},{8,52410},{16,52411},{32,52412}};
|
|
local mpg_raid_trials;
|
|
local has_all_trials;
|
|
|
|
if client.valid then
|
|
mpg_raid_trials = tonumber(client_globals['mpg_raid_trials']);
|
|
if mpg_raid_trials == nil then
|
|
mpg_raid_trials = 0;
|
|
end
|
|
|
|
if bit.band(mpg_raid_trials, lockout_bit_in) ~= 0 then
|
|
else
|
|
mpg_raid_trials = bit.bor(mpg_raid_trials, lockout_bit_in);
|
|
eq.target_global("mpg_raid_trials", tostring(mpg_raid_trials), "F", 0, client:CharacterID(), 0);
|
|
|
|
for bk,bv in pairs(trial_bit_list) do
|
|
if lockout_bit_in == bv[1] then
|
|
client:SummonItem(bv[2]);
|
|
end
|
|
end
|
|
end
|
|
|
|
if not client:HasItem(52413) or client_globals['oow_mpg_raids_complete'] == nil then
|
|
has_all_trials = true;
|
|
|
|
for bk,bv in pairs(trial_bit_list) do
|
|
if bit.band(mpg_raid_trials,bv[1]) ~= 0 then
|
|
else
|
|
has_all_trials = false;
|
|
end
|
|
end
|
|
|
|
if has_all_trials then
|
|
eq.target_global("oow_mpg_raids_complete", "1", "F", 0, client:CharacterID(), 0);
|
|
-- Summon: Seal: Mastery of All
|
|
client:NukeItem(52407);
|
|
client:NukeItem(52408);
|
|
client:NukeItem(52409);
|
|
client:NukeItem(52410);
|
|
client:NukeItem(52411);
|
|
client:NukeItem(52412);
|
|
client:SummonItem(52413); -- Item: Seal: Mastery of All
|
|
client:Message(MT.Lime,"You have demonstrated adeptness at all aspects of power that Mata Muram holds dear. As you receive the final medal, the six wedges you have collected fuse, point to point, creating a hexagonal seal. You now hold the key to Anguish, the Fallen Palace");
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
return mpg_helper;
|