From 15311d153a9fe27033ee352933580160458e7478 Mon Sep 17 00:00:00 2001 From: Flibe Date: Mon, 29 Jan 2024 21:34:22 -0500 Subject: [PATCH] puzzle pips complete, map bug fixed The cutscene event for the goblin grenadier requires two sets of args, first is for the hint and win/lose mechanic, the second from the eventUpdate section is to relabel an pips on the map if you wanted to. Setting the pip args to 0 makes it so the map isn't changed accidentally --- .../13_A_Challenge_You_Could_Be_a_Winner.lua | 60 ++++++++++++------- scripts/missions/amk/helpers.lua | 5 +- 2 files changed, 43 insertions(+), 22 deletions(-) diff --git a/scripts/missions/amk/13_A_Challenge_You_Could_Be_a_Winner.lua b/scripts/missions/amk/13_A_Challenge_You_Could_Be_a_Winner.lua index 5a396e6e606..5bb2c12d5e1 100644 --- a/scripts/missions/amk/13_A_Challenge_You_Could_Be_a_Winner.lua +++ b/scripts/missions/amk/13_A_Challenge_You_Could_Be_a_Winner.lua @@ -2,7 +2,9 @@ -- A Challenge! You Could Be a Winner -- A Moogle Kupo d'Etat M13 -- !addmission 10 12 --- Inconspicuous Door : !pos -15 1.300 68 244 +-- Shadowy Pillar : !pos 374 -12 -15 +-- Lonely Evergreen : !pos -162 -80 178 +-- Goblin Grenadier : !pos -26 -59 -76 ----------------------------------- require('scripts/globals/missions') require('scripts/globals/interaction/mission') @@ -26,7 +28,7 @@ mission.sections = [xi.zone.CASTLE_ZVAHL_BAILEYS] = { - ["Shadowy_Pillar"] = + ['Shadowy_Pillar'] = { onTrigger = function(player, npc) return mission:progressEvent(100, 3) @@ -42,7 +44,7 @@ mission.sections = }, }, - -- Part 2-a: Beaucidine Glacier + -- Part 2-a: Beaucedine Glacier { check = function(player, currentMission, missionStatus, vars) return currentMission >= mission.missionId and @@ -56,9 +58,9 @@ mission.sections = { ['Lonely_Evergreen'] = { - onTrigger = function(player, npc) - return mission:progressEvent(504) - end, + onTrigger = function(player, npc) + return mission:progressEvent(504) + end, }, onEventFinish = @@ -72,7 +74,7 @@ mission.sections = }, }, - -- Part 2-b: Beaucidine Glacier + -- Part 2-b: Beaucedine Glacier { check = function(player, currentMission, missionStatus, vars) return currentMission >= mission.missionId and @@ -90,14 +92,14 @@ mission.sections = return mission:progressEvent(503) end, }, --- !reloadglobal scripts/missions/amk/13_A_Challenge_You_Could_Be_a_Winner I_am_sure + ['Goblin_Grenadier'] = { onTrigger = function(player, npc) local answer = player:getLocalVar('Mission[10][12]pipSet') - 1 if answer < 0 then - return mission:progressEvent(508) + return mission:progressEvent(508, xi.ki.MAP_OF_THE_NORTHLANDS_AREA) else local today = VanadielDayOfTheWeek() local tomorrow = (today + 1) % 8 @@ -110,7 +112,8 @@ mission.sections = hintsUsed + 2, answer, xi.ki.MAP_OF_THE_NORTHLANDS_AREA, - xi.ki.POCKET_MOGBOMB + xi.ki.POCKET_MOGBOMB, + xi.ki.MAP_OF_THE_NORTHLANDS_AREA ) end end, @@ -142,7 +145,7 @@ mission.sections = local element = xi.amk.helpers.pipSets[pipSet][2] return mission:progressEvent( - 510, + 511, pos.x * 1000, pos.z * 1000, pos.y * 1000, @@ -160,7 +163,7 @@ mission.sections = local element = xi.amk.helpers.pipSets[pipSet][3] return mission:progressEvent( - 510, + 512, pos.x * 1000, pos.z * 1000, pos.y * 1000, @@ -178,7 +181,7 @@ mission.sections = local element = xi.amk.helpers.pipSets[pipSet][4] return mission:progressEvent( - 510, + 513, pos.x * 1000, pos.z * 1000, pos.y * 1000, @@ -196,7 +199,7 @@ mission.sections = local element = xi.amk.helpers.pipSets[pipSet][5] return mission:progressEvent( - 510, + 514, pos.x * 1000, pos.z * 1000, pos.y * 1000, @@ -214,7 +217,7 @@ mission.sections = local element = xi.amk.helpers.pipSets[pipSet][6] return mission:progressEvent( - 510, + 515, pos.x * 1000, pos.z * 1000, pos.y * 1000, @@ -224,11 +227,20 @@ mission.sections = end, }, + onEventUpdate = + { + [507] = function(player, csid, option, npc) + -- This updateEvent updates the markers on the map to track which pips have already been found, + -- and can alter what the map shows when a pip is checked. If not called here, the args + -- for hints used and answer get input as markers and erroneously show incorrect pips + -- All zeros = only show what have been found so far + player:updateEvent(0, 0, 0, 0, 0, 0) + end, + }, + onEventFinish = { [507] = function(player, csid, option, npc) - -- option = 4 when the player chooses to exit the chat, or tries to get a third hint, - -- which doesn't exist. Two hints max if option == 1 or -- Used first hint option == 2 -- Used second hint @@ -238,6 +250,9 @@ mission.sections = elseif option == 3 then -- wrong answer, reset puzzle player:needToZone(false) + -- elseif option == 4 then + -- Player chooses to exit the chat, or tries to get a third hint, + -- which doesn't exist. Two hints max elseif option == 5 or -- Correct answer, no hints used option == 6 or -- Correct answer, one hint used @@ -247,7 +262,12 @@ mission.sections = npcUtil.giveKeyItem(player, xi.ki.POCKET_MOGBOMB) -- Add flee affect, base 5 minutes for no hints used, 3 for 1 hint, no flee for 2 hints - local fleeDuration = { [5] = 300, [6] = 180 } + local fleeDuration = + { + [5] = 300, + [6] = 180, + } + if option == 5 or option == 6 then player:addStatusEffect(xi.effect.FLEE, 100, 0, fleeDuration[option]) end @@ -256,13 +276,13 @@ mission.sections = [508] = function(player, csid, option, npc) -- Pipset offset by 1 to account for saving 0 as a variable. When retrieving, subtract 1 - player:setCharVar('Mission[10][12]pipSet', math.random(1, 10)) + player:setLocalVar('Mission[10][12]pipSet', math.random(1, 10)) -- range: 0 - 9 end, }, }, }, - -- Part 2-c: Beaucidine Glacier + -- Part 2-c: Beaucedine Glacier { check = function(player, currentMission, missionStatus, vars) return currentMission >= mission.missionId and diff --git a/scripts/missions/amk/helpers.lua b/scripts/missions/amk/helpers.lua index b80c618564e..ff64a3ade6d 100644 --- a/scripts/missions/amk/helpers.lua +++ b/scripts/missions/amk/helpers.lua @@ -418,7 +418,8 @@ end -- Mission 13 (index 12) - Puzzles!!! -- Puzzle 1 -xi.amk.helpers.pipSets = { +xi.amk.helpers.pipSets = +{ -- [Answer]: 0-9 { -- [1] = NW, [4] = NE, -- [2] = W, [5] = E, @@ -510,4 +511,4 @@ xi.amk.helpers.pipTrigger = function(player, npc, mission, pipOffset) element, xi.ki.MAP_OF_THE_NORTHLANDS_AREA ) -end \ No newline at end of file +end