require ("global") require ("quest") require ("tutorial") --[[ Quest Script Name: Souls Gone Wild Code: Man0g1 Id: 110006 Prereq: Sundered Skies (Man0g0 - 110005) Notes: ]] ENABLE_GL_TUTORIAL = false; -- Sequence Numbers SEQ_000 = 0; -- (Private Area) Roost Echo Scene. SEQ_005 = 5; -- Go attune at Camp Bentbranch SEQ_010 = 10; -- Attuned, go back to Miuonne. Info: If 1, Miounne gave you a tutorial guildleve else 0. SEQ_012 = 12; -- Talk to Miuonne again. SEQ_015 = 15; -- Find the LTW and CNJ Guilds. Info: Params 2 and 3 set to 5 and 15 will show the msg that you visited both guilds and to notify Baderon on the LS. SEQ_040 = 40; -- Go to BTN guild and talk to Opyltyl. SEQ_050 = 50; -- Learn the dance from the kids. SEQ_055 = 55; -- Chat with the kids. SEQ_060 = 60; -- Meet at White Wolf Gate. SEQ_065 = 65; -- Escort Mission Duty SEQ_070 = 70; -- Walk to the stump. SEQ_071 = 71; -- Exit the stump area. SEQ_072 = 72; -- Return to the BTN guild. SEQ_075 = 75; -- Contact Miounne on LS SEQ_080 = 80; -- Visit the LNC guid and talk to Willelda. SEQ_085 = 85; -- Talk to Buchard. SEQ_090 = 90; -- Talk to Buchard again. SEQ_095 = 95; -- Talk to Nuala. SEQ_100 = 100; -- Contact Miounne on LS SEQ_105 = 105; -- Return to the Roost and talk to Miounne. -- Quest Data FLAG_EMOTE_DONE1 = 1; FLAG_EMOTE_DONE2 = 2; FLAG_EMOTE_DONE3 = 3; FLAG_EMOTE_DONE4 = 4; FLAG_EMOTE_DONE5 = 5; FLAG_EMOTE_DONE6 = 6; CNTR_SEQ15_LTW = 0; CNTR_SEQ15_CNJ = 1; -- Msg packs for the Npc LS NPCLS_MSGS = { {330}, {332, 333, 334, 335}, {131, 132, 133}, {210, 211, 212, 213, 214, 215}, {322, 323, 324} }; -- Actor Class Ids MIOUNNE = 1000230; VKOROLON = 1000458; WISPILY_WHISKERED_WOODWORKER = 1000562; AMIABLE_ADVENTURER = 1001057; MOROSE_MERCHANT = 1001058; NARROW_EYED_ADVENTURER = 1001059; BEAMING_ADVENTURER = 1001062; WELL_BUNDLED_ADVENTURER = 1001060; UNCONCERNED_PASSERBY = 1001648; --BLOCKER = ; -- Sequence 015 HEREWARD = 1000231; SOILEINE = 1000234; CNJ_TRIG = 1090200; -- Echo in the CNJ Guild YDA = 1000009; PAPALYMO = 1000010; O_APP_PESI = 1000033; INGRAM = 1000372; HETZKIN = 1000460; GUGULA = 1000513; SWETHYNA = 1000680; BIDDY = 1000737; CHALLINIE = 1000956; -- BTN Guild OPYLTYL = 1000236; FUFUCHA = 1000237; POWLE = 1000238; SANSA = 1000239; NICOLLAUX = 1000409; AUNILLE = 1000410; ELYN = 1000411; RYD = 1000412; KIDS_TRIGGER = 1090201; GATE_TRIGGER = 1090202; -- Post Escort Duty STUMP_TRIGGER = 1090203; STUMP_EXIT_TRIGGER = 1090204; BTN_TRIGGER = 1090046; -- LNC Guild WILLELDA = 1000242; BURCHARD = 1000243; -- Echo in the LNC Guild TKEBBE = 1000015; FARRIMOND = 1000017; NUALA = 1000681; MANSEL = 1000682; CECILIA = 1000683; TURSTIN = 1000733; LANGLOISIERT = 1000734; HELBHANTH = 1000735; PASDEVILLET = 1000738; JIJIMAYA = 1000741; -- Quest Markers MRKR_MIOUNNE = 11000601; function onStart(player, quest) quest:StartSequence(SEQ_000); -- Immediately move to the Adventurer's Guild private area callClientFunction(player, "delegateEvent", player, quest, "processEvent100"); GetWorldManager():DoZoneChange(player, 155, "PrivateAreaMasterPast", 2, 15, 67.034, 4, -1205.6497, -1.074); player:endEvent(); end function onFinish(player, quest) end function onStateChange(player, quest, sequence) local data = quest:GetData(); if (sequence == SEQ_000) then quest:SetENpc(MIOUNNE, QFLAG_TALK); quest:SetENpc(VKOROLON); quest:SetENpc(WISPILY_WHISKERED_WOODWORKER); quest:SetENpc(AMIABLE_ADVENTURER); quest:SetENpc(MOROSE_MERCHANT); quest:SetENpc(NARROW_EYED_ADVENTURER); quest:SetENpc(BEAMING_ADVENTURER); quest:SetENpc(WELL_BUNDLED_ADVENTURER); quest:SetENpc(UNCONCERNED_PASSERBY); elseif (sequence == SEQ_005) then quest:SetENpc(MIOUNNE); elseif (sequence == SEQ_010) then quest:SetENpc(MIOUNNE, QFLAG_TALK); elseif (sequence == SEQ_012) then quest:SetENpc(MIOUNNE, QFLAG_TALK); elseif (sequence == SEQ_015) then local subseqLTW = data:GetCounter(CNTR_SEQ15_LTW); local subseqCNJ = data:GetCounter(CNTR_SEQ15_CNJ); -- Always active in this seqence quest:SetENpc(MIOUNNE); quest:SetENpc(HEREWARD, (subseqLTW <= 1) and QFLAG_TALK or QFLAG_OFF); -- CNJ and In Echo quest:SetENpc(SOILEINE, (subseqCNJ == 0) and QFLAG_TALK or QFLAG_OFF); quest:SetENpc(CNJ_TRIG, (subseqCNJ == 1) and QFLAG_PUSH or QFLAG_OFF, false, (subseqCNJ == 1)); quest:SetENpc(YDA); quest:SetENpc(PAPALYMO); quest:SetENpc(O_APP_PESI); quest:SetENpc(SWETHYNA, (subseqCNJ == 2) and QFLAG_TALK or QFLAG_OFF); quest:SetENpc(INGRAM); quest:SetENpc(HETZKIN); quest:SetENpc(GUGULA); quest:SetENpc(BIDDY); quest:SetENpc(CHALLINIE); elseif (sequence == SEQ_040) then quest:SetENpc(OPYLTYL, QFLAG_TALK); quest:SetENpc(MIOUNNE); elseif (sequence == SEQ_050) then quest:SetENpc(OPYLTYL, QFLAG_TALK); quest:SetENpc(AUNILLE, not data:GetFlag(FLAG_EMOTE_DONE1) and QFLAG_TALK or QFLAG_OFF, true, false, not data:GetFlag(FLAG_EMOTE_DONE1)); quest:SetENpc(NICOLLAUX, not data:GetFlag(FLAG_EMOTE_DONE2) and QFLAG_TALK or QFLAG_OFF, true, false, not data:GetFlag(FLAG_EMOTE_DONE2)); quest:SetENpc(SANSA, not data:GetFlag(FLAG_EMOTE_DONE3) and QFLAG_TALK or QFLAG_OFF, true, false, not data:GetFlag(FLAG_EMOTE_DONE3)); quest:SetENpc(POWLE, not data:GetFlag(FLAG_EMOTE_DONE4) and QFLAG_TALK or QFLAG_OFF, true, false, not data:GetFlag(FLAG_EMOTE_DONE4)); quest:SetENpc(RYD, not data:GetFlag(FLAG_EMOTE_DONE5) and QFLAG_TALK or QFLAG_OFF, true, false, not data:GetFlag(FLAG_EMOTE_DONE5)); quest:SetENpc(ELYN, not data:GetFlag(FLAG_EMOTE_DONE6) and QFLAG_TALK or QFLAG_OFF, true, false, not data:GetFlag(FLAG_EMOTE_DONE6)); quest:SetENpc(FUFUCHA); elseif (sequence == SEQ_055) then quest:SetENpc(OPYLTYL, QFLAG_TALK); quest:SetENpc(KIDS_TRIGGER, QFLAG_PUSH, false, true); quest:SetENpc(AUNILLE); quest:SetENpc(NICOLLAUX); quest:SetENpc(SANSA); quest:SetENpc(POWLE); quest:SetENpc(RYD); quest:SetENpc(ELYN); quest:SetENpc(FUFUCHA); elseif (sequence == SEQ_060) then quest:SetENpc(GATE_TRIGGER, QFLAG_PUSH, false, true); elseif (sequence == SEQ_065) then elseif (sequence == SEQ_070) then quest:SetENpc(STUMP_TRIGGER, QFLAG_PUSH, false, true); elseif (sequence == SEQ_071) then quest:SetENpc(STUMP_EXIT_TRIGGER, QFLAG_PUSH, false, true); elseif (sequence == SEQ_072) then quest:SetENpc(BTN_TRIGGER, QFLAG_PUSH, false, true); elseif (sequence == SEQ_075) then elseif (sequence == SEQ_080) then quest:SetENpc(WILLELDA, QFLAG_TALK); quest:SetENpc(MIOUNNE); elseif (sequence == SEQ_085) then quest:SetENpc(BURCHARD, QFLAG_TALK); quest:SetENpc(WILLELDA); elseif (sequence == SEQ_090) then quest:SetENpc(BURCHARD, QFLAG_TALK); quest:SetENpc(TKEBBE); quest:SetENpc(FARRIMOND); quest:SetENpc(LANGLOISIERT); quest:SetENpc(NUALA); quest:SetENpc(MANSEL); quest:SetENpc(CECILIA); quest:SetENpc(TURSTIN); quest:SetENpc(HELBHANTH); quest:SetENpc(PASDEVILLET); quest:SetENpc(JIJIMAYA); elseif (sequence == SEQ_095) then quest:SetENpc(NUALA, QFLAG_TALK); quest:SetENpc(BURCHARD); quest:SetENpc(JIJIMAYA); quest:SetENpc(TKEBBE); quest:SetENpc(FARRIMOND); quest:SetENpc(MANSEL); quest:SetENpc(CECILIA); elseif (sequence == SEQ_100) then quest:SetENpc(NUALA); quest:SetENpc(BURCHARD); quest:SetENpc(WILLELDA); elseif (sequence == SEQ_105) then quest:SetENpc(MIOUNNE, QFLAG_REWARD); quest:SetENpc(NUALA); quest:SetENpc(BURCHARD); quest:SetENpc(WILLELDA); end end function onTalk(player, quest, npc) local sequence = quest:getSequence(); local classId = npc:GetActorClassId(); if (sequence == SEQ_000) then seq000_onTalk(player, quest, npc, classId); elseif (sequence == SEQ_005) then if (classId == MIOUNNE) then callClientFunction(player, "delegateEvent", player, quest, "processEvent110_2"); end elseif (sequence == SEQ_010) then if (classId == MIOUNNE) then callClientFunction(player, "delegateEvent", player, quest, "processEvent114"); quest:StartSequence(SEQ_012); end elseif (sequence == SEQ_012) then if (classId == MIOUNNE) then callClientFunction(player, "delegateEvent", player, quest, "processEvent115"); quest:NewNpcLsMsg(1); quest:StartSequence(SEQ_015); end elseif (sequence == SEQ_015) then if (seq015_onTalk(player, quest, npc, classId) == true) then quest:UpdateENPCs(); return; end elseif (sequence == SEQ_040) then if (classId == OPYLTYL) then callClientFunction(player, "delegateEvent", player, quest, "processEvent140"); quest:StartSequence(SEQ_050); player:EndEvent(); GetWorldManager():WarpToPrivateArea(player, "PrivateAreaMasterPast", 1, -223.792, 12, -1498.369, -1.74); return; elseif (classId == MIOUNNE) then callClientFunction(player, "delegateEvent", player, quest, "processEvent137_2"); end elseif (sequence == SEQ_050) then if (classId == OPYLTYL) then callClientFunction(player, "delegateEvent", player, quest, "processEvent1000_3"); player:EndEvent(); GetWorldManager():WarpToPrivateArea(player, "PrivateAreaMasterPast", 1, -223.792, 12, -1498.369, -1.74); return; else seq050_onTalk(player, quest, npc, classId); end elseif (sequence == SEQ_055) then if (classId == FUFUCHA) then callClientFunction(player, "delegateEvent", player, quest, "processEvent150_2"); elseif (classId == OPYLTYL) then callClientFunction(player, "delegateEvent", player, quest, "processEvent1000_3"); player:EndEvent(); GetWorldManager():WarpToPrivateArea(player, "PrivateAreaMasterPast", 2, -231.474, 12, -1500.86, 0.73); elseif (classId == AUNILLE or classId == NICOLLAUX or classId == SANSA or classId == POWLE or classId == RYD or classId == ELYN) then local randNum = math.random(1, 2); if (randNum == 1) then callClientFunction(player, "delegateEvent", player, quest, "processEvent150_3"); else callClientFunction(player, "delegateEvent", player, quest, "processEvent150_4"); end end elseif (sequence == SEQ_060) then elseif (sequence == SEQ_065) then elseif (sequence == SEQ_070) then elseif (sequence == SEQ_071) then elseif (sequence == SEQ_072) then elseif (sequence == SEQ_075) then elseif (sequence == SEQ_080) then if (classId == WILLELDA) then callClientFunction(player, "delegateEvent", player, quest, "processEvent190"); quest:StartSequence(SEQ_085); elseif (classId == MIOUNNE) then callClientFunction(player, "delegateEvent", player, quest, "processEvent185_2"); end elseif (sequence == SEQ_085) then if (classId == BURCHARD) then callClientFunction(player, "delegateEvent", player, quest, "processEvent200"); quest:StartSequence(SEQ_090); player:EndEvent(); GetWorldManager():WarpToPrivateArea(player, "PrivateAreaMasterPast", 3, 176.13, 27.5, -1581.84, -1.0); return; elseif (classId == WILLELDA) then callClientFunction(player, "delegateEvent", player, quest, "processEvent190_2"); end elseif (sequence == SEQ_090) then if (classId == BURCHARD) then callClientFunction(player, "delegateEvent", player, quest, "processEvent210"); quest:StartSequence(SEQ_095); player:EndEvent(); GetWorldManager():WarpToPrivateArea(player, "PrivateAreaMasterPast", 4); return; elseif (classId == NUALA) then callClientFunction(player, "delegateEvent", player, quest, "processEvent200_2"); elseif (classId == TKEBBE) then callClientFunction(player, "delegateEvent", player, quest, "processEvent200_3"); elseif (classId == FARRIMOND) then callClientFunction(player, "delegateEvent", player, quest, "processEvent200_4"); elseif (classId == MANSEL) then callClientFunction(player, "delegateEvent", player, quest, "processEvent200_5"); elseif (classId == JIJIMAYA) then callClientFunction(player, "delegateEvent", player, quest, "processEvent200_6"); elseif (classId == LANGLOISIERT) then callClientFunction(player, "delegateEvent", player, quest, "processEvent200_7"); elseif (classId == CECILIA) then callClientFunction(player, "delegateEvent", player, quest, "processEvent200_8"); elseif (classId == TURSTIN) then callClientFunction(player, "delegateEvent", player, quest, "processEvent200_9"); elseif (classId == HELBHANTH) then callClientFunction(player, "delegateEvent", player, quest, "processEvent200_10"); elseif (classId == PASDEVILLET) then callClientFunction(player, "delegateEvent", player, quest, "processEvent200_11"); end elseif (sequence == SEQ_095) then if (classId == NUALA) then callClientFunction(player, "delegateEvent", player, quest, "processEvent220"); player:EndEvent(); quest:NewNpcLsMsg(1); quest:StartSequence(SEQ_100); GetWorldManager():WarpToPublicArea(player); return; elseif (classId == BURCHARD) then callClientFunction(player, "delegateEvent", player, quest, "processEvent210_2"); end elseif (sequence == SEQ_100) then if (classId == NUALA) then callClientFunction(player, "delegateEvent", player, quest, "processEvent1000_5"); elseif (classId == BURCHARD) then callClientFunction(player, "delegateEvent", player, quest, "processEvent220_3"); elseif (classId == WILLELDA) then callClientFunction(player, "delegateEvent", player, quest, "processEvent220_2"); end elseif (sequence == SEQ_105) then if (classId == MIOUNNE) then callClientFunction(player, "delegateEvent", player, quest, "processEventComplete"); callClientFunction(player, "delegateEvent", player, quest, "sqrwa", 300, 1, 1, 2); player:EndEvent(); player:CompleteQuest(quest); return; elseif (classId == NUALA) then callClientFunction(player, "delegateEvent", player, quest, "processEvent1000_5"); elseif (classId == BURCHARD) then callClientFunction(player, "delegateEvent", player, quest, "processEvent220_3"); elseif (classId == WILLELDA) then callClientFunction(player, "delegateEvent", player, quest, "processEvent220_2"); end end player:EndEvent(); quest:UpdateENPCs(); end function seq000_onTalk(player, quest, npc, classId) if (classId == MIOUNNE) then callClientFunction(player, "delegateEvent", player, quest, "processEvent100_1"); player:EndEvent(); quest:StartSequence(SEQ_003); local director = GetWorldManager():GetArea(155):CreateDirector("AfterQuestWarpDirector", false); director:StartDirector(true); player:AddDirector(director); --player:SetLoginDirector(director); player:KickEvent(director, "noticeEvent", true); quest:UpdateENPCs(); --GetWorldManager():WarpToPublicArea(player); GetWorldManager():DoZoneChange(player, 155, nil, 0, 15, player.positionX, player.positionY, player.positionZ, player.rotation); elseif (classId == BEAMING_ADVENTURER) then callClientFunction (player, "delegateEvent", player, quest, "processEvent100_6"); elseif (classId == AMIABLE_ADVENTURER) then callClientFunction (player, "delegateEvent", player, quest, "processEvent100_3"); elseif (classId == MOROSE_MERCHANT) then callClientFunction (player, "delegateEvent", player, quest, "processEvent100_2"); elseif (classId == NARROW_EYED_ADVENTURER) then callClientFunction(player, "delegateEvent", player, quest, "processEvent100_7"); elseif (classId == UNCONCERNED_PASSERBY) then callClientFunction(player, "delegateEvent", player, quest, "processEvent100_9"); elseif (classId == VKOROLON) then callClientFunction(player, "delegateEvent", player, GetStaticActor("DftWil"), "defaultTalkWithVkorolon_001"); elseif (classId == WELL_BUNDLED_ADVENTURER) then callClientFunction(player, "delegateEvent", player, quest, "processEvent100_4"); elseif (classId == WISPILY_WHISKERED_WOODWORKER) then callClientFunction(player, "delegateEvent", player, quest, "processEvent100_8"); end end function seq015_onTalk(player, quest, npc, classId) local data = quest:GetData(); local subseqLTW = data:GetCounter(CNTR_SEQ15_LTW); local subseqCNJ = data:GetCounter(CNTR_SEQ15_CNJ); if (classId == MIOUNNE) then if (subseqCNJ == 3) then callClientFunction(player, "delegateEvent", player, quest, "processEvent135_2"); else callClientFunction(player, "delegateEvent", player, quest, "processEvent115_2"); end -- LTW Guild Events elseif (classId == HEREWARD) then if (subseqLTW == 0) then callClientFunction(player, "delegateEvent", player, quest, "processEvent120"); data:IncCounter(CNTR_SEQ15_LTW); --give 1000g elseif (subseqLTW == 1) then callClientFunction(player, "delegateEvent", player, quest, "processEvent120_2"); data:IncCounter(CNTR_SEQ15_LTW); if (subseqCNJ >= 3) then seq015_endSequence(player, quest); end else callClientFunction(player, "delegateEvent", player, quest, "processEvent120_2"); end -- CNJ Guild and Echo elseif (classId == SOILEINE) then if (subseqCNJ == 0) then callClientFunction(player, "delegateEvent", player, quest, "processEvent125"); data:IncCounter(CNTR_SEQ15_CNJ); elseif (subseqCNJ == 1) then callClientFunction(player, "delegateEvent", player, quest, "processEvent125_2"); elseif (subseqCNJ == 2) then callClientFunction(player, "delegateEvent", player, quest, "processEvent125_2"); end elseif (classId == O_APP_PESI) then if (subseqCNJ == 1) then callClientFunction(player, "delegateEvent", player, quest, "processEvent130"); data:IncCounter(CNTR_SEQ15_CNJ); else callClientFunction(player, "delegateEvent", player, quest, "processEvent130_3"); end elseif (classId == YDA) then callClientFunction(player, "delegateEvent", player, quest, "processEvent130_4"); elseif (classId == PAPALYMO) then callClientFunction(player, "delegateEvent", player, quest, "processEvent130_5"); elseif (classId == GUGULA) then callClientFunction(player, "delegateEvent", player, quest, "processEvent130_6"); elseif (classId == INGRAM) then callClientFunction(player, "delegateEvent", player, quest, "processEvent130_7"); elseif (classId == CHALLINIE) then callClientFunction(player, "delegateEvent", player, quest, "processEvent130_8"); elseif (classId == HETZKIN) then callClientFunction(player, "delegateEvent", player, quest, "processEvent130_2"); elseif (classId == BIDDY) then callClientFunction(player, "delegateEvent", player, quest, "processEvent130_2"); elseif (classId == SWETHYNA) then if (subseqLTW == 0) then callClientFunction(player, "delegateEvent", player, quest, "processEvent135"); data:IncCounter(CNTR_SEQ15_CNJ); else callClientFunction(player, "delegateEvent", player, quest, "processEvent136"); data:IncCounter(CNTR_SEQ15_CNJ); quest:NewNpcLsMsg(1); player:EndEvent(); GetWorldManager():WarpToPublicArea(player); return true; end end end function seq015_endSequence(player, quest) callClientFunction(player, "delegateEvent", player, quest, "processEvent123"); end function seq050_onTalk(player, quest, npc, classId) local data = quest:GetData(); if (classId == AUNILLE) then if (not data:GetFlag(FLAG_EMOTE_DONE1)) then callClientFunction(player, "delegateEvent", player, quest, "processEvent140_1"); else callClientFunction(player, "delegateEvent", player, quest, "processEvent141_1"); end elseif (classId == NICOLLAUX) then if (not data:GetFlag(FLAG_EMOTE_DONE2)) then callClientFunction(player, "delegateEvent", player, quest, "processEvent140_2"); else callClientFunction(player, "delegateEvent", player, quest, "processEvent141_2"); end elseif (classId == SANSA) then if (not data:GetFlag(FLAG_EMOTE_DONE3)) then callClientFunction(player, "delegateEvent", player, quest, "processEvent140_3"); else callClientFunction(player, "delegateEvent", player, quest, "processEvent141_3"); end elseif (classId == POWLE) then if (not data:GetFlag(FLAG_EMOTE_DONE4)) then callClientFunction(player, "delegateEvent", player, quest, "processEvent140_4"); else callClientFunction(player, "delegateEvent", player, quest, "processEvent141_4"); end elseif (classId == RYD) then if (not data:GetFlag(FLAG_EMOTE_DONE5)) then callClientFunction(player, "delegateEvent", player, quest, "processEvent140_5"); else callClientFunction(player, "delegateEvent", player, quest, "processEvent141_5"); end elseif (classId == ELYN) then if (not data:GetFlag(FLAG_EMOTE_DONE6)) then callClientFunction(player, "delegateEvent", player, quest, "processEvent140_6"); else callClientFunction(player, "delegateEvent", player, quest, "processEvent141_6"); end elseif (classId == FUFUCHA) then callClientFunction(player, "delegateEvent", player, quest, "processEvent140_10"); end end function onPush(player, quest, npc) local sequence = quest:getSequence(); local classId = npc:GetActorClassId(); local data = quest:GetData(); local subseqCNJ = data:GetCounter(CNTR_SEQ15_CNJ); if (sequence == SEQ_000) then elseif (sequence == SEQ_015) then if (classId == CNJ_TRIG and subseqCNJ == 1) then callClientFunction(player, "delegateEvent", player, quest, "processEvent130"); data:IncCounter(CNTR_SEQ15_CNJ); player:EndEvent(); GetWorldManager():WarpToPrivateArea(player, "PrivateAreaMasterPast", 0, -353.05, 6.25, -1697.39, 0.774); return; end elseif (sequence == SEQ_055) then if (classId == KIDS_TRIGGER) then callClientFunction(player, "delegateEvent", player, quest, "processEvent160"); player:EndEvent(); quest:StartSequence(SEQ_060); GetWorldManager():WarpToPublicArea(player, -209.817, 18, -1477.372, 1.4); return; end elseif (sequence == SEQ_060) then if (classId == GATE_TRIGGER) then local result = callClientFunction(player, "delegateEvent", player, quest, "contentsJoinAskInBasaClass"); if (result == 1) then -- DO ESCORT DUTY HERE -- startMan0g1Content(player, quest); -- For now just skip the sequence quest:StartSequence(SEQ_065); callClientFunction(player, "delegateEvent", player, quest, "processEvent180"); player:EndEvent(); quest:StartSequence(SEQ_070); GetWorldManager():WarpToPrivateArea(player, "PrivateAreaMasterPast", 0, -770.197, 23, -1086.209); return; end player:EndEvent(); end elseif (sequence == SEQ_070) then if (classId == STUMP_TRIGGER) then callClientFunction(player, "delegateEvent", player, quest, "processEvent181"); player:EndEvent(); quest:StartSequence(SEQ_071); GetWorldManager():WarpToPrivateArea(player, "PrivateAreaMasterPast", 1); return; end elseif (sequence == SEQ_071) then if (classId == STUMP_EXIT_TRIGGER) then callClientFunction(player, "delegateEvent", player, quest, "processEvent182"); player:EndEvent(); quest:StartSequence(SEQ_072); GetWorldManager():WarpToPublicArea(player, -185, 6, -962, -3); return; end elseif (sequence == SEQ_072) then if (classId == BTN_TRIGGER) then callClientFunction(player, "delegateEvent", player, quest, "processEvent185"); player:EndEvent(); quest:NewNpcLsMsg(1); quest:StartSequence(SEQ_075); end end quest:UpdateENPCs(); end function onEmote(player, quest, npc, eventName) local data = quest:GetData(); local sequence = quest:getSequence(); local classId = npc:GetActorClassId(); -- Play the emote if (classId == AUNILLE) then -- Beckon player:DoEmote(npc.Id, 8, 21071); elseif (classId == NICOLLAUX) then -- Clap player:DoEmote(npc.Id, 7, 21061); elseif (classId == SANSA) then -- Bow player:DoEmote(npc.Id, 5, 21041); elseif (classId == POWLE) then -- Cheer player:DoEmote(npc.Id, 6, 21051); elseif (classId == RYD) then -- Surprised player:DoEmote(npc.Id, 1, 21001); elseif (classId == ELYN) then -- Lookout player:DoEmote(npc.Id, 22, 21211); end wait(2.5); -- Handle the result if (sequence == SEQ_050) then if (classId == AUNILLE) then if (not data:GetFlag(FLAG_EMOTE_DONE1)) then callClientFunction(player, "delegateEvent", player, quest, "processEvent142_1"); data:SetFlag(FLAG_EMOTE_DONE1); end elseif (classId == NICOLLAUX) then if (not data:GetFlag(FLAG_EMOTE_DONE2)) then callClientFunction(player, "delegateEvent", player, quest, "processEvent142_2"); data:SetFlag(FLAG_EMOTE_DONE2); end elseif (classId == SANSA) then if (not data:GetFlag(FLAG_EMOTE_DONE3)) then callClientFunction(player, "delegateEvent", player, quest, "processEvent142_3"); data:SetFlag(FLAG_EMOTE_DONE3); end elseif (classId == POWLE) then if (not data:GetFlag(FLAG_EMOTE_DONE4)) then callClientFunction(player, "delegateEvent", player, quest, "processEvent142_4"); data:SetFlag(FLAG_EMOTE_DONE4); end elseif (classId == RYD) then if (not data:GetFlag(FLAG_EMOTE_DONE5)) then callClientFunction(player, "delegateEvent", player, quest, "processEvent142_5"); data:SetFlag(FLAG_EMOTE_DONE5); end elseif (classId == ELYN) then if (not data:GetFlag(FLAG_EMOTE_DONE6)) then callClientFunction(player, "delegateEvent", player, quest, "processEvent142_6"); data:SetFlag(FLAG_EMOTE_DONE6); end end end -- Check result and finish if (bit32.band(data:GetFlags(), 0x7E) == 0x7E) then callClientFunction(player, "delegateEvent", player, quest, "processEvent150"); player:EndEvent(); quest:StartSequence(SEQ_055); GetWorldManager():WarpToPrivateArea(player, "PrivateAreaMasterPast", 2, -231.474, 12, -1500.86, 0.73); return end player:EndEvent(); quest:UpdateENPCs(); end function onNotice(player, quest, target) player:EndEvent(); player:SendMessage(0x20, "", "Test"); callClientFunction(player, "delegateEvent", player, quest, "processEventTu_001"); player:EndEvent(); 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_005) then msgPack = 1; elseif (sequence == SEQ_015 and quest:GetData():GetCounter(CNTR_SEQ15_LTW) ~= 1 and quest:GetData():GetCounter(CNTR_SEQ15_CNJ) ~= 3) then msgPack = 2; elseif ((sequence == SEQ_015 and quest:GetData():GetCounter(CNTR_SEQ15_LTW) >= 1 and quest:GetData():GetCounter(CNTR_SEQ15_CNJ) >= 3) or sequence == SEQ_040) then msgPack = 3; elseif (sequence == SEQ_075 or sequence == SEQ_080) then msgPack = 4; elseif (sequence == SEQ_100 or sequence == SEQ_105) then msgPack = 5; end -- Quick way to handle all msgs nicely. player:SendGameMessageLocalizedDisplayName(quest, NPCLS_MSGS[msgPack][msgStep], MESSAGE_TYPE_NPC_LINKSHELL, 1300018); if (msgStep >= #NPCLS_MSGS[msgPack]) then quest:EndOfNpcLsMsgs(); else quest:ReadNpcLsMsg(); end -- Handle anything else if (sequence == SEQ_005) then showTutorialSuccessWidget(player, 9080); wait(3); closeTutorialWidget(player); endTutorialMode(player); elseif (sequence == SEQ_015 and quest:GetData():GetCounter(CNTR_SEQ15_LTW) >= 1 and quest:GetData():GetCounter(CNTR_SEQ15_CNJ) >= 3) then quest:StartSequenceForNpcLs(SEQ_040); elseif (sequence == SEQ_075) then quest:StartSequenceForNpcLs(SEQ_080); elseif (sequence == SEQ_100) then quest:StartSequenceForNpcLs(SEQ_105); end end player:EndEvent(); end function getJournalInformation(player, quest) local data = quest:GetData(); return ENABLE_GL_TUTORIAL and 1 or 0, data:GetCounter(CNTR_SEQ15_LTW) * 5, data:GetCounter(CNTR_SEQ15_CNJ) * 5; end function getJournalMapMarkerList(player, quest) local sequence = quest:getSequence(); local possibleMarkers = {}; if (sequence == SEQ_000) then elseif (sequence == SEQ_005) then elseif (sequence == SEQ_010) then elseif (sequence == SEQ_012) then elseif (sequence == SEQ_015) then local subseqLTW = data:GetCounter(CNTR_SEQ15_LTW); local subseqCNJ = data:GetCounter(CNTR_SEQ15_CNJ); elseif (sequence == SEQ_040) then elseif (sequence == SEQ_050) then elseif (sequence == SEQ_055) then return MRKR_KID_TRIGGER; elseif (sequence == SEQ_060) then return MRKR_GATE_TRIGGER; elseif (sequence == SEQ_065) then elseif (sequence == SEQ_070) then elseif (sequence == SEQ_071) then elseif (sequence == SEQ_072) then elseif (sequence == SEQ_075) then elseif (sequence == SEQ_080) then elseif (sequence == SEQ_085) then elseif (sequence == SEQ_090) then elseif (sequence == SEQ_095) then elseif (sequence == SEQ_100) then elseif (sequence == SEQ_105) then end return unpack(possibleMarkers) end