mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2024-12-25 19:24:16 +01:00
Fix give daycare egg option giving buggy eggs (#3335)
This commit is contained in:
parent
f564d4492b
commit
662dd7d2c6
@ -142,5 +142,29 @@ DebugScript_HatchAnEgg_Text_EmptyParty::
|
|||||||
|
|
||||||
DebugScript_HatchAnEgg_Text_NotAnEgg::
|
DebugScript_HatchAnEgg_Text_NotAnEgg::
|
||||||
.string "That's not a Pokémon Egg.$"
|
.string "That's not a Pokémon Egg.$"
|
||||||
|
|
||||||
|
DebugScript_ZeroDaycareMons::
|
||||||
|
msgbox DebugText_DaycareNoPokemon, MSGBOX_DEFAULT
|
||||||
|
releaseall
|
||||||
|
end
|
||||||
|
|
||||||
|
DebugScript_OneDaycareMons::
|
||||||
|
msgbox DebugText_DaycareOnePokemon, MSGBOX_DEFAULT
|
||||||
|
releaseall
|
||||||
|
end
|
||||||
|
|
||||||
|
DebugScript_DaycareMonsNotCompatible::
|
||||||
|
msgbox DebugText_DaycarePokemonNotCompatible, MSGBOX_DEFAULT
|
||||||
|
releaseall
|
||||||
|
end
|
||||||
|
|
||||||
|
DebugText_DaycareNoPokemon:
|
||||||
|
.string "You have no Pokémon at Daycare.$"
|
||||||
|
|
||||||
|
DebugText_DaycareOnePokemon:
|
||||||
|
.string "You have only one Pokémon at Daycare.$"
|
||||||
|
|
||||||
|
DebugText_DaycarePokemonNotCompatible:
|
||||||
|
.string "Your Pokémon at Daycare can't\nhave babies together!$"
|
||||||
|
|
||||||
.endif
|
.endif
|
||||||
|
@ -14,6 +14,7 @@ u8 *GetMonNickname2(struct Pokemon *mon, u8 *dest);
|
|||||||
u8 *GetBoxMonNickname(struct BoxPokemon *mon, u8 *dest);
|
u8 *GetBoxMonNickname(struct BoxPokemon *mon, u8 *dest);
|
||||||
u8 CountPokemonInDaycare(struct DayCare *daycare);
|
u8 CountPokemonInDaycare(struct DayCare *daycare);
|
||||||
void InitDaycareMailRecordMixing(struct DayCare *daycare, struct RecordMixingDaycareMail *mixMail);
|
void InitDaycareMailRecordMixing(struct DayCare *daycare, struct RecordMixingDaycareMail *mixMail);
|
||||||
|
s8 Daycare_FindEmptySpot(struct DayCare *daycare);
|
||||||
void StoreSelectedPokemonInDaycare(void);
|
void StoreSelectedPokemonInDaycare(void);
|
||||||
u16 TakePokemonFromDaycare(void);
|
u16 TakePokemonFromDaycare(void);
|
||||||
void GetDaycareCost(void);
|
void GetDaycareCost(void);
|
||||||
@ -26,6 +27,7 @@ bool8 ShouldEggHatch(void);
|
|||||||
u16 GetSelectedMonNicknameAndSpecies(void);
|
u16 GetSelectedMonNicknameAndSpecies(void);
|
||||||
void GetDaycareMonNicknames(void);
|
void GetDaycareMonNicknames(void);
|
||||||
u8 GetDaycareState(void);
|
u8 GetDaycareState(void);
|
||||||
|
u8 GetDaycareCompatibilityScore(struct DayCare *daycare);
|
||||||
void SetDaycareCompatibilityString(void);
|
void SetDaycareCompatibilityString(void);
|
||||||
bool8 NameHasGenderSymbol(const u8 *name, u8 genderRatio);
|
bool8 NameHasGenderSymbol(const u8 *name, u8 genderRatio);
|
||||||
void ShowDaycareLevelMenu(void);
|
void ShowDaycareLevelMenu(void);
|
||||||
|
@ -32,7 +32,6 @@ extern const struct Evolution gEvolutionTable[][EVOS_PER_MON];
|
|||||||
|
|
||||||
static void ClearDaycareMonMail(struct DaycareMail *mail);
|
static void ClearDaycareMonMail(struct DaycareMail *mail);
|
||||||
static void SetInitialEggData(struct Pokemon *mon, u16 species, struct DayCare *daycare);
|
static void SetInitialEggData(struct Pokemon *mon, u16 species, struct DayCare *daycare);
|
||||||
static u8 GetDaycareCompatibilityScore(struct DayCare *daycare);
|
|
||||||
static void DaycarePrintMonInfo(u8 windowId, u32 daycareSlotId, u8 y);
|
static void DaycarePrintMonInfo(u8 windowId, u32 daycareSlotId, u8 y);
|
||||||
static u8 ModifyBreedingScoreForOvalCharm(u8 score);
|
static u8 ModifyBreedingScoreForOvalCharm(u8 score);
|
||||||
static u8 GetEggMoves(struct Pokemon *pokemon, u16 *eggMoves);
|
static u8 GetEggMoves(struct Pokemon *pokemon, u16 *eggMoves);
|
||||||
@ -151,7 +150,7 @@ void InitDaycareMailRecordMixing(struct DayCare *daycare, struct RecordMixingDay
|
|||||||
mixMail->numDaycareMons = numDaycareMons;
|
mixMail->numDaycareMons = numDaycareMons;
|
||||||
}
|
}
|
||||||
|
|
||||||
static s8 Daycare_FindEmptySpot(struct DayCare *daycare)
|
s8 Daycare_FindEmptySpot(struct DayCare *daycare)
|
||||||
{
|
{
|
||||||
u8 i;
|
u8 i;
|
||||||
|
|
||||||
@ -193,7 +192,7 @@ static void TransferEggMoves(void)
|
|||||||
{
|
{
|
||||||
if (k == i || !GetBoxMonData(&gSaveBlock1Ptr->daycare.mons[k].mon, MON_DATA_SANITY_HAS_SPECIES))
|
if (k == i || !GetBoxMonData(&gSaveBlock1Ptr->daycare.mons[k].mon, MON_DATA_SANITY_HAS_SPECIES))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// Check if you can inherit from them
|
// Check if you can inherit from them
|
||||||
if (GetBoxMonData(&gSaveBlock1Ptr->daycare.mons[k].mon, MON_DATA_SPECIES) != GetBoxMonData(&gSaveBlock1Ptr->daycare.mons[i].mon, MON_DATA_SPECIES)
|
if (GetBoxMonData(&gSaveBlock1Ptr->daycare.mons[k].mon, MON_DATA_SPECIES) != GetBoxMonData(&gSaveBlock1Ptr->daycare.mons[i].mon, MON_DATA_SPECIES)
|
||||||
#if P_EGG_MOVE_TRANSFER >= GEN_9
|
#if P_EGG_MOVE_TRANSFER >= GEN_9
|
||||||
@ -493,7 +492,7 @@ static s32 GetParentToInheritNature(struct DayCare *daycare)
|
|||||||
if (ItemId_GetHoldEffect(GetBoxMonData(&daycare->mons[i].mon, MON_DATA_HELD_ITEM)) == HOLD_EFFECT_PREVENT_EVOLVE
|
if (ItemId_GetHoldEffect(GetBoxMonData(&daycare->mons[i].mon, MON_DATA_HELD_ITEM)) == HOLD_EFFECT_PREVENT_EVOLVE
|
||||||
#if P_NATURE_INHERITANCE == GEN_3
|
#if P_NATURE_INHERITANCE == GEN_3
|
||||||
&& (GetBoxMonGender(&daycare->mons[i].mon) == MON_FEMALE || IS_DITTO(GetBoxMonData(&daycare->mons[i].mon, MON_DATA_SPECIES)))
|
&& (GetBoxMonGender(&daycare->mons[i].mon) == MON_FEMALE || IS_DITTO(GetBoxMonData(&daycare->mons[i].mon, MON_DATA_SPECIES)))
|
||||||
#endif
|
#endif
|
||||||
) {
|
) {
|
||||||
slot = i;
|
slot = i;
|
||||||
numWithEverstone++;
|
numWithEverstone++;
|
||||||
@ -603,7 +602,7 @@ static void InheritIVs(struct Pokemon *egg, struct DayCare *daycare)
|
|||||||
}
|
}
|
||||||
|
|
||||||
start = 0;
|
start = 0;
|
||||||
if (ItemId_GetHoldEffect(motherItem) == HOLD_EFFECT_POWER_ITEM &&
|
if (ItemId_GetHoldEffect(motherItem) == HOLD_EFFECT_POWER_ITEM &&
|
||||||
ItemId_GetHoldEffect(fatherItem) == HOLD_EFFECT_POWER_ITEM)
|
ItemId_GetHoldEffect(fatherItem) == HOLD_EFFECT_POWER_ITEM)
|
||||||
{
|
{
|
||||||
whichParents[0] = Random() % DAYCARE_MON_COUNT;
|
whichParents[0] = Random() % DAYCARE_MON_COUNT;
|
||||||
@ -612,14 +611,14 @@ static void InheritIVs(struct Pokemon *egg, struct DayCare *daycare)
|
|||||||
RemoveIVIndexFromList(availableIVs, selectedIvs[0]);
|
RemoveIVIndexFromList(availableIVs, selectedIvs[0]);
|
||||||
start++;
|
start++;
|
||||||
}
|
}
|
||||||
else if (ItemId_GetHoldEffect(motherItem) == HOLD_EFFECT_POWER_ITEM)
|
else if (ItemId_GetHoldEffect(motherItem) == HOLD_EFFECT_POWER_ITEM)
|
||||||
{
|
{
|
||||||
whichParents[0] = 0;
|
whichParents[0] = 0;
|
||||||
selectedIvs[0] = ItemId_GetSecondaryId(motherItem);
|
selectedIvs[0] = ItemId_GetSecondaryId(motherItem);
|
||||||
RemoveIVIndexFromList(availableIVs, selectedIvs[0]);
|
RemoveIVIndexFromList(availableIVs, selectedIvs[0]);
|
||||||
start++;
|
start++;
|
||||||
}
|
}
|
||||||
else if (ItemId_GetHoldEffect(fatherItem) == HOLD_EFFECT_POWER_ITEM)
|
else if (ItemId_GetHoldEffect(fatherItem) == HOLD_EFFECT_POWER_ITEM)
|
||||||
{
|
{
|
||||||
whichParents[0] = 1;
|
whichParents[0] = 1;
|
||||||
selectedIvs[0] = ItemId_GetSecondaryId(fatherItem);
|
selectedIvs[0] = ItemId_GetSecondaryId(fatherItem);
|
||||||
@ -1230,7 +1229,7 @@ static bool8 EggGroupsOverlap(u16 *eggGroups1, u16 *eggGroups2)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static u8 GetDaycareCompatibilityScore(struct DayCare *daycare)
|
u8 GetDaycareCompatibilityScore(struct DayCare *daycare)
|
||||||
{
|
{
|
||||||
u32 i;
|
u32 i;
|
||||||
u16 eggGroups[DAYCARE_MON_COUNT][EGG_GROUPS_PER_MON];
|
u16 eggGroups[DAYCARE_MON_COUNT][EGG_GROUPS_PER_MON];
|
||||||
|
47
src/debug.c
47
src/debug.c
@ -372,24 +372,27 @@ static void DebugAction_Sound_MUS(u8 taskId);
|
|||||||
static void DebugAction_Sound_MUS_SelectId(u8 taskId);
|
static void DebugAction_Sound_MUS_SelectId(u8 taskId);
|
||||||
|
|
||||||
|
|
||||||
extern u8 Debug_FlagsNotSetOverworldConfigMessage[];
|
extern const u8 Debug_FlagsNotSetOverworldConfigMessage[];
|
||||||
extern u8 Debug_FlagsNotSetBattleConfigMessage[];
|
extern const u8 Debug_FlagsNotSetBattleConfigMessage[];
|
||||||
extern u8 Debug_Script_1[];
|
extern const u8 Debug_Script_1[];
|
||||||
extern u8 Debug_Script_2[];
|
extern const u8 Debug_Script_2[];
|
||||||
extern u8 Debug_Script_3[];
|
extern const u8 Debug_Script_3[];
|
||||||
extern u8 Debug_Script_4[];
|
extern const u8 Debug_Script_4[];
|
||||||
extern u8 Debug_Script_5[];
|
extern const u8 Debug_Script_5[];
|
||||||
extern u8 Debug_Script_6[];
|
extern const u8 Debug_Script_6[];
|
||||||
extern u8 Debug_Script_7[];
|
extern const u8 Debug_Script_7[];
|
||||||
extern u8 Debug_Script_8[];
|
extern const u8 Debug_Script_8[];
|
||||||
|
extern const u8 DebugScript_DaycareMonsNotCompatible[];
|
||||||
|
extern const u8 DebugScript_OneDaycareMons[];
|
||||||
|
extern const u8 DebugScript_ZeroDaycareMons[];
|
||||||
|
|
||||||
extern u8 Debug_ShowFieldMessageStringVar4[];
|
extern const u8 Debug_ShowFieldMessageStringVar4[];
|
||||||
extern u8 Debug_CheatStart[];
|
extern const u8 Debug_CheatStart[];
|
||||||
extern u8 Debug_HatchAnEgg[];
|
extern const u8 Debug_HatchAnEgg[];
|
||||||
extern u8 PlayersHouse_2F_EventScript_SetWallClock[];
|
extern const u8 PlayersHouse_2F_EventScript_SetWallClock[];
|
||||||
extern u8 PlayersHouse_2F_EventScript_CheckWallClock[];
|
extern const u8 PlayersHouse_2F_EventScript_CheckWallClock[];
|
||||||
extern u8 Debug_CheckSaveBlock[];
|
extern const u8 Debug_CheckSaveBlock[];
|
||||||
extern u8 Debug_BoxFilledMessage[];
|
extern const u8 Debug_BoxFilledMessage[];
|
||||||
|
|
||||||
#include "data/map_group_count.h"
|
#include "data/map_group_count.h"
|
||||||
|
|
||||||
@ -3467,7 +3470,15 @@ static void DebugAction_Give_MaxBattlePoints(u8 taskId)
|
|||||||
|
|
||||||
static void DebugAction_Give_DayCareEgg(u8 taskId)
|
static void DebugAction_Give_DayCareEgg(u8 taskId)
|
||||||
{
|
{
|
||||||
TriggerPendingDaycareEgg();
|
s32 emptySlot = Daycare_FindEmptySpot(&gSaveBlock1Ptr->daycare);
|
||||||
|
if (emptySlot == 0) // no daycare mons
|
||||||
|
Debug_DestroyMenu_Full_Script(taskId, DebugScript_ZeroDaycareMons);
|
||||||
|
else if (emptySlot == 1) // 1 daycare mon
|
||||||
|
Debug_DestroyMenu_Full_Script(taskId, DebugScript_OneDaycareMons);
|
||||||
|
else if (GetDaycareCompatibilityScore(&gSaveBlock1Ptr->daycare) == PARENTS_INCOMPATIBLE) // not compatible parents
|
||||||
|
Debug_DestroyMenu_Full_Script(taskId, DebugScript_DaycareMonsNotCompatible);
|
||||||
|
else // 2 pokemon which can have a pokemon baby together
|
||||||
|
TriggerPendingDaycareEgg();
|
||||||
}
|
}
|
||||||
|
|
||||||
// *******************************
|
// *******************************
|
||||||
|
Loading…
Reference in New Issue
Block a user