2026-01-14 23:37:12 +01:00

115 lines
3.9 KiB
C

#include "global.h"
#include "test/battle.h"
SINGLE_BATTLE_TEST("Aegislash reverts to Shield Form upon fainting (start as Shield)")
{
GIVEN {
PLAYER(SPECIES_AEGISLASH_SHIELD) { HP(1); }
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
TURN { MOVE(opponent, MOVE_GUST); SEND_OUT(player, 1); }
TURN { USE_ITEM(player, ITEM_REVIVE, 0); }
TURN { SWITCH(player, 0); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_GUST, opponent);
HP_BAR(player);
MESSAGE("Aegislash fainted!");
SEND_IN_MESSAGE("Wobbuffet");
SWITCH_OUT_MESSAGE("Wobbuffet")
SEND_IN_MESSAGE("Aegislash");
} THEN {
// We do not check gPlayerParty data to avoid triggering FORM_CHANGE_END_BATTLE.
EXPECT_EQ(player->species, SPECIES_AEGISLASH_SHIELD);
}
}
SINGLE_BATTLE_TEST("Aegislash reverts to Shield Form upon fainting (start as Blade)")
{
GIVEN {
PLAYER(SPECIES_AEGISLASH_BLADE) { HP(1); }
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
TURN { MOVE(opponent, MOVE_GUST); SEND_OUT(player, 1); }
TURN { USE_ITEM(player, ITEM_REVIVE, 0); }
TURN { SWITCH(player, 0); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_GUST, opponent);
HP_BAR(player);
MESSAGE("Aegislash fainted!");
SEND_IN_MESSAGE("Wobbuffet");
SWITCH_OUT_MESSAGE("Wobbuffet")
SEND_IN_MESSAGE("Aegislash");
} THEN {
// We do not check gPlayerParty data to avoid triggering FORM_CHANGE_END_BATTLE.
EXPECT_EQ(player->species, SPECIES_AEGISLASH_SHIELD);
}
}
DOUBLE_BATTLE_TEST("Causing a Forecast or Flower Gift Pokémon to faint should not cause a message") // issue 7795
{
u32 species;
PARAMETRIZE { species = SPECIES_CASTFORM; }
PARAMETRIZE { species = SPECIES_CHERRIM; }
GIVEN {
PLAYER(SPECIES_WYNAUT);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_VULPIX) { Ability(ABILITY_DROUGHT); }
OPPONENT(species) { HP(1); }
} WHEN {
TURN { MOVE(playerRight, MOVE_GYRO_BALL, target: opponentRight); }
} SCENE {
if (species == SPECIES_CASTFORM) {
MESSAGE("The opposing Castform fainted!");
NOT MESSAGE("The opposing Castform transformed!");
} else {
MESSAGE("The opposing Cherrim fainted!");
NOT MESSAGE("The opposing Cherrim transformed!");
}
}
}
SINGLE_BATTLE_TEST("Ogerpon reverts to the correct form upon fainting after terastallizing")
{
u32 species, item;
PARAMETRIZE { species = SPECIES_OGERPON_TEAL; item = ITEM_NONE; }
PARAMETRIZE { species = SPECIES_OGERPON_WELLSPRING; item = ITEM_WELLSPRING_MASK; }
PARAMETRIZE { species = SPECIES_OGERPON_HEARTHFLAME; item = ITEM_HEARTHFLAME_MASK; }
PARAMETRIZE { species = SPECIES_OGERPON_CORNERSTONE; item = ITEM_CORNERSTONE_MASK; }
GIVEN {
PLAYER(species) { HP(1); Item(item); }
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
TURN {
MOVE(player, MOVE_CELEBRATE, gimmick: GIMMICK_TERA);
MOVE(opponent, MOVE_SCRATCH);
SEND_OUT(player, 1);
}
TURN { USE_ITEM(player, ITEM_REVIVE, 0); }
TURN { SWITCH(player, 0); }
} THEN {
EXPECT_EQ(player->species, species);
}
}
SINGLE_BATTLE_TEST("Terapagos reverts to the correct form upon fainting after terastallizing")
{
GIVEN {
PLAYER(SPECIES_TERAPAGOS_NORMAL) { HP(1); }
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
TURN {
MOVE(player, MOVE_MEMENTO, gimmick: GIMMICK_TERA);
MOVE(opponent, MOVE_SCRATCH);
SEND_OUT(player, 1);
}
TURN { USE_ITEM(player, ITEM_REVIVE, 0); }
TURN { SWITCH(player, 0); }
} THEN {
EXPECT_EQ(player->species, SPECIES_TERAPAGOS_TERASTAL); // Not Normal form due to Tera Shift
}
}