diff --git a/Data/scripts/quests/man/man0l0.lua b/Data/scripts/quests/man/man0l0.lua index afd03675..8e6e7d0a 100644 --- a/Data/scripts/quests/man/man0l0.lua +++ b/Data/scripts/quests/man/man0l0.lua @@ -144,7 +144,8 @@ end function onNotice(player, quest, target) local sequence = quest:getSequence(); - if (sequence == SEQ_000) then + if (sequence == SEQ_000) then + quest:ClearData(); callClientFunction(player, "delegateEvent", player, quest, "processTtrNomal001withHQ"); end diff --git a/Data/scripts/quests/man/man0l1.lua b/Data/scripts/quests/man/man0l1.lua index 323c4fe0..86a34a0c 100644 --- a/Data/scripts/quests/man/man0l1.lua +++ b/Data/scripts/quests/man/man0l1.lua @@ -12,12 +12,38 @@ Prereq: Shapeless Melody (Man0l0 - 110001) ]] -- Sequence Numbers -SEQ_000 = 0; -- On the boat interior; contains the basics tutorial. -SEQ_005 = 5; -- Combat on the top of the boat. -SEQ_010 = 10; -- In Limsa Lominsa's port. +SEQ_000 = 0; -- (Private Area) Drowning Wench Echo Scene. +SEQ_003 = 3; -- Go attune to Camp Bearded Rock. +SEQ_005 = 5; -- Attuned, go back to Baderon. Info: If 1, Baderon gave you a tutorial guildleve else 0. +SEQ_006 = 6; -- Talk to Baderon again +SEQ_007 = 7; -- Find the CUL and MSK Guilds. Info: Params '0,5,20' will show the msg that you visited both guilds and to notify Baderon on the LS. +SEQ_035 = 35; -- Go to the FSH Guild. +SEQ_040 = 40; -- Learn hand signals from the guild +SEQ_048 = 48; -- Travel to Zephyr Gate +SEQ_050 = 50; -- Escort mission +SEQ_055 = 55; -- Search lighthouse for corpse +SEQ_060 = 60; -- Talk to Sisipu +SEQ_065 = 65; -- Return to FSH Guild +SEQ_070 = 70; -- Contact Baderon on LS +SEQ_075 = 75; -- Go to the ARM and BSM Guilds. +SEQ_080 = 80; -- Speak with H'naanza +SEQ_085 = 85; -- Speak with Bodenolf +SEQ_090 = 90; -- Contact Baderon on LS +SEQ_092 = 92; -- Return to Baderon. -- Actor Class Ids -WELLTRAVELED_MERCHANT = 1000438; +YSHTOLA = 1000001; +CRAPULOUS_ADVENTURER = 1000075; +DUPLICITOUS_TRADER = 1000076; +DEBONAIR_PIRATE = 1000077; +ONYXHAIRED_ADVENTURER = 1000098; +SKITTISH_ADVENTURER = 1000099; +RELAXING_ADVENTURER = 1000100; +BADERON = 1000137; +MYTESYN = 1000167; +COCKAHOOP_COCKSWAIN = 1001643; +SENTENIOUS_SELLSWORD = 1001649; +SOLICITOUS_SELLSWORD = 1001650; -- Quest Markers MRKR_HOB = 11000202; @@ -39,13 +65,67 @@ function onFinish(player, quest) end function onSequence(player, quest, sequence) - quest:ClearENpcs(); + quest:AddENpc(YSHTOLA); + quest:AddENpc(CRAPULOUS_ADVENTURER); + quest:AddENpc(DUPLICITOUS_TRADER); + quest:AddENpc(DEBONAIR_PIRATE); + quest:AddENpc(ONYXHAIRED_ADVENTURER); + quest:AddENpc(SKITTISH_ADVENTURER); + quest:AddENpc(RELAXING_ADVENTURER); + quest:AddENpc(BADERON, QFLAG_PLATE); + quest:AddENpc(MYTESYN); + quest:AddENpc(COCKAHOOP_COCKSWAIN); + quest:AddENpc(SENTENIOUS_SELLSWORD); + quest:AddENpc(SOLICITOUS_SELLSWORD); 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); + end + + quest:UpdateENPCs(); +end + +function seq000_onTalk(player, quest, npc, classId) + if (classId == CRAPULOUS_ADVENTURER) then + callClientFunction(player, "delegateEvent", player, quest, "processEvent010_2"); + elseif (classId == SKITTISH_ADVENTURER) then + callClientFunction(player, "delegateEvent", player, quest, "processEvent010_3"); + elseif (classId == DUPLICITOUS_TRADER) then + callClientFunction(player, "delegateEvent", player, quest, "processEvent010_4"); + elseif (classId == DEBONAIR_PIRATE) then + callClientFunction(player, "delegateEvent", player, quest, "processEvent010_5"); + elseif (classId == ONYXHAIRED_ADVENTURER) then + callClientFunction(player, "delegateEvent", player, quest, "processEvent010_6"); + elseif (classId == RELAXING_ADVENTURER) then + callClientFunction(player, "delegateEvent", player, quest, "processEvent010_7"); + elseif (classId == YSHTOLA) then + callClientFunction(player, "delegateEvent", player, quest, "processEvent010_8"); + elseif (classId == BADERON) then + callClientFunction(player, "delegateEvent", player, quest, "processEvent020"); + quest:StartSequence(SEQ_003); + player:EndEvent(); + GetWorldManager():DoZoneChange(player, 133, nil, 0, 15, player.positionX, player.positionY, player.positionZ, player.rotation); + return; + elseif (classId == MYTESYN) then + callClientFunction(player, "delegateEvent", player, quest, "processEvent010_7"); + elseif (classId == COCKAHOOP_COCKSWAIN) then + callClientFunction(player, "delegateEvent", player, quest, "processEtc001"); + elseif (classId == SOLICITOUS_SELLSWORD) then + callClientFunction(player, "delegateEvent", player, quest, "processEtc002"); + elseif (classId == SENTENIOUS_SELLSWORD) then + callClientFunction(player, "delegateEvent", player, quest, "processEtc003"); + end + + player:EndEvent(); +end + +function seq003_onTalk(player, quest, npc, classId) end function onPush(player, quest, npc) @@ -54,6 +134,11 @@ function onPush(player, quest, npc) end +function getJournalInformation(player, quest) + return 0, 5, 20; +end + + function getJournalMapMarkerList(player, quest) local sequence = quest:getSequence(); diff --git a/Map Server/Actors/Quest/Quest.cs b/Map Server/Actors/Quest/Quest.cs index b41359a7..7cd6e3e5 100644 --- a/Map Server/Actors/Quest/Quest.cs +++ b/Map Server/Actors/Quest/Quest.cs @@ -103,10 +103,11 @@ namespace Meteor.Map.Actors { if (OldENPCs[classId].IsChanged(flagType, isTalkEnabled, isPushEnabled, isEmoteEnabled, isSpawned)) { + OldENPCs[classId].Update(flagType, isTalkEnabled, isPushEnabled, isEmoteEnabled, isSpawned); instanceUpdated = OldENPCs[classId]; - instanceUpdated.Update(flagType, isTalkEnabled, isPushEnabled, isEmoteEnabled, isSpawned); - CurrentENPCs.Add(classId, instanceUpdated); } + + CurrentENPCs.Add(classId, OldENPCs[classId]); OldENPCs.Remove(classId); } else