From 280c2481ea9d663a2916a4c868101e3c668fb726 Mon Sep 17 00:00:00 2001 From: Stranger1992 <84292688+Stranger1992@users.noreply.github.com> Date: Wed, 20 May 2026 14:10:54 +0100 Subject: [PATCH 01/16] Traversal nodes 1 --- .../Catalogs/TEN Node Catalogs/Lara.lua | 10 ++ .../Catalogs/TEN Node Catalogs/_System.lua | 98 ++++++++++++++++++- 2 files changed, 107 insertions(+), 1 deletion(-) diff --git a/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara.lua b/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara.lua index 64df1ba13e..5dc26ea89f 100644 --- a/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara.lua +++ b/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara.lua @@ -205,3 +205,13 @@ end LevelFuncs.Engine.Node.TestLaraTargeting = function() return TEN.Objects.Lara:GetTarget() ~= nil end + +-- !Name "If Lara traversal state is..." +-- !Section "Lara state" +-- !Conditional "True" +-- !Description "Checks Lara's current traversal state." +-- !Arguments "Enumeration, [ Climbing | Crawling | Monkey Swing | Tightrope ], 30, Traversal state to test." + +LevelFuncs.Engine.Node.TestLaraTraversalState = function(mode) + return LevelFuncs.Engine.Node.TestLaraTraversalMode(mode, TEN.Objects.Lara:GetState()) +end \ No newline at end of file diff --git a/TombLib/TombLib/Catalogs/TEN Node Catalogs/_System.lua b/TombLib/TombLib/Catalogs/TEN Node Catalogs/_System.lua index 372f9d8ac6..1f411e549c 100644 --- a/TombLib/TombLib/Catalogs/TEN Node Catalogs/_System.lua +++ b/TombLib/TombLib/Catalogs/TEN Node Catalogs/_System.lua @@ -208,4 +208,100 @@ LevelFuncs.Engine.Node.SetInteractionHighlightType = function(index) } return interactionIconType[index] end - \ No newline at end of file + +local ladderStates = +{ + 10, -- hang state + 55, -- climbing up + 56, -- idle on ladder + 57, -- ladder up + 58, -- ladder left + 59, -- ladder down + 60, -- ladder right + 61, -- climbing down + 107, -- Shimmy inner left + 105, -- Crouch turn left + 106, -- Crouch turn right + 107, -- Shimmy outer left + 108, -- Shimmy outer right + 109, -- Shimmy inner left + 110, -- Shimmy inner right + 138, -- ladder to crouch +} + +local crawlingStates = +{ + 71, -- crouch idle + 72, -- crouch roll + 80, -- crawling idle + 81, -- crawl forward + 84, -- crawling turn left + 85, -- crawling turn right + 86, -- crawling backwards + 71, -- crawling idle + 72, -- crouch roll + 105, -- crouch turn left + 106, -- crouch turn right + 160, -- crawl step up + 161, -- crawl step down + 167, -- 1 step crouch vault + 168, -- 2 step crouch vault + 169, -- 3 step crouch vault + 171, -- crouch turn 180 + 172, -- crawl turn 180 +} + +local monkeySwingStates = +{ + 75, -- monkey swing idle + 76, -- monkey swing forward + 77, -- monkey swing shimmy left + 78, -- monkey swing shimmy right + 79, -- monkey swing turn 180 + 82, -- monkey turn left + 83, -- monkey turn right +} + +local function IsStateInList(state, states) + for _, expectedState in ipairs(states) do + if state == expectedState then + return true + end + end + + return false +end + +-- Keep these IDs stable. Node dropdowns serialize numeric enum values, so new +-- traversal modes must be appended instead of inserted or reordered. +local LaraTraversalMode = +{ + CLIMBING = 0, + CRAWLING = 1, + MONKEY_SWING = 2, + TIGHTROPE = 3, +} + +local traversalModeTests = { + [LaraTraversalMode.CLIMBING] = function(state) + return IsStateInList(state, ladderStates) + end, + [LaraTraversalMode.CRAWLING] = function(state) + return IsStateInList(state, crawlingStates) + end, + [LaraTraversalMode.MONKEY_SWING] = function(state) + return IsStateInList(state, monkeySwingStates) + end, + [LaraTraversalMode.TIGHTROPE] = function(state) + return state >= 119 and state <= 127 and state ~= 126 + end, +} + +LevelFuncs.Engine.Node.TestLaraTraversalMode = function(mode, state) + local traversalTest = traversalModeTests[mode] + if (traversalTest == nil) then + return false + end + + return traversalTest(state) +end \ No newline at end of file From 90b13b1751ab62d16e0a5c4023a1852507e7764d Mon Sep 17 00:00:00 2001 From: Stranger1992 <84292688+Stranger1992@users.noreply.github.com> Date: Wed, 20 May 2026 16:37:49 +0100 Subject: [PATCH 02/16] Add more traversal options --- .../Catalogs/TEN Node Catalogs/Lara.lua | 2 +- .../Catalogs/TEN Node Catalogs/_System.lua | 87 ++++++++++++++++--- 2 files changed, 78 insertions(+), 11 deletions(-) diff --git a/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara.lua b/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara.lua index 5dc26ea89f..7d304cabc2 100644 --- a/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara.lua +++ b/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara.lua @@ -210,7 +210,7 @@ end -- !Section "Lara state" -- !Conditional "True" -- !Description "Checks Lara's current traversal state." --- !Arguments "Enumeration, [ Climbing | Crawling | Monkey Swing | Tightrope ], 30, Traversal state to test." +-- !Arguments "Enumeration, [ Climb | Crawl | Monkey Swing | Pole Vault | Swimming | Tightrope ], 30, Traversal state to test." LevelFuncs.Engine.Node.TestLaraTraversalState = function(mode) return LevelFuncs.Engine.Node.TestLaraTraversalMode(mode, TEN.Objects.Lara:GetState()) diff --git a/TombLib/TombLib/Catalogs/TEN Node Catalogs/_System.lua b/TombLib/TombLib/Catalogs/TEN Node Catalogs/_System.lua index 1f411e549c..bad4256a6a 100644 --- a/TombLib/TombLib/Catalogs/TEN Node Catalogs/_System.lua +++ b/TombLib/TombLib/Catalogs/TEN Node Catalogs/_System.lua @@ -251,6 +251,12 @@ local crawlingStates = 172, -- crawl turn 180 } +local horizontalBarStates = +{ + 128, -- horizontal bar swing + 129, -- horizontal bar leap +} + local monkeySwingStates = { 75, -- monkey swing idle @@ -262,6 +268,45 @@ local monkeySwingStates = 83, -- monkey turn right } +local poleVaultStates = +{ + 99, -- pole idle + 100, -- pole up + 101, -- pole down + 102, -- pole turn clockwise + 103, -- pole turn counterclockwise +} + +local ropeSwingStates = +{ + 90, -- rope turn clockwise + 91, -- rope turn counterclockwise + 111, -- rope idle + 112, -- rope up + 113, -- rope down + 114, -- rope swing + 115, -- rope unknown +} + +local swimStates = +{ + 13, -- swimming idle + 17, -- swim forward + 18, -- swim intertia + 66 -- underwater roll +} + +local tightropeStates = +{ + 119, -- Tightrope idle + 120, -- Tightrope turn 180 + 121, -- Tightrope walk + 122, -- Tightrope unbalance left + 123, -- Tightrope unbalance right + 124, -- Tightrope enter + 125, -- Tightrope dismount +} + local function IsStateInList(state, states) for _, expectedState in ipairs(states) do if state == expectedState then @@ -272,33 +317,55 @@ local function IsStateInList(state, states) return false end --- Keep these IDs stable. Node dropdowns serialize numeric enum values, so new --- traversal modes must be appended instead of inserted or reordered. local LaraTraversalMode = { - CLIMBING = 0, - CRAWLING = 1, - MONKEY_SWING = 2, - TIGHTROPE = 3, + CLIMB = 0, + CRAWL = 1, + HORIZONTAL_BAR = 2, + MONKEY_SWING = 3, + POLE_VAULT = 4, + SWIMMING = 5, + TIGHTROPE = 6, } -local traversalModeTests = { - [LaraTraversalMode.CLIMBING] = function(state) +local traversalModeTests = +{ + [LaraTraversalMode.CLIMB] = function(state) return IsStateInList(state, ladderStates) end, - [LaraTraversalMode.CRAWLING] = function(state) + + [LaraTraversalMode.CRAWL] = function(state) return IsStateInList(state, crawlingStates) end, + + [LaraTraversalMode.HORIZONTAL_BAR] = function(state) + return IsStateInList(state, horizontalBarStates) + end, + [LaraTraversalMode.MONKEY_SWING] = function(state) return IsStateInList(state, monkeySwingStates) end, + + [LaraTraversalMode.POLE_VAULT] = function(state) + return IsStateInList(state, poleVaultStates) + end, + + [LaraTraversalMode.ROPE_SWING] = function(state) + return IsStateInList(state, ropeSwingStates) + end, + + [LaraTraversalMode.SWIMMING] = function(state) + return IsStateInList(state, swimStates) + end, + [LaraTraversalMode.TIGHTROPE] = function(state) - return state >= 119 and state <= 127 and state ~= 126 + return IsStateInList(state, tightropeStates) end, } LevelFuncs.Engine.Node.TestLaraTraversalMode = function(mode, state) local traversalTest = traversalModeTests[mode] + if (traversalTest == nil) then return false end From 70a26e4fe01a2a08dfe85a260c45f9f5b3060c78 Mon Sep 17 00:00:00 2001 From: Stranger1992 <84292688+Stranger1992@users.noreply.github.com> Date: Wed, 20 May 2026 16:42:19 +0100 Subject: [PATCH 03/16] Add water status check --- .../Catalogs/TEN Node Catalogs/_System.lua | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/TombLib/TombLib/Catalogs/TEN Node Catalogs/_System.lua b/TombLib/TombLib/Catalogs/TEN Node Catalogs/_System.lua index bad4256a6a..5591cb2110 100644 --- a/TombLib/TombLib/Catalogs/TEN Node Catalogs/_System.lua +++ b/TombLib/TombLib/Catalogs/TEN Node Catalogs/_System.lua @@ -219,13 +219,13 @@ local ladderStates = 59, -- ladder down 60, -- ladder right 61, -- climbing down - 107, -- Shimmy inner left - 105, -- Crouch turn left - 106, -- Crouch turn right - 107, -- Shimmy outer left - 108, -- Shimmy outer right - 109, -- Shimmy inner left - 110, -- Shimmy inner right + 107, -- shimmy inner left + 105, -- crouch turn left + 106, -- crouch turn right + 107, -- shimmy outer left + 108, -- shimmy outer right + 109, -- shimmy inner left + 110, -- shimmy inner right 138, -- ladder to crouch } @@ -355,9 +355,13 @@ local traversalModeTests = end, [LaraTraversalMode.SWIMMING] = function(state) - return IsStateInList(state, swimStates) + if TEN.Objects.Lara:GetWaterStatus() == true then + return IsStateInList(state, swimStates) + else + return false + end end, - + [LaraTraversalMode.TIGHTROPE] = function(state) return IsStateInList(state, tightropeStates) end, From 4b16d82086966fe0db7596c5aa3a5ddddb44015c Mon Sep 17 00:00:00 2001 From: Stranger1992 <84292688+Stranger1992@users.noreply.github.com> Date: Wed, 20 May 2026 16:53:20 +0100 Subject: [PATCH 04/16] Move everything to its own file To not pollute _System.lua --- .../TEN Node Catalogs/Lara Traversal.lua | 187 ++++++++++++++++++ .../Catalogs/TEN Node Catalogs/Lara.lua | 10 - .../Catalogs/TEN Node Catalogs/_System.lua | 168 ---------------- 3 files changed, 187 insertions(+), 178 deletions(-) create mode 100644 TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua diff --git a/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua b/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua new file mode 100644 index 0000000000..1b14773acc --- /dev/null +++ b/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua @@ -0,0 +1,187 @@ +local ladderStates = +{ + 10, -- hang state + 55, -- climbing up + 56, -- idle on ladder + 57, -- ladder up + 58, -- ladder left + 59, -- ladder down + 60, -- ladder right + 61, -- climbing down + 107, -- shimmy inner left + 105, -- crouch turn left + 106, -- crouch turn right + 107, -- shimmy outer left + 108, -- shimmy outer right + 109, -- shimmy inner left + 110, -- shimmy inner right + 138, -- ladder to crouch +} + +local crawlingStates = +{ + 71, -- crouch idle + 72, -- crouch roll + 80, -- crawling idle + 81, -- crawl forward + 84, -- crawling turn left + 85, -- crawling turn right + 86, -- crawling backwards + 71, -- crawling idle + 72, -- crouch roll + 105, -- crouch turn left + 106, -- crouch turn right + 160, -- crawl step up + 161, -- crawl step down + 167, -- 1 step crouch vault + 168, -- 2 step crouch vault + 169, -- 3 step crouch vault + 171, -- crouch turn 180 + 172, -- crawl turn 180 +} + +local horizontalBarStates = +{ + 128, -- horizontal bar swing + 129, -- horizontal bar leap +} + +local monkeySwingStates = +{ + 75, -- monkey swing idle + 76, -- monkey swing forward + 77, -- monkey swing shimmy left + 78, -- monkey swing shimmy right + 79, -- monkey swing turn 180 + 82, -- monkey turn left + 83, -- monkey turn right +} + +local poleVaultStates = +{ + 99, -- pole idle + 100, -- pole up + 101, -- pole down + 102, -- pole turn clockwise + 103, -- pole turn counterclockwise +} + +local ropeSwingStates = +{ + 90, -- rope turn clockwise + 91, -- rope turn counterclockwise + 111, -- rope idle + 112, -- rope up + 113, -- rope down + 114, -- rope swing + 115, -- rope unknown +} + +local swimStates = +{ + 13, -- swimming idle + 17, -- swim forward + 18, -- swim intertia + 35, -- dive + 40, -- use switch + 42, -- use key + 43, -- use puzzle + 44, -- underwater death + 66, -- underwater roll + 67, -- pickup flare + 89, -- misc control (opening door, trapdoor, kick) + 104, -- using pulley + 189, -- remove puzzle + 198, -- ungrab pulley +} + +local tightropeStates = +{ + 119, -- Tightrope idle + 120, -- Tightrope turn 180 + 121, -- Tightrope walk + 122, -- Tightrope unbalance left + 123, -- Tightrope unbalance right + 124, -- Tightrope enter + 125, -- Tightrope dismount +} + +local function IsStateInList(state, states) + for _, expectedState in ipairs(states) do + if state == expectedState then + return true + end + end + + return false +end + +local LaraTraversalMode = +{ + CLIMB = 0, + CRAWL = 1, + HORIZONTAL_BAR = 2, + MONKEY_SWING = 3, + POLE_VAULT = 4, + SWIMMING = 5, + TIGHTROPE = 6, +} + +local traversalModeTests = +{ + [LaraTraversalMode.CLIMB] = function(state) + return IsStateInList(state, ladderStates) + end, + + [LaraTraversalMode.CRAWL] = function(state) + return IsStateInList(state, crawlingStates) + end, + + [LaraTraversalMode.HORIZONTAL_BAR] = function(state) + return IsStateInList(state, horizontalBarStates) + end, + + [LaraTraversalMode.MONKEY_SWING] = function(state) + return IsStateInList(state, monkeySwingStates) + end, + + [LaraTraversalMode.POLE_VAULT] = function(state) + return IsStateInList(state, poleVaultStates) + end, + + [LaraTraversalMode.ROPE_SWING] = function(state) + return IsStateInList(state, ropeSwingStates) + end, + + [LaraTraversalMode.SWIMMING] = function(state) + if TEN.Objects.Lara:GetWaterStatus() == true then + return IsStateInList(state, swimStates) + else + return false + end + end, + + [LaraTraversalMode.TIGHTROPE] = function(state) + return IsStateInList(state, tightropeStates) + end, +} + +LevelFuncs.Engine.Node.TestLaraTraversalMode = function(mode, state) + local traversalTest = traversalModeTests[mode] + + if (traversalTest == nil) then + return false + end + + return traversalTest(state) +end + +-- !Name "If Lara traversal state is..." +-- !Section "Lara state" +-- !Conditional "True" +-- !Description "Checks Lara's current traversal state." +-- !Arguments "Enumeration, [ Climb | Crawl | Horizontal Bar | Monkey Swing | Pole Vault | Swimming | Tightrope ], 30, Traversal state to test." + +LevelFuncs.Engine.Node.TestLaraTraversalState = function(mode) + return LevelFuncs.Engine.Node.TestLaraTraversalMode(mode, TEN.Objects.Lara:GetState()) +end \ No newline at end of file diff --git a/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara.lua b/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara.lua index 7d304cabc2..11a88b42ad 100644 --- a/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara.lua +++ b/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara.lua @@ -204,14 +204,4 @@ end LevelFuncs.Engine.Node.TestLaraTargeting = function() return TEN.Objects.Lara:GetTarget() ~= nil -end - --- !Name "If Lara traversal state is..." --- !Section "Lara state" --- !Conditional "True" --- !Description "Checks Lara's current traversal state." --- !Arguments "Enumeration, [ Climb | Crawl | Monkey Swing | Pole Vault | Swimming | Tightrope ], 30, Traversal state to test." - -LevelFuncs.Engine.Node.TestLaraTraversalState = function(mode) - return LevelFuncs.Engine.Node.TestLaraTraversalMode(mode, TEN.Objects.Lara:GetState()) end \ No newline at end of file diff --git a/TombLib/TombLib/Catalogs/TEN Node Catalogs/_System.lua b/TombLib/TombLib/Catalogs/TEN Node Catalogs/_System.lua index 5591cb2110..076f773af0 100644 --- a/TombLib/TombLib/Catalogs/TEN Node Catalogs/_System.lua +++ b/TombLib/TombLib/Catalogs/TEN Node Catalogs/_System.lua @@ -207,172 +207,4 @@ LevelFuncs.Engine.Node.SetInteractionHighlightType = function(index) [2] = TEN.Objects.InteractionType.USE, } return interactionIconType[index] -end - -local ladderStates = -{ - 10, -- hang state - 55, -- climbing up - 56, -- idle on ladder - 57, -- ladder up - 58, -- ladder left - 59, -- ladder down - 60, -- ladder right - 61, -- climbing down - 107, -- shimmy inner left - 105, -- crouch turn left - 106, -- crouch turn right - 107, -- shimmy outer left - 108, -- shimmy outer right - 109, -- shimmy inner left - 110, -- shimmy inner right - 138, -- ladder to crouch -} - -local crawlingStates = -{ - 71, -- crouch idle - 72, -- crouch roll - 80, -- crawling idle - 81, -- crawl forward - 84, -- crawling turn left - 85, -- crawling turn right - 86, -- crawling backwards - 71, -- crawling idle - 72, -- crouch roll - 105, -- crouch turn left - 106, -- crouch turn right - 160, -- crawl step up - 161, -- crawl step down - 167, -- 1 step crouch vault - 168, -- 2 step crouch vault - 169, -- 3 step crouch vault - 171, -- crouch turn 180 - 172, -- crawl turn 180 -} - -local horizontalBarStates = -{ - 128, -- horizontal bar swing - 129, -- horizontal bar leap -} - -local monkeySwingStates = -{ - 75, -- monkey swing idle - 76, -- monkey swing forward - 77, -- monkey swing shimmy left - 78, -- monkey swing shimmy right - 79, -- monkey swing turn 180 - 82, -- monkey turn left - 83, -- monkey turn right -} - -local poleVaultStates = -{ - 99, -- pole idle - 100, -- pole up - 101, -- pole down - 102, -- pole turn clockwise - 103, -- pole turn counterclockwise -} - -local ropeSwingStates = -{ - 90, -- rope turn clockwise - 91, -- rope turn counterclockwise - 111, -- rope idle - 112, -- rope up - 113, -- rope down - 114, -- rope swing - 115, -- rope unknown -} - -local swimStates = -{ - 13, -- swimming idle - 17, -- swim forward - 18, -- swim intertia - 66 -- underwater roll -} - -local tightropeStates = -{ - 119, -- Tightrope idle - 120, -- Tightrope turn 180 - 121, -- Tightrope walk - 122, -- Tightrope unbalance left - 123, -- Tightrope unbalance right - 124, -- Tightrope enter - 125, -- Tightrope dismount -} - -local function IsStateInList(state, states) - for _, expectedState in ipairs(states) do - if state == expectedState then - return true - end - end - - return false -end - -local LaraTraversalMode = -{ - CLIMB = 0, - CRAWL = 1, - HORIZONTAL_BAR = 2, - MONKEY_SWING = 3, - POLE_VAULT = 4, - SWIMMING = 5, - TIGHTROPE = 6, -} - -local traversalModeTests = -{ - [LaraTraversalMode.CLIMB] = function(state) - return IsStateInList(state, ladderStates) - end, - - [LaraTraversalMode.CRAWL] = function(state) - return IsStateInList(state, crawlingStates) - end, - - [LaraTraversalMode.HORIZONTAL_BAR] = function(state) - return IsStateInList(state, horizontalBarStates) - end, - - [LaraTraversalMode.MONKEY_SWING] = function(state) - return IsStateInList(state, monkeySwingStates) - end, - - [LaraTraversalMode.POLE_VAULT] = function(state) - return IsStateInList(state, poleVaultStates) - end, - - [LaraTraversalMode.ROPE_SWING] = function(state) - return IsStateInList(state, ropeSwingStates) - end, - - [LaraTraversalMode.SWIMMING] = function(state) - if TEN.Objects.Lara:GetWaterStatus() == true then - return IsStateInList(state, swimStates) - else - return false - end - end, - - [LaraTraversalMode.TIGHTROPE] = function(state) - return IsStateInList(state, tightropeStates) - end, -} - -LevelFuncs.Engine.Node.TestLaraTraversalMode = function(mode, state) - local traversalTest = traversalModeTests[mode] - - if (traversalTest == nil) then - return false - end - - return traversalTest(state) end \ No newline at end of file From 693dd5795eb093b3f2a8bd023e1119fa222327be Mon Sep 17 00:00:00 2001 From: Stranger1992 <84292688+Stranger1992@users.noreply.github.com> Date: Wed, 20 May 2026 17:05:35 +0100 Subject: [PATCH 05/16] Fix runtime errors and remove water status check --- .../Catalogs/TEN Node Catalogs/Lara Traversal.lua | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua b/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua index 1b14773acc..9a95172f3e 100644 --- a/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua +++ b/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua @@ -125,6 +125,7 @@ local LaraTraversalMode = POLE_VAULT = 4, SWIMMING = 5, TIGHTROPE = 6, + ROPE_SWING = 7, } local traversalModeTests = @@ -154,12 +155,8 @@ local traversalModeTests = end, [LaraTraversalMode.SWIMMING] = function(state) - if TEN.Objects.Lara:GetWaterStatus() == true then - return IsStateInList(state, swimStates) - else - return false - end - end, + return IsStateInList(state, swimStates) + end, [LaraTraversalMode.TIGHTROPE] = function(state) return IsStateInList(state, tightropeStates) @@ -180,7 +177,7 @@ end -- !Section "Lara state" -- !Conditional "True" -- !Description "Checks Lara's current traversal state." --- !Arguments "Enumeration, [ Climb | Crawl | Horizontal Bar | Monkey Swing | Pole Vault | Swimming | Tightrope ], 30, Traversal state to test." +-- !Arguments "Enumeration, [ Climb | Crawl | Horizontal Bar | Monkey Swing | Pole Vault | Swimming | Tightrope | Rope Swing ], 30, Traversal state to test." LevelFuncs.Engine.Node.TestLaraTraversalState = function(mode) return LevelFuncs.Engine.Node.TestLaraTraversalMode(mode, TEN.Objects.Lara:GetState()) From 53b98c720043b71f9f48ef0c8d4aff7f58fe3a16 Mon Sep 17 00:00:00 2001 From: Stranger1992 <84292688+Stranger1992@users.noreply.github.com> Date: Wed, 20 May 2026 17:14:44 +0100 Subject: [PATCH 06/16] Add additional ladder states and re-order enums --- TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua b/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua index 9a95172f3e..40cc138248 100644 --- a/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua +++ b/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua @@ -1,6 +1,7 @@ local ladderStates = { 10, -- hang state + 19, -- grabbing (pulling up) 55, -- climbing up 56, -- idle on ladder 57, -- ladder up @@ -8,6 +9,7 @@ local ladderStates = 59, -- ladder down 60, -- ladder right 61, -- climbing down + 88, -- climb off laddder 107, -- shimmy inner left 105, -- crouch turn left 106, -- crouch turn right @@ -177,7 +179,7 @@ end -- !Section "Lara state" -- !Conditional "True" -- !Description "Checks Lara's current traversal state." --- !Arguments "Enumeration, [ Climb | Crawl | Horizontal Bar | Monkey Swing | Pole Vault | Swimming | Tightrope | Rope Swing ], 30, Traversal state to test." +-- !Arguments "Enumeration, [ Climb | Crawl | Horizontal Bar | Monkey Swing | Pole Vault | Rope Swing | Swimming | Tightrope ], 30, Traversal state to test." LevelFuncs.Engine.Node.TestLaraTraversalState = function(mode) return LevelFuncs.Engine.Node.TestLaraTraversalMode(mode, TEN.Objects.Lara:GetState()) From cfc1563113f8aa70e6a86d9aa3576762efe33c22 Mon Sep 17 00:00:00 2001 From: Stranger1992 <84292688+Stranger1992@users.noreply.github.com> Date: Wed, 20 May 2026 17:36:01 +0100 Subject: [PATCH 07/16] Fix missing enum --- .../TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua b/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua index 40cc138248..5f18cb3194 100644 --- a/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua +++ b/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua @@ -125,9 +125,9 @@ local LaraTraversalMode = HORIZONTAL_BAR = 2, MONKEY_SWING = 3, POLE_VAULT = 4, - SWIMMING = 5, - TIGHTROPE = 6, - ROPE_SWING = 7, + ROPE_SWING = 5, + SWIMMING = 6, + TIGHTROPE = 7, } local traversalModeTests = From 09c2eccebfabfe0b7d00b2e0a99e185d701737ea Mon Sep 17 00:00:00 2001 From: Stranger1992 <84292688+Stranger1992@users.noreply.github.com> Date: Thu, 21 May 2026 00:04:32 +0100 Subject: [PATCH 08/16] Final cleanup --- .../TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua b/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua index 5f18cb3194..8d2f45f516 100644 --- a/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua +++ b/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua @@ -92,6 +92,7 @@ local swimStates = 66, -- underwater roll 67, -- pickup flare 89, -- misc control (opening door, trapdoor, kick) + 93, -- trapdoor floor open 104, -- using pulley 189, -- remove puzzle 198, -- ungrab pulley @@ -126,7 +127,7 @@ local LaraTraversalMode = MONKEY_SWING = 3, POLE_VAULT = 4, ROPE_SWING = 5, - SWIMMING = 6, + SWIM = 6, TIGHTROPE = 7, } @@ -156,7 +157,7 @@ local traversalModeTests = return IsStateInList(state, ropeSwingStates) end, - [LaraTraversalMode.SWIMMING] = function(state) + [LaraTraversalMode.SWIM] = function(state) return IsStateInList(state, swimStates) end, @@ -179,7 +180,7 @@ end -- !Section "Lara state" -- !Conditional "True" -- !Description "Checks Lara's current traversal state." --- !Arguments "Enumeration, [ Climb | Crawl | Horizontal Bar | Monkey Swing | Pole Vault | Rope Swing | Swimming | Tightrope ], 30, Traversal state to test." +-- !Arguments "Enumeration, [ Climb | Crawl | Horizontal Bar | Monkey Swing | Pole Vault | Rope Swing | Swim | Tightrope ], 30, Traversal state to test." LevelFuncs.Engine.Node.TestLaraTraversalState = function(mode) return LevelFuncs.Engine.Node.TestLaraTraversalMode(mode, TEN.Objects.Lara:GetState()) From 687cf458feed1b149101091f4249621a720900d1 Mon Sep 17 00:00:00 2001 From: Stranger1992 <84292688+Stranger1992@users.noreply.github.com> Date: Thu, 21 May 2026 00:20:54 +0100 Subject: [PATCH 09/16] Fix the triple d Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua b/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua index 8d2f45f516..b8f82d284d 100644 --- a/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua +++ b/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua @@ -9,7 +9,7 @@ local ladderStates = 59, -- ladder down 60, -- ladder right 61, -- climbing down - 88, -- climb off laddder + 88, -- climb off ladder 107, -- shimmy inner left 105, -- crouch turn left 106, -- crouch turn right From fd57fabd94da69b7763548091f458668f4515eb2 Mon Sep 17 00:00:00 2001 From: Stranger1992 <84292688+Stranger1992@users.noreply.github.com> Date: Thu, 21 May 2026 00:25:33 +0100 Subject: [PATCH 10/16] Add !Ignore to Lara state checker --- TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua b/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua index b8f82d284d..d78fff2f04 100644 --- a/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua +++ b/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua @@ -165,6 +165,8 @@ local traversalModeTests = return IsStateInList(state, tightropeStates) end, } +-- !Ignore +-- Function to test if Lara is in specific traversal mode (climbing, crawling, etc.) based on her current state. Used by more specific nodes like TestLaraClimb, TestLaraCrawl, etc. LevelFuncs.Engine.Node.TestLaraTraversalMode = function(mode, state) local traversalTest = traversalModeTests[mode] From b65b523a00bb5f89447ccb1bc6fbeca2bba196ae Mon Sep 17 00:00:00 2001 From: Stranger1992 <84292688+Stranger1992@users.noreply.github.com> Date: Thu, 21 May 2026 00:32:49 +0100 Subject: [PATCH 11/16] comment clarification --- TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua b/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua index d78fff2f04..f9b88c7bca 100644 --- a/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua +++ b/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua @@ -29,7 +29,7 @@ local crawlingStates = 84, -- crawling turn left 85, -- crawling turn right 86, -- crawling backwards - 71, -- crawling idle + 71, -- crouch idle 72, -- crouch roll 105, -- crouch turn left 106, -- crouch turn right From fe08bdc00fd1712757dda6bfa45430878f7ba766 Mon Sep 17 00:00:00 2001 From: Stranger1992 <84292688+Stranger1992@users.noreply.github.com> Date: Thu, 21 May 2026 00:40:16 +0100 Subject: [PATCH 12/16] Remove duplicated states --- TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua | 3 --- 1 file changed, 3 deletions(-) diff --git a/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua b/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua index f9b88c7bca..8322d5315a 100644 --- a/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua +++ b/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua @@ -10,9 +10,6 @@ local ladderStates = 60, -- ladder right 61, -- climbing down 88, -- climb off ladder - 107, -- shimmy inner left - 105, -- crouch turn left - 106, -- crouch turn right 107, -- shimmy outer left 108, -- shimmy outer right 109, -- shimmy inner left From 68f93f95bcd11d62f442de42ce823c446f280ead Mon Sep 17 00:00:00 2001 From: Stranger1992 <84292688+Stranger1992@users.noreply.github.com> Date: Thu, 21 May 2026 00:50:31 +0100 Subject: [PATCH 13/16] Address copilot comments. --- .../Catalogs/TEN Node Catalogs/Lara Traversal.lua | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua b/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua index 8322d5315a..e42252949d 100644 --- a/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua +++ b/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua @@ -1,4 +1,4 @@ -local ladderStates = +local ladderStates = { 10, -- hang state 19, -- grabbing (pulling up) @@ -17,7 +17,7 @@ local ladderStates = 138, -- ladder to crouch } -local crawlingStates = +local crawlingStates = { 71, -- crouch idle 72, -- crouch roll @@ -26,8 +26,6 @@ local crawlingStates = 84, -- crawling turn left 85, -- crawling turn right 86, -- crawling backwards - 71, -- crouch idle - 72, -- crouch roll 105, -- crouch turn left 106, -- crouch turn right 160, -- crawl step up @@ -80,7 +78,7 @@ local swimStates = { 13, -- swimming idle 17, -- swim forward - 18, -- swim intertia + 18, -- swim inertia 35, -- dive 40, -- use switch 42, -- use key @@ -116,7 +114,7 @@ local function IsStateInList(state, states) return false end -local LaraTraversalMode = +local LaraTraversalMode = { CLIMB = 0, CRAWL = 1, @@ -128,7 +126,7 @@ local LaraTraversalMode = TIGHTROPE = 7, } -local traversalModeTests = +local traversalModeTests = { [LaraTraversalMode.CLIMB] = function(state) return IsStateInList(state, ladderStates) @@ -163,8 +161,7 @@ local traversalModeTests = end, } -- !Ignore --- Function to test if Lara is in specific traversal mode (climbing, crawling, etc.) based on her current state. Used by more specific nodes like TestLaraClimb, TestLaraCrawl, etc. - + -- Helper function to test whether Lara is in a specific traversal mode based on the provided state. Used by TestLaraTraversalState. LevelFuncs.Engine.Node.TestLaraTraversalMode = function(mode, state) local traversalTest = traversalModeTests[mode] From 7f6d7f448f8fa91b1c13aa2f32ef291f208fe853 Mon Sep 17 00:00:00 2001 From: Stranger1992 <84292688+Stranger1992@users.noreply.github.com> Date: Thu, 21 May 2026 00:52:36 +0100 Subject: [PATCH 14/16] Update Changes.txt --- Installer/Changes.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/Installer/Changes.txt b/Installer/Changes.txt index 12d8ce5231..546504df0d 100644 --- a/Installer/Changes.txt +++ b/Installer/Changes.txt @@ -14,6 +14,7 @@ WadTool: TEN nodes: * Added a node to unswap a previously swapped mesh. + * Added a node to check Lara's traversal mode. Version 1.11 ============ From d04c95c91bbef63bb5a0a46b3edd2b3bdf1b5c99 Mon Sep 17 00:00:00 2001 From: Stranger1992 <84292688+Stranger1992@users.noreply.github.com> Date: Thu, 21 May 2026 00:57:57 +0100 Subject: [PATCH 15/16] Update whitespace --- .../TEN Node Catalogs/Lara Traversal.lua | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua b/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua index e42252949d..9411e1fd4a 100644 --- a/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua +++ b/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua @@ -1,7 +1,7 @@ local ladderStates = { 10, -- hang state - 19, -- grabbing (pulling up) + 19, -- grabbing (pulling up) 55, -- climbing up 56, -- idle on ladder 57, -- ladder up @@ -9,7 +9,7 @@ local ladderStates = 59, -- ladder down 60, -- ladder right 61, -- climbing down - 88, -- climb off ladder + 88, -- climb off ladder 107, -- shimmy outer left 108, -- shimmy outer right 109, -- shimmy inner left @@ -95,7 +95,7 @@ local swimStates = local tightropeStates = { - 119, -- Tightrope idle + 119, -- Tightrope idle 120, -- Tightrope turn 180 121, -- Tightrope walk 122, -- Tightrope unbalance left @@ -121,9 +121,9 @@ local LaraTraversalMode = HORIZONTAL_BAR = 2, MONKEY_SWING = 3, POLE_VAULT = 4, - ROPE_SWING = 5, + ROPE_SWING = 5, SWIM = 6, - TIGHTROPE = 7, + TIGHTROPE = 7, } local traversalModeTests = @@ -151,20 +151,20 @@ local traversalModeTests = [LaraTraversalMode.ROPE_SWING] = function(state) return IsStateInList(state, ropeSwingStates) end, - + [LaraTraversalMode.SWIM] = function(state) - return IsStateInList(state, swimStates) - end, + return IsStateInList(state, swimStates) + end, [LaraTraversalMode.TIGHTROPE] = function(state) return IsStateInList(state, tightropeStates) end, } -- !Ignore - -- Helper function to test whether Lara is in a specific traversal mode based on the provided state. Used by TestLaraTraversalState. +-- Helper function to test whether Lara is in a specific traversal mode based on the provided state. Used by TestLaraTraversalState. LevelFuncs.Engine.Node.TestLaraTraversalMode = function(mode, state) local traversalTest = traversalModeTests[mode] - + if (traversalTest == nil) then return false end From b1b713856b62becd4a392d32c7f675b2954517ad Mon Sep 17 00:00:00 2001 From: Stranger1992 <84292688+Stranger1992@users.noreply.github.com> Date: Thu, 21 May 2026 01:27:39 +0100 Subject: [PATCH 16/16] Update with @TrainWrack comments. --- .../TEN Node Catalogs/Lara Traversal.lua | 323 +++++++++--------- 1 file changed, 162 insertions(+), 161 deletions(-) diff --git a/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua b/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua index 9411e1fd4a..201f52deb9 100644 --- a/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua +++ b/TombLib/TombLib/Catalogs/TEN Node Catalogs/Lara Traversal.lua @@ -1,168 +1,169 @@ -local ladderStates = -{ - 10, -- hang state - 19, -- grabbing (pulling up) - 55, -- climbing up - 56, -- idle on ladder - 57, -- ladder up - 58, -- ladder left - 59, -- ladder down - 60, -- ladder right - 61, -- climbing down - 88, -- climb off ladder - 107, -- shimmy outer left - 108, -- shimmy outer right - 109, -- shimmy inner left - 110, -- shimmy inner right - 138, -- ladder to crouch -} - -local crawlingStates = -{ - 71, -- crouch idle - 72, -- crouch roll - 80, -- crawling idle - 81, -- crawl forward - 84, -- crawling turn left - 85, -- crawling turn right - 86, -- crawling backwards - 105, -- crouch turn left - 106, -- crouch turn right - 160, -- crawl step up - 161, -- crawl step down - 167, -- 1 step crouch vault - 168, -- 2 step crouch vault - 169, -- 3 step crouch vault - 171, -- crouch turn 180 - 172, -- crawl turn 180 -} - -local horizontalBarStates = -{ - 128, -- horizontal bar swing - 129, -- horizontal bar leap -} - -local monkeySwingStates = -{ - 75, -- monkey swing idle - 76, -- monkey swing forward - 77, -- monkey swing shimmy left - 78, -- monkey swing shimmy right - 79, -- monkey swing turn 180 - 82, -- monkey turn left - 83, -- monkey turn right -} - -local poleVaultStates = -{ - 99, -- pole idle - 100, -- pole up - 101, -- pole down - 102, -- pole turn clockwise - 103, -- pole turn counterclockwise -} - -local ropeSwingStates = -{ - 90, -- rope turn clockwise - 91, -- rope turn counterclockwise - 111, -- rope idle - 112, -- rope up - 113, -- rope down - 114, -- rope swing - 115, -- rope unknown -} - -local swimStates = -{ - 13, -- swimming idle - 17, -- swim forward - 18, -- swim inertia - 35, -- dive - 40, -- use switch - 42, -- use key - 43, -- use puzzle - 44, -- underwater death - 66, -- underwater roll - 67, -- pickup flare - 89, -- misc control (opening door, trapdoor, kick) - 93, -- trapdoor floor open - 104, -- using pulley - 189, -- remove puzzle - 198, -- ungrab pulley -} - -local tightropeStates = -{ - 119, -- Tightrope idle - 120, -- Tightrope turn 180 - 121, -- Tightrope walk - 122, -- Tightrope unbalance left - 123, -- Tightrope unbalance right - 124, -- Tightrope enter - 125, -- Tightrope dismount -} - -local function IsStateInList(state, states) - for _, expectedState in ipairs(states) do - if state == expectedState then - return true +-- !Ignore +-- Helper function to test whether Lara is in a specific traversal mode based on the provided state. Used by TestLaraTraversalState. +LevelFuncs.Engine.Node.TestLaraTraversalMode = function(mode, state) + local ladderStates = + { + 10, -- hang state + 19, -- grabbing (pulling up) + 55, -- climbing up + 56, -- idle on ladder + 57, -- ladder up + 58, -- ladder left + 59, -- ladder down + 60, -- ladder right + 61, -- climbing down + 88, -- climb off ladder + 107, -- shimmy outer left + 108, -- shimmy outer right + 109, -- shimmy inner left + 110, -- shimmy inner right + 138, -- ladder to crouch + } + + local crawlingStates = + { + 71, -- crouch idle + 72, -- crouch roll + 80, -- crawling idle + 81, -- crawl forward + 84, -- crawling turn left + 85, -- crawling turn right + 86, -- crawling backwards + 105, -- crouch turn left + 106, -- crouch turn right + 160, -- crawl step up + 161, -- crawl step down + 167, -- 1 step crouch vault + 168, -- 2 step crouch vault + 169, -- 3 step crouch vault + 171, -- crouch turn 180 + 172, -- crawl turn 180 + } + + local horizontalBarStates = + { + 128, -- horizontal bar swing + 129, -- horizontal bar leap + } + + local monkeySwingStates = + { + 75, -- monkey swing idle + 76, -- monkey swing forward + 77, -- monkey swing shimmy left + 78, -- monkey swing shimmy right + 79, -- monkey swing turn 180 + 82, -- monkey turn left + 83, -- monkey turn right + } + + local poleVaultStates = + { + 99, -- pole idle + 100, -- pole up + 101, -- pole down + 102, -- pole turn clockwise + 103, -- pole turn counterclockwise + } + + local ropeSwingStates = + { + 90, -- rope turn clockwise + 91, -- rope turn counterclockwise + 111, -- rope idle + 112, -- rope up + 113, -- rope down + 114, -- rope swing + 115, -- rope unknown + } + + local swimStates = + { + 13, -- swimming idle + 17, -- swim forward + 18, -- swim inertia + 35, -- dive + 40, -- use switch + 42, -- use key + 43, -- use puzzle + 44, -- underwater death + 66, -- underwater roll + 67, -- pickup flare + 89, -- misc control (opening door, trapdoor, kick) + 93, -- trapdoor floor open + 104, -- using pulley + 189, -- remove puzzle + 198, -- ungrab pulley + } + + local tightropeStates = + { + 119, -- Tightrope idle + 120, -- Tightrope turn 180 + 121, -- Tightrope walk + 122, -- Tightrope unbalance left + 123, -- Tightrope unbalance right + 124, -- Tightrope enter + 125, -- Tightrope dismount + } + + local function IsStateInList(currentState, states) + for _, expectedState in ipairs(states) do + if (currentState == expectedState) then + return true + end end + + return false end - return false -end + local TRAVERSAL_MODE = + { + CLIMB = 0, + CRAWL = 1, + HORIZONTAL_BAR = 2, + MONKEY_SWING = 3, + POLE_VAULT = 4, + ROPE_SWING = 5, + SWIM = 6, + TIGHTROPE = 7, + } + + local traversalModeTests = + { + [TRAVERSAL_MODE.CLIMB] = function(currentState) + return IsStateInList(currentState, ladderStates) + end, + + [TRAVERSAL_MODE.CRAWL] = function(currentState) + return IsStateInList(currentState, crawlingStates) + end, + + [TRAVERSAL_MODE.HORIZONTAL_BAR] = function(currentState) + return IsStateInList(currentState, horizontalBarStates) + end, + + [TRAVERSAL_MODE.MONKEY_SWING] = function(currentState) + return IsStateInList(currentState, monkeySwingStates) + end, + + [TRAVERSAL_MODE.POLE_VAULT] = function(currentState) + return IsStateInList(currentState, poleVaultStates) + end, + + [TRAVERSAL_MODE.ROPE_SWING] = function(currentState) + return IsStateInList(currentState, ropeSwingStates) + end, + + [TRAVERSAL_MODE.SWIM] = function(currentState) + return IsStateInList(currentState, swimStates) + end, + + [TRAVERSAL_MODE.TIGHTROPE] = function(currentState) + return IsStateInList(currentState, tightropeStates) + end, + } -local LaraTraversalMode = -{ - CLIMB = 0, - CRAWL = 1, - HORIZONTAL_BAR = 2, - MONKEY_SWING = 3, - POLE_VAULT = 4, - ROPE_SWING = 5, - SWIM = 6, - TIGHTROPE = 7, -} - -local traversalModeTests = -{ - [LaraTraversalMode.CLIMB] = function(state) - return IsStateInList(state, ladderStates) - end, - - [LaraTraversalMode.CRAWL] = function(state) - return IsStateInList(state, crawlingStates) - end, - - [LaraTraversalMode.HORIZONTAL_BAR] = function(state) - return IsStateInList(state, horizontalBarStates) - end, - - [LaraTraversalMode.MONKEY_SWING] = function(state) - return IsStateInList(state, monkeySwingStates) - end, - - [LaraTraversalMode.POLE_VAULT] = function(state) - return IsStateInList(state, poleVaultStates) - end, - - [LaraTraversalMode.ROPE_SWING] = function(state) - return IsStateInList(state, ropeSwingStates) - end, - - [LaraTraversalMode.SWIM] = function(state) - return IsStateInList(state, swimStates) - end, - - [LaraTraversalMode.TIGHTROPE] = function(state) - return IsStateInList(state, tightropeStates) - end, -} --- !Ignore --- Helper function to test whether Lara is in a specific traversal mode based on the provided state. Used by TestLaraTraversalState. -LevelFuncs.Engine.Node.TestLaraTraversalMode = function(mode, state) local traversalTest = traversalModeTests[mode] if (traversalTest == nil) then