Merge branch '_RHH/master' into _RHH/upcoming

This commit is contained in:
Eduardo Quezada 2024-12-14 13:03:16 -03:00
commit bcc65e74a6
39 changed files with 459 additions and 293 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 841 B

After

Width:  |  Height:  |  Size: 773 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 832 B

View file

@ -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

View file

@ -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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 710 B

After

Width:  |  Height:  |  Size: 891 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 821 B

After

Width:  |  Height:  |  Size: 867 B

View file

@ -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

View file

@ -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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 447 B

After

Width:  |  Height:  |  Size: 515 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 537 B

After

Width:  |  Height:  |  Size: 540 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 962 B

After

Width:  |  Height:  |  Size: 947 B

View file

@ -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

View file

@ -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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1 KiB

After

Width:  |  Height:  |  Size: 1,007 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 533 B

After

Width:  |  Height:  |  Size: 534 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 958 B

After

Width:  |  Height:  |  Size: 947 B

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 472 B

After

Width:  |  Height:  |  Size: 534 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 960 B

After

Width:  |  Height:  |  Size: 909 B

View file

@ -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

View file

@ -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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 583 B

After

Width:  |  Height:  |  Size: 591 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 646 B

After

Width:  |  Height:  |  Size: 654 B

View file

@ -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

View file

@ -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

View file

@ -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.

View file

@ -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;

View file

@ -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");

View file

@ -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,

View file

@ -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

View file

@ -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

View file

@ -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)
{

View file

@ -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!");
}
}

View file

@ -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!");
}
}

View file

@ -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);