diff --git a/graphics/pokemon/enamorus/anim_front.png b/graphics/pokemon/enamorus/anim_front.png new file mode 100644 index 0000000000..e4b21fc52a Binary files /dev/null and b/graphics/pokemon/enamorus/anim_front.png differ diff --git a/graphics/pokemon/enamorus/back.png b/graphics/pokemon/enamorus/back.png index 1b2b00e218..17668de576 100755 Binary files a/graphics/pokemon/enamorus/back.png and b/graphics/pokemon/enamorus/back.png differ diff --git a/graphics/pokemon/enamorus/front.png b/graphics/pokemon/enamorus/front.png deleted file mode 100755 index c679b07e57..0000000000 Binary files a/graphics/pokemon/enamorus/front.png and /dev/null differ diff --git a/graphics/pokemon/enamorus/normal.pal b/graphics/pokemon/enamorus/normal.pal index 08f6e5ebf1..b8986ffd46 100755 --- a/graphics/pokemon/enamorus/normal.pal +++ b/graphics/pokemon/enamorus/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 153 211 165 -74 74 74 +255 255 255 180 180 189 -252 252 252 +105 106 115 16 16 16 -118 50 58 -147 33 30 -224 116 156 -243 46 46 -174 74 87 -199 46 41 -243 84 143 -187 62 94 -255 197 60 -239 228 176 -0 0 0 +237 129 170 +185 81 133 +126 44 70 +255 203 81 +201 50 96 +157 36 61 +40 40 40 +177 109 135 +123 79 110 +82 50 75 +111 26 47 diff --git a/graphics/pokemon/enamorus/shiny.pal b/graphics/pokemon/enamorus/shiny.pal index 180ae687e5..41b6650a75 100644 --- a/graphics/pokemon/enamorus/shiny.pal +++ b/graphics/pokemon/enamorus/shiny.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -152 208 160 -74 74 74 -180 180 189 +153 211 165 255 255 255 -0 0 0 -131 57 82 -164 24 24 -230 131 164 -255 90 0 -189 82 106 -222 74 41 -255 139 238 -205 98 189 +194 184 173 +115 107 104 +16 16 16 +251 142 224 +198 83 185 +127 58 131 255 197 32 -0 0 0 -0 0 0 +246 81 4 +205 35 35 +40 40 40 +230 131 164 +189 82 106 +107 51 74 +140 29 49 diff --git a/graphics/pokemon/enamorus/therian/back.png b/graphics/pokemon/enamorus/therian/back.png index a563156e4d..04a5286fc1 100644 Binary files a/graphics/pokemon/enamorus/therian/back.png and b/graphics/pokemon/enamorus/therian/back.png differ diff --git a/graphics/pokemon/enamorus/therian/front.png b/graphics/pokemon/enamorus/therian/front.png index 8ac7c93f06..e51457cf8e 100644 Binary files a/graphics/pokemon/enamorus/therian/front.png and b/graphics/pokemon/enamorus/therian/front.png differ diff --git a/graphics/pokemon/enamorus/therian/normal.pal b/graphics/pokemon/enamorus/therian/normal.pal index 096dfb36af..e2ddf78389 100644 --- a/graphics/pokemon/enamorus/therian/normal.pal +++ b/graphics/pokemon/enamorus/therian/normal.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -156 213 164 -131 41 49 -213 106 156 +152 208 160 +112 48 56 +72 72 72 +144 32 24 +192 40 40 +240 40 40 +184 56 88 +168 72 80 +248 192 56 +240 80 136 +224 112 152 +176 176 184 16 16 16 -213 65 57 -74 74 74 -255 255 255 -180 180 189 -255 197 57 -123 164 131 -98 115 98 -148 197 156 -230 246 230 -49 57 49 -213 106 156 +248 248 248 +0 0 0 0 0 0 diff --git a/graphics/pokemon/enamorus/therian/shiny.pal b/graphics/pokemon/enamorus/therian/shiny.pal index 58c5564621..a84be28f03 100644 --- a/graphics/pokemon/enamorus/therian/shiny.pal +++ b/graphics/pokemon/enamorus/therian/shiny.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -156 213 164 -131 41 49 -213 106 156 +152 208 160 +112 56 80 +72 72 72 +136 32 32 +192 72 48 +240 88 16 +176 96 176 +168 80 104 +248 192 56 +232 128 224 +200 128 152 +176 176 184 16 16 16 -213 65 57 -74 74 74 -255 255 255 -180 180 189 -255 197 57 -123 164 131 -98 115 98 -148 197 156 -230 246 230 -49 57 49 -238 131 230 +248 248 248 +0 0 0 0 0 0 diff --git a/graphics/pokemon/ogerpon/back.png b/graphics/pokemon/ogerpon/back.png index 75f309fd67..8cd9136f9e 100644 Binary files a/graphics/pokemon/ogerpon/back.png and b/graphics/pokemon/ogerpon/back.png differ diff --git a/graphics/pokemon/ogerpon/cornerstone/back.png b/graphics/pokemon/ogerpon/cornerstone/back.png index 7e40fee557..ffface9d68 100644 Binary files a/graphics/pokemon/ogerpon/cornerstone/back.png and b/graphics/pokemon/ogerpon/cornerstone/back.png differ diff --git a/graphics/pokemon/ogerpon/cornerstone/front.png b/graphics/pokemon/ogerpon/cornerstone/front.png index 8e96be70e7..9b7f279238 100644 Binary files a/graphics/pokemon/ogerpon/cornerstone/front.png and b/graphics/pokemon/ogerpon/cornerstone/front.png differ diff --git a/graphics/pokemon/ogerpon/cornerstone/normal.pal b/graphics/pokemon/ogerpon/cornerstone/normal.pal index 852898a6b7..eb11f81f7e 100644 --- a/graphics/pokemon/ogerpon/cornerstone/normal.pal +++ b/graphics/pokemon/ogerpon/cornerstone/normal.pal @@ -1,18 +1,19 @@ JASC-PAL 0100 -15 -148 209 161 -0 0 0 -42 44 41 -21 158 7 -74 76 73 -61 113 53 -25 27 24 -109 99 108 -133 139 139 -53 134 168 -55 189 227 -194 139 62 -255 197 74 -212 230 247 -144 92 38 +16 +238 230 180 +49 49 49 +148 156 148 +16 16 16 +65 115 49 +90 172 49 +90 98 106 +41 41 41 +74 74 74 +0 213 255 +24 24 24 +0 148 180 +255 222 65 +255 255 255 +238 156 0 +139 98 57 diff --git a/graphics/pokemon/ogerpon/cornerstone/shiny.pal b/graphics/pokemon/ogerpon/cornerstone/shiny.pal index c4956ce774..71dd9d6e9e 100644 --- a/graphics/pokemon/ogerpon/cornerstone/shiny.pal +++ b/graphics/pokemon/ogerpon/cornerstone/shiny.pal @@ -1,18 +1,19 @@ JASC-PAL 0100 -15 -148 209 161 -0 0 0 -42 44 41 -21 158 7 -74 76 73 -61 113 53 -25 27 24 -109 99 108 -133 139 139 -53 134 168 -55 189 227 -194 139 62 -255 197 74 -212 230 247 -124 162 56 +16 +238 230 180 +49 49 49 +148 156 148 +16 16 16 +65 115 49 +90 172 49 +90 98 106 +41 41 41 +74 74 74 +0 213 255 +24 24 24 +0 148 180 +255 222 65 +255 255 255 +164 205 24 +139 98 57 diff --git a/graphics/pokemon/ogerpon/front.png b/graphics/pokemon/ogerpon/front.png index dec38ef0b8..6c2a769081 100644 Binary files a/graphics/pokemon/ogerpon/front.png and b/graphics/pokemon/ogerpon/front.png differ diff --git a/graphics/pokemon/ogerpon/hearthflame/back.png b/graphics/pokemon/ogerpon/hearthflame/back.png index d6d927f19d..73f95efbf2 100644 Binary files a/graphics/pokemon/ogerpon/hearthflame/back.png and b/graphics/pokemon/ogerpon/hearthflame/back.png differ diff --git a/graphics/pokemon/ogerpon/hearthflame/front.png b/graphics/pokemon/ogerpon/hearthflame/front.png index d8b9cb7b23..098041cf76 100644 Binary files a/graphics/pokemon/ogerpon/hearthflame/front.png and b/graphics/pokemon/ogerpon/hearthflame/front.png differ diff --git a/graphics/pokemon/ogerpon/hearthflame/normal.pal b/graphics/pokemon/ogerpon/hearthflame/normal.pal index 3f478af8aa..2ed9b8c050 100644 --- a/graphics/pokemon/ogerpon/hearthflame/normal.pal +++ b/graphics/pokemon/ogerpon/hearthflame/normal.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -148 210 164 -0 0 0 -41 44 41 -16 157 0 -230 60 49 -57 113 49 -49 133 172 -131 28 24 -213 230 246 -255 198 74 -172 105 32 -156 153 172 -49 190 230 -164 52 49 -74 76 74 -189 137 90 +238 230 180 +74 74 74 +213 156 24 +255 222 65 +65 115 49 +90 172 49 +16 16 16 +41 41 41 +238 57 41 +156 16 16 +82 8 8 +255 255 255 +238 156 0 +123 106 49 +0 213 255 +139 98 57 diff --git a/graphics/pokemon/ogerpon/hearthflame/shiny.pal b/graphics/pokemon/ogerpon/hearthflame/shiny.pal index fee0f8de7b..81f60abe80 100644 --- a/graphics/pokemon/ogerpon/hearthflame/shiny.pal +++ b/graphics/pokemon/ogerpon/hearthflame/shiny.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -148 210 164 -0 0 0 -41 44 41 -16 157 0 -230 60 49 -57 113 49 -49 133 172 -131 28 24 -213 230 246 -255 198 74 -124 162 56 -156 153 172 -49 190 230 -164 52 49 -74 76 74 -189 137 90 +238 230 180 +74 74 74 +213 156 24 +255 222 65 +65 115 49 +90 172 49 +16 16 16 +41 41 41 +238 57 41 +156 16 16 +82 8 8 +255 255 255 +164 205 24 +123 106 49 +0 213 255 +139 98 57 diff --git a/graphics/pokemon/ogerpon/normal.pal b/graphics/pokemon/ogerpon/normal.pal index a1ac4baf96..f578e22342 100644 --- a/graphics/pokemon/ogerpon/normal.pal +++ b/graphics/pokemon/ogerpon/normal.pal @@ -1,18 +1,19 @@ JASC-PAL 0100 -15 -148 209 161 -0 1 0 -42 44 41 -21 158 7 -27 70 15 -61 113 53 -17 106 68 -83 133 90 -74 76 73 -175 216 159 -251 253 250 -139 99 57 -0 164 153 -120 81 39 -219 157 92 +16 +238 230 180 +41 41 41 +65 115 49 +74 74 74 +8 164 156 +90 172 49 +16 16 16 +8 106 65 +180 222 164 +255 255 255 +98 164 24 +82 180 98 +238 156 0 +139 98 57 +255 222 65 +222 156 90 diff --git a/graphics/pokemon/ogerpon/shiny.pal b/graphics/pokemon/ogerpon/shiny.pal index 08c751ebda..02b6d9c5ae 100644 --- a/graphics/pokemon/ogerpon/shiny.pal +++ b/graphics/pokemon/ogerpon/shiny.pal @@ -1,18 +1,19 @@ JASC-PAL 0100 -15 -148 209 161 -0 1 0 -42 44 41 -21 158 7 -27 70 15 -61 113 53 -17 106 68 -83 133 90 -74 76 73 -175 216 159 -251 253 250 -139 99 57 -0 164 153 -124 162 56 -219 157 92 +16 +238 230 180 +41 41 41 +65 115 49 +74 74 74 +8 164 156 +90 172 49 +16 16 16 +8 106 65 +180 222 164 +255 255 255 +98 164 24 +82 180 98 +164 205 24 +139 98 57 +255 222 65 +222 156 90 diff --git a/graphics/pokemon/ogerpon/wellspring/back.png b/graphics/pokemon/ogerpon/wellspring/back.png index 87d82032f4..d90a8afe3e 100644 Binary files a/graphics/pokemon/ogerpon/wellspring/back.png and b/graphics/pokemon/ogerpon/wellspring/back.png differ diff --git a/graphics/pokemon/ogerpon/wellspring/front.png b/graphics/pokemon/ogerpon/wellspring/front.png index 77ffb489a5..556f9f2688 100644 Binary files a/graphics/pokemon/ogerpon/wellspring/front.png and b/graphics/pokemon/ogerpon/wellspring/front.png differ diff --git a/graphics/pokemon/ogerpon/wellspring/normal.pal b/graphics/pokemon/ogerpon/wellspring/normal.pal index db40508a52..b91b6ee255 100644 --- a/graphics/pokemon/ogerpon/wellspring/normal.pal +++ b/graphics/pokemon/ogerpon/wellspring/normal.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -148 209 161 -0 0 0 -42 44 41 -21 158 7 -11 64 121 -61 113 53 -74 76 73 -15 90 170 -0 126 229 -53 134 168 -71 85 100 -55 189 227 -212 230 247 -147 91 33 -169 122 74 -152 155 171 +238 230 180 +65 115 49 +90 172 49 +16 16 16 +8 65 131 +41 41 41 +0 131 230 +74 74 74 +139 98 57 +8 90 180 +57 213 255 +205 222 255 +238 156 0 +255 222 65 +255 255 255 +156 205 222 diff --git a/graphics/pokemon/ogerpon/wellspring/shiny.pal b/graphics/pokemon/ogerpon/wellspring/shiny.pal index 7c44d3352d..4f4e60c157 100644 --- a/graphics/pokemon/ogerpon/wellspring/shiny.pal +++ b/graphics/pokemon/ogerpon/wellspring/shiny.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -148 209 161 -0 0 0 -42 44 41 -21 158 7 -11 64 121 -61 113 53 -74 76 73 -15 90 170 -0 126 229 -53 134 168 -71 85 100 -55 189 227 -212 230 247 -124 162 56 -169 122 74 -152 155 171 +238 230 180 +65 115 49 +90 172 49 +16 16 16 +8 65 131 +41 41 41 +0 131 230 +74 74 74 +139 98 57 +8 90 180 +57 213 255 +205 222 255 +164 205 24 +255 222 65 +255 255 255 +156 205 222 diff --git a/graphics/pokemon/sinistcha/back.png b/graphics/pokemon/sinistcha/back.png index dbb51bbf33..b9df7c5e4d 100644 Binary files a/graphics/pokemon/sinistcha/back.png and b/graphics/pokemon/sinistcha/back.png differ diff --git a/graphics/pokemon/sinistcha/front.png b/graphics/pokemon/sinistcha/front.png index 4131a22b9f..eeb1b7a71a 100644 Binary files a/graphics/pokemon/sinistcha/front.png and b/graphics/pokemon/sinistcha/front.png differ diff --git a/graphics/pokemon/sinistcha/normal.pal b/graphics/pokemon/sinistcha/normal.pal index 16008ccdf1..0697645151 100644 --- a/graphics/pokemon/sinistcha/normal.pal +++ b/graphics/pokemon/sinistcha/normal.pal @@ -1,18 +1,19 @@ JASC-PAL 0100 -15 -115 197 164 +16 +153 210 164 +37 27 27 76 58 58 +57 103 37 105 68 27 -147 138 68 -159 153 130 -219 210 145 -167 186 114 -45 33 33 -51 99 34 +106 91 32 93 158 74 120 196 99 -247 215 98 +160 151 80 +135 132 126 +167 186 114 +204 195 116 +247 218 103 +193 185 174 5 5 5 -208 210 193 -241 237 235 +230 225 219 diff --git a/graphics/pokemon/sinistcha/shiny.pal b/graphics/pokemon/sinistcha/shiny.pal index c769e9d1a1..6b9d62ab8c 100644 --- a/graphics/pokemon/sinistcha/shiny.pal +++ b/graphics/pokemon/sinistcha/shiny.pal @@ -1,18 +1,19 @@ JASC-PAL 0100 -15 -115 197 164 +16 +153 210 164 +10 48 0 32 88 15 -105 68 27 -147 138 68 -159 153 130 -219 210 145 -167 186 114 -45 33 33 -51 99 34 +57 103 37 +143 133 51 +106 91 32 93 158 74 120 196 99 -247 215 98 +160 151 80 +135 132 126 +167 186 114 +204 195 116 +247 218 103 +193 185 174 5 5 5 -208 210 193 -241 237 235 +230 225 219 diff --git a/include/config/battle.h b/include/config/battle.h index 0ac1eb04eb..9657d4646e 100644 --- a/include/config/battle.h +++ b/include/config/battle.h @@ -223,6 +223,7 @@ #define B_SECRET_POWER_ANIMATION GEN_LATEST // Secret Power's animations change depending on terrain and generation. #define B_NATURE_POWER_MOVES GEN_LATEST // Nature Power calls different moves depending on terrain and generation. See sNaturePowerMoves. #define B_CAMOUFLAGE_TYPES GEN_LATEST // Camouflage changes the user to different types depending on terrain and generation. See sTerrainToType. +#define B_NEW_TERRAIN_BACKGROUNDS FALSE // If set to TRUE, uses new terrain backgrounds for Electric, Misty, Grassy and Psychic Terrain. // Interface settings #define B_ABILITY_POP_UP TRUE // In Gen5+, the Pokémon abilities are displayed in a pop-up, when they activate in battle. diff --git a/src/battle_util.c b/src/battle_util.c index 689f4e0d76..ced04e91d1 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -8607,7 +8607,7 @@ bool32 IsBattlerProtected(u32 battlerAtk, u32 battlerDef, u32 move) && IsMoveMakingContact(move, gBattlerAttacker) && GetBattlerAbility(gBattlerAttacker) == ABILITY_UNSEEN_FIST) isProtected = FALSE; - else if (gSideStatuses[GetBattlerSide(battlerDef)] & SIDE_STATUS_CRAFTY_SHIELD && IS_MOVE_STATUS(move)) + else if (gSideStatuses[GetBattlerSide(battlerDef)] & SIDE_STATUS_CRAFTY_SHIELD && IS_MOVE_STATUS(move) && gMovesInfo[move].effect != EFFECT_COACHING) isProtected = TRUE; else if (gMovesInfo[move].ignoresProtect) isProtected = FALSE; diff --git a/src/data/graphics/pokemon.h b/src/data/graphics/pokemon.h index 39b11560d4..8801942e53 100644 --- a/src/data/graphics/pokemon.h +++ b/src/data/graphics/pokemon.h @@ -18880,7 +18880,7 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_ #endif //P_FAMILY_LANDORUS #if P_FAMILY_ENAMORUS - const u32 gMonFrontPic_EnamorusIncarnate[] = INCBIN_U32("graphics/pokemon/enamorus/front.4bpp.lz"); + const u32 gMonFrontPic_EnamorusIncarnate[] = INCBIN_U32("graphics/pokemon/enamorus/anim_front.4bpp.lz"); const u32 gMonPalette_EnamorusIncarnate[] = INCBIN_U32("graphics/pokemon/enamorus/normal.gbapal.lz"); const u32 gMonBackPic_EnamorusIncarnate[] = INCBIN_U32("graphics/pokemon/enamorus/back.4bpp.lz"); const u32 gMonShinyPalette_EnamorusIncarnate[] = INCBIN_U32("graphics/pokemon/enamorus/shiny.gbapal.lz"); diff --git a/src/data/pokemon/species_info/gen_8_families.h b/src/data/pokemon/species_info/gen_8_families.h index 37eefda7f9..ee08542523 100644 --- a/src/data/pokemon/species_info/gen_8_families.h +++ b/src/data/pokemon/species_info/gen_8_families.h @@ -2655,7 +2655,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .backPic = gMonBackPic_Dipplin, .backPicSize = MON_COORDS_SIZE(64, 64), - .backPicYOffset = 0, + .backPicYOffset = 1, //.backAnimId = BACK_ANIM_NONE, .palette = gMonPalette_Dipplin, .shinyPalette = gMonShinyPalette_Dipplin, @@ -7660,7 +7660,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .trainerOffset = 1, .frontPic = gMonFrontPic_EnamorusIncarnate, .frontPicSize = MON_COORDS_SIZE(64, 64), - .frontPicYOffset = 1, + .frontPicYOffset = 0, .frontAnimFrames = sAnims_EnamorusIncarnate, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 7, @@ -7672,7 +7672,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .shinyPalette = gMonShinyPalette_EnamorusIncarnate, .iconSprite = gMonIcon_EnamorusIncarnate, .iconPalIndex = 1, - SHADOW(0, 17, SHADOW_SIZE_M) + SHADOW(-3, 19, SHADOW_SIZE_M) FOOTPRINT(Enamorus) OVERWORLD( sPicTable_EnamorusIncarnate, @@ -7730,7 +7730,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .backPic = gMonBackPic_EnamorusTherian, .backPicSize = MON_COORDS_SIZE(64, 64), - .backPicYOffset = 2, + .backPicYOffset = 0, //.backAnimId = BACK_ANIM_NONE, .palette = gMonPalette_EnamorusTherian, .shinyPalette = gMonShinyPalette_EnamorusTherian, diff --git a/src/data/pokemon/species_info/gen_9_families.h b/src/data/pokemon/species_info/gen_9_families.h index d617d36f1b..7402619b9a 100644 --- a/src/data/pokemon/species_info/gen_9_families.h +++ b/src/data/pokemon/species_info/gen_9_families.h @@ -7086,13 +7086,13 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .trainerOffset = 0, .frontPic = gMonFrontPic_Sinistcha, .frontPicSize = MON_COORDS_SIZE(64, 64), - .frontPicYOffset = 10, + .frontPicYOffset = 3, .frontAnimFrames = sAnims_Sinistcha, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 10, .backPic = gMonBackPic_Sinistcha, .backPicSize = MON_COORDS_SIZE(64, 64), - .backPicYOffset = 13, + .backPicYOffset = 4, //.backAnimId = BACK_ANIM_NONE, .palette = gMonPalette_Sinistcha, .shinyPalette = gMonShinyPalette_Sinistcha, @@ -7147,13 +7147,13 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .trainerOffset = 0, .frontPic = gMonFrontPic_Sinistcha, .frontPicSize = MON_COORDS_SIZE(64, 64), - .frontPicYOffset = 10, + .frontPicYOffset = 3, .frontAnimFrames = sAnims_Sinistcha, //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, .enemyMonElevation = 10, .backPic = gMonBackPic_Sinistcha, .backPicSize = MON_COORDS_SIZE(64, 64), - .backPicYOffset = 13, + .backPicYOffset = 4, //.backAnimId = BACK_ANIM_NONE, .palette = gMonPalette_Sinistcha, .shinyPalette = gMonShinyPalette_Sinistcha, @@ -7370,78 +7370,78 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = #endif //P_FAMILY_FEZANDIPITI #if P_FAMILY_OGERPON -#define OGERPON_SPECIES_INFO(Form1, Form2, type, ability, color, iconpalette, isTeraform) \ - { \ - .baseHP = 80, \ - .baseAttack = 120, \ - .baseDefense = 84, \ - .baseSpeed = 110, \ - .baseSpAttack = 60, \ - .baseSpDefense = 96, \ - .types = MON_TYPES(TYPE_GRASS, type), \ - .forceTeraType = type, \ - .catchRate = 5, \ - .expYield = 275, \ - .evYield_Attack = 3, \ - .genderRatio = MON_FEMALE, \ - .eggCycles = 10, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), \ - .abilities = { ability, ABILITY_NONE }, \ - .bodyColor = color, \ - .speciesName = _("Ogerpon"), \ - .cryId = CRY_OGERPON, \ - .natDexNum = NATIONAL_DEX_OGERPON, \ - .categoryName = _("Mask"), \ - .height = 12, \ - .weight = 398, \ - .description = gOgerpon##Form1##MaskPokedexText, \ - .pokemonScale = 356, \ - .pokemonOffset = 17, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - .frontPic = gMonFrontPic_Ogerpon##Form2, \ - .frontPicSize = MON_COORDS_SIZE(64, 64), \ - .frontPicYOffset = 0, \ - .frontAnimFrames = sAnims_Ogerpon, \ - /*.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,*/ \ - .backPic = gMonBackPic_Ogerpon##Form2, \ - .backPicSize = MON_COORDS_SIZE(64, 64), \ - .backPicYOffset = 0, \ - /*.backAnimId = BACK_ANIM_NONE,*/ \ - .palette = gMonPalette_Ogerpon##Form2, \ - .shinyPalette = gMonShinyPalette_Ogerpon##Form2, \ - .iconSprite = gMonIcon_Ogerpon##Form1, \ - .iconPalIndex = iconpalette, \ - SHADOW(7, 13, SHADOW_SIZE_L) \ - FOOTPRINT(Ogerpon) \ - OVERWORLD( \ - sPicTable_Ogerpon##Form2, \ - SIZE_32x32, \ - SHADOW_SIZE_M, \ - TRACKS_FOOT, \ - gOverworldPalette_Ogerpon##Form2, \ - gShinyOverworldPalette_Ogerpon##Form2 \ - ) \ - .levelUpLearnset = sOgerponLevelUpLearnset, \ - .teachableLearnset = sOgerponTeachableLearnset, \ - .formSpeciesIdTable = sOgerponFormSpeciesIdTable, \ - .formChangeTable = sOgerponFormChangeTable, \ - .isLegendary = TRUE, \ - .isTeraForm = isTeraform, \ - .perfectIVCount = LEGENDARY_PERFECT_IV_COUNT, \ +#define OGERPON_SPECIES_INFO(Form1, Form2, type, ability, color, frontYOffset, backYOffset, iconpalette, isTeraform) \ + { \ + .baseHP = 80, \ + .baseAttack = 120, \ + .baseDefense = 84, \ + .baseSpeed = 110, \ + .baseSpAttack = 60, \ + .baseSpDefense = 96, \ + .types = MON_TYPES(TYPE_GRASS, type), \ + .forceTeraType = type, \ + .catchRate = 5, \ + .expYield = 275, \ + .evYield_Attack = 3, \ + .genderRatio = MON_FEMALE, \ + .eggCycles = 10, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), \ + .abilities = { ability, ABILITY_NONE }, \ + .bodyColor = color, \ + .speciesName = _("Ogerpon"), \ + .cryId = CRY_OGERPON, \ + .natDexNum = NATIONAL_DEX_OGERPON, \ + .categoryName = _("Mask"), \ + .height = 12, \ + .weight = 398, \ + .description = gOgerpon##Form1##MaskPokedexText, \ + .pokemonScale = 356, \ + .pokemonOffset = 17, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .frontPic = gMonFrontPic_Ogerpon##Form2, \ + .frontPicSize = MON_COORDS_SIZE(64, 64), \ + .frontPicYOffset = frontYOffset, \ + .frontAnimFrames = sAnims_Ogerpon, \ + /*.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,*/ \ + .backPic = gMonBackPic_Ogerpon##Form2, \ + .backPicSize = MON_COORDS_SIZE(64, 64), \ + .backPicYOffset = backYOffset, \ + /*.backAnimId = BACK_ANIM_NONE,*/ \ + .palette = gMonPalette_Ogerpon##Form2, \ + .shinyPalette = gMonShinyPalette_Ogerpon##Form2, \ + .iconSprite = gMonIcon_Ogerpon##Form1, \ + .iconPalIndex = iconpalette, \ + SHADOW(7, 13, SHADOW_SIZE_L) \ + FOOTPRINT(Ogerpon) \ + OVERWORLD( \ + sPicTable_Ogerpon##Form2, \ + SIZE_32x32, \ + SHADOW_SIZE_M, \ + TRACKS_FOOT, \ + gOverworldPalette_Ogerpon##Form2, \ + gShinyOverworldPalette_Ogerpon##Form2 \ + ) \ + .levelUpLearnset = sOgerponLevelUpLearnset, \ + .teachableLearnset = sOgerponTeachableLearnset, \ + .formSpeciesIdTable = sOgerponFormSpeciesIdTable, \ + .formChangeTable = sOgerponFormChangeTable, \ + .isLegendary = TRUE, \ + .isTeraForm = isTeraform, \ + .perfectIVCount = LEGENDARY_PERFECT_IV_COUNT, \ } - [SPECIES_OGERPON_TEAL] = OGERPON_SPECIES_INFO(Teal, Teal, TYPE_GRASS, ABILITY_DEFIANT, BODY_COLOR_GREEN, 1, FALSE), - [SPECIES_OGERPON_WELLSPRING] = OGERPON_SPECIES_INFO(Wellspring, Wellspring, TYPE_WATER, ABILITY_WATER_ABSORB, BODY_COLOR_BLUE, 0, FALSE), - [SPECIES_OGERPON_HEARTHFLAME] = OGERPON_SPECIES_INFO(Hearthflame, Hearthflame, TYPE_FIRE, ABILITY_MOLD_BREAKER, BODY_COLOR_RED, 0, FALSE), - [SPECIES_OGERPON_CORNERSTONE] = OGERPON_SPECIES_INFO(Cornerstone, Cornerstone, TYPE_ROCK, ABILITY_STURDY, BODY_COLOR_GRAY, 0, FALSE), + [SPECIES_OGERPON_TEAL] = OGERPON_SPECIES_INFO(Teal, Teal, TYPE_GRASS, ABILITY_DEFIANT, BODY_COLOR_GREEN, 1, 7, 1, FALSE), + [SPECIES_OGERPON_WELLSPRING] = OGERPON_SPECIES_INFO(Wellspring, Wellspring, TYPE_WATER, ABILITY_WATER_ABSORB, BODY_COLOR_BLUE, 1, 7, 0, FALSE), + [SPECIES_OGERPON_HEARTHFLAME] = OGERPON_SPECIES_INFO(Hearthflame, Hearthflame, TYPE_FIRE, ABILITY_MOLD_BREAKER, BODY_COLOR_RED, 1, 7, 0, FALSE), + [SPECIES_OGERPON_CORNERSTONE] = OGERPON_SPECIES_INFO(Cornerstone, Cornerstone, TYPE_ROCK, ABILITY_STURDY, BODY_COLOR_GRAY, 1, 7, 0, FALSE), #if P_TERA_FORMS - [SPECIES_OGERPON_TEAL_TERA] = OGERPON_SPECIES_INFO(Teal, TealTera, TYPE_GRASS, ABILITY_EMBODY_ASPECT_TEAL_MASK, BODY_COLOR_GREEN, 1, TRUE), - [SPECIES_OGERPON_WELLSPRING_TERA] = OGERPON_SPECIES_INFO(Wellspring, WellspringTera, TYPE_WATER, ABILITY_EMBODY_ASPECT_WELLSPRING_MASK, BODY_COLOR_BLUE, 0, TRUE), - [SPECIES_OGERPON_HEARTHFLAME_TERA] = OGERPON_SPECIES_INFO(Hearthflame, HearthflameTera, TYPE_FIRE, ABILITY_EMBODY_ASPECT_HEARTHFLAME_MASK, BODY_COLOR_RED, 0, TRUE), - [SPECIES_OGERPON_CORNERSTONE_TERA] = OGERPON_SPECIES_INFO(Cornerstone, CornerstoneTera, TYPE_ROCK, ABILITY_EMBODY_ASPECT_CORNERSTONE_MASK, BODY_COLOR_GRAY, 0, TRUE), + [SPECIES_OGERPON_TEAL_TERA] = OGERPON_SPECIES_INFO(Teal, TealTera, TYPE_GRASS, ABILITY_EMBODY_ASPECT_TEAL_MASK, BODY_COLOR_GREEN, 0, 0, 1, TRUE), + [SPECIES_OGERPON_WELLSPRING_TERA] = OGERPON_SPECIES_INFO(Wellspring, WellspringTera, TYPE_WATER, ABILITY_EMBODY_ASPECT_WELLSPRING_MASK, BODY_COLOR_BLUE, 0, 0, 0, TRUE), + [SPECIES_OGERPON_HEARTHFLAME_TERA] = OGERPON_SPECIES_INFO(Hearthflame, HearthflameTera, TYPE_FIRE, ABILITY_EMBODY_ASPECT_HEARTHFLAME_MASK, BODY_COLOR_RED, 0, 0, 0, TRUE), + [SPECIES_OGERPON_CORNERSTONE_TERA] = OGERPON_SPECIES_INFO(Cornerstone, CornerstoneTera, TYPE_ROCK, ABILITY_EMBODY_ASPECT_CORNERSTONE_MASK, BODY_COLOR_GRAY, 0, 0, 0, TRUE), #endif //P_TERA_FORMS #endif //P_FAMILY_OGERPON diff --git a/src/data/pokemon_graphics/front_pic_anims.h b/src/data/pokemon_graphics/front_pic_anims.h index deceeb0420..56ec319a57 100644 --- a/src/data/pokemon_graphics/front_pic_anims.h +++ b/src/data/pokemon_graphics/front_pic_anims.h @@ -9794,7 +9794,7 @@ PLACEHOLDER_ANIM_SINGLE_FRAME(Calyrex); #endif //P_FAMILY_CALYREX #if P_FAMILY_ENAMORUS -PLACEHOLDER_ANIM_SINGLE_FRAME(EnamorusIncarnate); +PLACEHOLDER_ANIM_TWO_FRAMES(EnamorusIncarnate); PLACEHOLDER_ANIM_SINGLE_FRAME(EnamorusTherian); #endif //P_FAMILY_ENAMORUS diff --git a/test/battle/ability/flower_gift.c b/test/battle/ability/flower_gift.c index 68712641e0..5ceb26c5c1 100644 --- a/test/battle/ability/flower_gift.c +++ b/test/battle/ability/flower_gift.c @@ -63,7 +63,32 @@ SINGLE_BATTLE_TEST("Flower Gift transforms Cherrim back to normal when its abili } } -TO_DO_BATTLE_TEST("Forecast transforms Castform back to normal under Cloud Nine/Air Lock"); +SINGLE_BATTLE_TEST("Flower Gift transforms Cherrim back to normal under Cloud Nine/Air Lock") +{ + u32 species = 0, ability = 0; + PARAMETRIZE { species = SPECIES_PSYDUCK; ability = ABILITY_CLOUD_NINE; } + PARAMETRIZE { species = SPECIES_RAYQUAZA; ability = ABILITY_AIR_LOCK; } + GIVEN { + PLAYER(SPECIES_CHERRIM_OVERCAST) { Ability(ABILITY_FLOWER_GIFT); } + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(species) { Ability(ability); } + } WHEN { + TURN { MOVE(player, MOVE_SUNNY_DAY); } + TURN { SWITCH(opponent, 1); } + } SCENE { + // transforms + ABILITY_POPUP(player, ABILITY_FLOWER_GIFT); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); + MESSAGE("Cherrim transformed!"); + // back to normal + ABILITY_POPUP(opponent, ability); + ABILITY_POPUP(player, ABILITY_FLOWER_GIFT); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); + MESSAGE("Cherrim transformed!"); + } THEN { + EXPECT_EQ(player->species, SPECIES_CHERRIM_OVERCAST); + } +} DOUBLE_BATTLE_TEST("Flower Gift increases the attack of Cherrim and its allies by 1.5x", s16 damageL, s16 damageR) { diff --git a/test/battle/move_effect/coaching.c b/test/battle/move_effect/coaching.c index 2f50aceab5..451ac80495 100644 --- a/test/battle/move_effect/coaching.c +++ b/test/battle/move_effect/coaching.c @@ -1,8 +1,120 @@ #include "global.h" #include "test/battle.h" -TO_DO_BATTLE_TEST("Coaching raises Attack and Defense of ally by 1 stage each"); -TO_DO_BATTLE_TEST("Coaching doesn't raise stats of the user"); -TO_DO_BATTLE_TEST("Coaching bypasses protection of allies"); -TO_DO_BATTLE_TEST("Coaching fails in single battles"); -TO_DO_BATTLE_TEST("Coaching fails if there's no ally"); +ASSUMPTIONS +{ + ASSUME(gMovesInfo[MOVE_COACHING].effect == EFFECT_COACHING); +} + +DOUBLE_BATTLE_TEST("Coaching raises Attack and Defense of ally by 1 stage each") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(playerLeft, MOVE_COACHING, target: playerRight); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_COACHING, playerLeft); + MESSAGE("Wynaut's Attack rose!"); + MESSAGE("Wynaut's Defense rose!"); + } +} + +DOUBLE_BATTLE_TEST("Coaching bypasses Protect") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_PROTECT].effect == EFFECT_PROTECT); + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(playerRight, MOVE_PROTECT); MOVE(playerLeft, MOVE_COACHING, target: playerRight); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_COACHING, playerLeft); + MESSAGE("Wynaut's Attack rose!"); + MESSAGE("Wynaut's Defense rose!"); + } +} + +DOUBLE_BATTLE_TEST("Coaching bypasses Crafty Shield") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_CRAFTY_SHIELD].effect == EFFECT_PROTECT); + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(playerRight, MOVE_CRAFTY_SHIELD); MOVE(playerLeft, MOVE_COACHING, target: playerRight); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_COACHING, playerLeft); + MESSAGE("Wynaut's Attack rose!"); + MESSAGE("Wynaut's Defense rose!"); + } +} + +DOUBLE_BATTLE_TEST("Coaching fails if all allies are is semi-invulnerable") +{ + KNOWN_FAILING; // Coaching succeeds + GIVEN { + ASSUME(gMovesInfo[MOVE_FLY].effect == EFFECT_SEMI_INVULNERABLE); + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_HAWLUCHA); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(playerRight, MOVE_FLY, target: opponentLeft); MOVE(playerLeft, MOVE_COACHING, target: playerRight); } + } SCENE { + MESSAGE("Hawlucha used Fly!"); + MESSAGE("Wobbuffet used Coaching!"); + NONE_OF { + ANIMATION(ANIM_TYPE_MOVE, MOVE_COACHING, playerLeft); + MESSAGE("Hawlucha's Attack rose!"); + MESSAGE("Hawlucha's Defense rose!"); + } + MESSAGE("But it failed!"); + } +} + +SINGLE_BATTLE_TEST("Coaching fails in single battles") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_COACHING); } + } SCENE { + MESSAGE("But it failed!"); + NONE_OF { + ANIMATION(ANIM_TYPE_MOVE, MOVE_COACHING, player); + MESSAGE("Wynaut's Attack rose!"); + MESSAGE("Wynaut's Defense rose!"); + } + } +} + +DOUBLE_BATTLE_TEST("Coaching fails if there's no ally") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT) { HP(1); }; + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(playerLeft, MOVE_TACKLE, target: playerRight); } + TURN { MOVE(playerLeft, MOVE_COACHING, target: playerRight); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerLeft); + MESSAGE("Wynaut fainted!"); + MESSAGE("Wobbuffet used Coaching!"); + NONE_OF { + ANIMATION(ANIM_TYPE_MOVE, MOVE_COACHING, playerLeft); + MESSAGE("Wynaut's Attack rose!"); + MESSAGE("Wynaut's Defense rose!"); + } + MESSAGE("But it failed!"); + } +} diff --git a/test/battle/move_effect/cosmic_power.c b/test/battle/move_effect/cosmic_power.c index 8680e9f28e..3b52fbe046 100644 --- a/test/battle/move_effect/cosmic_power.c +++ b/test/battle/move_effect/cosmic_power.c @@ -1,4 +1,21 @@ #include "global.h" #include "test/battle.h" -TO_DO_BATTLE_TEST("Cosmic Power increases the user's Defense and Sp. Defense by 1 stage each"); +ASSUMPTIONS +{ + ASSUME(gMovesInfo[MOVE_COSMIC_POWER].effect == EFFECT_COSMIC_POWER); +} + +SINGLE_BATTLE_TEST("Cosmic Power increases the user's Defense and Sp. Defense by 1 stage each") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_COSMIC_POWER); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_COSMIC_POWER, player); + MESSAGE("Wobbuffet's Defense rose!"); + MESSAGE("Wobbuffet's Sp. Def rose!"); + } +} diff --git a/test/test_runner.c b/test/test_runner.c index 1ff37fe8bc..d3196a20e1 100644 --- a/test/test_runner.c +++ b/test/test_runner.c @@ -356,9 +356,14 @@ top: if (gTestRunnerState.result == TEST_RESULT_PASS) { if (gTestRunnerState.result != gTestRunnerState.expectedResult) + { + Test_MgbaPrintf(":L%s:%d", gTestRunnerState.test->filename, SourceLine(0)); Test_MgbaPrintf(":U%s%s\e[0m", color, result); + } else + { Test_MgbaPrintf(":P%s%s\e[0m", color, result); + } } else if (gTestRunnerState.result == TEST_RESULT_ASSUMPTION_FAIL) Test_MgbaPrintf(":A%s%s\e[0m", color, result);