From c3b4735cc5464b3ba00aefc3cff0624a73ae9e74 Mon Sep 17 00:00:00 2001 From: Filip Maj Date: Tue, 12 Apr 2022 01:07:17 -0400 Subject: [PATCH] Added missing dialog to some npcs in Legends Adrift. Finished Never Shall the Twain Meet. --- Data/scripts/quests/man/man1l0.lua | 10 +- Data/scripts/quests/man/man2l0.lua | 152 +++++++++++++++++++++-------- 2 files changed, 117 insertions(+), 45 deletions(-) diff --git a/Data/scripts/quests/man/man1l0.lua b/Data/scripts/quests/man/man1l0.lua index 2dd98fa8..33c6f8a3 100644 --- a/Data/scripts/quests/man/man1l0.lua +++ b/Data/scripts/quests/man/man1l0.lua @@ -61,7 +61,8 @@ TRIGGER_FSH = 1090006; TRIGGER_SEAFLD = 1090082; -- ACN Guild Echo -ASSESSOR = 1000121; +ASSESSOR1 = 1000120; +ASSESSOR2 = 1000121; PTAHJHA = 1000150; HALDBERK = 1000160; LILINA = 1000178; @@ -141,7 +142,8 @@ function onStateChange(player, quest, sequence) quest:SetENpc(PTAHJHA, QFLAG_PLATE); elseif (sequence == SEQ_100) then quest:SetENpc(TRIGGER_ACN_LOWER, QFLAG_MAP, false, true); - quest:SetENpc(ASSESSOR); + quest:SetENpc(ASSESSOR1); + quest:SetENpc(ASSESSOR2); quest:SetENpc(HALDBERK); quest:SetENpc(LILINA); quest:SetENpc(VOLUPTUOUS_PIRATE); @@ -271,9 +273,9 @@ function seq000_030_040_onTalk(player, quest, npc, classId) end function seq000_100_onTalk(player, quest, npc, classId) - if (classId == ASSESSOR) then + if (classId == ASSESSOR1) then callClientFunction(player, "delegateEvent", player, quest, "processEvent2000_2"); - elseif (classId == 0) then -- !!!MISSING DIALOG OWNER!!! + elseif (classId == ASSESSOR2) then callClientFunction(player, "delegateEvent", player, quest, "processEvent2000_3"); elseif (classId == HALDBERK) then callClientFunction(player, "delegateEvent", player, quest, "processEvent2000_4"); diff --git a/Data/scripts/quests/man/man2l0.lua b/Data/scripts/quests/man/man2l0.lua index d8d0b50b..08948f44 100644 --- a/Data/scripts/quests/man/man2l0.lua +++ b/Data/scripts/quests/man/man2l0.lua @@ -34,12 +34,14 @@ HOB = 1000151; ISAUDOREL = 1000152; BARRACUDA_KNIGHT1 = 1000183; BARRACUDA_KNIGHT2 = 1000184; -TRIGGER_SHIP1 = 1090003; -TRIGGER_SHIP2 = 1090003; +TRIGGER_DOCKS = 1090386; +EVENTDOOR_SHIP1 = 1090098; +EVENTDOOR_SHIP2 = 1090099; +TRIGGER_DUTYSTART = 1090085; TRIGGER_MSK = 1090003; -TRIGGER_SEAFLD1 = 1090003; -TRIGGER_SEAFLD2 = 1090003; -TRIGGER_SEAFLD3 = 1090003; +TRIGGER_SEAFLD1 = 1090082; +TRIGGER_SEAFLD2 = 1090086; +TRIGGER_SEAFLD3 = 1090087; -- Quest Markers @@ -61,29 +63,38 @@ function onStateChange(player, quest, sequence) if (sequence == SEQ_ACCEPT) then quest:SetENpc(BADERON, QFLAG_PLATE); elseif (sequence == SEQ_000) then + quest:SetENpc(TRIGGER_DOCKS, QFLAG_MAP, false, true); quest:SetENpc(HOB, QFLAG_PLATE); quest:SetENpc(BADERON); elseif (sequence == SEQ_010) then + quest:SetENpc(TRIGGER_DOCKS, QFLAG_NONE, false, true); quest:SetENpc(HOB); quest:SetENpc(BARRACUDA_KNIGHT1); quest:SetENpc(BARRACUDA_KNIGHT2); + quest:SetENpc(EVENTDOOR_SHIP1, QFLAG_MAP, false, true); elseif (sequence == SEQ_015) then + quest:SetENpc(TRIGGER_DOCKS, QFLAG_NONE, false, true); quest:SetENpc(HOB); quest:SetENpc(BARRACUDA_KNIGHT1); quest:SetENpc(BARRACUDA_KNIGHT2); + quest:SetENpc(EVENTDOOR_SHIP2, QFLAG_MAP, false, true); + quest:SetENpc(TRIGGER_DUTYSTART, QFLAG_MAP, false, true); elseif (sequence == SEQ_020) then -- DUTY HAPPENS HERE elseif (sequence == SEQ_035) then quest:SetENpc(BADERON, QFLAG_PLATE); elseif (sequence == SEQ_037) then + quest:SetENpc(TRIGGER_SEAFLD1, QFLAG_MAP, false, true); quest:SetENpc(BADERON); - elseif (sequence == SEQ_040) then elseif (sequence == SEQ_042) then + quest:SetENpc(TRIGGER_MSK, QFLAG_MAP, false, true); quest:SetENpc(BADERON); elseif (sequence == SEQ_045) then quest:SetENpc(ISAUDOREL, QFLAG_PLATE); elseif (sequence == SEQ_050) then + quest:SetENpc(TRIGGER_SEAFLD2, QFLAG_MAP, false, true); elseif (sequence == SEQ_055) then + quest:SetENpc(TRIGGER_SEAFLD3, QFLAG_MAP, false, true); quest:SetENpc(YSHTOLA); end @@ -96,30 +107,28 @@ function onTalk(player, quest, npc) if (sequence == SEQ_ACCEPT) then if (classId == BADERON) then callClientFunction(player, "delegateEvent", player, quest, "processEvent000"); + player:EndEvent(); + player:AcceptQuest(quest, true); + return; end elseif (sequence == SEQ_000) then if (classId == HOB) then - callClientFunction(player, "delegateEvent", player, quest, "processEvent010"); + callClientFunction(player, "delegateEvent", player, quest, "processEvent010"); quest:StartSequence(SEQ_010); + player:EndEvent(); + GetWorldManager():DoZoneChange(player, 192, "PrivateAreaMasterPast", 0, 0, 1832.243, 16.352, 1834.965, 1.584); + return; elseif (classId == BADERON) then - callClientFunction(player, "delegateEvent", player, quest, "processEvent000_2"); + if (npc.CurrentArea.IsPrivate()) then + callClientFunction(player, "delegateEvent", player, quest, "processEvent000_2"); + else + callClientFunction(player, "delegateEvent", player, quest, "processEvent010_3"); + end + end + elseif (sequence >= SEQ_010 and sequence <= SEQ_020) then + if (onTalk_shipSequences(player, quest, npc, classId, sequence) == 1) then + return; end - elseif (sequence == SEQ_010) then - if (classId == HOB) then - callClientFunction(player, "delegateEvent", player, quest, "processEvent011_2"); - elseif (classId == BARRACUDA_KNIGHT1) then - callClientFunction(player, "delegateEvent", player, quest, "processEvent011_3"); - elseif (classId == BARRACUDA_KNIGHT2) then - callClientFunction(player, "delegateEvent", player, quest, "processEvent011_4"); - end - elseif (sequence == SEQ_015) then - if (classId == HOB) then - callClientFunction(player, "delegateEvent", player, quest, "processEvent011_2"); - elseif (classId == BARRACUDA_KNIGHT1) then - callClientFunction(player, "delegateEvent", player, quest, "processEvent011_3"); - elseif (classId == BARRACUDA_KNIGHT2) then - callClientFunction(player, "delegateEvent", player, quest, "processEvent011_4"); - end elseif (sequence == SEQ_035) then if (classId == BADERON) then callClientFunction(player, "delegateEvent", player, quest, "processEvent050"); @@ -148,30 +157,91 @@ function onTalk(player, quest, npc) quest:UpdateENPCs(); end +function onTalk_shipSequences(player, quest, npc, classId, sequence) + if (classId == HOB) then + if (npc.CurrentArea.ZoneId == 230 and npc.CurrentArea.IsPrivate()) then + local returnToShip = callClientFunction(player, "delegateEvent", player, quest, "processEvent010_2"); + if (returnToShip == 1) then + player:EndEvent(); + if (sequence == SEQ_015 or sequence == SEQ_020) then + GetWorldManager():DoZoneChange(player, 192, "PrivateAreaMasterPast", 0, 0, 1828.785, 11.852, 1829.20, -1.675); + else + GetWorldManager():DoZoneChange(player, 192, "PrivateAreaMasterPast", 0, 0, 1832.243, 16.352, 1834.965, 1.584); + end + return 1; + end + elseif (npc.CurrentArea.ZoneId == 192 and npc.CurrentArea.IsPrivate()) then + local returnToPublic = callClientFunction(player, "delegateEvent", player, quest, "processEvent011_2"); + if (returnToPublic == 1) then + player:EndEvent(); + GetWorldManager():DoZoneChange(player, 230, nil, 0, 0, -639.325, 1, 403.967, 1.655); + return 1; + end + elseif (npc.CurrentArea.IsPublic()) then + callClientFunction(player, "delegateEvent", player, quest, "processEvent010_3"); + end + elseif (classId == BARRACUDA_KNIGHT1) then + callClientFunction(player, "delegateEvent", player, quest, "processEvent011_3"); + elseif (classId == BARRACUDA_KNIGHT2) then + callClientFunction(player, "delegateEvent", player, quest, "processEvent011_4"); + end +end + function onPush(player, quest, npc) local data = quest:GetData(); local sequence = quest:getSequence(); local classId = npc:GetActorClassId(); - if (sequence == SEQ_037) then - if (classId == TRIGGER_SEAFLD1) then - callClientFunction(player, "delegateEvent", player, quest, "processEvent060"); - quest:StartSequence(SEQ_040); + if (sequence >= SEQ_000 and sequence <= SEQ_020) then + if (classId == TRIGGER_DOCKS) then + player:EndEvent(); + GetWorldManager():WarpToPrivateArea(player, "PrivateAreaMasterPast", 8, -631.93, 2, 391.75, -0.05); + return; end - elseif (sequence == SEQ_042) then - if (classId == TRIGGER_MSK) then - callClientFunction(player, "delegateEvent", player, quest, "processEvent070"); - quest:StartSequence(SEQ_045); - end - elseif (sequence == SEQ_050) then - if (classId == TRIGGER_SEAFLD2) then - callClientFunction(player, "delegateEvent", player, quest, "processEvent080"); - quest:StartSequence(SEQ_055); - end - elseif (sequence == SEQ_055) then - if (classId == TRIGGER_SEAFLD3) then - callClientFunction(player, "delegateEvent", player, quest, "processEvent081"); + if (sequence == SEQ_010) then + if (classId == EVENTDOOR_SHIP1) then + callClientFunction(player, "delegateEvent", player, quest, "processEvent012"); + quest:StartSequence(SEQ_015); + player:EndEvent(); + GetWorldManager():WarpToPrivateArea(player, "PrivateAreaMasterPast", 1, 1823.579, -61.65, 1816.102, 2.42); + return; + end + elseif (sequence == SEQ_015) then + if (classId == EVENTDOOR_SHIP2) then + player:EndEvent(); + GetWorldManager():WarpToPrivateArea(player, "PrivateAreaMasterPast", 0, 1821.675, 10.352, 1814.964, 2.288); + return; + elseif (classId == TRIGGER_DUTYSTART) then + local result = callClientFunction(player, "delegateEvent", player, quest, "contentsJoinAskInBasaClass"); + if (result == 1) then + -- DO COMBAT DUTY HERE + -- For now just skip the sequence + quest:StartSequence(SEQ_020); + math.randomseed(os.time()); + local randomVal = math.random(1, 2); -- Randomize the winner for now + callClientFunction(player, "delegateEvent", player, quest, "processEvent020", randomVal); + player:EndEvent(); + quest:StartSequence(SEQ_035); + GetWorldManager():DoZoneChange(player, 230, nil, 0, 0, -639.325, 1, 403.967, 1.655); + return; + end + player:EndEvent(); + end end + elseif (sequence == SEQ_037 and classId == TRIGGER_SEAFLD1) then + callClientFunction(player, "delegateEvent", player, quest, "processEvent060"); + quest:NewNpcLsMsg(1); + quest:StartSequence(SEQ_040); + elseif (sequence == SEQ_042 and classId == TRIGGER_MSK) then + callClientFunction(player, "delegateEvent", player, quest, "processEvent070"); + quest:StartSequence(SEQ_045); + elseif (sequence == SEQ_050 and classId == TRIGGER_SEAFLD2) then + callClientFunction(player, "delegateEvent", player, quest, "processEvent080"); + quest:StartSequence(SEQ_055); + GetWorldManager():DoZoneChange(player, 128, "PrivateAreaMasterPast", 3, 0, 198.314, 25.928, 1186.126, 1.6); + elseif (sequence == SEQ_055 and classId == TRIGGER_SEAFLD3) then + callClientFunction(player, "delegateEvent", player, quest, "processEvent081"); + GetWorldManager():DoZoneChange(player, 133, nil, 0, 0, -435.501, 40, 202.698, -2.152); end player:EndEvent();