diff --git a/autogen/lua_definitions/structs.lua b/autogen/lua_definitions/structs.lua index 72df93997..2f9c5dcbb 100644 --- a/autogen/lua_definitions/structs.lua +++ b/autogen/lua_definitions/structs.lua @@ -1113,6 +1113,7 @@ --- @field public vanishCapDurationVcutm integer --- @field public vanishCapSequence SeqId --- @field public visibleSecrets integer +--- @field public wallMaxRadius number --- @field public wdwWaterLevelSpeed number --- @field public wingCapDuration integer --- @field public wingCapDurationTotwc integer diff --git a/docs/lua/structs.md b/docs/lua/structs.md index 773f2011f..cd85840a7 100644 --- a/docs/lua/structs.md +++ b/docs/lua/structs.md @@ -1691,6 +1691,7 @@ | vanishCapDurationVcutm | `integer` | | | vanishCapSequence | [enum SeqId](constants.md#enum-SeqId) | | | visibleSecrets | `integer` | | +| wallMaxRadius | `number` | | | wdwWaterLevelSpeed | `number` | | | wingCapDuration | `integer` | | | wingCapDurationTotwc | `integer` | | diff --git a/src/engine/surface_collision.c b/src/engine/surface_collision.c index 910d296aa..4f04dd03c 100644 --- a/src/engine/surface_collision.c +++ b/src/engine/surface_collision.c @@ -128,9 +128,9 @@ static s32 find_wall_collisions_from_list(struct SurfaceNode *surfaceNode, Vec3f cPos = { 0 }; Vec3f cNorm = { 0 }; - // Max collision radius = 200 - if (radius > 200.0f) { - radius = 200.0f; + // Default max collision radius = 200 + if (radius > gLevelValues.wallMaxRadius) { + radius = gLevelValues.wallMaxRadius; } // Stay in this loop until out of walls. diff --git a/src/game/hardcoded.c b/src/game/hardcoded.c index a37b533e7..5724197d1 100644 --- a/src/game/hardcoded.c +++ b/src/game/hardcoded.c @@ -126,7 +126,8 @@ struct LevelValues gDefaultLevelValues = { .wdwWaterLevelSpeed = 10.0f, .useGlobalStarIds = FALSE, .zoomOutCameraOnPause = TRUE, - .jrbDarkenSkybox = TRUE + .jrbDarkenSkybox = TRUE, + .wallMaxRadius = 200.0f, }; struct LevelValues gLevelValues = { 0 }; diff --git a/src/game/hardcoded.h b/src/game/hardcoded.h index 2a17df56b..1a978fd4b 100644 --- a/src/game/hardcoded.h +++ b/src/game/hardcoded.h @@ -94,6 +94,7 @@ struct LevelValues { u8 useGlobalStarIds; u8 zoomOutCameraOnPause; u8 jrbDarkenSkybox; + f32 wallMaxRadius; }; extern struct LevelValues gLevelValues; diff --git a/src/pc/lua/smlua_cobject_autogen.c b/src/pc/lua/smlua_cobject_autogen.c index 1fd81fe47..895ead3aa 100644 --- a/src/pc/lua/smlua_cobject_autogen.c +++ b/src/pc/lua/smlua_cobject_autogen.c @@ -1338,7 +1338,7 @@ static struct LuaObjectField sLakituStateFields[LUA_LAKITU_STATE_FIELD_COUNT] = { "yaw", LVT_S16, offsetof(struct LakituState, yaw), false, LOT_NONE, 1, sizeof(s16) }, }; -#define LUA_LEVEL_VALUES_FIELD_COUNT 52 +#define LUA_LEVEL_VALUES_FIELD_COUNT 53 static struct LuaObjectField sLevelValuesFields[LUA_LEVEL_VALUES_FIELD_COUNT] = { { "bubbleOnDeathBarrierInCapStages", LVT_U8, offsetof(struct LevelValues, bubbleOnDeathBarrierInCapStages), false, LOT_NONE, 1, sizeof(u8) }, { "cellHeightLimit", LVT_S16, offsetof(struct LevelValues, cellHeightLimit), false, LOT_NONE, 1, sizeof(s16) }, @@ -1386,6 +1386,7 @@ static struct LuaObjectField sLevelValuesFields[LUA_LEVEL_VALUES_FIELD_COUNT] = { "vanishCapDurationVcutm", LVT_U16, offsetof(struct LevelValues, vanishCapDurationVcutm), false, LOT_NONE, 1, sizeof(u16) }, { "vanishCapSequence", LVT_S32, offsetof(struct LevelValues, vanishCapSequence), false, LOT_NONE, 1, sizeof(enum SeqId) }, { "visibleSecrets", LVT_U8, offsetof(struct LevelValues, visibleSecrets), false, LOT_NONE, 1, sizeof(u8) }, + { "wallMaxRadius", LVT_F32, offsetof(struct LevelValues, wallMaxRadius), false, LOT_NONE, 1, sizeof(f32) }, { "wdwWaterLevelSpeed", LVT_F32, offsetof(struct LevelValues, wdwWaterLevelSpeed), false, LOT_NONE, 1, sizeof(f32) }, { "wingCapDuration", LVT_U16, offsetof(struct LevelValues, wingCapDuration), false, LOT_NONE, 1, sizeof(u16) }, { "wingCapDurationTotwc", LVT_U16, offsetof(struct LevelValues, wingCapDurationTotwc), false, LOT_NONE, 1, sizeof(u16) },