Index: scripts/zones/Lower_Jeuno/npcs/Faursel.lua =================================================================== --- scripts/zones/Lower_Jeuno/npcs/Faursel.lua (revision 2015) +++ scripts/zones/Lower_Jeuno/npcs/Faursel.lua (working copy) @@ -1,37 +1,96 @@ ----------------------------------- -- Area: Lower Jeuno -- NPC: Faursel --- Type: Standard NPC +-- Type: Aht Urhgan Quest NPC -- @zone: 245 -- @pos: 37.985 3.118 -45.208 -- --- Auto-Script: Requires Verification 9Verfied by Brawndo) +-- Starts and Ends Quest "The Road to Aht Urhgan" ----------------------------------- package.loaded["scripts/zones/Lower_Jeuno/TextIDs"] = nil; ------------------------------------ +require("scripts/globals/teleports"); +require("scripts/globals/keyitems"); ----------------------------------- -- onTrade Action ----------------------------------- function onTrade(player,npc,trade) -end; + questStatus = player:getQuestStatus(JEUNO,THE_ROAD_TO_AHT_URHGAN); + + if (questStatus == QUEST_ACCEPTED and questStatusVar == 1) then + + if (trade:hasItemQty(537,1) == true and trade:hasItemQty(538,1) == true and trade:hasItemQty(539,1) == true + and trade:hasItemQty(540,1) == true and trade:hasItemQty(541,1) == true and trade:hasItemQty(542,1) == true and trade:getItemCount() == 6 and trade:getGil() == 0) then -- Beginner List + player:startEvent(0x2756); + elseif (trade:hasItemQty(1532,1) and trade:hasItemQty(1533,1) and trade:hasItemQty(1535,1) and trade:getItemCount() == 3 and trade:getGil() == 0) then -- Intermediate List + player:startEvent(0x2756); + elseif (trade:hasItemQty(1692,1) and trade:hasItemQty(1693,1) and trade:hasItemQty(1694,1) and trade:getItemCount() == 3 and trade:getGil() == 0) then -- Advanced List + player:startEvent(0x2756); + end + + end + +end; + ----------------------------------- -- onTrigger Action ----------------------------------- function onTrigger(player,npc) - player:startEvent(0x274e); -end; + passDay = player:getVar("THE_ROAD_TO_AHT_URHGAN_Day"); + passYear = player:getVar("THE_ROAD_TO_AHT_URHGAN_Year"); + currentDay = VanadielDayOfTheYear(); + passReady = ((passDay < currentDay) or (passDay > currentDay and passYear < VanadielYear())); + questStatus = player:getQuestStatus(JEUNO,THE_ROAD_TO_AHT_URHGAN); +questStatusVar = player:getVar("THE_ROAD_TO_AHT_URHGAN"); + + if (questStatus == QUEST_AVAILABLE) then + player:startEvent(0x274E); -- Offer Quest, First Dialog. + elseif (questStatus == QUEST_ACCEPTED and questStatusVar == 0) then + player:startEvent(0x274F); -- Offically offer quest, Second Dialog. + elseif (questStatus == QUEST_ACCEPTED and questStatusVar == 1) then + player:startEvent(0x2750); -- Player did not make a decision during Second Dialog. Offering the list again. + elseif (questStatus == QUEST_ACCEPTED and questStatusVar == 2 and passReady ~= true) then + player:startEvent(0x2752); -- Bought Bording Pass, Player must wait One Day. + elseif (questStatus == QUEST_ACCEPTED and questStatusVar == 3 and passReady ~= true) then + player:startEvent(0x2758); -- Quested for Bording Pass, Player must wait One Day. + elseif (questStatus == QUEST_ACCEPTED and questStatusVar == 2 and passReady == true) then + player:startEvent(0x2753); -- Bought Bording Pass, ready to issue. + elseif (questStatus == QUEST_ACCEPTED and questStatusVar == 3 and passReady == true) then + player:startEvent(0x2756); -- Quested for Bording Pass, ready to issue. + elseif (questStatus == QUEST_ACCEPTED and questStatusVar == 4) then + player:startEvent(0x2754); -- Bought Bording Pass, returned from the Woodlands. + elseif (questStatus == QUEST_COMPLETED) then + player:startEvent(0x2757); -- Regular chat dialog after the quest. + else + player:startEvent(0x2751); -- Regular chat dialog. + end + +end; + ----------------------------------- -- onEventUpdate ----------------------------------- function onEventUpdate(player,csid,option) - -- printf("CSID: %u",csid); - -- printf("RESULT: %u",option); + + if (csid == 0x274F or csid == 0x2750) then + if (option == 10) then -- Beginner List + player:updateEvent(537,538,539,540,541,542,0,0); + elseif (option == 12) then -- Intermediate List + player:updateEvent(1532,1533,1535,0,0,0,0,0); + elseif (option == 13) then -- Advanced List + player:updateEvent(1692,1693,1694,0,0,0,0,0); + elseif (option == 14) then -- Gil Option + player:updateEvent(1,1,1,1,1,1,player:getGil(),1); + elseif (option == 2 or option == 1073741824) then -- Let me think about it... / Cancel + + end + end + end; ----------------------------------- @@ -39,7 +98,40 @@ ----------------------------------- function onEventFinish(player,csid,option) - -- printf("CSID: %u",csid); - -- printf("RESULT: %u",option); + + if (csid == 0x274E and option == 1) then -- Offer Quest, First Dialog. + player:addQuest(JEUNO,THE_ROAD_TO_AHT_URHGAN); + elseif (csid == 0x274F or csid == 0x2750) then + if (csid == 0x274F and option == 1 or csid == 0x274F and option == 2) then -- Offically offer quest, Second Dialog. + player:setVar("THE_ROAD_TO_AHT_URHGAN",1); + elseif (option == 3) then + player:delGil(500000); + player:setVar("THE_ROAD_TO_AHT_URHGAN",2); + player:setVar("THE_ROAD_TO_AHT_URHGAN_Day",VanadielDayOfTheYear()); + player:setVar("THE_ROAD_TO_AHT_URHGAN_Year",VanadielYear()); + end + elseif (csid == 0x2753) then + player:addKeyItem(MAP_OF_WAJAOM_WOODLANDS); + player:messageSpecial(KEYITEM_OBTAINED,MAP_OF_WAJAOM_WOODLANDS); + player:addKeyItem(BOARDING_PERMIT); + player:messageSpecial(KEYITEM_OBTAINED,BOARDING_PERMIT); + player:setVar("THE_ROAD_TO_AHT_URHGAN",4); + toWajaomLaypoint(player); + elseif (csid == 0x2754) then + player:completeQuest(JEUNO,THE_ROAD_TO_AHT_URHGAN); + player:setVar("THE_ROAD_TO_AHT_URHGAN",0); + player:setVar("THE_ROAD_TO_AHT_URHGAN_Day",0); + player:setVar("THE_ROAD_TO_AHT_URHGAN_Year",0); + player:addFame(JEUNO,30); + elseif (csid == 0x2756) then + player:addKeyItem(BOARDING_PERMIT); + player:messageSpecial(KEYITEM_OBTAINED,BOARDING_PERMIT); + player:completeQuest(JEUNO,THE_ROAD_TO_AHT_URHGAN); + player:setVar("THE_ROAD_TO_AHT_URHGAN",0); + player:setVar("THE_ROAD_TO_AHT_URHGAN_Day",0); + player:setVar("THE_ROAD_TO_AHT_URHGAN_Year",0); + player:addFame(JEUNO,30); + player:tradeComplete(); + end + end; -