diff --git a/include/battle.h b/include/battle.h index 4a3070e010..408ad7e9b0 100644 --- a/include/battle.h +++ b/include/battle.h @@ -758,6 +758,7 @@ struct BattleStruct u8 transformZeroToHero[NUM_BATTLE_SIDES]; u8 intrepidSwordBoost[NUM_BATTLE_SIDES]; u8 dauntlessShieldBoost[NUM_BATTLE_SIDES]; + u8 stickySyrupdBy[MAX_BATTLERS_COUNT]; }; // The palaceFlags member of struct BattleStruct contains 1 flag per move to indicate which moves the AI should consider, diff --git a/include/birch_pc.h b/include/birch_pc.h index 5e0e8d9c16..d5b8cc7e85 100644 --- a/include/birch_pc.h +++ b/include/birch_pc.h @@ -1,6 +1,6 @@ #ifndef GUARD_BIRCH_PC_H #define GUARD_BIRCH_PC_H -const u8 *GetPokedexRatingText(u16 count); +const u8 *GetPokedexRatingText(u32 count); #endif // GUARD_BIRCH_PC_H diff --git a/include/config/pokemon.h b/include/config/pokemon.h index d905979aae..7a5d5853be 100644 --- a/include/config/pokemon.h +++ b/include/config/pokemon.h @@ -32,7 +32,6 @@ #define P_FOOTPRINTS TRUE // If TRUE, Pokémon will have footprints (as was the case up to Gen 5 and in BDSP). Disabling this saves some ROM space. #define P_LEGENDARY_PERFECT_IVS GEN_LATEST // Since Gen 6, Legendaries, Mythicals and Ultra Beasts found in the wild or given through gifts have at least 3 perfect IVs. #define P_EV_CAP GEN_LATEST // Since Gen 6, the max EVs per stat is 252 instead of 255. -#define P_CATCH_CURVE GEN_LATEST // Since Gen 6, the capture rate curve was changed to make pokeballs more effective on lower level pokemon #define P_SHOW_TERA_TYPE GEN_LATEST // Since Gen 9, the Tera Type is shown on the summary screen. // Flag settings diff --git a/include/pokemon.h b/include/pokemon.h index 5bca3505cf..4c885c703c 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -432,7 +432,8 @@ struct SpeciesInfo /*0x8C*/ u32 isPaldeanForm:1; u32 cannotBeTraded:1; u32 allPerfectIVs:1; - u32 padding4:18; + u32 dexForceRequired:1; // This species will be taken into account for Pokédex ratings even if they have the "isMythical" flag set. + u32 padding4:17; // Move Data /* 0x80 */ const struct LevelUpMove *levelUpLearnset; /* 0x84 */ const u16 *teachableLearnset; diff --git a/src/battle_main.c b/src/battle_main.c index c77b38d6bc..c7ba81850e 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -3139,6 +3139,8 @@ void SwitchInClearSetData(u32 battler) gBattleMons[i].status2 &= ~STATUS2_INFATUATED_WITH(battler); if ((gBattleMons[i].status2 & STATUS2_WRAPPED) && *(gBattleStruct->wrappedBy + i) == battler) gBattleMons[i].status2 &= ~STATUS2_WRAPPED; + if ((gStatuses4[i] & STATUS4_SYRUP_BOMB) && *(gBattleStruct->stickySyrupdBy + i) == battler) + gStatuses4[i] &= ~STATUS4_SYRUP_BOMB; } gActionSelectionCursor[battler] = 0; @@ -3243,6 +3245,8 @@ const u8* FaintClearSetData(u32 battler) gBattleMons[i].status2 &= ~STATUS2_INFATUATED_WITH(battler); if ((gBattleMons[i].status2 & STATUS2_WRAPPED) && *(gBattleStruct->wrappedBy + i) == battler) gBattleMons[i].status2 &= ~STATUS2_WRAPPED; + if ((gStatuses4[i] & STATUS4_SYRUP_BOMB) && *(gBattleStruct->stickySyrupdBy + i) == battler) + gStatuses4[i] &= ~STATUS4_SYRUP_BOMB; } gActionSelectionCursor[battler] = 0; @@ -4967,7 +4971,7 @@ static void TurnValuesCleanUp(bool8 var0) gSideStatuses[B_SIDE_OPPONENT] &= ~(SIDE_STATUS_QUICK_GUARD | SIDE_STATUS_WIDE_GUARD | SIDE_STATUS_CRAFTY_SHIELD | SIDE_STATUS_MAT_BLOCK); gSideTimers[B_SIDE_PLAYER].followmeTimer = 0; gSideTimers[B_SIDE_OPPONENT].followmeTimer = 0; - + gBattleStruct->pledgeMove = FALSE; // combined pledge move may not have been used due to a canceller } diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 50d76a9e5c..ce9b6c8cef 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -1584,8 +1584,8 @@ static bool32 AccuracyCalcHelper(u16 move) if (WEATHER_HAS_EFFECT) { - if (IsBattlerWeatherAffected(gBattlerTarget, B_WEATHER_RAIN) && - (gBattleMoves[move].effect == EFFECT_THUNDER || gBattleMoves[move].effect == EFFECT_HURRICANE || + if (IsBattlerWeatherAffected(gBattlerTarget, B_WEATHER_RAIN) && + (gBattleMoves[move].effect == EFFECT_THUNDER || gBattleMoves[move].effect == EFFECT_HURRICANE || move == MOVE_BLEAKWIND_STORM || move == MOVE_WILDBOLT_STORM || move == MOVE_SANDSEAR_STORM)) { // thunder/hurricane/genie moves ignore acc checks in rain unless target is holding utility umbrella @@ -3161,7 +3161,8 @@ void SetMoveEffect(bool32 primary, bool32 certain) gBattlerAbility = gEffectBattler; RecordAbilityBattle(gEffectBattler, ABILITY_INNER_FOCUS); gBattlescriptCurrInstr = BattleScript_FlinchPrevention; - } else + } + else { gBattlescriptCurrInstr++; } @@ -3169,7 +3170,7 @@ void SetMoveEffect(bool32 primary, bool32 certain) else if (GetBattlerTurnOrderNum(gEffectBattler) > gCurrentTurnActionNumber && !IsDynamaxed(gEffectBattler)) { - gBattleMons[gEffectBattler].status2 |= sStatusFlagsForMoveEffects[gBattleScripting.moveEffect]; + gBattleMons[gEffectBattler].status2 |= sStatusFlagsForMoveEffects[gBattleScripting.moveEffect]; gBattlescriptCurrInstr++; } break; @@ -3704,6 +3705,7 @@ void SetMoveEffect(bool32 primary, bool32 certain) gStatuses4[gEffectBattler] |= STATUS4_SYRUP_BOMB; gDisableStructs[gEffectBattler].syrupBombTimer = 3; gDisableStructs[gEffectBattler].syrupBombIsShiny = IsMonShiny(&party[gBattlerPartyIndexes[gBattlerAttacker]]); + gBattleStruct->stickySyrupdBy[gEffectBattler] = gBattlerAttacker; BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_SyrupBombActivates; } @@ -14979,7 +14981,7 @@ static void Cmd_handleballthrow(void) if (gBattleResults.catchAttempts[gLastUsedItem - FIRST_BALL] < 255) gBattleResults.catchAttempts[gLastUsedItem - FIRST_BALL]++; - if (odds >= 255) // mon caught + if (odds > 254) // mon caught { BtlController_EmitBallThrowAnim(gBattlerAttacker, BUFFER_A, BALL_3_SHAKES_SUCCESS); MarkBattlerForControllerExec(gBattlerAttacker); @@ -15024,16 +15026,8 @@ static void Cmd_handleballthrow(void) } else { - if (P_CATCH_CURVE >= GEN_6) - { - odds = (255 * 255 * 255) / (odds * odds * odds); - odds = 65536 / Sqrt(Sqrt(Sqrt(Sqrt(odds)))); - } - else - { - odds = Sqrt(Sqrt(16711680 / odds)); - odds = 1048560 / odds; - } + odds = Sqrt(Sqrt(16711680 / odds)); + odds = 1048560 / odds; for (shakes = 0; shakes < maxShakes && Random() < odds; shakes++); } diff --git a/src/birch_pc.c b/src/birch_pc.c index ba0085badb..2ebd574e88 100644 --- a/src/birch_pc.c +++ b/src/birch_pc.c @@ -20,13 +20,6 @@ bool16 ScriptGetPokedexInfo(void) return IsNationalPokedexEnabled(); } -// Species in this array are ignored in the progress towards a full regional dex -static const u16 sRegionalNotCountedList[] = { - SPECIES_JIRACHI, - SPECIES_DEOXYS, - SPECIES_NONE -}; - #define BIRCH_DEX_STRINGS 21 static const u8 *const sBirchDexRatingTexts[BIRCH_DEX_STRINGS] = @@ -55,15 +48,20 @@ static const u8 *const sBirchDexRatingTexts[BIRCH_DEX_STRINGS] = }; // This shows your Hoenn Pokédex rating and not your National Dex. -const u8 *GetPokedexRatingText(u16 count) +const u8 *GetPokedexRatingText(u32 count) { - u32 i; + u32 i, j; u16 maxDex = HOENN_DEX_COUNT - 1; - for(i = 0; sRegionalNotCountedList[i] != SPECIES_NONE; i++) + // doesNotCountForRegionalPokedex + for(i = 0; i < HOENN_DEX_COUNT; i++) { - if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(sRegionalNotCountedList[i]), FLAG_GET_CAUGHT)) - count--; - maxDex--; + j = NationalPokedexNumToSpecies(HoennToNationalOrder(i + 1)); + if (gSpeciesInfo[j].isMythical && !gSpeciesInfo[j].dexForceRequired) + { + if (GetSetPokedexFlag(j, FLAG_GET_CAUGHT)) + count--; + maxDex--; + } } return sBirchDexRatingTexts[(count * (BIRCH_DEX_STRINGS - 1)) / maxDex]; } diff --git a/src/data/pokemon/species_info/gen_1.h b/src/data/pokemon/species_info/gen_1.h index b503cb8334..b5f892c06b 100644 --- a/src/data/pokemon/species_info/gen_1.h +++ b/src/data/pokemon/species_info/gen_1.h @@ -7659,7 +7659,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = ICON(VoltorbHisuian, 0), LEARNSETS(VoltorbHisuian), .isHisuianForm = TRUE, - .evolutions = EVOLUTION({EVO_LEVEL, ITEM_LEAF_STONE, SPECIES_ELECTRODE_HISUIAN}), + .evolutions = EVOLUTION({EVO_ITEM, ITEM_LEAF_STONE, SPECIES_ELECTRODE_HISUIAN}), }, [SPECIES_ELECTRODE_HISUIAN] = @@ -10161,12 +10161,6 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = #if P_FAMILY_TAUROS #define TAUROS_MISC_INFO \ - .baseHP = 75, \ - .baseAttack = 100, \ - .baseDefense = 95, \ - .baseSpeed = 110, \ - .baseSpAttack = 40, \ - .baseSpDefense = 70, \ .catchRate = 45, \ .expYield = 172, \ .genderRatio = MON_MALE, \ @@ -10189,6 +10183,12 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = [SPECIES_TAUROS] = { TAUROS_MISC_INFO, + .baseHP = 75, + .baseAttack = 100, + .baseDefense = 95, + .baseSpeed = 110, + .baseSpAttack = 40, + .baseSpDefense = 70, .types = { TYPE_NORMAL, TYPE_NORMAL }, .evYield_Attack = 1, .evYield_Speed = 1, @@ -10214,13 +10214,26 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = }, #if P_PALDEAN_FORMS +#define TAUROS_PALDEAN_MISC_INFO \ + .baseHP = 75, \ + .baseAttack = 110, \ + .baseDefense = 105, \ + .baseSpeed = 100, \ + .baseSpAttack = 30, \ + .baseSpDefense = 70, \ + .evYield_Attack = 2, \ + .abilities = { ABILITY_INTIMIDATE, ABILITY_ANGER_POINT, ABILITY_CUD_CHEW }, \ + .bodyColor = BODY_COLOR_BLACK, \ + .frontAnimFrames = sAnims_TaurosPaldean, \ + /*.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,*/ \ + .backAnimId = BACK_ANIM_V_SHAKE_LOW, \ + .isPaldeanForm = TRUE + [SPECIES_TAUROS_PALDEAN_COMBAT_BREED] = { TAUROS_MISC_INFO, + TAUROS_PALDEAN_MISC_INFO, .types = { TYPE_FIGHTING, TYPE_FIGHTING }, - .evYield_Attack = 2, - .abilities = { ABILITY_INTIMIDATE, ABILITY_ANGER_POINT, ABILITY_CUD_CHEW }, - .bodyColor = BODY_COLOR_BROWN, .weight = 1150, .description = COMPOUND_STRING( "This Pokémon has a muscular body\n" @@ -10229,24 +10242,18 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = "the opponent’s weak spots."), FRONT_PIC(TaurosPaldeanCombatBreed, 64, 64), .frontPicYOffset = 5, - .frontAnimFrames = sAnims_TaurosPaldean, - //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, BACK_PIC(TaurosPaldeanCombatBreed, 64, 48), .backPicYOffset = 9, - .backAnimId = BACK_ANIM_V_SHAKE_LOW, PALETTES(TaurosPaldeanCombatBreed), ICON(TaurosPaldeanCombatBreed, 0), LEARNSETS(TaurosPaldeanCombatBreed), - .isPaldeanForm = TRUE, }, [SPECIES_TAUROS_PALDEAN_BLAZE_BREED] = { TAUROS_MISC_INFO, + TAUROS_PALDEAN_MISC_INFO, .types = { TYPE_FIGHTING, TYPE_FIRE }, - .evYield_Attack = 2, - .abilities = { ABILITY_INTIMIDATE, ABILITY_ANGER_POINT, ABILITY_CUD_CHEW }, - .bodyColor = BODY_COLOR_BROWN, .weight = 850, .description = COMPOUND_STRING( "When heated by fire energy, its horns can\n" @@ -10255,24 +10262,18 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = "both wounds and burns."), FRONT_PIC(TaurosPaldeanBlazeBreed, 64, 64), .frontPicYOffset = 5, - .frontAnimFrames = sAnims_TaurosPaldean, - //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, BACK_PIC(TaurosPaldeanBlazeBreed, 64, 48), .backPicYOffset = 9, - .backAnimId = BACK_ANIM_V_SHAKE_LOW, PALETTES(TaurosPaldeanBlazeBreed), ICON(TaurosPaldeanBlazeBreed, 0), LEARNSETS(TaurosPaldeanBlazeBreed), - .isPaldeanForm = TRUE, }, [SPECIES_TAUROS_PALDEAN_AQUA_BREED] = { TAUROS_MISC_INFO, + TAUROS_PALDEAN_MISC_INFO, .types = { TYPE_FIGHTING, TYPE_WATER }, - .evYield_Attack = 2, - .abilities = { ABILITY_INTIMIDATE, ABILITY_ANGER_POINT, ABILITY_CUD_CHEW }, - .bodyColor = BODY_COLOR_BROWN, .weight = 1100, .description = COMPOUND_STRING( "This Pokémon blasts water from holes on\n" @@ -10281,15 +10282,11 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = "Tauros’s enemies."), FRONT_PIC(TaurosPaldeanAquaBreed, 64, 64), .frontPicYOffset = 5, - .frontAnimFrames = sAnims_TaurosPaldean, - //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, BACK_PIC(TaurosPaldeanAquaBreed, 64, 48), .backPicYOffset = 9, - .backAnimId = BACK_ANIM_V_SHAKE_LOW, PALETTES(TaurosPaldeanAquaBreed), ICON(TaurosPaldeanAquaBreed, 0), LEARNSETS(TaurosPaldeanAquaBreed), - .isPaldeanForm = TRUE, }, #endif //P_PALDEAN_FORMS #endif //P_FAMILY_TAUROS diff --git a/src/data/pokemon/species_info/gen_5.h b/src/data/pokemon/species_info/gen_5.h index adaae4bd8a..01d568af40 100644 --- a/src/data/pokemon/species_info/gen_5.h +++ b/src/data/pokemon/species_info/gen_5.h @@ -8733,7 +8733,9 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .evYield_Attack = 1, .evYield_Defense = 1, .description = COMPOUND_STRING( - ""), + "Meloetta's melodies are sung with\n" + "a special vocalization method that can\n" + "control the feelings of those who hear it."), FRONT_PIC(MeloettaPirouette, 40, 64), .frontPicYOffset = 2, .frontAnimFrames = sAnims_MeloettaPirouette, diff --git a/src/data/pokemon/species_info/gen_6.h b/src/data/pokemon/species_info/gen_6.h index ba7d054934..ca975bd991 100644 --- a/src/data/pokemon/species_info/gen_6.h +++ b/src/data/pokemon/species_info/gen_6.h @@ -4332,7 +4332,10 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .height = 11, .weight = 278, .description = COMPOUND_STRING( - ""), + "The impurities upon its body's surface\n" + "have fallen away, sparkling so brilliantly\n" + "that cannot be observed directly.\n" + "It is known as “the Royal Pink Princess”."), .pokemonScale = 365, .pokemonOffset = 12, .trainerScale = 256, @@ -4422,7 +4425,10 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .height = 65, .weight = 490, .description = COMPOUND_STRING( - ""), + "It is the true form of Hoopa, which has had\n" + "its power sealed away. The rings it carries\n" + "have the power to bend dimensions and are\n" + "able to seize anything in the world."), .pokemonScale = 432, .pokemonOffset = 13, .trainerScale = 256, diff --git a/src/data/pokemon/species_info/gen_8.h b/src/data/pokemon/species_info/gen_8.h index 89a176bc55..724bfb19d4 100644 --- a/src/data/pokemon/species_info/gen_8.h +++ b/src/data/pokemon/species_info/gen_8.h @@ -2097,8 +2097,10 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .height = 220, .weight = 0, .description = COMPOUND_STRING( - "") -, + "Its sand pouch has grown to tremendous\n" + "proportions. More than 1,000,000 tons of\n" + "sand now swirl around its body with enough\n" + "speed and power to pulverize a skyscraper."), .pokemonScale = 256, .pokemonOffset = 0, .trainerScale = 610, @@ -3372,7 +3374,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = #if P_GIGANTAMAX_FORMS [SPECIES_ALCREMIE_GIGANTAMAX] = { - ALCREMIE_MISC_INFO(BODY_COLOR_PINK), + ALCREMIE_MISC_INFO(BODY_COLOR_YELLOW), .isGigantamax = TRUE, .speciesName = _("Alcremie"), .cryId = CRY_ALCREMIE, diff --git a/src/data/pokemon/species_info/gen_9.h b/src/data/pokemon/species_info/gen_9.h index 95389eeb8e..29726b2c96 100644 --- a/src/data/pokemon/species_info/gen_9.h +++ b/src/data/pokemon/species_info/gen_9.h @@ -1622,7 +1622,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE }, .abilities = { ABILITY_FLASH_FIRE, ABILITY_NONE, ABILITY_WEAK_ARMOR }, - .bodyColor = BODY_COLOR_BLUE, + .bodyColor = BODY_COLOR_PURPLE, .speciesName = _("Ceruledge"), .cryId = CRY_CERULEDGE, .natDexNum = NATIONAL_DEX_CERULEDGE, @@ -3670,7 +3670,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = [SPECIES_TATSUGIRI_CURLY] = { TATSUGIRI_MISC_INFO, - .bodyColor = BODY_COLOR_PINK, + .bodyColor = BODY_COLOR_RED, .cryId = CRY_TATSUGIRI_CURLY, .description = COMPOUND_STRING( "This is a small dragon Pokémon. It\n" @@ -3686,7 +3686,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = [SPECIES_TATSUGIRI_DROOPY] = { TATSUGIRI_MISC_INFO, - .bodyColor = BODY_COLOR_RED, + .bodyColor = BODY_COLOR_PINK, .cryId = CRY_TATSUGIRI_DROOPY, .description = COMPOUND_STRING( "This Pokémon tricks its opponents\n" @@ -3833,7 +3833,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, .abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE }, - .bodyColor = BODY_COLOR_GRAY, + .bodyColor = BODY_COLOR_WHITE, .isParadoxForm = TRUE, .speciesName = _("BruteBonet"), .cryId = CRY_BRUTE_BONNET, @@ -3936,7 +3936,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, .abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE }, - .bodyColor = BODY_COLOR_RED, + .bodyColor = BODY_COLOR_WHITE, .isParadoxForm = TRUE, .speciesName = _("SlithrWing"), .cryId = CRY_SLITHER_WING, @@ -4236,7 +4236,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, .abilities = { ABILITY_QUARK_DRIVE, ABILITY_NONE }, - .bodyColor = BODY_COLOR_YELLOW, + .bodyColor = BODY_COLOR_WHITE, .isParadoxForm = TRUE, .speciesName = _("Iron Moth"), .cryId = CRY_IRON_MOTH, @@ -4385,7 +4385,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_MINERAL }, .abilities = { ABILITY_THERMAL_EXCHANGE, ABILITY_NONE, ABILITY_ICE_BODY }, - .bodyColor = BODY_COLOR_GRAY, + .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Arctibax"), .cryId = CRY_ARCTIBAX, .natDexNum = NATIONAL_DEX_ARCTIBAX, @@ -4433,7 +4433,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_MINERAL }, .abilities = { ABILITY_THERMAL_EXCHANGE, ABILITY_NONE, ABILITY_ICE_BODY }, - .bodyColor = BODY_COLOR_GRAY, + .bodyColor = BODY_COLOR_BLUE, .speciesName = _("Baxcalibur"), .cryId = CRY_BAXCALIBUR, .natDexNum = NATIONAL_DEX_BAXCALIBUR, @@ -4495,7 +4495,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .baseSpAttack = 75, .baseSpDefense = 70, .abilities = { ABILITY_RATTLED, ABILITY_NONE }, - .bodyColor = BODY_COLOR_BROWN, + .bodyColor = BODY_COLOR_RED, .categoryName = _("Coin Chest"), .height = 3, .weight = 50, @@ -4526,7 +4526,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .baseSpAttack = 75, .baseSpDefense = 45, .abilities = { ABILITY_RUN_AWAY, ABILITY_NONE }, - .bodyColor = BODY_COLOR_BLUE, + .bodyColor = BODY_COLOR_GRAY, .categoryName = _("Coin Hunter"), .height = 1, .weight = 1, @@ -4815,7 +4815,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, .abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE }, - .bodyColor = BODY_COLOR_GREEN, + .bodyColor = BODY_COLOR_BLUE, .isParadoxForm = TRUE, .speciesName = _("RoarngMoon"), .cryId = CRY_ROARING_MOON, @@ -4966,7 +4966,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .growthRate = GROWTH_SLOW, .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, .abilities = { ABILITY_HADRON_ENGINE, ABILITY_NONE, ABILITY_NONE }, - .bodyColor = BODY_COLOR_BLUE, + .bodyColor = BODY_COLOR_PURPLE, .isLegendary = TRUE, .isParadoxForm = TRUE, .speciesName = _("Miraidon"), diff --git a/src/pokedex.c b/src/pokedex.c index 5fb1911ac5..a7aa98c424 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -4376,12 +4376,12 @@ u16 GetKantoPokedexCount(u8 caseID) bool16 HasAllHoennMons(void) { - u16 i; + u32 i, j; - // -2 excludes Jirachi and Deoxys - for (i = 0; i < HOENN_DEX_COUNT - 2; i++) + for (i = 0; i < HOENN_DEX_COUNT; i++) { - if (!GetSetPokedexFlag(HoennToNationalOrder(i + 1), FLAG_GET_CAUGHT)) + j = HoennToNationalOrder(i + 1); + if (!(gSpeciesInfo[j].isMythical && !gSpeciesInfo[j].dexForceRequired) && !GetSetPokedexFlag(j, FLAG_GET_CAUGHT)) return FALSE; } return TRUE; @@ -4389,7 +4389,7 @@ bool16 HasAllHoennMons(void) bool8 HasAllKantoMons(void) { - u16 i; + u32 i; // -1 excludes Mew for (i = 0; i < KANTO_DEX_COUNT - 1; i++) @@ -4402,11 +4402,12 @@ bool8 HasAllKantoMons(void) bool16 HasAllMons(void) { - u16 i; + u32 i, j; for (i = 1; i < NATIONAL_DEX_COUNT + 1; i++) { - if (!(gSpeciesInfo[i].isMythical) && !GetSetPokedexFlag(i, FLAG_GET_CAUGHT)) + j = NationalPokedexNumToSpecies(i); + if (!(gSpeciesInfo[j].isMythical && !gSpeciesInfo[j].dexForceRequired) && !GetSetPokedexFlag(j, FLAG_GET_CAUGHT)) return FALSE; } diff --git a/src/pokedex_plus_hgss.c b/src/pokedex_plus_hgss.c index 05e4bc6775..701fc3a4f7 100644 --- a/src/pokedex_plus_hgss.c +++ b/src/pokedex_plus_hgss.c @@ -199,7 +199,7 @@ static const u8 sText_Dex_OWN[] = _("OWN"); static const u8 sText_EVO_Buttons[] = _("{DPAD_UPDOWN}EVOs {A_BUTTON}CHECK"); static const u8 sText_EVO_Buttons_Decapped[] = _("{DPAD_UPDOWN}Evos {A_BUTTON}Check"); static const u8 sText_EVO_Buttons_PE[] = _("{DPAD_UPDOWN}EVOs {A_BUTTON}CHECK {START_BUTTON}FORMs"); -static const u8 sText_EVO_Buttons_Decapped_PE[] = _("{DPAD_UPDOWN}Evos {A_BUTTON}Check {START_BUTTON}Froms"); +static const u8 sText_EVO_Buttons_Decapped_PE[] = _("{DPAD_UPDOWN}Evos {A_BUTTON}Check {START_BUTTON}Forms"); static const u8 sText_EVO_Name[] = _("{STR_VAR_3}:"); static const u8 sText_EVO_PreEvo[] = _("{STR_VAR_1} evolves from {STR_VAR_2}"); static const u8 sText_EVO_PreEvo_PE_Mega[] = _("{STR_VAR_1} Mega Evolves with {STR_VAR_2}"); diff --git a/test/battle/move_effect/syrup_bomb.c b/test/battle/move_effect/syrup_bomb.c index f286049e1a..57831abb55 100644 --- a/test/battle/move_effect/syrup_bomb.c +++ b/test/battle/move_effect/syrup_bomb.c @@ -164,3 +164,51 @@ SINGLE_BATTLE_TEST("Sticky syrup will not decrease speed further then minus six" } } } + +SINGLE_BATTLE_TEST("Sticky Syrup is removed when the user switches out") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_SYRUP_BOMB); } + TURN { SWITCH(player, 1); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SYRUP_BOMB, player); + HP_BAR(opponent); + MESSAGE("Foe Wobbuffet got covered in sticky syrup!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SYRUP_BOMB_SPEED_DROP, opponent); + MESSAGE("Foe Wobbuffet's Speed fell!"); + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SYRUP_BOMB_SPEED_DROP, opponent); + MESSAGE("Foe Wobbuffet's Speed fell!"); + } + } +} + +SINGLE_BATTLE_TEST("Sticky Syrup is removed when the user faints") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { HP(1); } + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_SYRUP_BOMB); + MOVE(opponent, MOVE_TACKLE); + SEND_OUT(player, 1); + } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SYRUP_BOMB, player); + HP_BAR(opponent); + MESSAGE("Foe Wobbuffet got covered in sticky syrup!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + HP_BAR(player); + MESSAGE("Wobbuffet fainted!"); + MESSAGE("Go! Wynaut!"); + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SYRUP_BOMB_SPEED_DROP, opponent); + MESSAGE("Foe Wobbuffet's Speed fell!"); + } + } +}