Merge remote-tracking branch 'origin/ioncannon/quest_system' into Jorge/quest_system

# Conflicts:
#	Data/scripts/commands/EmoteSitCommand.lua  - Resolved using Theirs
This commit is contained in:
CuriousJorge 2022-03-11 19:21:42 -05:00
commit e94c037fb5
73 changed files with 1096 additions and 212 deletions

View file

@ -28,7 +28,7 @@ SEQ_065 = 65; -- Return to FSH Guild
SEQ_070 = 70; -- Contact Baderon on LS
SEQ_075 = 75; -- Go to the ARM and BSM Guilds. Talk to Bodenolf.
SEQ_080 = 80; -- Speak with H'naanza
SEQ_085 = 85; -- Speak with Bodenolf
SEQ_085 = 85; -- Walk into push trigger
SEQ_090 = 90; -- Contact Baderon on LS
SEQ_092 = 92; -- Return to Baderon.
@ -56,7 +56,7 @@ ISANDOREL = 1000152;
MERLZIRN = 1000472;
MSK_TRIGGER = 1090001;
-- Echo in Mrd Guild
-- Echo in MSK Guild
NERVOUS_BARRACUDA = 1000096;
INTIMIDATING_BARRACUDA = 1000097;
OVEREAGER_BARRACUDA = 1000107;
@ -91,14 +91,23 @@ JOELLAUT = 1000163;
WERNER = 1000247;
HIHINE = 1000267;
TRINNE = 1000268;
ECHO_EXIT_TRIGGER2 = 1090001;
ECHO_EXIT_TRIGGER2 = 1090007;
-- Quest Markers
-- Quest Data
CNTR_SEQ7_CUL = 1;
CNTR_SEQ7_MRD = 2;
CNTR_SEQ7_MSK = 2;
CNTR_SEQ40_FSH = 3;
CNTR_LS_MSG = 4;
-- Msg packs for the Npc LS
NPCLS_MSGS = {
{339},
{80, 81, 82},
{131, 326, 132},
{161, 162, 163, 164}
};
function onStart(player, quest)
quest:StartSequence(SEQ_000);
@ -137,21 +146,17 @@ function onStateChange(player, quest, sequence)
quest:SetENpc(BADERON, QFLAG_PLATE);
elseif (sequence == SEQ_007) then
local subseqCUL = data:GetCounter(CNTR_SEQ7_CUL);
local subseqMRD = data:GetCounter(CNTR_SEQ7_MRD);
local subseqMSK = data:GetCounter(CNTR_SEQ7_MSK);
-- Always active in this seqence
quest:SetENpc(BADERON);
quest:SetENpc(CHARLYS, subseqCUL == 0 and QFLAG_PLATE or QFLAG_NONE);
-- Down and Up the MSK guild
quest:SetENpc(ISANDOREL, (subseqMRD == 0 or subseqMRD == 2) and QFLAG_PLATE or QFLAG_NONE);
if (subseqMRD == 1) then
quest:SetENpc(ISANDOREL, (subseqMSK == 0 or subseqMSK == 2) and QFLAG_PLATE or QFLAG_NONE);
if (subseqMSK == 1) then
quest:SetENpc(MSK_TRIGGER, QFLAG_MAP, false, true);
elseif (subseqMRD == 2) then
elseif (subseqMSK == 2) then
quest:SetENpc(MERLZIRN);
end
-- In Echo
quest:SetENpc(NERVOUS_BARRACUDA);
quest:SetENpc(INTIMIDATING_BARRACUDA);
@ -163,11 +168,7 @@ function onStateChange(player, quest, sequence)
quest:SetENpc(ADVENTURER1);
quest:SetENpc(ADVENTURER2);
quest:SetENpc(ADVENTURER3);
quest:SetENpc(ECHO_EXIT_TRIGGER, subseqMRD == 3 and QFLAG_MAP or QFLAG_NONE, false, subseqMRD == 3);
if (subseqCUL == 1 and subseqMRD == 4) then
player:SetNpcLS(1, 1);
end
quest:SetENpc(ECHO_EXIT_TRIGGER, subseqMSK == 3 and QFLAG_MAP or QFLAG_NONE, false, subseqMSK == 3);
elseif (sequence == SEQ_035) then
quest:SetENpc(NNMULIKA, QFLAG_PLATE);
elseif (sequence == SEQ_040) then
@ -363,7 +364,7 @@ function seq000_onTalk(player, quest, npc, classId)
callClientFunction(player, "delegateEvent", player, quest, "processEvent010_8");
elseif (classId == BADERON) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent020");
player:SetNpcLS(1, 3);
quest:NewNpcLsMsg(1);
quest:StartSequence(SEQ_003);
player:EndEvent();
@ -392,12 +393,12 @@ end
function seq007_onTalk(player, quest, npc, classId)
local data = quest:GetData();
local subseqCUL = data:GetCounter(CNTR_SEQ7_CUL);
local subseqMRD = data:GetCounter(CNTR_SEQ7_MRD);
local subseqMSK = data:GetCounter(CNTR_SEQ7_MSK);
if (classId == BADERON) then
if (subseqCUL == 1) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent027_3");
elseif (subseqMRD == 4) then
elseif (subseqMSK == 4) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent027_4");
else
callClientFunction(player, "delegateEvent", player, quest, "processEvent027_2");
@ -405,20 +406,23 @@ function seq007_onTalk(player, quest, npc, classId)
elseif (classId == CHARLYS) then
if (subseqCUL == 0) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent030");
data:IncCounter(CNTR_SEQ7_CUL);
data:IncCounter(CNTR_SEQ7_CUL);
if (data:GetCounter(CNTR_SEQ7_MSK) == 4) then
seq007_endSequence(player, quest);
end
--give 1000g
else
callClientFunction(player, "delegateEvent", player, quest, "processEvent030_2");
end
elseif (classId == ISANDOREL) then
if (subseqMRD == 2) then
if (subseqMSK == 2) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent050");
data:IncCounter(CNTR_SEQ7_MRD);
data:IncCounter(CNTR_SEQ7_MSK);
GetWorldManager():WarpToPrivateArea(player, "PrivateAreaMasterPast", 3);
elseif (subseqMRD == 0) then
elseif (subseqMSK == 0) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent035");
data:IncCounter(CNTR_SEQ7_MRD);
elseif (subseqMRD == 1) then
data:IncCounter(CNTR_SEQ7_MSK);
elseif (subseqMSK == 1) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent035_2");
end
elseif (classId == MERLZIRN) then
@ -448,6 +452,11 @@ function seq007_onTalk(player, quest, npc, classId)
player:EndEvent();
end
function seq007_endSequence(player, quest)
callClientFunction(player, "delegateEvent", player, quest, "processEvent033");
quest:NewNpcLsMsg(1);
end
function seq080_085_onTalk(player, quest, npc, classId)
if (classId == IOFA) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent630_2");
@ -477,13 +486,16 @@ function onPush(player, quest, npc)
if (sequence == SEQ_007) then
if (classId == MSK_TRIGGER) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent040");
data:IncCounter(CNTR_SEQ7_MRD);
data:IncCounter(CNTR_SEQ7_MSK);
player:EndEvent();
quest:UpdateENPCs();
GetWorldManager():DoZoneChange(player, 230, nil, 0, 15, -620.0, 29.476, -70.050, 0.791);
elseif (classId == ECHO_EXIT_TRIGGER) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent060");
data:IncCounter(CNTR_SEQ7_MRD);
data:IncCounter(CNTR_SEQ7_MSK);
if (data:GetCounter(CNTR_SEQ7_CUL) == 1) then
seq007_endSequence(player, quest);
end
player:EndEvent();
quest:UpdateENPCs();
GetWorldManager():WarpToPublicArea(player);
@ -509,12 +521,15 @@ function onPush(player, quest, npc)
callClientFunction(player, "delegateEvent", player, quest, "processEvent620");
-- Give 3000 gil
player:EndEvent();
quest:StartSequence(SEQ_075);
quest:NewNpcLsMsg(1);
quest:StartSequence(SEQ_070);
end
elseif (sequence == SEQ_085) then
if (classId == ECHO_EXIT_TRIGGER2) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent635");
player:EndEvent();
player:EndEvent();
quest:NewNpcLsMsg(1);
quest:StartSequence(SEQ_090);
quest:UpdateENPCs();
GetWorldManager():WarpToPublicArea(player);
end
@ -632,29 +647,43 @@ function onNotice(player, quest, target)
quest:UpdateENPCs();
end
function onNpcLS(player, quest, npcLSId)
function onNpcLS(player, quest, from, msgStep)
local sequence = quest:getSequence();
if (npcLSId == 1) then
player:SetNpcLS(1, 1);
if (sequence == SEQ_003) then
player:SendGameMessageLocalizedDisplayName(quest, 298, 39, 1000015, nil);
local msgPack;
if (from == 1) then
-- Get the right msg pack
if (sequence == SEQ_003) then
msgPack = 1;
elseif (sequence == SEQ_007 or sequence == SEQ_035) then
msgPack = 2;
elseif (sequence == SEQ_070 or sequence == SEQ_075) then
msgPack = 3;
elseif (sequence == SEQ_090 or sequence == SEQ_092) then
msgPack = 4;
end
-- Quick way to handle all msgs nicely.
player:SendGameMessageLocalizedDisplayName(quest, NPCLS_MSGS[msgPack][msgStep], MESSAGE_TYPE_NPC_LINKSHELL, 1000015);
if (msgStep >= #NPCLS_MSGS[msgPack]) then
quest:EndOfNpcLsMsgs();
else
quest:ReadNpcLsMsg();
end
-- Handle anything else
if (sequence == SEQ_003) then
endTutorialMode(player);
elseif (sequence == SEQ_007) then
player:SendGameMessageLocalizedDisplayName(quest, 80, 39, 1000015, nil);
player:SendGameMessageLocalizedDisplayName(quest, 81, 39, 1000015, nil);
player:SendGameMessageLocalizedDisplayName(quest, 82, 39, 1000015, nil);
quest:StartSequence(SEQ_035);
quest:StartSequenceForNpcLs(SEQ_035);
elseif (sequence == SEQ_070) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent625");
player:EndEvent();
quest:StartSequence(SEQ_075);
quest:StartSequenceForNpcLs(SEQ_075);
elseif (sequence == SEQ_090) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent637");
player:EndEvent();
quest:StartSequence(SEQ_092);
quest:StartSequenceForNpcLs(SEQ_092);
end
end
player:EndEvent();
end
function startMan0l1Content(player, quest)
@ -675,7 +704,7 @@ function startMan0l1Content(player, quest)
end
function getJournalInformation(player, quest)
return 0, quest:GetData():GetCounter(CNTR_SEQ7_CUL) * 5, quest:GetData():GetCounter(CNTR_SEQ7_MRD) * 5;
return 0, quest:GetData():GetCounter(CNTR_SEQ7_CUL) * 5, quest:GetData():GetCounter(CNTR_SEQ7_MSK) * 5;
end
function getJournalMapMarkerList(player, quest)

View file

@ -168,8 +168,6 @@ function onNotice(player, quest, target)
quest:UpdateENPCs();
end
function seq000_onTalk(player, quest, npc, classId)
if (classId == MOMODI) then

View file

@ -0,0 +1,398 @@
require("global");
--[[
Quest Script
Name: Legends Adrift
Code: Man1l0
Id: 110003
Prereq: Treasures of the Main (Man0l1 - 110002)
]]
-- Sequence Numbers
SEQ_000 = 0; -- Echo intance with Y'shtola, Baderon, Etc. Talk to Y'shtola.
SEQ_010 = 10; -- Echo instance, talk with Baderon.
SEQ_020 = 20; -- Head to MRD guild and talk to Waekbyrt.
SEQ_030 = 30; -- Head down the Astalicia to the push trigger.
SEQ_040 = 40; -- Head up the Astalicia to the push trigger.
SEQ_050 = 50; -- Contact Baderon on the Link Pearl.
SEQ_060 = 60; -- Head to the FSH guild and push the trigger.
SEQ_070 = 70; -- Head to a spot in Lower La Noscea.
SEQ_080 = 80; -- Contact Baderon on the Link Pearl.
SEQ_090 = 90; -- Speak to P'tahjha at the ACN guild.
SEQ_100 = 100; -- Echo instance, head downstairs to push a trigger and cutscene.
SEQ_110 = 110; -- Echo instance still, head upstairs to trigger a cutscene.
SEQ_120 = 120; -- Contact Baderon on the Link Pearl.
SEQ_122 = 122; -- Head back to Baderon to finish the quest.
-- Quest Actors
BADERON = 1000137;
YSHTOLA = 1000001;
-- ADV Guild Echo
ADVENTURER = 1000101;
WHISPERING_ADVENTURER = 1000102;
UNAPPROACHABLE_ADVENTURER = 1000103;
FISH_SMELLING_ADVENTURER = 1000104;
SPEAR_WIELDING_ADVENTURER = 1000105;
TRIGGER_ADVGUILD = 1090080;
-- MRD Guild Echo
WAEKBYRT = 1000003;
HULKING_CUDA_KNIGHT = 1000182;
SOPHISTICATED_CUDA_KNIGHT = 1000108;
FRIGHTENED_CUDA_KNIGHT = 1000110;
ZEALOUS_PIRATE = 1000112;
ENRAGED_PIRATE = 1000113;
TRIGGER_MRD = 1090081;
-- MRD Guild Echo 2
DISGRUNTLED_PIRATE = 1000087;
PINE_SCENTED_PIRATE = 1000088;
BARITONE_PIRATE = 1000089;
BAYARD = 1000190;
-- FSH Guild Sequences
NNMULIKA = 1000153;
SISIPU = 1000156;
TRIGGER_FSH = 1090006;
TRIGGER_SEAFLD = 1090082;
-- ACN Guild Echo
ASSESSOR = 1000121;
PTAHJHA = 1000150;
HALDBERK = 1000160;
LILINA = 1000178;
DODOROBA = 1000196;
IVAN = 1000197;
MERODAULYN = 1000008;
COQUETTISH_PIRATE = 1000868;
VOLUPTUOUS_PIRATE = 1000115;
PEACOCKISH_PIRATE = 1000118;
TRIGGER_ACN_LOWER = 1090083;
TRIGGER_ACN_UPPER = 1090084;
-- Quest Markers
MRKR_TRIGGER_FSH = 11000306;
MRKR_TRIGGER_SEAFLD = 11000307;
MRKR_TRIGGER_ANC_LOWER = 11000308;
-- Msg packs for the Npc LS
NPCLS_MSGS = {
{57, 58, 59}, -- SEQ_050
{92, 93, 94}, -- SEQ_070
{140, 141} -- SEQ_120
};
function onStart(player, quest)
quest:StartSequence(SEQ_000);
GetWorldManager():WarpToPrivateArea(player, "PrivateAreaMasterPast", 3, -430.55, 40.2, 185.41, 1.89);
end
function onFinish(player, quest)
end
function onStateChange(player, quest, sequence)
local data = quest:GetData();
if (sequence == SEQ_ACCEPT) then
quest:SetENpc(BADERON, QFLAG_PLATE);
elseif (sequence == SEQ_000) then
quest:SetENpc(BADERON);
quest:SetENpc(ADVENTURER);
quest:SetENpc(WHISPERING_ADVENTURER);
quest:SetENpc(UNAPPROACHABLE_ADVENTURER);
quest:SetENpc(FISH_SMELLING_ADVENTURER);
quest:SetENpc(SPEAR_WIELDING_ADVENTURER);
quest:SetENpc(TRIGGER_ADVGUILD, QFLAG_MAP, false, true);
elseif (sequence == SEQ_010) then
quest:SetENpc(BADERON, QFLAG_PLATE);
quest:SetENpc(ADVENTURER);
quest:SetENpc(WHISPERING_ADVENTURER);
quest:SetENpc(UNAPPROACHABLE_ADVENTURER);
quest:SetENpc(FISH_SMELLING_ADVENTURER);
quest:SetENpc(SPEAR_WIELDING_ADVENTURER);
quest:SetENpc(YSHTOLA);
elseif (sequence == SEQ_020) then
quest:SetENpc(WAEKBYRT, QFLAG_PLATE);
quest:SetENpc(BADERON);
elseif (sequence == SEQ_030) then
quest:SetENpc(TRIGGER_MRD, QFLAG_MAP, false, true);
quest:SetENpc(HULKING_CUDA_KNIGHT);
quest:SetENpc(SOPHISTICATED_CUDA_KNIGHT);
quest:SetENpc(FRIGHTENED_CUDA_KNIGHT);
quest:SetENpc(ZEALOUS_PIRATE);
quest:SetENpc(ENRAGED_PIRATE);
quest:SetENpc(WAEKBYRT);
elseif (sequence == SEQ_040) then
quest:SetENpc(TRIGGER_MRD, QFLAG_MAP, false, true);
quest:SetENpc(PINE_SCENTED_PIRATE);
quest:SetENpc(BARITONE_PIRATE);
quest:SetENpc(BAYARD);
quest:SetENpc(DISGRUNTLED_PIRATE);
elseif (sequence == SEQ_060) then
quest:SetENpc(TRIGGER_FSH, QFLAG_MAP, false, true);
quest:SetENpc(BADERON);
elseif (sequence == SEQ_070) then
quest:SetENpc(TRIGGER_SEAFLD, QFLAG_MAP, false, true);
quest:SetENpc(NNMULIKA);
elseif (sequence == SEQ_090) then
quest:SetENpc(PTAHJHA, QFLAG_PLATE);
elseif (sequence == SEQ_100) then
quest:SetENpc(TRIGGER_ACN_LOWER, QFLAG_MAP, false, true);
quest:SetENpc(ASSESSOR);
quest:SetENpc(HALDBERK);
quest:SetENpc(LILINA);
quest:SetENpc(VOLUPTUOUS_PIRATE);
quest:SetENpc(PEACOCKISH_PIRATE);
quest:SetENpc(MERODAULYN);
quest:SetENpc(COQUETTISH_PIRATE);
quest:SetENpc(IVAN);
elseif (sequence == SEQ_110) then
quest:SetENpc(TRIGGER_ACN_UPPER, QFLAG_MAP, false, true);
elseif (sequence == SEQ_122) then
quest:SetENpc(BADERON, QFLAG_REWARD);
end
end
function onTalk(player, quest, npc)
local sequence = quest:getSequence();
local classId = npc:GetActorClassId();
if (sequence == SEQ_ACCEPT) then
if (classId == BADERON) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent200");
player:EndEvent();
player:AcceptQuest(quest, true);
return;
end
elseif (sequence == SEQ_000) then
seq000_010_onTalk(player, quest, npc, classId);
elseif (sequence == SEQ_010) then
if (classId == BADERON) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent215");
player:EndEvent();
quest:StartSequence(SEQ_020);
GetWorldManager():WarpToPublicArea(player);
return;
elseif (classId == YSHTOLA) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent200_8");
else
seq000_010_onTalk(player, quest, npc, classId);
end
elseif (sequence == SEQ_020) then
if (classId == WAEKBYRT) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent400");
quest:StartSequence(SEQ_030);
player:EndEvent();
GetWorldManager():WarpToPrivateArea(player, "PrivateAreaMasterPast", 6, -754.03, 7.352, 382.872, 3.133);
return;
elseif (classId == BADERON) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent215_2");
end
elseif (sequence == SEQ_030 or sequence == SEQ_040) then
seq000_030_040_onTalk(player, quest, npc, classId)
elseif (sequence == SEQ_060) then
if (classId == NNMULIKA) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent600");
elseif (classId == BADERON) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent420_2");
end
elseif (sequence == SEQ_070) then
if (classId == NNMULIKA) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent600_2");
end
elseif (sequence == SEQ_090) then
if (classId == PTAHJHA) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent2000");
quest:StartSequence(SEQ_100);
player:EndEvent();
GetWorldManager():WarpToPrivateArea(player, "PrivateAreaMasterPast", 7);
elseif (classId == BADERON) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent610_2");
end
elseif (sequence == SEQ_100) then
seq000_100_onTalk(player, quest, npc, classId)
elseif (sequence == SEQ_110) then
elseif (sequence == SEQ_122) then
if (classId == BADERON) then
callClientFunction(player, "delegateEvent", player, quest, "processEventComplete");
callClientFunction(player, "delegateEvent", player, quest, "sqrwa", 300, 1, 1, 2);
player:EndEvent();
player:CompleteQuest(quest);
return;
end
end
player:EndEvent();
quest:UpdateENPCs();
end
function seq000_010_onTalk(player, quest, npc, classId)
if (classId == ADVENTURER) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent200_2");
elseif (classId == WHISPERING_ADVENTURER) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent200_3");
elseif (classId == UNAPPROACHABLE_ADVENTURER) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent200_4");
elseif (classId == FISH_SMELLING_ADVENTURER) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent200_5");
elseif (classId == SPEAR_WIELDING_ADVENTURER) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent200_6");
elseif (classId == BADERON) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent200_7");
end
end
function seq000_030_040_onTalk(player, quest, npc, classId)
if (classId == HULKING_CUDA_KNIGHT) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent400_2");
elseif (classId == SOPHISTICATED_CUDA_KNIGHT) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent400_3");
elseif (classId == FRIGHTENED_CUDA_KNIGHT) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent400_4");
elseif (classId == ZEALOUS_PIRATE) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent400_5");
elseif (classId == ENRAGED_PIRATE) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent400_6");
elseif (classId == WAEKBYRT) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent400_7");
elseif (classId == PINE_SCENTED_PIRATE) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent410_2");
elseif (classId == BARITONE_PIRATE) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent410_3");
elseif (classId == BAYARD) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent410_4");
elseif (classId == DISGRUNTLED_PIRATE) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent410_5");
end
end
function seq000_100_onTalk(player, quest, npc, classId)
if (classId == ASSESSOR) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent2000_2");
elseif (classId == 0) then -- !!!MISSING DIALOG OWNER!!!
callClientFunction(player, "delegateEvent", player, quest, "processEvent2000_3");
elseif (classId == HALDBERK) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent2000_4");
elseif (classId == LILINA) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent2000_5");
elseif (classId == VOLUPTUOUS_PIRATE) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent2000_6");
elseif (classId == PEACOCKISH_PIRATE) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent2000_7");
elseif (classId == MERODAULYN) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent2000_8");
elseif (classId == COQUETTISH_PIRATE) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent2000_9");
elseif (classId == 0) then -- !!!MISSING DIALOG OWNER!!!
callClientFunction(player, "delegateEvent", player, quest, "processEvent2000_10");
elseif (classId == 0) then -- !!!MISSING DIALOG OWNER!!!
callClientFunction(player, "delegateEvent", player, quest, "processEvent2000_11");
elseif (classId == IVAN) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent2000_12");
end
end
function onPush(player, quest, npc)
local data = quest:GetData();
local sequence = quest:getSequence();
local classId = npc:GetActorClassId();
if (sequence == SEQ_000) then
if (classId == TRIGGER_ADVGUILD) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent210");
quest:StartSequence(SEQ_010);
end
elseif (sequence == SEQ_030) then
if (classId == TRIGGER_MRD) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent410");
quest:StartSequence(SEQ_040);
player:EndEvent();
GetWorldManager():WarpToPosition(player, -764.519, -3.146, 384.154, 1.575);
return;
end
elseif (sequence == SEQ_040) then
if (classId == TRIGGER_MRD) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent420");
quest:NewNpcLsMsg(1);
quest:StartSequence(SEQ_050);
player:EndEvent();
GetWorldManager():WarpToPublicArea(player);
return;
end
elseif (sequence == SEQ_060) then
if (classId == TRIGGER_FSH) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent600");
quest:StartSequence(SEQ_070);
end
elseif (sequence == SEQ_070) then
if (classId == TRIGGER_SEAFLD) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent610");
quest:NewNpcLsMsg(1);
quest:StartSequence(SEQ_080);
end
elseif (sequence == SEQ_100) then
if (classId == TRIGGER_ACN_LOWER) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent2001");
quest:StartSequence(SEQ_110);
player:EndEvent();
GetWorldManager():WarpToPosition(player, -785.938, -0.62, 189.044, 3.09);
return;
end
elseif (sequence == SEQ_110) then
if (classId == TRIGGER_ACN_UPPER) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent2002");
quest:NewNpcLsMsg(1);
quest:StartSequence(SEQ_120);
player:EndEvent();
GetWorldManager():WarpToPublicArea(player);
return;
end
end
player:EndEvent();
quest:UpdateENPCs();
end
function onNpcLS(player, quest, from, msgStep)
local sequence = quest:getSequence();
local msgPack;
if (from == 1) then
-- Get the right msg pack
if (sequence == SEQ_050 or sequence == SEQ_060) then
msgPack = 1;
elseif (sequence == SEQ_080 or sequence == SEQ_090) then
msgPack = 2;
elseif (sequence == SEQ_120 or sequence == SEQ_122) then
msgPack = 3;
end
-- Quick way to handle all msgs nicely.
player:SendGameMessageLocalizedDisplayName(quest, NPCLS_MSGS[msgPack][msgStep], MESSAGE_TYPE_NPC_LINKSHELL, 1000015);
if (msgStep >= #NPCLS_MSGS[msgPack]) then
quest:EndOfNpcLsMsgs();
else
quest:ReadNpcLsMsg();
end
-- Handle anything else
if (sequence == SEQ_050) then
quest:StartSequenceForNpcLs(SEQ_060);
elseif (sequence == SEQ_080) then
quest:StartSequenceForNpcLs(SEQ_090);
elseif (sequence == SEQ_120) then
quest:StartSequenceForNpcLs(SEQ_122);
end
end
player:EndEvent();
end
function getJournalMapMarkerList(player, quest)
local sequence = quest:getSequence();
end

View file

@ -1,4 +1,52 @@
require("global")
require("global");
--[[
Quest Script
Name: Never the Twain Shall Meet
Code: Man2l0
Id: 110004
Prereq: Legends Adrift (Man1l0 - 110003)
]]
-- Sequence Numbers
SEQ_000 = 0; -- Talk to Captain Hob.
SEQ_010 = 10; -- Ship instance, enter the hold.
SEQ_015 = 15; -- Exit the hold, go back upstairs.
SEQ_020 = 20; -- Duty, fight Emerick and Merodaulyn
SEQ_035 = 35; -- Head to Baderon and chat.
SEQ_037 = 37; -- Head to outcrop in La Noscea.
SEQ_040 = 40; -- Talk to Baderon on the Link Pearl
SEQ_042 = 42; -- Enter and push at the MSK guild.
SEQ_045 = 45; -- Talk to Isaudorel
SEQ_050 = 50; -- Head to God's Grip push, talk with Blackburn.
SEQ_055 = 55; -- Continue to the other push with Y'shtola in the subecho.
SEQ_060 = 60; -- Unused? Talks about spying Stahlmann, Emerick, and Merod scheming.
SEQ_065 = 65; -- Unused? Talks about the meteor shower and the Ascian stealing the key.
SEQ_070 = 70; -- Unused? Talks about heading to Ul'dah
-- Quest Actors
BADERON = 1000137;
YSHTOLA = 1000001;
HOB = 1000151;
ISAUDOREL = 1000152;
BARRACUDA_KNIGHT1 = 1000183;
BARRACUDA_KNIGHT2 = 1000184;
TRIGGER_SHIP1 = 1090003;
TRIGGER_SHIP2 = 1090003;
TRIGGER_MSK = 1090003;
TRIGGER_SEAFLD1 = 1090003;
TRIGGER_SEAFLD2 = 1090003;
TRIGGER_SEAFLD3 = 1090003;
-- Quest Markers
-- Msg packs for the Npc LS
NPCLS_MSGS = {
{40, 41} -- SEQ_040
};
function onStart(player, quest)
quest:StartSequence(SEQ_000);
@ -7,29 +55,169 @@ end
function onFinish(player, quest)
end
function onStateChange(player, quest, seqNum)
function onStateChange(player, quest, sequence)
local data = quest:GetData();
if (sequence == SEQ_ACCEPT) then
quest:SetENpc(BADERON, QFLAG_PLATE);
elseif (sequence == SEQ_000) then
quest:SetENpc(HOB, QFLAG_PLATE);
quest:SetENpc(BADERON);
elseif (sequence == SEQ_010) then
quest:SetENpc(HOB);
quest:SetENpc(BARRACUDA_KNIGHT1);
quest:SetENpc(BARRACUDA_KNIGHT2);
elseif (sequence == SEQ_015) then
quest:SetENpc(HOB);
quest:SetENpc(BARRACUDA_KNIGHT1);
quest:SetENpc(BARRACUDA_KNIGHT2);
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(BADERON);
elseif (sequence == SEQ_040) then
elseif (sequence == SEQ_042) then
quest:SetENpc(BADERON);
elseif (sequence == SEQ_045) then
quest:SetENpc(ISAUDOREL, QFLAG_PLATE);
elseif (sequence == SEQ_050) then
elseif (sequence == SEQ_055) then
quest:SetENpc(YSHTOLA);
end
end
function onTalk(player, quest, npc)
local sequence = quest:getSequence();
local classId = npc:GetActorClassId();
end
function onEmote(player, quest, npc, emote)
if (sequence == SEQ_ACCEPT) then
if (classId == BADERON) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent000");
end
elseif (sequence == SEQ_000) then
if (classId == HOB) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent010");
quest:StartSequence(SEQ_010);
elseif (classId == BADERON) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent000_2");
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");
quest:StartSequence(SEQ_037);
end
elseif (sequence == SEQ_037) then
if (classId == BADERON) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent050_2");
end
elseif (sequence == SEQ_042) then
if (classId == BADERON) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent060_2");
end
elseif (sequence == SEQ_045) then
if (classId == ISAUDOREL) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent075");
quest:StartSequence(SEQ_050);
end
elseif (sequence == SEQ_055) then
if (classId == YSHTOLA) then
callClientFunction(player, "delegateEvent", player, quest, "processEvent080_2");
end
end
player:EndEvent();
quest:UpdateENPCs();
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);
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");
end
end
player:EndEvent();
quest:UpdateENPCs();
end
function onNotice(player, quest, npc)
function onNotice(player, quest, target)
callClientFunction(player, "delegateEvent", player, quest, "sqrwa", 300, 1, 1, 2);
player:CompleteQuest(quest);
callClientFunction(player, "delegateEvent", player, quest, "processEvent081_2", 1);
player:EndEvent();
quest:UpdateENPCs();
end
function onNpcLS(player, quest, from, msgStep)
local sequence = quest:getSequence();
local msgPack;
if (from == 1) then
-- Get the right msg pack
if (sequence == SEQ_040 or sequence == SEQ_042) then
msgPack = 1;
end
-- Quick way to handle all msgs nicely.
player:SendGameMessageLocalizedDisplayName(quest, NPCLS_MSGS[msgPack][msgStep], MESSAGE_TYPE_NPC_LINKSHELL, 1000015);
if (msgStep >= #NPCLS_MSGS[msgPack]) then
quest:EndOfNpcLsMsgs();
else
quest:ReadNpcLsMsg();
end
-- Handle anything else
if (sequence == SEQ_040) then
quest:StartSequenceForNpcLs(SEQ_042);
end
end
player:EndEvent();
end
function getJournalInformation(player, quest)
return {};
return 40, 40, 40;
end
function getJournalMapMarkerList(player, quest)
return 11000105, 11000106;
local sequence = quest:getSequence();
end