diff --git a/Data/scripts/commands/gm/nudgenpc.lua b/Data/scripts/commands/gm/nudgenpc.lua index e1719e5f..6a033b76 100644 --- a/Data/scripts/commands/gm/nudgenpc.lua +++ b/Data/scripts/commands/gm/nudgenpc.lua @@ -38,7 +38,8 @@ horizontal = { rotation = { ["ROTATE"] = 3, ["ORIENTATION"] = 3, -["O"] = 3 +["O"] = 3, +["ROT"] = 3 } function onTrigger(player, argc, arg1, arg2) diff --git a/Data/scripts/commands/gm/testmapobj.lua b/Data/scripts/commands/gm/testmapobj.lua index feff9672..36d7b157 100644 --- a/Data/scripts/commands/gm/testmapobj.lua +++ b/Data/scripts/commands/gm/testmapobj.lua @@ -3,7 +3,12 @@ require("global"); properties = { permissions = 0, parameters = "sssss", - description = "" + description = +[[ + +Tests a layout/region id w/ an animation string +!testmapobj +]], } function onTrigger(player, argc, animation, layoutId, instanceId, maxInstanceId) diff --git a/Data/scripts/quests/dft/DftWil.lua b/Data/scripts/quests/dft/DftWil.lua index 413fdf32..9eb2fcdd 100644 --- a/Data/scripts/quests/dft/DftWil.lua +++ b/Data/scripts/quests/dft/DftWil.lua @@ -271,9 +271,9 @@ function onTalk(player, quest, npc, eventName) local npcId = npc:GetActorClassId(); local clientFunc = defaultTalkWil[npcId]; - if (npcId == 1000864) then -- Kopuru Fupuru (Adv. Guild Inn NPC) + if (npcId == 1000864) then -- Otopa Pottopa (Adv. Guild Inn NPC) if (player:IsQuestCompleted(110848)) then -- "Ring of Deceit" completed. - defaultTalkWithInn(player, quest, "defaultTalkWithInn_Desk"); + callClientFunction(player, "delegateEvent", player, quest, "defaultTalkWithInn_Desk"); else callClientFunction(player, "delegateEvent", player, quest, clientFunc); end diff --git a/Data/scripts/quests/etc/etc5g0.lua b/Data/scripts/quests/etc/etc5g0.lua index 5ab4d179..6a289705 100644 --- a/Data/scripts/quests/etc/etc5g0.lua +++ b/Data/scripts/quests/etc/etc5g0.lua @@ -28,8 +28,6 @@ MRKR_PFARAHR = 11082001; MRKR_VKOROLON = 11082002; function onStart(player, quest) - quest:StartSequence(SEQ_000); - player:SendGameMessage(GetWorldMaster(), 25246, MESSAGE_TYPE_SYSTEM, ITEM_WELL_WORN_BAG, 1); end function onFinish(player, quest) @@ -57,6 +55,10 @@ function onTalk(player, quest, npc) local questAccepted = callClientFunction(player, "delegateEvent", player, quest, "processEventVKOROLONStart"); if (questAccepted == 1) then player:AcceptQuest(quest); + quest:StartSequence(SEQ_000); + wait(2); + attentionMessage(player, 25246, ITEM_WELL_WORN_BAG, 1); + end player:EndEvent(); return; diff --git a/Data/scripts/quests/etc/etc5g1.lua b/Data/scripts/quests/etc/etc5g1.lua index c15432ec..c22af275 100644 --- a/Data/scripts/quests/etc/etc5g1.lua +++ b/Data/scripts/quests/etc/etc5g1.lua @@ -19,6 +19,7 @@ SEQ_010 = 10; -- Actor Class Ids OTOPA_POTTOPA = 1000864; VKOROLON = 1000458; +THE_ROOST_BED = 1200379; NICOLIAUX = 1002071; -- 1000409: Can't use his public area id, otherwise a ! shows on him there also POWLE = 1000238; AUNILLIE = 1000410; @@ -51,14 +52,14 @@ end function onStateChange(player, quest, sequence) + if (sequence == SEQ_ACCEPT) then local hasQuestItem = player:GetItemPackage(INVENTORY_NORMAL):HasItem(ITEM_WANTED_GAUWYN); - local otopaFlag = 0; - + if (hasQuestItem == false) then - otopaFlag = 2; + quest:SetENpc(OTOPA_POTTOPA, QFLAG_NORM); end - quest:SetENpc(OTOPA_POTTOPA, otopaFlag); + quest:SetENpc(THE_ROOST_BED, 5); quest:SetENpc(VKOROLON, QFLAG_NORM); -- Always shows despite interaction elseif (sequence == SEQ_000) then diff --git a/Data/scripts/quests/etc/etc5l1.lua b/Data/scripts/quests/etc/etc5l1.lua new file mode 100644 index 00000000..207a119c --- /dev/null +++ b/Data/scripts/quests/etc/etc5l1.lua @@ -0,0 +1,166 @@ +require("global"); + +--[[ + +Quest Script + +Name: Private Eyes +Code: Etc5l1 +Id: 110839 +Prereq: Level 15. Man5g1 (In Plain Sight) complete. [110829] +Notes: + +]] + +-- Sequence Numbers +SEQ_000 = 0; -- Talk to Bertrand +SEQ_010 = 10; -- Head to the meeting point. + +-- Actor Class Ids +OTOPA_POTTOPA = 1000864; +MYTESYN = 1000167; +MIZZENMAST_BED = 1200378; +BERTRAND = 1001903; -- 1060004 also a valid ID, but doesn't look like the NPC appeared anywhere else? +ABRAHAM = 1002066; +PRIVATE_AREA_ENTRANCE = 1090087; -- Check that this ID is free to use before merge +PRIVATE_AREA_EXIT = 1290002; +CUTSCENE_PUSH_TRIGGER = 1090088; -- Check that this ID is free to use before merge + +-- Prop Actor Ids (for documentation sake) +BRONZE_CHEST = 1080056; -- bgObj 20923 w/ body 1024 +GLASS_DRINK = 1080057; -- bgObj 20901 w/ body 26624 +RECTANGULAR_BOX = 1080058; -- bgObj 20951 w/ body 1024 + +-- Quest Items +ITEM_WANTED_GAUWYN = 10011243; + +-- Quest Markers +MRKR_CAVE = 11072101; +MRKR_BERTRAND = 11072102; +MRKR_CUTSCENE = 11072103; + + + +function onStart(player, quest) + quest:StartSequence(SEQ_000); +end + +function onFinish(player, quest) +end + + +function onStateChange(player, quest, sequence) + + if (sequence == SEQ_ACCEPT) then + local hasQuestItem = player:GetItemPackage(INVENTORY_NORMAL):HasItem(ITEM_WANTED_GAUWYN); + local otopaFlag = 0; + + if (hasQuestItem == false) then + otopaFlag = 2; + end + quest:SetENpc(OTOPA_POTTOPA, otopaFlag); + quest:SetENpc(MYTESYN, QFLAG_NORM); -- Assuming this functions the same as it did in Etc5g1 + quest:SetENpc(MIZZENMAST_BED, 5); + + elseif (sequence == SEQ_000) then + quest:SetENpc(MYTESYN); + quest:SetENpc(PRIVATE_AREA_ENTRANCE, QFLAG_MAP, false, true, false, true); + quest:SetENpc(BERTRAND, QFLAG_NORM); + quest:SetENpc(ABRAHAM); + elseif (sequence == SEQ_010) then + quest:SetENpc(CUTSCENE_PUSH_TRIGGER, QFLAG_MAP,false, true, false, true); + end +end + +function onTalk(player, quest, npc) + local sequence = quest:getSequence(); + local classId = npc:GetActorClassId(); + + if (sequence == SEQ_ACCEPT) then + -- Am assuming this all functions the same as it did in Etc5g1 + if (classId == OTOPA_POTTOPA) then + local hasQuestItem = player:GetItemPackage(INVENTORY_NORMAL):HasItem(ITEM_WANTED_GAUWYN); + + if (not hasQuestItem) then + callClientFunction(player, "delegateEvent", player, quest, "processEventOTOPAPOTTOPAStart"); + giveWantedItem(player); + npc:SetQuestGraphic(player, QFLAG_NONE); + else + callClientFunction(player, "delegateEvent", player, quest, "processEventOTOPAPOTTOPAStart_2"); + end + player:SendGameMessage(player, GetWorldMaster(), 51148, MESSAGE_TYPE_SYSTEM, 10011243, 1070); -- Log out in Mizzenmast Inn w/ item. + elseif (classId == MYTESYN) then + player:SendGameMessage(player, GetWorldMaster(), 51148, MESSAGE_TYPE_SYSTEM, 10011243, 1070); + end + + elseif (sequence == SEQ_000) then + if (classId == MYTESYN) then + callClientFunction(player, "delegateEvent", player, quest, "processEvent_000_1"); + elseif (classId == BERTRAND) then + callClientFunction(player, "delegateEvent", player, quest, "processEvent_010"); + quest:UpdateENPCs(); -- Band-aid for a QFLAG_NORM issue + quest:StartSequence(SEQ_010); + GetWorldManager():WarpToPublicArea(player); + elseif (classId == ABRAHAM) then + callClientFunction(player, "delegateEvent", player, quest, "processEvent_010_1"); + end + end + + player:EndEvent() + quest:UpdateENPCs(); +end + + + +function onPush(player, quest, npc) + local classId = npc.GetActorClassId(); + + + if (classId == PRIVATE_AREA_ENTRANCE) then + choice = callClientFunction(player, "delegateEvent", player, quest, "instanceAreaJoinAskInBasaClass"); + if (choice == 1) then + GetWorldManager():WarpToPrivateArea(player, "PrivateAreaMasterPast", 5, -220.948, 16.603, -92.863, -2.090); + end + + elseif (classId == CUTSCENE_PUSH_TRIGGER) then + callClientFunction(player, "delegateEvent", player, quest, "processEvent_020"); + callClientFunction(player, "delegateEvent", player, quest, "sqrwa", 500, 1, 1); + player:CompleteQuest(quest); + end + player:EndEvent(); +end + + + +function getJournalInformation(player, quest) +end + + +function getJournalMapMarkerList(player, quest) + local sequence = quest:getSequence(); + + if (sequence == SEQ_000) then + return MRKR_CAVE; + -- TO-DO: Check for private area and use MRKR_BERTRAND in place of this + elseif (sequence == SEQ_010) then + return MRKR_CUTSCENE; + end +end + + +function giveWantedItem(player) + + local invCheck = player:getItemPackage(INVENTORY_NORMAL):addItem(ITEM_WANTED_GAUWYN, 1, 1); + + if (invCheck == INV_ERROR_FULL) then + -- Your inventory is full. + player:SendGameMessage(player, GetWorldMaster(), 60022, MESSAGE_TYPE_SYSTEM_ERROR); + elseif (invCheck == INV_ERROR_ALREADY_HAS_UNIQUE) then + -- You cannot have more than one in your possession at any given time. + player:SendGameMessage(player, GetWorldMaster(), 40279, MESSAGE_TYPE_SYSTEM_ERROR, ITEM_WANTED_GAUWYN, 1); + elseif (invCheck == INV_ERROR_SYSTEM_ERROR) then + player:SendMessage(MESSAGE_TYPE_SYSTEM, "", "[DEBUG] Server Error on adding item."); + elseif (invCheck == INV_ERROR_SUCCESS) then + player:SendGameMessage(player, GetWorldMaster(), 25246, MESSAGE_TYPE_SYSTEM_ERROR, ITEM_WANTED_GAUWYN, 1); + end +end \ No newline at end of file diff --git a/Data/scripts/quests/etc/etc5l2.lua b/Data/scripts/quests/etc/etc5l2.lua new file mode 100644 index 00000000..9a645c32 --- /dev/null +++ b/Data/scripts/quests/etc/etc5l2.lua @@ -0,0 +1,140 @@ +require("global"); + +--[[ + +Quest Script + +Name: Mysteries of the Red Moon +Code: Etc5l2 +Id: 110840 +Prereq: Level 20. Man5l1 (Private Eyes) complete. [110839] +Notes: + +]] + +-- Sequence Numbers +SEQ_000 = 0; -- Investigate the room. +SEQ_005 = 5; -- Head to the Arrzaneth Ossuary + +-- Actor Class Ids +KOPURU_FUPURU = 1002047; +BOOK = 1200412; +INN_EXIT = 1090089; +CUTSCENE_PUSH_TRIGGER = 1090253; -- Already had from capture + +-- Quest Markers +MRKR_KOPURU_FUPURU = 11072201; +MRKR_BOOK = 11072202; +MRKR_CUTSCENE = 11072203; + +-- Quest Item +ITEM_HIDLIBRAND_DOSSIER = 10011252; + +function onStart(player, quest) + quest:StartSequence(SEQ_000); +end + +function onFinish(player, quest) +end + + +function onStateChange(player, quest, sequence) + + if (sequence == SEQ_ACCEPT) then + quest:SetENpc(KOPURU_FUPURU, QFLAG_NORM); + elseif (sequence == SEQ_000) then + quest:SetENpc(KOPURU_FUPURU, QFLAG_NORM); + quest:SetENpc(BOOK, QFLAG_NORM); + quest:SetENpc(INN_EXIT, QFLAG_MAP, false, true, false, true); + elseif (sequence == SEQ_005) then + quest:SetENpc(BOOK); + quest:SetENpc(KOPURU_FUPURU); + quest:SetENpc(INN_EXIT, QFLAG_MAP, false, true, false, true); + quest:SetENpc(CUTSCENE_PUSH_TRIGGER, QFLAG_MAP,false, true, false, true); + end +end + +function onTalk(player, quest, npc) + local sequence = quest:getSequence(); + local classId = npc:GetActorClassId(); + + -- Offer the quest + if (classId == KOPURU_FUPURU and sequence == SEQ_ACCEPT) then + local questAccepted = callClientFunction(player, "delegateEvent", player, quest, "processEventStart"); + if (questAccepted == 1) then + player:AcceptQuest(quest); + end + player:EndEvent(); + return; + -- Quest Progress + elseif (sequence == SEQ_000) then + if (classId == KOPURU_FUPURU) then + callClientFunction(player, "delegateEvent", player, quest, "processEvent000_KOPURU"); + GetWorldManager():DoZoneChange(player, 181, "PrivateAreaMasterPast", 5, 15, 0,0,0, player.rotation); + elseif (classId == BOOK) then + callClientFunction(player, "delegateEvent", player, quest, "processEvent000"); + quest:UpdateENPCs(); -- Band-aid for a QFLAG_NORM issue + quest:StartSequence(SEQ_005); + end + elseif (sequence == SEQ_005) then + if (classId == KOPURU_FUPURU) then + callClientFunction(player, "delegateEvent", player, quest, "processEvent000_KOPURU"); + GetWorldManager():DoZoneChange(player, 181, "PrivateAreaMasterPast", 5, 15, 0,0,0, player.rotation); + elseif (classId == BOOK) then + callClientFunction(player, "delegateEvent", player, quest, "processEvent000_BOOK"); + end + end + + player:EndEvent() + quest:UpdateENPCs(); +end + + + +function onPush(player, quest, npc) + local classId = npc.GetActorClassId(); + + + if (classId == INN_EXIT) then + choice = callClientFunction(player, "delegateEvent", player, quest, "processEventExit"); + if (choice == 1) then + player:EndEvent(); + GetWorldManager():DoZoneChange(player, 209, "", 0, 15, -104.296, 203, 162.257, -0.4); + end + -- Quest Complete + elseif (classId == CUTSCENE_PUSH_TRIGGER) then + callClientFunction(player, "delegateEvent", player, quest, "processEvent005_NQ"); + --TO-DO: Get the scaled EXP for this sqrwa figured out + callClientFunction(player, "delegateEvent", player, quest, "sqrwa", 1000, 1, 1, 9); + + player:SendGameMessage(player, GetWorldMaster(), 51149, MESSAGE_TYPE_SYSTEM, ITEM_HIDLIBRAND_DOSSIER); + local itemCheck = giveWantedItem(player); + if (itemCheck == true) then + player:CompleteQuest(quest); + end + end + player:EndEvent(); +end + + +function getJournalMapMarkerList(player, quest) + local sequence = quest:getSequence(); + + if (sequence == SEQ_000) then + return MRKR_KOPURU_FUPURU; + -- TO-DO: Check for private area and use MRKR_BOOK in place of this + elseif (sequence == SEQ_005) then + return MRKR_CUTSCENE; + end +end + + +function giveWantedItem(player) + + local invCheck = player:getItemPackage(INVENTORY_NORMAL):addItem(ITEM_HIDLIBRAND_DOSSIER, 1, 1); + + if (invCheck == INV_ERROR_SUCCESS) then + player:SendGameMessage(player, GetWorldMaster(), 25246, MESSAGE_TYPE_SYSTEM_ERROR, ITEM_HIDLIBRAND_DOSSIER, 1); + return true; + end +end \ No newline at end of file diff --git a/Data/scripts/quests/etc/etc5l3.lua b/Data/scripts/quests/etc/etc5l3.lua new file mode 100644 index 00000000..5b97c0b1 --- /dev/null +++ b/Data/scripts/quests/etc/etc5l3.lua @@ -0,0 +1,253 @@ +require("global"); + +--[[ + +Quest Script + +Name: Prophecy Inspection +Code: Etc5l3 +Id: 110841 +Prereq: Level 20. Man5l2 (Mysteries of the Red Moon) complete. [110840] +Notes: + +]] + +-- Sequence Numbers +SEQ_000 = 0; -- Head to the Coffer & Coffin +SEQ_005 = 5; -- Help out Alret +SEQ_010 = 10; -- Talk to Alret + +-- Actor Class Ids +KOPURU_FUPURU = 1002047; +VKOROLON = 1000458; +MYTESYN = 1000167; +COFFER_AND_COFFIN_PUSH = 1090090; +BED_LIMSA = 1200378; +BED_GRIDANIA = 1200379; +BED_ULDAH = 1200380; + +HILDIBRAND = 1001995; +NASHU_MHAKARACCA = 1001996; +ALRET = 1002114; +BOMB_BANE_1 = 1080090; +BOMB_BANE_2 = 1080091; +BOMB_BANE_3 = 1080092; +BOMB_BANE_4 = 1080093; +BOMB_BANE_5 = 1080094; + +-- Quest Markers +MRKR_COFFIN = 11072204; +MRKR_BANE_1 = 11072205; +MRKR_BANE_2 = 11072206; +MRKR_BANE_3 = 11072207; +MRKR_BANE_4 = 11072208; +MRKR_BANE_5 = 11072209; +MRKR_ALRET = 11072210; + +-- Quest Flags +FLAG_SEQ005_BANE_1 = 0; +FLAG_SEQ005_BANE_2 = 1; +FLAG_SEQ005_BANE_3 = 2; +FLAG_SEQ005_BANE_4 = 3; +FLAG_SEQ005_BANE_5 = 4; + +-- Quest Counter +COUNTER_BANE = 0; + +-- Quest Item +ITEM_HIDLIBRAND_DOSSIER = 10011252; +ITEM_BOMB_BANE = 11000230; + + + +function onStart(player, quest) + quest:StartSequence(SEQ_000); +end + +function onFinish(player, quest) +end + + +function onStateChange(player, quest, sequence) + local data = quest:GetData(); + + -- Quest not accepted: Set up actors to let you retrieve the item & initiate the log-in check at the Inn + if (sequence == SEQ_ACCEPT) then + quest:SetENpc(KOPURU_FUPURU, QFLAG_NORM); + quest:SetENpc(VKOROLON, QFLAG_NORM); + quest:SetENpc(MYTESYN, QFLAG_NORM); + quest:SetENpc(BED_ULDAH, 5); + quest:SetENpc(BED_GRIDANIA, 5); + quest:SetENpc(BED_LIMSA, 5); + -- Quest started + elseif (sequence == SEQ_000) then + quest:SetENpc(COFFER_AND_COFFIN_PUSH, QFLAG_MAP, false, true, false, true); + elseif (sequence == SEQ_005) then + local bane1Flag = data:GetFlag(FLAG_SEQ005_BANE_1) and QFLAG_NONE or QFLAG_PLATE; + local bane2Flag = data:GetFlag(FLAG_SEQ005_BANE_2) and QFLAG_NONE or QFLAG_PLATE; + local bane3Flag = data:GetFlag(FLAG_SEQ005_BANE_3) and QFLAG_NONE or QFLAG_PLATE; + local bane4Flag = data:GetFlag(FLAG_SEQ005_BANE_4) and QFLAG_NONE or QFLAG_PLATE; + local bane5Flag = data:GetFlag(FLAG_SEQ005_BANE_5) and QFLAG_NONE or QFLAG_PLATE; + + quest:SetENpc(COFFER_AND_COFFIN_PUSH, QFLAG_MAP, false, true, false, true); + quest:SetENpc(HILDIBRAND); + quest:SetENpc(NASHU_MHAKARACCA); + quest:SetENpc(ALRET); + quest:SetENpc(BOMB_BANE_1, bane1Flag); + quest:SetENpc(BOMB_BANE_2, bane2Flag); + quest:SetENpc(BOMB_BANE_3, bane3Flag); + quest:SetENpc(BOMB_BANE_4, bane4Flag); + quest:SetENpc(BOMB_BANE_5, bane5Flag); + -- Quest finished + elseif (sequence == SEQ_010) then + quest:SetENpc(HILDIBRAND); + quest:SetENpc(NASHU_MHAKARACCA); + quest:SetENpc(ALRET, QFLAG_REWARD); + end +end + +function onTalk(player, quest, npc) + local sequence = quest:getSequence(); + local classId = npc:GetActorClassId(); + + if (sequence == SEQ_ACCEPT) then + if (classId == KOPURU_FUPURU) then + callClientFunction(player, "delegateEvent", player, quest, "processEventKOPURUStart"); + elseif (classId == VKOROLON) then + callClientFunction(player, "delegateEvent", player, quest, "processEventKOROLONStart"); + elseif (classId == MYTESYN) then + callClientFunction(player, "delegateEvent", player, quest, "processEventMYTESYNStart"); + end + giveDossierItem(player); + player:SendGameMessage(player, GetWorldMaster(), 51149, MESSAGE_TYPE_SYSTEM, ITEM_HIDLIBRAND_DOSSIER); + + elseif (sequence == SEQ_005) then + local data = quest:GetData(); + local incCounter = false; + + if (classId == HILDIBRAND) then + callClientFunction(player, "delegateEvent", player, quest, "processEvent_005_1"); + elseif (classId == NASHU_MHAKARACCA) then + callClientFunction(player, "delegateEvent", player, quest, "processEvent_005_2"); + elseif (classId == ALRET) then + if (sequence == SEQ_005) then + callClientFunction(player, "delegateEvent", player, quest, "processEvent_005_3"); + end + elseif (classId == BOMB_BANE_1) then + if not (data:GetFlag(FLAG_SEQ005_BANE_1)) then + incCounter = true; + data:SetFlag(FLAG_SEQ005_BANE_1); + end + elseif (classId == BOMB_BANE_2) then + if not (data:GetFlag(FLAG_SEQ005_BANE_2)) then + incCounter = true; + data:SetFlag(FLAG_SEQ005_BANE_2); + end + elseif (classId == BOMB_BANE_3) then + if not (data:GetFlag(FLAG_SEQ005_BANE_3)) then + incCounter = true; + data:SetFlag(FLAG_SEQ005_BANE_3); + end + elseif (classId == BOMB_BANE_4) then + if not (data:GetFlag(FLAG_SEQ005_BANE_4)) then + incCounter = true; + data:SetFlag(FLAG_SEQ005_BANE_4); + end + elseif (classId == BOMB_BANE_5) then + if not (data:GetFlag(FLAG_SEQ005_BANE_5)) then + incCounter = true; + data:SetFlag(FLAG_SEQ005_BANE_5); + end + end + + if (incCounter == true) then + counterAmount = data:IncCounter(COUNTER_BANE); + callClientFunction(player, "delegateEvent", player, quest, "processEvent_005_4", counterAmount, 5); + wait(1); + + if (counterAmount >= 5) then + attentionMessage(player, 25225, quest:GetQuestId()); -- "Seeing the Seers" objectives complete! + quest:GetData():ClearData(); + quest:UpdateENPCs(); -- Band-aid for a QFLAG_PLATE issue + quest:StartSequence(SEQ_010); + end + end + + elseif (sequence == SEQ_010) then + if (classId == HILDIBRAND) then + callClientFunction(player, "delegateEvent", player, quest, "processEvent_005_1"); + elseif (classId == NASHU_MHAKARACCA) then + callClientFunction(player, "delegateEvent", player, quest, "processEvent_005_2"); + elseif (classId == ALRET) then -- Finish the quest + callClientFunction(player, "delegateEvent", player, quest, "processEvent_020"); + --TO-DO: Get the scaled EXP for this sqrwa figured out + --TO-DO: Also confirm reward was issued before flagging quest as complete + callClientFunction(player, "delegateEvent", player, quest, "sqrwa", 1000, 1, 1, 9); + GetWorldManager():WarpToPublicArea(player); + player:CompleteQuest(quest); + end + end + + player:EndEvent() + quest:UpdateENPCs(); +end + + + +function onPush(player, quest, npc) + local sequence = quest:getSequence(); + local classId = npc.GetActorClassId(); + + if (classId == COFFER_AND_COFFIN_PUSH) then + if (sequence == SEQ_000) then + callClientFunction(player, "delegateEvent", player, quest, "processEvent_005"); + player:EndEvent(); + attentionMessage(player, 25246, ITEM_BOMB_BANE, 1); + quest:StartSequence(SEQ_005); + end + + GetWorldManager():WarpToPrivateArea(player, "PrivateAreaMasterPast", 5, -1732.891, 56.119, -307.285, -2.785); + actor = player.CurrentArea:FindActorInZoneByUniqueID("etc5l3_nashu"); + actor:ChangeState(ACTORSTATE_SITTING_ONFLOOR); -- Band-aid to get her sitting. + end + player:EndEvent(); +end + +function getJournalInformation(player, quest) + -- Bugged on the client's end and never shows? + return 0, ITEM_BOMB_BANE; +end + + +function getJournalMapMarkerList(player, quest) + local sequence = quest:getSequence(); + local data = quest:GetData(); + local possibleMarkers = {}; + + if (sequence == SEQ_000) then + return MRKR_COFFIN; + + elseif (sequence == SEQ_005) then + local data = quest:GetData(); + if (not data:GetFlag(FLAG_SEQ005_BANE_1)) then table.insert(possibleMarkers, MRKR_BANE_1); end + if (not data:GetFlag(FLAG_SEQ005_BANE_2)) then table.insert(possibleMarkers, MRKR_BANE_2); end + if (not data:GetFlag(FLAG_SEQ005_BANE_3)) then table.insert(possibleMarkers, MRKR_BANE_3); end + if (not data:GetFlag(FLAG_SEQ005_BANE_4)) then table.insert(possibleMarkers, MRKR_BANE_4); end + if (not data:GetFlag(FLAG_SEQ005_BANE_5)) then table.insert(possibleMarkers, MRKR_BANE_5); end + return unpack(possibleMarkers) + + elseif (sequence == SEQ_010) then + return MRKR_ALRET; + end +end + + +function giveDossierItem(player) + + local invCheck = player:getItemPackage(INVENTORY_NORMAL):addItem(ITEM_HIDLIBRAND_DOSSIER, 1, 1); + + if (invCheck == INV_ERROR_SUCCESS) then + player:SendGameMessage(player, GetWorldMaster(), 25246, MESSAGE_TYPE_SYSTEM_ERROR, ITEM_HIDLIBRAND_DOSSIER, 1); + return true; + end +end \ No newline at end of file diff --git a/Data/scripts/quests/etc/etc5u1.lua b/Data/scripts/quests/etc/etc5u1.lua index 23e3b4fa..d89bb28d 100644 --- a/Data/scripts/quests/etc/etc5u1.lua +++ b/Data/scripts/quests/etc/etc5u1.lua @@ -18,6 +18,7 @@ SEQ_010 = 10; -- Actor Class Ids OTOPA_POTTOPA = 1000864; +HOURGLASS_BED = 1200380; GAUWYN_THE_GANNET = 1002065; HILDIBRAND = 1001995; NASHU_MHAKARACCA = 1001996; @@ -52,12 +53,11 @@ end function onStateChange(player, quest, sequence) if (sequence == SEQ_ACCEPT) then local hasQuestItem = player:GetItemPackage(INVENTORY_NORMAL):HasItem(ITEM_WANTED_GAUWYN); - local otopaFlag = 0; - + if (hasQuestItem == false) then - otopaFlag = 2; + quest:SetENpc(OTOPA_POTTOPA, QFLAG_NORM); end - quest:SetENpc(OTOPA_POTTOPA, otopaFlag); + quest:SetENpc(HOURGLASS_BED, 5); end if (sequence == SEQ_000) then diff --git a/Map Server/Actors/Chara/Player/Player.cs b/Map Server/Actors/Chara/Player/Player.cs index b0359bd4..7f6681c9 100644 --- a/Map Server/Actors/Chara/Player/Player.cs +++ b/Map Server/Actors/Chara/Player/Player.cs @@ -591,7 +591,7 @@ namespace Meteor.Map.Actors public void SendZoneInPackets(WorldManager world, ushort spawnType) { QueuePacket(SetActorIsZoningPacket.BuildPacket(Id, false)); - QueuePacket(SetDalamudPacket.BuildPacket(Id, 0)); + QueuePacket(SetDalamudPacket.BuildPacket(Id, 7)); //Music Packets if (currentMainState == SetActorStatePacket.MAIN_STATE_MOUNTED)