protected override void OnReload(GameMode currentGameMode)
            {
                var  flags       = MakerAPI.GetCharacterLoadFlags();
                bool clothesFlag = false;

                if (flags == null || (flags != null && flags.Clothes))
                {
                    clothesFlag = true;
                }
                bool bodyFlag = false;

                if (flags == null || (flags != null && flags.Body))
                {
                    bodyFlag = true;
                }

                if (bodyFlag)
                {
                    BaseData          = new BodyData(ChaControl.fileBody);
                    CurrentPushupData = new BodyData(ChaControl.fileBody);
                }

                if (clothesFlag)
                {
                    //Load the data only if clothes is checked to be loaded
                    BraDataDictionary = new Dictionary <int, ClothData>();
                    TopDataDictionary = new Dictionary <int, ClothData>();

                    var data = GetExtendedData();
                    if (data != null && data.data.TryGetValue(PushupConstants.Pushup_BraData, out var loadedBraData) && loadedBraData != null)
                    {
                        BraDataDictionary = MessagePackSerializer.Deserialize <Dictionary <int, ClothData> >((byte[])loadedBraData);
                    }

                    if (data != null && data.data.TryGetValue(PushupConstants.Pushup_TopData, out var loadedTopData) && loadedTopData != null)
                    {
                        TopDataDictionary = MessagePackSerializer.Deserialize <Dictionary <int, ClothData> >((byte[])loadedTopData);
                    }

                    //Reset advanced mode stuff and disable it when not loading the body in character maker
                    if (!bodyFlag)
                    {
                        foreach (var clothData in BraDataDictionary.Values)
                        {
                            BaseData.CopyTo(clothData);
                            clothData.UseAdvanced = false;
                        }
                        foreach (var clothData in TopDataDictionary.Values)
                        {
                            BaseData.CopyTo(clothData);
                            clothData.UseAdvanced = false;
                        }
                    }
                }

                RecalculateBody();
                base.OnReload(currentGameMode);
            }
            protected override void OnReload(GameMode currentGameMode)
            {
                bool hasSavedBaseData = false;
                var  flags            = MakerAPI.GetCharacterLoadFlags();
                bool clothesFlag      = false;

                if (flags == null || flags.Clothes)
                {
                    clothesFlag = true;
                }
                bool bodyFlag = false;

                if (flags == null || flags.Body)
                {
                    bodyFlag = true;
                }

                if (bodyFlag)
                {
                    BaseData       = new BodyData(ChaControl.fileBody);
                    LoadedBaseData = new BodyData(ChaControl.fileBody);
                    BaseData.CopyTo(LoadedBaseData);
                    CurrentPushupData = new BodyData(ChaControl.fileBody);
                }

                if (clothesFlag)
                {
                    //Load the data only if clothes is checked to be loaded
                    BraDataDictionary = new Dictionary <int, ClothData>();
                    TopDataDictionary = new Dictionary <int, ClothData>();

                    var data = GetExtendedData();
                    if (data != null && data.data.TryGetValue(PushupConstants.Pushup_BraData, out var loadedBraData) && loadedBraData != null)
                    {
                        BraDataDictionary = MessagePackSerializer.Deserialize <Dictionary <int, ClothData> >((byte[])loadedBraData);
                    }

                    if (data != null && data.data.TryGetValue(PushupConstants.Pushup_TopData, out var loadedTopData) && loadedTopData != null)
                    {
                        TopDataDictionary = MessagePackSerializer.Deserialize <Dictionary <int, ClothData> >((byte[])loadedTopData);
                    }

                    if (data != null && data.data.TryGetValue(PushupConstants.Pushup_BodyData, out var loadedBodyData) && loadedBodyData != null)
                    {
                        hasSavedBaseData = true;
                        LoadedBaseData   = MessagePackSerializer.Deserialize <BodyData>((byte[])loadedBodyData);
                    }

                    //Reset advanced mode stuff and disable it when not loading the body in character maker
                    if (!bodyFlag)
                    {
                        foreach (var clothData in BraDataDictionary.Values)
                        {
                            BaseData.CopyTo(clothData);
                            clothData.UseAdvanced = false;
                        }
                        foreach (var clothData in TopDataDictionary.Values)
                        {
                            BaseData.CopyTo(clothData);
                            clothData.UseAdvanced = false;
                        }
                    }
                    if (!hasSavedBaseData)
                    {
                        if (data?.data != null)
                        {
                            data.data.Add(PushupConstants.Pushup_BodyData, MessagePackSerializer.Serialize(BaseData));
                            SetExtendedData(data);
                        }
                    }
                }

                //Apply the saved data to the base body data since it sometimes gets overwritten in the main game
                if (KoikatuAPI.GetCurrentGameMode() == GameMode.MainGame)
                {
                    LoadedBaseData.CopyTo(BaseData);
                }

                RecalculateBody();
                base.OnReload(currentGameMode);
            }