You've already forked Microtransactions64
mirror of
https://github.com/Print-and-Panic/Microtransactions64.git
synced 2026-01-21 10:17:19 -08:00
Make objects not run their code if the room they are in isn't loaded. (#502)
This commit is contained in:
@@ -820,6 +820,15 @@ void cur_obj_update(void) {
|
||||
BhvCommandProc bhvCmdProc;
|
||||
s32 bhvProcResult;
|
||||
|
||||
if (!(objFlags & OBJ_FLAG_PROCESS_OUTSIDE_ROOM)) {
|
||||
if (o->oRoom != -1 && gMarioCurrentRoom != 0 && !is_room_loaded()) {
|
||||
cur_obj_disable_rendering();
|
||||
o->activeFlags |= ACTIVE_FLAG_IN_DIFFERENT_ROOM;
|
||||
gNumRoomedObjectsNotInMarioRoom++;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Calculate the distance from the object to Mario.
|
||||
if (objFlags & OBJ_FLAG_COMPUTE_DIST_TO_MARIO) {
|
||||
o->oDistanceToMario = dist_between_objects(o, gMarioObject);
|
||||
|
||||
@@ -1891,15 +1891,15 @@ void bhv_init_room(void) {
|
||||
o->oRoom = -1;
|
||||
}
|
||||
|
||||
u32 is_room_loaded(void) {
|
||||
return gMarioCurrentRoom == o->oRoom
|
||||
|| gDoorAdjacentRooms[gMarioCurrentRoom][0] == o->oRoom
|
||||
|| gDoorAdjacentRooms[gMarioCurrentRoom][1] == o->oRoom;
|
||||
}
|
||||
|
||||
void cur_obj_enable_rendering_if_mario_in_room(void) {
|
||||
if (o->oRoom != -1 && gMarioCurrentRoom != 0) {
|
||||
register s32 marioInRoom = (
|
||||
gMarioCurrentRoom == o->oRoom
|
||||
|| gDoorAdjacentRooms[gMarioCurrentRoom][0] == o->oRoom
|
||||
|| gDoorAdjacentRooms[gMarioCurrentRoom][1] == o->oRoom
|
||||
);
|
||||
|
||||
if (marioInRoom) {
|
||||
if (is_room_loaded()) {
|
||||
cur_obj_enable_rendering();
|
||||
o->activeFlags &= ~ACTIVE_FLAG_IN_DIFFERENT_ROOM;
|
||||
gNumRoomedObjectsInMarioRoom++;
|
||||
|
||||
@@ -235,6 +235,7 @@ void cur_obj_call_action_function(ObjActionFunc actionFunctions[]);
|
||||
s32 cur_obj_mario_far_away(void);
|
||||
s32 is_mario_moving_fast_or_in_air(s32 speedThreshold);
|
||||
s32 is_item_in_array(s8 item, s8 *array);
|
||||
u32 is_room_loaded(void);
|
||||
void cur_obj_enable_rendering_if_mario_in_room(void);
|
||||
s32 cur_obj_set_hitbox_and_die_if_attacked(struct ObjectHitbox *hitbox, s32 deathSound, s32 noLootCoins);
|
||||
void obj_explode_and_spawn_coins(f32 mistSize, s32 coinType);
|
||||
|
||||
Reference in New Issue
Block a user