Made follower pokemon inactive on vanilla saves.

This commit is contained in:
Ariel A 2022-10-18 00:10:10 -04:00
parent f970057930
commit c46f12ed70
2 changed files with 14 additions and 2 deletions

View File

@ -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);
}

View File

@ -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)