mirror of
https://github.com/coop-deluxe/sm64coopdx.git
synced 2026-04-27 04:21:42 +00:00
Fixed gLevelValues initialization and missing limits (#188)
This commit is contained in:
parent
f13f78b823
commit
538383235f
5 changed files with 16 additions and 12 deletions
|
|
@ -12,7 +12,7 @@ void bhv_tree_snow_or_leaf_loop(void) {
|
|||
}
|
||||
if (o->oPosY < o->oFloorHeight)
|
||||
obj_mark_for_deletion(o);
|
||||
if (o->oFloorHeight < -11000.0f)
|
||||
if (o->oFloorHeight < gLevelValues.floorLowerLimit)
|
||||
obj_mark_for_deletion(o);
|
||||
if (o->oTimer > 100)
|
||||
obj_mark_for_deletion(o);
|
||||
|
|
|
|||
|
|
@ -11770,7 +11770,7 @@ static u8 rom_hack_cam_can_see_mario(Vec3f desiredPos) {
|
|||
}
|
||||
|
||||
f32 floorHeight = find_floor(desiredPos[0], desiredPos[1], desiredPos[2], &surf);
|
||||
if (surf == NULL || floorHeight <= -11000) {
|
||||
if (surf == NULL || floorHeight <= gLevelValues.floorLowerLimit) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
#include "hardcoded.h"
|
||||
#include "engine/surface_collision.h"
|
||||
|
||||
#include "levels/bbh/header.h"
|
||||
#include "levels/bitdw/header.h"
|
||||
|
|
@ -88,10 +89,10 @@ struct LevelValues gDefaultLevelValues = {
|
|||
.UnagiStarPos = { 6833.0f, -3654.0f, 2230.0f },
|
||||
.JetstreamRingStarPos = { 3400.0f, -3200.0f, -500.0f },
|
||||
},
|
||||
.ceilHeightLimit = 20000,
|
||||
.floorLowerLimit = -11000,
|
||||
.floorLowerLimitMisc = -10000,
|
||||
.floorLowerLimitShadow = -10000,
|
||||
.ceilHeightLimit = CEIL_HEIGHT_LIMIT,
|
||||
.floorLowerLimit = FLOOR_LOWER_LIMIT,
|
||||
.floorLowerLimitMisc = FLOOR_LOWER_LIMIT_MISC,
|
||||
.floorLowerLimitShadow = FLOOR_LOWER_LIMIT_SHADOW,
|
||||
};
|
||||
|
||||
struct LevelValues gLevelValues = { 0 };
|
||||
|
|
@ -251,6 +252,7 @@ struct BehaviorValues gBehaviorValues = { 0 };
|
|||
// functions //
|
||||
///////////////
|
||||
|
||||
__attribute__((constructor))
|
||||
void hardcoded_reset_default_values(void) {
|
||||
gLevelValues = gDefaultLevelValues;
|
||||
gBehaviorValues = gDefaultBehaviorValues;
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@
|
|||
#include "engine/math_util.h"
|
||||
#include "engine/surface_collision.h"
|
||||
#include "game_init.h"
|
||||
#include "hardcoded.h"
|
||||
#include "helper_macros.h"
|
||||
#include "ingame_menu.h"
|
||||
#include "interaction.h"
|
||||
|
|
@ -909,7 +910,7 @@ void cur_obj_unused_init_on_floor(void) {
|
|||
cur_obj_enable_rendering();
|
||||
|
||||
o->oPosY = find_floor_height(o->oPosX, o->oPosY, o->oPosZ);
|
||||
if (o->oPosY < -10000.0f) {
|
||||
if (o->oPosY < gLevelValues.floorLowerLimitMisc) {
|
||||
cur_obj_set_pos_relative_to_parent(0, 0, -70);
|
||||
o->oPosY = find_floor_height(o->oPosX, o->oPosY, o->oPosZ);
|
||||
}
|
||||
|
|
@ -1259,7 +1260,7 @@ void cur_obj_move_after_thrown_or_dropped(f32 forwardVel, f32 velY) {
|
|||
|
||||
if (o->oFloorHeight > o->oPosY) {
|
||||
o->oPosY = o->oFloorHeight;
|
||||
} else if (o->oFloorHeight < -10000.0f) {
|
||||
} else if (o->oFloorHeight < gLevelValues.floorLowerLimitMisc) {
|
||||
//! OoB failsafe
|
||||
obj_copy_pos(o, gMarioObject);
|
||||
o->oFloorHeight = find_floor_height(o->oPosX, o->oPosY, o->oPosZ);
|
||||
|
|
@ -1424,7 +1425,7 @@ s32 cur_obj_move_xz(f32 steepSlopeNormalY, s32 careAboutEdgesAndSteepSlopes) {
|
|||
}
|
||||
}
|
||||
|
||||
if (intendedFloorHeight < -10000.0f) {
|
||||
if (intendedFloorHeight < gLevelValues.floorLowerLimitMisc) {
|
||||
// Don't move into OoB
|
||||
o->oMoveFlags |= OBJ_MOVE_HIT_EDGE;
|
||||
return FALSE;
|
||||
|
|
@ -1524,7 +1525,7 @@ f32 cur_obj_move_y_and_get_water_level(f32 gravity, f32 buoyancy) {
|
|||
|
||||
o->oPosY += o->oVelY;
|
||||
if (o->activeFlags & ACTIVE_FLAG_UNK10) {
|
||||
waterLevel = -11000.0f;
|
||||
waterLevel = gLevelValues.floorLowerLimit;
|
||||
} else {
|
||||
waterLevel = find_water_level(o->oPosX, o->oPosZ);
|
||||
}
|
||||
|
|
@ -1895,7 +1896,7 @@ s32 cur_obj_detect_steep_floor(s16 steepAngleDegrees) {
|
|||
intendedFloorHeight = find_floor(intendedX, o->oPosY, intendedZ, &intendedFloor);
|
||||
deltaFloorHeight = intendedFloorHeight - o->oFloorHeight;
|
||||
|
||||
if (intendedFloorHeight < -10000.0f) {
|
||||
if (intendedFloorHeight < gLevelValues.floorLowerLimitMisc) {
|
||||
o->oWallAngle = o->oMoveAngleYaw + 0x8000;
|
||||
return 2;
|
||||
} else if (intendedFloor->normal.y < steepNormalY && deltaFloorHeight > 0
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
#include "data/dynos.c.h"
|
||||
#include "game/bettercamera.h"
|
||||
#include "game/camera.h"
|
||||
#include "game/hardcoded.h"
|
||||
#include "game/hud.h"
|
||||
#include "pc/lua/smlua.h"
|
||||
#include "smlua_misc_utils.h"
|
||||
|
|
@ -333,7 +334,7 @@ f32 get_environment_region(u8 index) {
|
|||
if (gEnvironmentRegions != NULL && index <= gEnvironmentRegions[0]) {
|
||||
return gEnvironmentRegions[6 * (int)index];
|
||||
}
|
||||
return -11000;
|
||||
return gLevelValues.floorLowerLimit;
|
||||
}
|
||||
|
||||
///
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue