summaryrefslogtreecommitdiff
path: root/src/pokemon.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/pokemon.c')
-rw-r--r--src/pokemon.c53
1 files changed, 27 insertions, 26 deletions
diff --git a/src/pokemon.c b/src/pokemon.c
index b5eee16b2..5829bbd0a 100644
--- a/src/pokemon.c
+++ b/src/pokemon.c
@@ -2247,7 +2247,7 @@ void CreateBoxMon(struct BoxPokemon *boxMon, u16 species, u8 level, u8 fixedIV,
SetBoxMonData(boxMon, MON_DATA_POKEBALL, &value);
SetBoxMonData(boxMon, MON_DATA_OT_GENDER, &gSaveBlock2Ptr->playerGender);
- if (fixedIV < 32)
+ if (fixedIV < USE_RANDOM_IVS)
{
SetBoxMonData(boxMon, MON_DATA_HP_IV, &fixedIV);
SetBoxMonData(boxMon, MON_DATA_ATK_IV, &fixedIV);
@@ -2261,20 +2261,20 @@ void CreateBoxMon(struct BoxPokemon *boxMon, u16 species, u8 level, u8 fixedIV,
u32 iv;
value = Random();
- iv = value & 0x1F;
+ iv = value & MAX_IV_MASK;
SetBoxMonData(boxMon, MON_DATA_HP_IV, &iv);
- iv = (value & 0x3E0) >> 5;
+ iv = (value & (MAX_IV_MASK << 5)) >> 5;
SetBoxMonData(boxMon, MON_DATA_ATK_IV, &iv);
- iv = (value & 0x7C00) >> 10;
+ iv = (value & (MAX_IV_MASK << 10)) >> 10;
SetBoxMonData(boxMon, MON_DATA_DEF_IV, &iv);
value = Random();
- iv = value & 0x1F;
+ iv = value & MAX_IV_MASK;
SetBoxMonData(boxMon, MON_DATA_SPEED_IV, &iv);
- iv = (value & 0x3E0) >> 5;
+ iv = (value & (MAX_IV_MASK << 5)) >> 5;
SetBoxMonData(boxMon, MON_DATA_SPATK_IV, &iv);
- iv = (value & 0x7C00) >> 10;
+ iv = (value & (MAX_IV_MASK << 10)) >> 10;
SetBoxMonData(boxMon, MON_DATA_SPDEF_IV, &iv);
}
@@ -2342,7 +2342,7 @@ void CreateMaleMon(struct Pokemon *mon, u16 species, u8 level)
personality = Random32();
}
while (GetGenderFromSpeciesAndPersonality(species, personality) != MON_MALE);
- CreateMon(mon, species, level, 32, 1, personality, OT_ID_PRESET, otId);
+ CreateMon(mon, species, level, USE_RANDOM_IVS, 1, personality, OT_ID_PRESET, otId);
}
void CreateMonWithIVsPersonality(struct Pokemon *mon, u16 species, u8 level, u32 ivs, u32 personality)
@@ -2524,7 +2524,7 @@ void CreateApprenticeMon(struct Pokemon *mon, const struct Apprentice *src, u8 m
CreateMon(mon,
src->party[monId].species,
GetFrontierEnemyMonLevel(src->lvlMode - 1),
- 0x1F,
+ MAX_PER_STAT_IVS,
TRUE,
personality,
OT_ID_PRESET,
@@ -2685,7 +2685,7 @@ static u16 GetDeoxysStat(struct Pokemon *mon, s32 statId)
u16 statValue = 0;
u8 nature;
- if (gBattleTypeFlags & BATTLE_TYPE_20 || GetMonData(mon, MON_DATA_SPECIES, NULL) != SPECIES_DEOXYS)
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK_IN_BATTLE || GetMonData(mon, MON_DATA_SPECIES, NULL) != SPECIES_DEOXYS)
return 0;
ivVal = GetMonData(mon, MON_DATA_HP_IV + statId, NULL);
@@ -2729,8 +2729,8 @@ u16 GetUnionRoomTrainerPic(void)
u8 linkId;
u32 arrId;
- if (gBattleTypeFlags & BATTLE_TYPE_x2000000)
- linkId = gUnknown_0203C7B4 ^ 1;
+ if (gBattleTypeFlags & BATTLE_TYPE_RECORDED_LINK)
+ linkId = gRecordedBattleMultiplayerId ^ 1;
else
linkId = GetMultiplayerId() ^ 1;
@@ -2744,8 +2744,8 @@ u16 GetUnionRoomTrainerClass(void)
u8 linkId;
u32 arrId;
- if (gBattleTypeFlags & BATTLE_TYPE_x2000000)
- linkId = gUnknown_0203C7B4 ^ 1;
+ if (gBattleTypeFlags & BATTLE_TYPE_RECORDED_LINK)
+ linkId = gRecordedBattleMultiplayerId ^ 1;
else
linkId = GetMultiplayerId() ^ 1;
@@ -2761,7 +2761,7 @@ void CreateObedientEnemyMon(void)
s32 itemId = gSpecialVar_0x8006;
ZeroEnemyPartyMons();
- CreateObedientMon(&gEnemyParty[0], species, level, 32, 0, 0, 0, 0);
+ CreateObedientMon(&gEnemyParty[0], species, level, USE_RANDOM_IVS, 0, 0, 0, 0);
if (itemId)
{
u8 heldItem[2];
@@ -2859,13 +2859,14 @@ void CalculateMonStats(struct Pokemon *mon)
{
if (currentHP == 0 && oldMaxHP == 0)
currentHP = newMaxHP;
- else if (currentHP != 0)
+ else if (currentHP != 0) {
// BUG: currentHP is unintentionally able to become <= 0 after the instruction below. This causes the pomeg berry glitch.
currentHP += newMaxHP - oldMaxHP;
#ifdef BUGFIX
if (currentHP <= 0)
currentHP = 1;
#endif
+ }
else
return;
}
@@ -3366,7 +3367,7 @@ u8 CountAliveMonsInBattle(u8 caseId)
static bool8 ShouldGetStatBadgeBoost(u16 badgeFlag, u8 battlerId)
{
- if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_x2000000 | BATTLE_TYPE_FRONTIER))
+ if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_RECORDED_LINK | BATTLE_TYPE_FRONTIER))
return FALSE;
else if (GetBattlerSide(battlerId) != B_SIDE_PLAYER)
return FALSE;
@@ -4314,12 +4315,12 @@ void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const void *dataArg)
case MON_DATA_IVS:
{
u32 ivs = data[0] | (data[1] << 8) | (data[2] << 16) | (data[3] << 24);
- substruct3->hpIV = ivs & 0x1F;
- substruct3->attackIV = (ivs >> 5) & 0x1F;
- substruct3->defenseIV = (ivs >> 10) & 0x1F;
- substruct3->speedIV = (ivs >> 15) & 0x1F;
- substruct3->spAttackIV = (ivs >> 20) & 0x1F;
- substruct3->spDefenseIV = (ivs >> 25) & 0x1F;
+ substruct3->hpIV = ivs & MAX_IV_MASK;
+ substruct3->attackIV = (ivs >> 5) & MAX_IV_MASK;
+ substruct3->defenseIV = (ivs >> 10) & MAX_IV_MASK;
+ substruct3->speedIV = (ivs >> 15) & MAX_IV_MASK;
+ substruct3->spAttackIV = (ivs >> 20) & MAX_IV_MASK;
+ substruct3->spDefenseIV = (ivs >> 25) & MAX_IV_MASK;
break;
}
default:
@@ -6266,7 +6267,7 @@ u16 GetBattleBGM(void)
return MUS_VS_KYOGRE_GROUDON;
else if (gBattleTypeFlags & BATTLE_TYPE_REGI)
return MUS_VS_REGI;
- else if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
+ else if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK))
return MUS_VS_TRAINER;
else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
{
@@ -6626,7 +6627,7 @@ static void Task_PokemonSummaryAnimateAfterDelay(u8 taskId)
void BattleAnimateFrontSprite(struct Sprite* sprite, u16 species, bool8 noCry, u8 arg3)
{
- if (gHitMarker & HITMARKER_NO_ANIMATIONS && !(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000)))
+ if (gHitMarker & HITMARKER_NO_ANIMATIONS && !(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK)))
DoMonFrontSpriteAnimation(sprite, species, noCry, arg3 | 0x80);
else
DoMonFrontSpriteAnimation(sprite, species, noCry, arg3);
@@ -6704,7 +6705,7 @@ void StopPokemonAnimationDelayTask(void)
void BattleAnimateBackSprite(struct Sprite* sprite, u16 species)
{
- if (gHitMarker & HITMARKER_NO_ANIMATIONS && !(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000)))
+ if (gHitMarker & HITMARKER_NO_ANIMATIONS && !(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK)))
{
sprite->callback = SpriteCallbackDummy;
}