Skip to content

Commit

Permalink
puzzle pips complete, map bug fixed
Browse files Browse the repository at this point in the history
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
  • Loading branch information
Flibe-XI committed Jan 30, 2024
1 parent 867b6c9 commit 62b96b8
Showing 1 changed file with 32 additions and 16 deletions.
48 changes: 32 additions & 16 deletions scripts/missions/amk/13_A_Challenge_You_Could_Be_a_Winner.lua
Original file line number Diff line number Diff line change
Expand Up @@ -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')
Expand All @@ -26,7 +28,7 @@ mission.sections =

[xi.zone.CASTLE_ZVAHL_BAILEYS] =
{
["Shadowy_Pillar"] =
['Shadowy_Pillar'] =
{
onTrigger = function(player, npc)
return mission:progressEvent(100, 3)
Expand All @@ -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
Expand Down Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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,
Expand Down Expand Up @@ -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,
Expand All @@ -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,
Expand All @@ -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,
Expand All @@ -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,
Expand All @@ -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,
Expand All @@ -224,11 +227,21 @@ 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
Expand All @@ -238,6 +251,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
Expand All @@ -256,13 +272,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
Expand Down

0 comments on commit 62b96b8

Please sign in to comment.