mirror of
https://bitbucket.org/Ioncannon/project-meteor-server.git
synced 2025-06-09 05:54:50 +02:00
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:
commit
e94c037fb5
73 changed files with 1096 additions and 212 deletions
|
@ -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)
|
||||
|
|
|
@ -168,8 +168,6 @@ function onNotice(player, quest, target)
|
|||
quest:UpdateENPCs();
|
||||
end
|
||||
|
||||
|
||||
|
||||
function seq000_onTalk(player, quest, npc, classId)
|
||||
|
||||
if (classId == MOMODI) then
|
||||
|
|
398
Data/scripts/quests/man/man1l0.lua
Normal file
398
Data/scripts/quests/man/man1l0.lua
Normal 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
|
|
@ -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
|
Loading…
Add table
Add a link
Reference in a new issue