From 9f0cec30fea42f6eb19789b0158d7d85f26fe4dc Mon Sep 17 00:00:00 2001 From: Aeshur Date: Sun, 26 Apr 2026 12:11:53 -0400 Subject: [PATCH] [lua] Convert COR AF2 to Interaction Framework --- scripts/globals/quests.lua | 2 +- ...COR_AF2_Navigating_the_Unfriendly_Seas.lua | 144 ++++++++++++++++++ .../zones/Arrapago_Reef/DefaultActions.lua | 1 + scripts/zones/Arrapago_Reef/npcs/qm6.lua | 45 ------ scripts/zones/Nashmau/npcs/Leleroon.lua | 12 -- .../zones/Wajaom_Woodlands/DefaultActions.lua | 1 + .../zones/Wajaom_Woodlands/npcs/Leypoint.lua | 40 ----- 7 files changed, 147 insertions(+), 98 deletions(-) create mode 100644 scripts/quests/ahtUrhgan/COR_AF2_Navigating_the_Unfriendly_Seas.lua delete mode 100644 scripts/zones/Arrapago_Reef/npcs/qm6.lua delete mode 100644 scripts/zones/Wajaom_Woodlands/npcs/Leypoint.lua diff --git a/scripts/globals/quests.lua b/scripts/globals/quests.lua index 81d18be74aa..e24d37ef5bd 100644 --- a/scripts/globals/quests.lua +++ b/scripts/globals/quests.lua @@ -646,7 +646,7 @@ xi.quest.id = OMENS = 22, -- + Converted TRANSFORMATIONS = 23, -- + Converted EQUIPPED_FOR_ALL_OCCASIONS = 24, -- + Converted - NAVIGATING_THE_UNFRIENDLY_SEAS = 25, -- + + NAVIGATING_THE_UNFRIENDLY_SEAS = 25, -- + Converted AGAINST_ALL_ODDS = 26, -- + THE_WAYWARD_AUTOMATON = 27, -- + OPERATION_TEATIME = 28, -- + diff --git a/scripts/quests/ahtUrhgan/COR_AF2_Navigating_the_Unfriendly_Seas.lua b/scripts/quests/ahtUrhgan/COR_AF2_Navigating_the_Unfriendly_Seas.lua new file mode 100644 index 00000000000..ba9d7e0644b --- /dev/null +++ b/scripts/quests/ahtUrhgan/COR_AF2_Navigating_the_Unfriendly_Seas.lua @@ -0,0 +1,144 @@ +----------------------------------- +-- Navigating the Unfriendly Seas +-- Corsair AF2 Quest +----------------------------------- +-- !addquest 6 25 +-- qm6 (H-10 / Boat): !pos 468.767 -12.292 111.817 54 +-- Leleroon : !pos -14.687 0.000 25.114 53 +-- Leypoint : !pos -200.027 -8.500 80.058 51 +----------------------------------- +local wajaomID = zones[xi.zone.WAJAOM_WOODLANDS] +----------------------------------- + +local quest = Quest:new(xi.questLog.AHT_URHGAN, xi.quest.id.ahtUrhgan.NAVIGATING_THE_UNFRIENDLY_SEAS) + +quest.reward = +{ + item = xi.item.CORSAIRS_CULOTTES, +} + +quest.sections = +{ + { + check = function(player, status, vars) + return status == xi.questStatus.QUEST_AVAILABLE and + player:getQuestStatus(xi.questLog.AHT_URHGAN, xi.quest.id.ahtUrhgan.EQUIPPED_FOR_ALL_OCCASIONS) == xi.questStatus.QUEST_COMPLETED and + player:getMainJob() == xi.job.COR and + player:getMainLvl() >= xi.settings.main.AF2_QUEST_LEVEL + end, + + [xi.zone.ARRAPAGO_REEF] = + { + ['qm6'] = + { + onTrigger = function(player, npc) + return quest:progressEvent(232) + end, + }, + + onEventFinish = + { + [232] = function(player, csid, option, npc) + quest:begin(player) + end, + }, + }, + }, + + { + check = function(player, status, vars) + return status == xi.questStatus.QUEST_ACCEPTED + end, + + [xi.zone.NASHMAU] = + { + ['Leleroon'] = + { + onTrade = function(player, npc, trade) + if + quest:getVar(player, 'Prog') == 0 and + npcUtil.tradeHasExactly(trade, xi.item.HYDROGAUGE) + then + return quest:progressEvent(283) + end + end, + + onTrigger = function(player, npc) + if + quest:getVar(player, 'Prog') >= 1 and + quest:getVar(player, 'Prog') < 3 + then + return quest:event(292) + end + end, + }, + + onEventFinish = + { + [283] = function(player, csid, option, npc) + if quest:getVar(player, 'Prog') == 0 then + player:confirmTrade() + quest:setVar(player, 'Prog', 1) + end + end, + }, + }, + + [xi.zone.WAJAOM_WOODLANDS] = + { + ['Leypoint'] = + { + onTrade = function(player, npc, trade) + if + quest:getVar(player, 'Prog') == 1 and + npcUtil.tradeHasExactly(trade, xi.item.HYDROGAUGE) + then + player:confirmTrade() + quest:setVar(player, 'Prog', 2) + quest:setVar(player, 'Wait', GetSystemTime() + 60) -- 1 minute wait time + return quest:messageSpecial(wajaomID.text.PLACE_HYDROGAUGE, xi.item.HYDROGAUGE) + end + end, + + onTrigger = function(player, npc) + if quest:getVar(player, 'Prog') == 2 then + if quest:getVar(player, 'Wait') > GetSystemTime() then + return quest:messageSpecial(wajaomID.text.ENIGMATIC_LIGHT, xi.item.HYDROGAUGE) + else + return quest:progressEvent(508) + end + end + end, + }, + + onEventFinish = + { + [508] = function(player, csid, option, npc) + quest:setVar(player, 'Prog', 3) + quest:setVar(player, 'Wait', 0) + end, + }, + }, + + [xi.zone.ARRAPAGO_REEF] = + { + ['qm6'] = + { + onTrigger = function(player, npc) + if quest:getVar(player, 'Prog') == 3 then + return quest:progressEvent(233) + end + end, + }, + + onEventFinish = + { + [233] = function(player, csid, option, npc) + quest:complete(player) + end, + }, + }, + }, +} + +return quest diff --git a/scripts/zones/Arrapago_Reef/DefaultActions.lua b/scripts/zones/Arrapago_Reef/DefaultActions.lua index 947f8a37528..d0d273cb4c1 100644 --- a/scripts/zones/Arrapago_Reef/DefaultActions.lua +++ b/scripts/zones/Arrapago_Reef/DefaultActions.lua @@ -5,6 +5,7 @@ return { ['qm2'] = { messageSpecial = ID.text.GLITTERING_FRAGMENTS }, ['qm3'] = { messageSpecial = ID.text.FLUTTERY_OBJECTS }, ['qm4'] = { messageSpecial = ID.text.STIFLING_STENCH }, + ['qm6'] = { messageSpecial = ID.text.NOTHING_OUT_OF_ORDINARY }, ['qm9'] = { messageSpecial = ID.text.NOTHING_OUT_OF_ORDINARY }, ['qm10'] = { messageSpecial = ID.text.NOTHING_OUT_OF_ORDINARY }, } diff --git a/scripts/zones/Arrapago_Reef/npcs/qm6.lua b/scripts/zones/Arrapago_Reef/npcs/qm6.lua deleted file mode 100644 index d5d80b4cd16..00000000000 --- a/scripts/zones/Arrapago_Reef/npcs/qm6.lua +++ /dev/null @@ -1,45 +0,0 @@ ------------------------------------ --- Area: Arrapago Reef --- NPC: ??? (H-10 / COR boat) --- Involved in Quests: 'Luck of the Draw', 'Equipped for All Occasions', 'Navigating the Unfriendly Seas' --- !pos 468.767 -12.292 111.817 54 ------------------------------------ -local ID = zones[xi.zone.ARRAPAGO_REEF] ------------------------------------ ----@type TNpcEntity -local entity = {} - -entity.onTrigger = function(player, npc) - local mJob = player:getMainJob() - local mLvl = player:getMainLvl() - local efao = player:getQuestStatus(xi.questLog.AHT_URHGAN, xi.quest.id.ahtUrhgan.EQUIPPED_FOR_ALL_OCCASIONS) - local ntus = player:getQuestStatus(xi.questLog.AHT_URHGAN, xi.quest.id.ahtUrhgan.NAVIGATING_THE_UNFRIENDLY_SEAS) - - -- NAVIGATING THE UNFRIENDLY SEAS - if - efao == xi.questStatus.QUEST_COMPLETED and - ntus == xi.questStatus.QUEST_AVAILABLE and - mJob == xi.job.COR and - mLvl >= xi.settings.main.AF2_QUEST_LEVEL - then - player:startEvent(232) - elseif player:getCharVar('NavigatingtheUnfriendlySeas') == 4 then - player:startEvent(233) - - -- DEFAULT DIALOG - else - player:messageSpecial(ID.text.NOTHING_OUT_OF_ORDINARY) - end -end - -entity.onEventFinish = function(player, csid, option, npc) - -- NAVIGATING THE UNFRIENDLY SEAS - if csid == 232 then - player:addQuest(xi.questLog.AHT_URHGAN, xi.quest.id.ahtUrhgan.NAVIGATING_THE_UNFRIENDLY_SEAS) - player:setCharVar('NavigatingtheUnfriendlySeas', 1) - elseif csid == 233 then - npcUtil.completeQuest(player, xi.questLog.AHT_URHGAN, xi.quest.id.ahtUrhgan.NAVIGATING_THE_UNFRIENDLY_SEAS, { item = 15601, var = { 'NavigatingtheUnfriendlySeas', 'HydrogauageTimer' } }) - end -end - -return entity diff --git a/scripts/zones/Nashmau/npcs/Leleroon.lua b/scripts/zones/Nashmau/npcs/Leleroon.lua index 7a3285791cc..eebf8d7b6fb 100644 --- a/scripts/zones/Nashmau/npcs/Leleroon.lua +++ b/scripts/zones/Nashmau/npcs/Leleroon.lua @@ -8,18 +8,6 @@ local entity = {} entity.onTrade = function(player, npc, trade) - if - player:getQuestStatus(xi.questLog.AHT_URHGAN, xi.quest.id.ahtUrhgan.NAVIGATING_THE_UNFRIENDLY_SEAS) == xi.questStatus.QUEST_ACCEPTED and - player:getCharVar('NavigatingtheUnfriendlySeas') <= 2 - then - if - trade:hasItemQty(xi.item.HYDROGAUGE, 1) and - trade:getItemCount() == 1 - then - player:startEvent(283) - player:setCharVar('NavigatingtheUnfriendlySeas', 2) - end - end end entity.onTrigger = function(player, npc) diff --git a/scripts/zones/Wajaom_Woodlands/DefaultActions.lua b/scripts/zones/Wajaom_Woodlands/DefaultActions.lua index 0968d79bb11..bfb65bcad3d 100644 --- a/scripts/zones/Wajaom_Woodlands/DefaultActions.lua +++ b/scripts/zones/Wajaom_Woodlands/DefaultActions.lua @@ -3,6 +3,7 @@ local ID = zones[xi.zone.WAJAOM_WOODLANDS] return { ['_1f2'] = { event = 515 }, ['Giwahb_Watchtower'] = { messageSpecial = ID.text.GIWAHB_WATCHTOWER_LOCKED }, + ['Leypoint'] = { messageSpecial = ID.text.LEYPOINT }, ['Mythralline_Wellspring'] = { messageSpecial = ID.text.WELLSPRING }, ['Pephredo_Hive'] = { messageSpecial = ID.text.NOTHING_OUT_OF_ORDINARY }, ['Warhorse_Hoofprint'] = { messageSpecial = ID.text.WARHORSE_HOOFPRINT }, diff --git a/scripts/zones/Wajaom_Woodlands/npcs/Leypoint.lua b/scripts/zones/Wajaom_Woodlands/npcs/Leypoint.lua deleted file mode 100644 index d92d241bce8..00000000000 --- a/scripts/zones/Wajaom_Woodlands/npcs/Leypoint.lua +++ /dev/null @@ -1,40 +0,0 @@ ------------------------------------ --- Area: Wajaom Woodlands --- NPC: Leypoint --- Teleport point, Quest -- NAVIGATING THE UNFRIENDLY SEAS RELATED --- !pos -200.027 -8.500 80.058 51 ------------------------------------ -local ID = zones[xi.zone.WAJAOM_WOODLANDS] ------------------------------------ ----@type TNpcEntity -local entity = {} - -entity.onTrade = function(player, npc, trade) - if - player:getQuestStatus(xi.questLog.AHT_URHGAN, xi.quest.id.ahtUrhgan.NAVIGATING_THE_UNFRIENDLY_SEAS) == xi.questStatus.QUEST_ACCEPTED and - player:getCharVar('NavigatingtheUnfriendlySeas') == 2 - then - if trade:hasItemQty(xi.item.HYDROGAUGE, 1) and trade:getItemCount() == 1 then -- Trade Hydrogauge - player:messageSpecial(ID.text.PLACE_HYDROGAUGE, xi.item.HYDROGAUGE) -- You set the in the trench. - player:tradeComplete() --Trade Complete - player:setCharVar('NavigatingtheUnfriendlySeas', 3) - player:setCharVar('Leypoint_waitJTime', GetSystemTime() + 60) -- Wait 60 seconds. - end - end -end - -entity.onTrigger = function(player, npc) - if - player:getQuestStatus(xi.questLog.AHT_URHGAN, xi.quest.id.ahtUrhgan.NAVIGATING_THE_UNFRIENDLY_SEAS) == xi.questStatus.QUEST_ACCEPTED and - player:getCharVar('NavigatingtheUnfriendlySeas') == 3 - then - if player:getCharVar('Leypoint_waitJTime') <= GetSystemTime() then - player:startEvent(508) - player:setCharVar('NavigatingtheUnfriendlySeas', 4) -- play cs for having waited enough time - else - player:messageSpecial(ID.text.ENIGMATIC_LIGHT, xi.item.HYDROGAUGE) -- play cs for not waiting long enough - end - end -end - -return entity