From c46f12ed70b5919d58fffbf5cd83240b96dd7a1e Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Tue, 18 Oct 2022 00:10:10 -0400 Subject: [PATCH] Made follower pokemon inactive on vanilla saves. --- src/event_object_movement.c | 1 + src/load_save.c | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 960755c841..9468ecd372 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1386,6 +1386,7 @@ static bool8 GetAvailableObjectEventId(u16 localId, u8 mapNum, u8 mapGroup, u8 * static void RemoveObjectEvent(struct ObjectEvent *objectEvent) { objectEvent->active = FALSE; + objectEvent->extra.asU16 = 0; // zero potential species info RemoveObjectEventInternal(objectEvent); } diff --git a/src/load_save.c b/src/load_save.c index 44e08b5e9c..9c10b4b10e 100644 --- a/src/load_save.c +++ b/src/load_save.c @@ -13,6 +13,7 @@ #include "gba/flash_internal.h" #include "decoration_inventory.h" #include "agb_flash.h" +#include "constants/event_objects.h" static void ApplyNewEncryptionKeyToAllEncryptedData(u32 encryptionKey); @@ -181,16 +182,26 @@ void SaveObjectEvents(void) { int i; - for (i = 0; i < OBJECT_EVENTS_COUNT; i++) + for (i = 0; i < OBJECT_EVENTS_COUNT; i++) { gSaveBlock1Ptr->objectEvents[i] = gObjectEvents[i]; + // To avoid crash on vanilla, save follower as inactive + if (gObjectEvents[i].localId == OBJ_EVENT_ID_FOLLOWER) + gSaveBlock1Ptr->objectEvents[i].active = FALSE; + } } void LoadObjectEvents(void) { int i; - for (i = 0; i < OBJECT_EVENTS_COUNT; i++) + for (i = 0; i < OBJECT_EVENTS_COUNT; i++) { gObjectEvents[i] = gSaveBlock1Ptr->objectEvents[i]; + // Try to restore saved inactive follower + if (gObjectEvents[i].localId == OBJ_EVENT_ID_FOLLOWER && + !gObjectEvents[i].active && + gObjectEvents[i].extra.asU16) + gObjectEvents[i].active = TRUE; + } } void CopyPartyAndObjectsToSave(void)