From c6151f097c56688ad05c6f2f15966b43c432f00d Mon Sep 17 00:00:00 2001 From: Critical <48370698+CriticalXI@users.noreply.github.com> Date: Sun, 26 Apr 2026 16:56:11 -0600 Subject: [PATCH] [lua][module] Adds blocks for certain door related KIs --- modules/abyssea/lua/fang_key_timer.lua | 22 +++++++++++++++++++ .../soa/lua/disable_magicked_astrolabe.lua | 19 ++++++++++++++++ modules/soa/lua/quest_adjustments.lua | 17 +++++++++----- 3 files changed, 53 insertions(+), 5 deletions(-) create mode 100644 modules/abyssea/lua/fang_key_timer.lua create mode 100644 modules/soa/lua/disable_magicked_astrolabe.lua diff --git a/modules/abyssea/lua/fang_key_timer.lua b/modules/abyssea/lua/fang_key_timer.lua new file mode 100644 index 00000000000..644efb8930b --- /dev/null +++ b/modules/abyssea/lua/fang_key_timer.lua @@ -0,0 +1,22 @@ +----------------------------------- +-- Lamian Fang Key Timer Module +-- Reverts timer to conquest tally instead of once per vanadiel day. +-- Source: https://www.bg-wiki.com/ffxi/Version_Update_(03/26/2012) +----------------------------------- +require('modules/module_utils') +----------------------------------- +local m = Module:new('lamian_fang_key_tally_timer') + +m:addOverride('xi.zones.Caedarva_Mire.npcs.qm8.onTrigger', function(player, npc) + local ID = zones[xi.zone.CAEDARVA_MIRE] + + if player:getCharVar('[TIMER]Lamian_Fang_Key') == 0 then + if npcUtil.giveItem(player, xi.item.LAMIAN_FANG_KEY) then + player:setCharVar('[TIMER]Lamian_Fang_Key', 1, NextConquestTally()) -- Can obtain key once per conquest tally + end + else + player:messageSpecial(ID.text.NOTHING_OUT_OF_ORDINARY) + end +end) + +return m diff --git a/modules/soa/lua/disable_magicked_astrolabe.lua b/modules/soa/lua/disable_magicked_astrolabe.lua new file mode 100644 index 00000000000..ac04e086cf7 --- /dev/null +++ b/modules/soa/lua/disable_magicked_astrolabe.lua @@ -0,0 +1,19 @@ +----------------------------------- +-- Disable Magicked Astrolabe (Solo Eldieme Necropolis Access) +-- Source: https://forum.square-enix.com/ffxi/threads/40059 +----------------------------------- +require('modules/module_utils') +----------------------------------- +local m = Module:new('disable_magicked_astrolabe') + +m:addOverride('xi.zones.Windurst_Waters.npcs.Churano-Shurano.onTrigger', function(player, npc) + player:startEvent(280) +end) + +m:addOverride('xi.zones.Windurst_Waters.npcs.Churano-Shurano.onEventUpdate', function(player, csid, option, npc) +end) + +m:addOverride('xi.zones.Windurst_Waters.npcs.Churano-Shurano.onEventFinish', function(player, csid, option, npc) +end) + +return m diff --git a/modules/soa/lua/quest_adjustments.lua b/modules/soa/lua/quest_adjustments.lua index cb95177530c..c3caf782483 100644 --- a/modules/soa/lua/quest_adjustments.lua +++ b/modules/soa/lua/quest_adjustments.lua @@ -6,13 +6,13 @@ require('modules/module_utils') require('scripts/globals/interaction/interaction_global') ----------------------------------- local m = Module:new('chocobos_wounds_era_wait') ------------------------------------ --- Reverts "Chocobo's Wounds" Feeding Timers To 1 Game Day --- Source: https://forum.square-enix.com/ffxi/threads/46068-Feb-19-2015-%28JST%29-Version-Update ------------------------------------ m:addOverride('xi.server.onServerStart', function() super() + ----------------------------------- + -- Reverts "Chocobo's Wounds" Feeding Timers To 1 Game Day + -- Source: https://forum.square-enix.com/ffxi/threads/46068-Feb-19-2015-%28JST%29-Version-Update + ----------------------------------- xi.module.modifyInteractionEntry('scripts/quests/jeuno/Chocobos_Wounds', function(quest) -- Override trade function timer with VanadielUniqueDay instead of GetSystemTime +45 quest.sections[2][xi.zone.UPPER_JEUNO]['Chocobo'].onTrade = function(player, npc, trade) @@ -76,7 +76,14 @@ m:addOverride('xi.server.onServerStart', function() player:confirmTrade() end end) + + ----------------------------------- + -- A Hard Day's Knight: Removes the ability to obtain the Temple Knight Key + -- Source: https://forum.square-enix.com/ffxi/threads/40059 + ----------------------------------- + xi.module.modifyInteractionEntry('scripts/quests/otherAreas/A_Hard_Days_Knight', function(quest) + table.remove(quest.sections, 3) + end) end) --- The final event [64] does not need to set a new timer as the quest is already complete at that point return m