From 0faa056589d5ddeab496f8369f54f78b5e3ff3de Mon Sep 17 00:00:00 2001 From: Filip Maj Date: Thu, 24 Feb 2022 00:00:58 -0500 Subject: [PATCH] Added A Call to Arms. Fixed up Seeking the Seers. --- Data/scripts/quests/etc/etc3g0.lua | 3 +- Data/scripts/quests/etc/etc3u0.lua | 183 +++++++++++++++++++++++++++++ 2 files changed, 185 insertions(+), 1 deletion(-) create mode 100644 Data/scripts/quests/etc/etc3u0.lua diff --git a/Data/scripts/quests/etc/etc3g0.lua b/Data/scripts/quests/etc/etc3g0.lua index 79cc7076..8faf63cb 100644 --- a/Data/scripts/quests/etc/etc3g0.lua +++ b/Data/scripts/quests/etc/etc3g0.lua @@ -135,7 +135,7 @@ function onTalk(player, quest, npc, eventName) attentionMessage(player, 51061, 0, counterAmount, 5); -- You have heard word of the Seedseers. (... of 5) if (seq000_checkCondition(data)) then -- All Seers spoken to - attentionMessage(player, 25225, 110674); -- "Seeing the Seers" objectives complete! + attentionMessage(player, 25225, quest:GetQuestId()); -- "Seeing the Seers" objectives complete! quest:UpdateENPCs(); -- Band-aid for a QFLAG_PLATE issue quest:StartSequence(SEQ_001); end @@ -166,6 +166,7 @@ end function getJournalMapMarkerList(player, quest) local sequence = quest:getSequence(); + local data = quest:GetData(); local possibleMarkers = {}; if (sequence == SEQ_000) then diff --git a/Data/scripts/quests/etc/etc3u0.lua b/Data/scripts/quests/etc/etc3u0.lua new file mode 100644 index 00000000..422718d1 --- /dev/null +++ b/Data/scripts/quests/etc/etc3u0.lua @@ -0,0 +1,183 @@ +require ("global") + +--[[ + +Quest Script + +Name: A Call to Arms +Code: Etc3u0 +Id: 110695 +Prereq: Level 5, Any Class + +]] + +-- Sequence Numbers +SEQ_000 = 0; -- Talk to all the ___. +SEQ_001 = 1; -- Return to Fruhybolg. + +-- Actor Class Ids +FRUHYBOLG = 1000964; +ZOENGTERBIN = 1000784; +LETTICE = 1000788; +THIMM = 1001439; +VANNES = 1001464; +JEGER = 1000655; + +-- Quest Markers +MRKR_FRUHYBOLG = 11090001; +MRKR_ZOENGTERBIN = 11090002; +MRKR_LETTICE = 11090003; +MRKR_THIMM = 11090004; +MRKR_VANNES = 11090005; +MRKR_JEGER = 11090006; + +-- Quest Flags +FLAG_TALKED_VANNES = 1; +FLAG_TALKED_JEGER = 2; +FLAG_TALKED_LETTICE = 3; +FLAG_TALKED_ZOENGTERBIN = 4; +FLAG_TALKED_THIMM = 5; + +-- 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(FRUHYBOLG, QFLAG_PLATE); + end + + local data = quest:GetData(); + if (sequence == SEQ_000) then + quest:SetENpc(FRUHYBOLG); + quest:SetENpc(VANNES, (not data:GetFlag(FLAG_TALKED_VANNES) and QFLAG_PLATE or QFLAG_NONE)); + quest:SetENpc(JEGER, (not data:GetFlag(FLAG_TALKED_JEGER) and QFLAG_PLATE or QFLAG_NONE)); + quest:SetENpc(LETTICE, (not data:GetFlag(FLAG_TALKED_LETTICE) and QFLAG_PLATE or QFLAG_NONE)); + quest:SetENpc(ZOENGTERBIN, (not data:GetFlag(FLAG_TALKED_ZOENGTERBIN) and QFLAG_PLATE or QFLAG_NONE)); + quest:SetENpc(THIMM, (not data:GetFlag(FLAG_TALKED_THIMM) and QFLAG_PLATE or QFLAG_NONE)); + elseif (sequence == SEQ_001) then + quest:SetENpc(FRUHYBOLG, QFLAG_REWARD); + end +end + +function onTalk(player, quest, npc, eventName) + local npcClassId = npc.GetActorClassId(); + local seq = quest:GetSequence(); + local incCounter = false; + + -- Offer the quest + if (npcClassId == FRUHYBOLG and not player:HasQuest(quest)) then + local questAccepted = callClientFunction(player, "delegateEvent", player, quest, "processEventFhruybolgStart"); + 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 == FRUHYBOLG) then + callClientFunction(player, "delegateEvent", player, quest, "processEventOffersAfter"); + elseif (npcClassId == VANNES) then + if (not data:GetFlag(FLAG_TALKED_VANNES)) then + callClientFunction(player, "delegateEvent", player, quest, "processEvent005_V"); + data:SetFlag(FLAG_TALKED_VANNES); + incCounter = true; + else + callClientFunction(player, "delegateEvent", player, quest, "processEvent005_V_2"); + end + elseif (npcClassId == JEGER) then + if (not data:GetFlag(FLAG_TALKED_JEGER)) then + callClientFunction(player, "delegateEvent", player, quest, "processEvent005_J"); + data:SetFlag(FLAG_TALKED_JEGER); + incCounter = true; + else + callClientFunction(player, "delegateEvent", player, quest, "processEvent005_J_2"); + end + elseif (npcClassId == LETTICE) then + if (not data:GetFlag(FLAG_TALKED_LETTICE)) then + callClientFunction(player, "delegateEvent", player, quest, "processEvent005_L"); + data:SetFlag(FLAG_TALKED_LETTICE); + incCounter = true; + else + callClientFunction(player, "delegateEvent", player, quest, "processEvent005_L_2"); + end + elseif (npcClassId == ZOENGTERBIN) then + if (not data:GetFlag(FLAG_TALKED_ZOENGTERBIN)) then + callClientFunction(player, "delegateEvent", player, quest, "processEvent005_Z"); + data:SetFlag(FLAG_TALKED_ZOENGTERBIN); + incCounter = true; + else + callClientFunction(player, "delegateEvent", player, quest, "processEvent005_Z_2"); + end + elseif (npcClassId == THIMM) then + if (not data:GetFlag(FLAG_TALKED_THIMM)) then + callClientFunction(player, "delegateEvent", player, quest, "processEvent005_T"); + data:SetFlag(FLAG_TALKED_THIMM); + incCounter = true; + else + callClientFunction(player, "delegateEvent", player, quest, "processEvent005_T_2"); + end + end + + -- Increase objective counter & play relevant messages + if (incCounter == true) then + local counterAmount = data:IncCounter(COUNTER_TALKED); + + attentionMessage(player, 51062, 0, counterAmount, 5); -- You have passed on word of the rite. (... of 5) + + if (seq000_checkCondition(data)) then -- All people spoken to + attentionMessage(player, 25225, quest:GetQuestId()); -- "A Call to Arms" objectives complete! + quest:UpdateENPCs(); -- Band-aid for a QFLAG_PLATE issue + quest:StartSequence(SEQ_001); + end + end + + elseif (seq == SEQ_001) then + --Quest Complete + if (npcClassId == FRUHYBOLG) 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 + + +-- Check if all people are talked to +function seq000_checkCondition(data) + return (data:GetFlag(FLAG_TALKED_VANNES) and + data:GetFlag(FLAG_TALKED_JEGER) and + data:GetFlag(FLAG_TALKED_LETTICE) and + data:GetFlag(FLAG_TALKED_ZOENGTERBIN) and + data:GetFlag(FLAG_TALKED_THIMM)); +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_VANNES)) then table.insert(possibleMarkers, MRKR_SYBELL); end + if (not data:GetFlag(FLAG_TALKED_JEGER)) then table.insert(possibleMarkers, MRKR_KHUMA_MOSHROCA); end + if (not data:GetFlag(FLAG_TALKED_LETTICE)) then table.insert(possibleMarkers, MRKR_LETTICE); end + if (not data:GetFlag(FLAG_TALKED_ZOENGTERBIN)) then table.insert(possibleMarkers, MRKR_ZOENGTERBIN); end + if (not data:GetFlag(FLAG_TALKED_THIMM)) then table.insert(possibleMarkers, MRKR_THIMM); end + elseif (sequence == SEQ_001) then + table.insert(possibleMarkers, MRKR_KINNISON); + end + + return unpack(possibleMarkers) +end \ No newline at end of file