mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2025-03-19 03:58:33 +01:00
Reworked shiny charm rerolls allow adding additional rerolls when necessary
This commit is contained in:
parent
17fecd5996
commit
66177e7958
@ -385,7 +385,7 @@ struct FormChange
|
|||||||
| (((personality) & 0x00000003) >> 0) \
|
| (((personality) & 0x00000003) >> 0) \
|
||||||
) % NUM_UNOWN_FORMS)
|
) % NUM_UNOWN_FORMS)
|
||||||
|
|
||||||
#define GET_SHINY_VALUE(otId, personality)HIHALF(otId) ^ LOHALF(otId) ^ HIHALF(personality) ^ LOHALF(personality)
|
#define GET_SHINY_VALUE(otId, personality) (HIHALF(otId) ^ LOHALF(otId) ^ HIHALF(personality) ^ LOHALF(personality))
|
||||||
|
|
||||||
extern u8 gPlayerPartyCount;
|
extern u8 gPlayerPartyCount;
|
||||||
extern struct Pokemon gPlayerParty[PARTY_SIZE];
|
extern struct Pokemon gPlayerParty[PARTY_SIZE];
|
||||||
|
@ -3300,21 +3300,19 @@ void CreateBoxMon(struct BoxPokemon *boxMon, u16 species, u8 level, u8 fixedIV,
|
|||||||
}
|
}
|
||||||
else // Player is the OT
|
else // Player is the OT
|
||||||
{
|
{
|
||||||
|
u32 totalRerolls = 0;
|
||||||
value = gSaveBlock2Ptr->playerTrainerId[0]
|
value = gSaveBlock2Ptr->playerTrainerId[0]
|
||||||
| (gSaveBlock2Ptr->playerTrainerId[1] << 8)
|
| (gSaveBlock2Ptr->playerTrainerId[1] << 8)
|
||||||
| (gSaveBlock2Ptr->playerTrainerId[2] << 16)
|
| (gSaveBlock2Ptr->playerTrainerId[2] << 16)
|
||||||
| (gSaveBlock2Ptr->playerTrainerId[3] << 24);
|
| (gSaveBlock2Ptr->playerTrainerId[3] << 24);
|
||||||
|
|
||||||
if (CheckBagHasItem(ITEM_SHINY_CHARM, 1))
|
if (CheckBagHasItem(ITEM_SHINY_CHARM, 1))
|
||||||
|
totalRerolls += I_SHINY_CHARM_REROLLS;
|
||||||
|
|
||||||
|
while (GET_SHINY_VALUE(value, personality) >= SHINY_ODDS && totalRerolls > 0)
|
||||||
{
|
{
|
||||||
u32 shinyValue;
|
personality = Random32();
|
||||||
u32 rolls = 0;
|
totalRerolls--;
|
||||||
do
|
|
||||||
{
|
|
||||||
personality = Random32();
|
|
||||||
shinyValue = HIHALF(value) ^ LOHALF(value) ^ HIHALF(personality) ^ LOHALF(personality);
|
|
||||||
rolls++;
|
|
||||||
} while (shinyValue >= SHINY_ODDS && rolls < I_SHINY_CHARM_REROLLS);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user