From f491c63b9818ab3bb2fb5d88aa1d77bf61d1ad1b Mon Sep 17 00:00:00 2001 From: Filip Maj Date: Tue, 1 Mar 2022 14:29:59 -0500 Subject: [PATCH] The journal update msg shows even when completing quests now. Added Revenge on the Reavers, Till Death Do Us Part, Beryl Overboard, Have You Seen My Son, and Food for Thought. --- Data/scripts/quests/etc/etc1l3.lua | 108 +++++++++++++++ Data/scripts/quests/etc/etc1l5.lua | 104 ++++++++++++++ Data/scripts/quests/etc/etc1l6.lua | 104 ++++++++++++++ Data/scripts/quests/etc/etc1l7.lua | 133 ++++++++++++++++++ Data/scripts/quests/etc/etc1l8.lua | 213 +++++++++++++++++++++++++++++ Map Server/Actors/Quest/Quest.cs | 3 +- 6 files changed, 663 insertions(+), 2 deletions(-) create mode 100644 Data/scripts/quests/etc/etc1l3.lua create mode 100644 Data/scripts/quests/etc/etc1l5.lua create mode 100644 Data/scripts/quests/etc/etc1l6.lua create mode 100644 Data/scripts/quests/etc/etc1l7.lua create mode 100644 Data/scripts/quests/etc/etc1l8.lua diff --git a/Data/scripts/quests/etc/etc1l3.lua b/Data/scripts/quests/etc/etc1l3.lua new file mode 100644 index 00000000..a6f58c8e --- /dev/null +++ b/Data/scripts/quests/etc/etc1l3.lua @@ -0,0 +1,108 @@ +require ("global") + +--[[ + +Quest Script + +Name: Revenge on the Reavers +Code: Etc1l3 +Id: 110636 +Prereq: Level 45, Any DoW/DoM + +]] + +-- Sequence Numbers +SEQ_000 = 0; -- Kill Reavers. +SEQ_001 = 1; -- Talk to Chaunollet. + +-- Actor Class Ids +ENPC_CHAUNOLLET = 1000125; +BNPC_REAVER_CLAWS = 2180301; +BNPC_REAVER_FINS = 2180302; +BNPC_REAVER_EYES = 2180303; + +-- Quest Markers +MRKR_REAVER_AREA = 11063601; +MRKR_CHAUNOLLET = 11063602; + +-- Counters +COUNTER_QUESTITEM = 0; + +-- Quest Details +OBJECTIVE_AMOUNT = 8; + +function onStart(player, quest) + quest:StartSequence(SEQ_000); +end + +function onFinish(player, quest) +end + +function onStateChange(player, quest, sequence) + if (sequence == SEQ_ACCEPT) then + quest:SetENpc(ENPC_CHAUNOLLET, QFLAG_PLATE); + elseif (sequence == SEQ_000) then + quest:SetENpc(ENPC_CHAUNOLLET); + quest:SetENpc(BNPC_REAVER_EYES); + quest:SetENpc(BNPC_REAVER_FINS); + quest:SetENpc(BNPC_REAVER_CLAWS); + elseif (sequence == SEQ_001) then + quest:SetENpc(ENPC_CHAUNOLLET, QFLAG_REWARD); + end +end + +function onTalk(player, quest, npc, eventName) + local npcClassId = npc.GetActorClassId(); + local seq = quest:GetSequence(); + + -- Offer the quest + if (npcClassId == ENPC_CHAUNOLLET and seq == SEQ_ACCEPT) then + local questAccepted = callClientFunction(player, "delegateEvent", player, quest, "processEventChaunolletStart"); + if (questAccepted == 1) then + player:AcceptQuest(quest); + end + player:EndEvent(); + return; + -- Quest Progress + elseif (seq == SEQ_000) then + if (npcClassId == ENPC_CHAUNOLLET) then + callClientFunction(player, "delegateEvent", player, quest, "processEvent000Chaunollet"); + end + --Quest Complete + elseif (seq == SEQ_001) then + if (npcClassId == ENPC_CHAUNOLLET) then + callClientFunction(player, "delegateEvent", player, quest, "processEvent010Chaunollet"); + callClientFunction(player, "delegateEvent", player, quest, "sqrwa", 200, 1, 1, 9); + player:CompleteQuest(quest); + end + end + + quest:UpdateENPCs(); + player:EndEvent(); +end + +-- TODO FINISH THIS +function onKillBNpc(player, quest, bnpc) + if (bnpc == BNPC_REAVER_EYES or bnpc == BNPC_REAVER_FINS or bnpc == BNPC_REAVER_CLAWS) then + local counterAmount = quest:GetData():IncCounter(COUNTER_QUESTITEM); + attentionMessage(player, 51062, 0, counterAmount, 4); -- You obtain + if (counterAmount >= OBJECTIVE_AMOUNT) then + attentionMessage(player, 25225, quest:GetQuestId()); -- Objectives complete! + quest:StartSequence(SEQ_001); + end + end +end + +function getJournalInformation(player, quest) + return quest:GetData():GetCounter(COUNTER_QUESTITEM); +end + +function getJournalMapMarkerList(player, quest) + local sequence = quest:getSequence(); + + if (sequence == SEQ_000) then + return MRKR_REAVER_AREA; + elseif (sequence == SEQ_001) then + return MRKR_CHAUNOLLET; + end +end \ No newline at end of file diff --git a/Data/scripts/quests/etc/etc1l5.lua b/Data/scripts/quests/etc/etc1l5.lua new file mode 100644 index 00000000..46e69825 --- /dev/null +++ b/Data/scripts/quests/etc/etc1l5.lua @@ -0,0 +1,104 @@ +require ("global") + +--[[ + +Quest Script + +Name: Till Death Do Us Part +Code: Etc1l5 +Id: 110638 +Prereq: Level 20, Any DoW/DoM + +]] + +-- Sequence Numbers +SEQ_000 = 0; -- Kill Musk Roselings. +SEQ_001 = 1; -- Talk to H'lahono. + +-- Actor Class Ids +ENPC_HLAHONO = 1000250; +BNPC_MUSK_ROSELING = 2102717; + +-- Quest Markers +MRKR_ROSELING_AREA = 11063801; +MRKR_HLAHONO = 11063802; + +-- Counters +COUNTER_QUESTITEM = 0; + +-- Quest Details +OBJECTIVE_AMOUNT = 8; + +function onStart(player, quest) + quest:StartSequence(SEQ_000); +end + +function onFinish(player, quest) +end + +function onStateChange(player, quest, sequence) + if (sequence == SEQ_ACCEPT) then + quest:SetENpc(ENPC_HLAHONO, QFLAG_PLATE); + elseif (sequence == SEQ_000) then + quest:SetENpc(ENPC_HLAHONO); + quest:SetENpc(BNPC_MUSK_ROSELING); + elseif (sequence == SEQ_001) then + quest:SetENpc(ENPC_HLAHONO, QFLAG_REWARD); + end +end + +function onTalk(player, quest, npc, eventName) + local npcClassId = npc.GetActorClassId(); + local seq = quest:GetSequence(); + + -- Offer the quest + if (npcClassId == ENPC_HLAHONO and seq == SEQ_ACCEPT) then + local questAccepted = callClientFunction(player, "delegateEvent", player, quest, "processEventLahonoStart"); + if (questAccepted == 1) then + player:AcceptQuest(quest); + end + player:EndEvent(); + return; + -- Quest Progress + elseif (seq == SEQ_000) then + if (npcClassId == ENPC_HLAHONO) then + callClientFunction(player, "delegateEvent", player, quest, "processEventFree"); + end + --Quest Complete + elseif (seq == SEQ_001) then + if (npcClassId == ENPC_HLAHONO) then + callClientFunction(player, "delegateEvent", player, quest, "processEventAfter"); + callClientFunction(player, "delegateEvent", player, quest, "sqrwa", 200, 1, 1, 9); + player:CompleteQuest(quest); + end + end + + quest:UpdateENPCs(); + player:EndEvent(); +end + +-- TODO FINISH THIS +function onKillBNpc(player, quest, bnpc) + if (bnpc == BNPC_MUSK_ROSELING) then + local counterAmount = quest:GetData():IncCounter(COUNTER_QUESTITEM); + attentionMessage(player, 51062, 0, counterAmount, 4); -- You obtain + if (counterAmount >= OBJECTIVE_AMOUNT) then + attentionMessage(player, 25225, quest:GetQuestId()); -- Objectives complete! + quest:StartSequence(SEQ_001); + end + end +end + +function getJournalInformation(player, quest) + return quest:GetData():GetCounter(COUNTER_QUESTITEM); +end + +function getJournalMapMarkerList(player, quest) + local sequence = quest:getSequence(); + + if (sequence == SEQ_000) then + return MRKR_ROSELING_AREA; + elseif (sequence == SEQ_001) then + return MRKR_HLAHONO; + end +end \ No newline at end of file diff --git a/Data/scripts/quests/etc/etc1l6.lua b/Data/scripts/quests/etc/etc1l6.lua new file mode 100644 index 00000000..ce29c0cc --- /dev/null +++ b/Data/scripts/quests/etc/etc1l6.lua @@ -0,0 +1,104 @@ +require ("global") + +--[[ + +Quest Script + +Name: Beryl Overboard +Code: Etc1l6 +Id: 110639 +Prereq: Level 20, Any DoW/DoM, Requires Etc1l5 + +]] + +-- Sequence Numbers +SEQ_000 = 0; -- Kill Beryl Crabs. +SEQ_001 = 1; -- Talk to Nanapiri. + +-- Actor Class Ids +ENPC_NANAPIRI = 1000136; +BNPC_BERYL_CRAB = 2107613; + +-- Quest Markers +MRKR_CRAB_AREA = 11063901; +MRKR_NANAPIRI = 11063902; + +-- Counters +COUNTER_QUESTITEM = 0; + +-- Quest Details +OBJECTIVE_AMOUNT = 8; + +function onStart(player, quest) + quest:StartSequence(SEQ_000); +end + +function onFinish(player, quest) +end + +function onStateChange(player, quest, sequence) + if (sequence == SEQ_ACCEPT) then + quest:SetENpc(ENPC_NANAPIRI, QFLAG_PLATE); + elseif (sequence == SEQ_000) then + quest:SetENpc(ENPC_NANAPIRI); + quest:SetENpc(BNPC_BERYL_CRAB); + elseif (sequence == SEQ_001) then + quest:SetENpc(ENPC_NANAPIRI, QFLAG_REWARD); + end +end + +function onTalk(player, quest, npc, eventName) + local npcClassId = npc.GetActorClassId(); + local seq = quest:GetSequence(); + + -- Offer the quest + if (npcClassId == ENPC_NANAPIRI and seq == SEQ_ACCEPT) then + local questAccepted = callClientFunction(player, "delegateEvent", player, quest, "processEventNanapiriStart"); + if (questAccepted == 1) then + player:AcceptQuest(quest); + end + player:EndEvent(); + return; + -- Quest Progress + elseif (seq == SEQ_000) then + if (npcClassId == ENPC_NANAPIRI) then + callClientFunction(player, "delegateEvent", player, quest, "processEvent005_2"); + end + --Quest Complete + elseif (seq == SEQ_001) then + if (npcClassId == ENPC_NANAPIRI) then + callClientFunction(player, "delegateEvent", player, quest, "processEvent010"); + callClientFunction(player, "delegateEvent", player, quest, "sqrwa", 200, 1, 1, 9); + player:CompleteQuest(quest); + end + end + + quest:UpdateENPCs(); + player:EndEvent(); +end + +-- TODO FINISH THIS +function onKillBNpc(player, quest, bnpc) + if (bnpc == BNPC_BERYL_CRAB) then + local counterAmount = quest:GetData():IncCounter(COUNTER_QUESTITEM); + attentionMessage(player, 51062, 0, counterAmount, 4); -- You obtain + if (counterAmount >= OBJECTIVE_AMOUNT) then + attentionMessage(player, 25225, quest:GetQuestId()); -- Objectives complete! + quest:StartSequence(SEQ_001); + end + end +end + +function getJournalInformation(player, quest) + return quest:GetData():GetCounter(COUNTER_QUESTITEM); +end + +function getJournalMapMarkerList(player, quest) + local sequence = quest:getSequence(); + + if (sequence == SEQ_000) then + return MRKR_CRAB_AREA; + elseif (sequence == SEQ_001) then + return MRKR_NANAPIRI; + end +end \ No newline at end of file diff --git a/Data/scripts/quests/etc/etc1l7.lua b/Data/scripts/quests/etc/etc1l7.lua new file mode 100644 index 00000000..1679a1e8 --- /dev/null +++ b/Data/scripts/quests/etc/etc1l7.lua @@ -0,0 +1,133 @@ +require ("global") + +--[[ + +Quest Script + +Name: Have You Seen My Son +Code: Etc1l7 +Id: 110640 +Prereq: Level 30, Any DoW/DoM + +]] + +-- Sequence Numbers +SEQ_000 = 0; -- Talk to Yuyubesu. +SEQ_001 = 1; -- Kill Bomb Embers. +SEQ_002 = 2; -- Return to Yuyubesu. +SEQ_003 = 3; -- Talk to Hildie. + +-- Actor Class Ids +ENPC_IMANIA = 1001567; +ENPC_YUYUBESU = 1001166; +ENPC_HILDIE = 1000787; +BNPC_BOMB_EMBER = 2101609; + +-- Quest Markers +MRKR_YUYUBESU = 11064001; +MRKR_HILDIE = 11064002; +MRKR_BOMB_AREA = 11064003; + +-- Counters +COUNTER_QUESTITEM = 0; + +-- Quest Details +OBJECTIVE_AMOUNT = 8; + +function onStart(player, quest) + quest:StartSequence(SEQ_000); +end + +function onFinish(player, quest) +end + +function onStateChange(player, quest, sequence) + if (sequence == SEQ_ACCEPT) then + quest:SetENpc(ENPC_IMANIA, QFLAG_PLATE); + elseif (sequence == SEQ_000) then + quest:SetENpc(ENPC_IMANIA); + quest:SetENpc(ENPC_YUYUBESU, QFLAG_REWARD); + elseif (sequence == SEQ_001) then + quest:SetENpc(ENPC_YUYUBESU); + quest:SetENpc(BNPC_BOMB_EMBER); + elseif (sequence == SEQ_002) then + quest:SetENpc(ENPC_YUYUBESU, QFLAG_REWARD); + elseif (sequence == SEQ_003) then + quest:SetENpc(ENPC_YUYUBESU); + quest:SetENpc(ENPC_HILDIE, QFLAG_REWARD); + end +end + +function onTalk(player, quest, npc, eventName) + local npcClassId = npc.GetActorClassId(); + local seq = quest:GetSequence(); + + -- Offer the quest + if (npcClassId == ENPC_IMANIA and seq == SEQ_ACCEPT) then + local questAccepted = callClientFunction(player, "delegateEvent", player, quest, "processEventImaniaStart"); + if (questAccepted == 1) then + player:AcceptQuest(quest); + end + player:EndEvent(); + return; + -- Quest Progress + elseif (seq == SEQ_000) then + if (npcClassId == ENPC_IMANIA) then + callClientFunction(player, "delegateEvent", player, quest, "processEventImaniaFree"); + elseif (npcClassId == ENPC_YUYUBESU) then + callClientFunction(player, "delegateEvent", player, quest, "processEvent000"); + quest:StartSequence(SEQ_001); + end + --Quest Complete + elseif (seq == SEQ_001) then + if (npcClassId == ENPC_YUYUBESU) then + callClientFunction(player, "delegateEvent", player, quest, "processEventYuyubesuFree"); + end + elseif (seq == SEQ_002) then + if (npcClassId == ENPC_YUYUBESU) then + callClientFunction(player, "delegateEvent", player, quest, "processEventYuyubesuAfter"); + quest:StartSequence(SEQ_003); + end + elseif (seq == SEQ_003) then + if (npcClassId == ENPC_YUYUBESU) then + callClientFunction(player, "delegateEvent", player, quest, "processEventYuyubesuAfterFree"); + elseif (npcClassId == ENPC_HILDIE) then + callClientFunction(player, "delegateEvent", player, quest, "processEventHildie"); + callClientFunction(player, "delegateEvent", player, quest, "sqrwa", 200, 1, 1, 9); + player:CompleteQuest(quest); + end + end + + quest:UpdateENPCs(); + player:EndEvent(); +end + +-- TODO FINISH THIS +function onKillBNpc(player, quest, bnpc) + if (bnpc == BNPC_BOMB_EMBER) then + local counterAmount = quest:GetData():IncCounter(COUNTER_QUESTITEM); + attentionMessage(player, 51062, 0, counterAmount, 4); -- You obtain + if (counterAmount >= OBJECTIVE_AMOUNT) then + attentionMessage(player, 25225, quest:GetQuestId()); -- Objectives complete! + quest:StartSequence(SEQ_002); + end + end +end + +function getJournalInformation(player, quest) + return quest:GetData():GetCounter(COUNTER_QUESTITEM); +end + +function getJournalMapMarkerList(player, quest) + local sequence = quest:getSequence(); + + if (sequence == SEQ_000) then + return MRKR_YUYUBESU; + elseif (sequence == SEQ_001) then + return MRKR_BOMB_AREA; + elseif (sequence == SEQ_002) then + return MRKR_YUYUBESU; + elseif (sequence == SEQ_003) then + return MRKR_HILDIE; + end +end \ No newline at end of file diff --git a/Data/scripts/quests/etc/etc1l8.lua b/Data/scripts/quests/etc/etc1l8.lua new file mode 100644 index 00000000..32acc653 --- /dev/null +++ b/Data/scripts/quests/etc/etc1l8.lua @@ -0,0 +1,213 @@ +require ("global") + +--[[ + +Quest Script + +Name: Food for Thought +Code: Etc1l8 +Id: 110641 +Prereq: Level 20, Any Class + +]] + +-- Sequence Numbers +SEQ_000 = 0; -- Spread rumors to all, must perform /psych. +SEQ_001 = 1; -- Return to Dympna. + +-- Actor Class Ids +DYMPNA = 1000331; +AERGWNYT = 1000347; +FERDILLAIX = 1000344; +BUBUROON = 1000219; +RBAHARRA = 1000340; +FUFUNA = 1000345; + +-- Quest Markers +MRKR_DYMPNA = 11064101; +MRKR_AERGWNYT = 11064102; +MRKR_FERDILLAIX = 11064103; +MRKR_BUBUROON = 11064104; +MRKR_RBAHARRA = 11064105; +MRKR_FUFUNA = 11064106; + +-- Quest Flags +FLAG_TALKED_AERGWNYT = 0; +FLAG_TALKED_FERDILLAIX = 1; +FLAG_TALKED_BUBUROON = 2; +FLAG_TALKED_RBAHARRA = 3; +FLAG_TALKED_FUFUNA = 4; + +-- Quest Counters +COUNTER_TALKED = 0; + +function onStart(player, quest) + quest:StartSequence(SEQ_000); +end + +function onFinish(player, quest) +end + +function onStateChange(player, quest, sequence) + if (sequence == SEQ_ACCEPT) then + quest:SetENpc(DYMPNA, QFLAG_NORM); + end + + local data = quest:GetData(); + if (sequence == SEQ_000) then + quest:SetENpc(DYMPNA); + quest:SetENpc(AERGWNYT, (not data:GetFlag(FLAG_TALKED_AERGWNYT) and QFLAG_NORM or QFLAG_NONE)); + quest:SetENpc(FERDILLAIX, (not data:GetFlag(FLAG_TALKED_FERDILLAIX) and QFLAG_NORM or QFLAG_NONE)); + quest:SetENpc(BUBUROON, (not data:GetFlag(FLAG_TALKED_BUBUROON) and QFLAG_NORM or QFLAG_NONE)); + quest:SetENpc(RBAHARRA, (not data:GetFlag(FLAG_TALKED_RBAHARRA) and QFLAG_NORM or QFLAG_NONE)); + quest:SetENpc(FUFUNA, (not data:GetFlag(FLAG_TALKED_FUFUNA) and QFLAG_NORM or QFLAG_NONE)); + elseif (sequence == SEQ_001) then + quest:SetENpc(DYMPNA, QFLAG_REWARD); + end +end + +function onTalk(player, quest, npc, eventName) + local npcClassId = npc.GetActorClassId(); + local seq = quest:GetSequence(); + + -- Offer the quest + if (npcClassId == DYMPNA and not player:HasQuest(quest)) then + local questAccepted = callClientFunction(player, "delegateEvent", player, quest, "processEventOffersStart"); + if (questAccepted == 1) then + player:AcceptQuest(quest); + end + player:EndEvent(); + return; + end + + -- Quest Progress + local data = quest:GetData(); + if (seq == SEQ_000) then + if (npcClassId == DYMPNA) then + callClientFunction(player, "delegateEvent", player, quest, "processEventOffersAfter"); + elseif (npcClassId == AERGWNYT) then + if (not data:GetFlag(FLAG_TALKED_AERGWNYT)) then + callClientFunction(player, "delegateEvent", player, quest, "processEventAergwyntSpeak"); + else + callClientFunction(player, "delegateEvent", player, quest, "processEventAergwyntAfter"); + end + elseif (npcClassId == FERDILLAIX) then + if (not data:GetFlag(FLAG_TALKED_FERDILLAIX)) then + callClientFunction(player, "delegateEvent", player, quest, "processEventFerdillaixSpeak"); + else + callClientFunction(player, "delegateEvent", player, quest, "processEventFerdillaixAfter"); + end + elseif (npcClassId == BUBUROON) then + if (not data:GetFlag(FLAG_TALKED_BUBUROON)) then + callClientFunction(player, "delegateEvent", player, quest, "processEventBuburoonSpeak"); + else + callClientFunction(player, "delegateEvent", player, quest, "processEventBuburoonAfter"); + end + elseif (npcClassId == RBAHARRA) then + if (not data:GetFlag(FLAG_TALKED_RBAHARRA)) then + callClientFunction(player, "delegateEvent", player, quest, "processEventBaharraSpeak"); + else + callClientFunction(player, "delegateEvent", player, quest, "processEventBaharraAfter"); + end + elseif (npcClassId == FUFUNA) then + if (not data:GetFlag(FLAG_TALKED_FUFUNA)) then + callClientFunction(player, "delegateEvent", player, quest, "processEventFufunaSpeak"); + else + callClientFunction(player, "delegateEvent", player, quest, "processEventFufunaAfter"); + end + end + elseif (seq == SEQ_001) then + --Quest Complete + if (npcClassId == DYMPNA) then + callClientFunction(player, "delegateEvent", player, quest, "processEventClear"); + callClientFunction(player, "delegateEvent", player, quest, "sqrwa", 200, 1, 1, 9); + player:CompleteQuest(quest); + end + end + quest:UpdateENPCs(); + player:EndEvent(); +end + +function onEmote(player, quest, npc, emoteId, eventName) + local npcClassId = npc.GetActorClassId(); + local seq = quest:GetSequence(); + local data = quest:GetData(); + local incCounter = false; + + if (seq == SEQ_000 and emoteId == 123) then + if (npcClassId == AERGWNYT) then + if (not data:GetFlag(FLAG_TALKED_AERGWNYT)) then + callClientFunction(player, "delegateEvent", player, quest, "processEventAergwynt"); + data:SetFlag(FLAG_TALKED_AERGWNYT); + incCounter = true; + end + elseif (npcClassId == FERDILLAIX) then + if (not data:GetFlag(FLAG_TALKED_FERDILLAIX)) then + callClientFunction(player, "delegateEvent", player, quest, "processEventFerdillaix"); + data:SetFlag(FLAG_TALKED_FERDILLAIX); + incCounter = true; + end + elseif (npcClassId == BUBUROON) then + if (not data:GetFlag(FLAG_TALKED_BUBUROON)) then + callClientFunction(player, "delegateEvent", player, quest, "processEventBuburoon"); + data:SetFlag(FLAG_TALKED_BUBUROON); + incCounter = true; + end + elseif (npcClassId == RBAHARRA) then + if (not data:GetFlag(FLAG_TALKED_RBAHARRA)) then + callClientFunction(player, "delegateEvent", player, quest, "processEventBaharra"); + data:SetFlag(FLAG_TALKED_RBAHARRA); + incCounter = true; + end + elseif (npcClassId == FUFUNA) then + if (not data:GetFlag(FLAG_TALKED_FUFUNA)) then + callClientFunction(player, "delegateEvent", player, quest, "processEventFufuna"); + data:SetFlag(FLAG_TALKED_FUFUNA); + incCounter = true; + end + end + + -- Increase objective counter & play relevant messages + if (incCounter == true) then + local counterAmount = data:IncCounter(COUNTER_TALKED); + + attentionMessage(player, 51059, 0, counterAmount, 5); -- You have helped spread Dympna's rumor. (... of 5) + + if (seq000_checkCondition(data)) then -- All informants spoken to + attentionMessage(player, 25225, quest.GetQuestId()); -- objectives complete! + quest:UpdateENPCs(); -- Band-aid for a QFLAG_NORM issue + quest:StartSequence(SEQ_001); + end + end + end + + quest:UpdateENPCs(); + player:EndEvent(); +end + +-- Check if all informants are talked to +function seq000_checkCondition(data) + return (data:GetFlag(FLAG_TALKED_AERGWNYT) and + data:GetFlag(FLAG_TALKED_FERDILLAIX) and + data:GetFlag(FLAG_TALKED_BUBUROON) and + data:GetFlag(FLAG_TALKED_RBAHARRA) and + data:GetFlag(FLAG_TALKED_FUFUNA)); +end + +function getJournalMapMarkerList(player, quest) + local sequence = quest:getSequence(); + local data = quest:GetData(); + local possibleMarkers = {}; + + if (sequence == SEQ_000) then + if (not data:GetFlag(FLAG_TALKED_AERGWNYT)) then table.insert(possibleMarkers, MRKR_AERGWNYT); end + if (not data:GetFlag(FLAG_TALKED_FERDILLAIX)) then table.insert(possibleMarkers, MRKR_FERDILLAIX); end + if (not data:GetFlag(FLAG_TALKED_BUBUROON)) then table.insert(possibleMarkers, MRKR_BUBUROON); end + if (not data:GetFlag(FLAG_TALKED_RBAHARRA)) then table.insert(possibleMarkers, MRKR_RBAHARRA); end + if (not data:GetFlag(FLAG_TALKED_FUFUNA)) then table.insert(possibleMarkers, MRKR_FUFUNA); end + elseif (sequence == SEQ_001) then + table.insert(possibleMarkers, MRKR_DYMPNA); + end + + return unpack(possibleMarkers) +end \ No newline at end of file diff --git a/Map Server/Actors/Quest/Quest.cs b/Map Server/Actors/Quest/Quest.cs index a6fbb8a7..72e3cbc9 100644 --- a/Map Server/Actors/Quest/Quest.cs +++ b/Map Server/Actors/Quest/Quest.cs @@ -201,8 +201,7 @@ namespace Meteor.Map.Actors.QuestNS return; // Send the message that the journal has been updated - if (currentSequence != SEQ_NOT_STARTED) - owner.SendGameMessage(Server.GetWorldManager().GetActor(), 25116, 0x20, (object)GetQuestId()); + owner.SendGameMessage(Server.GetWorldManager().GetActor(), 25116, 0x20, (object)GetQuestId()); currentSequence = sequence; questState.UpdateState();