Fixed missing move encapsulation in upcoming (#6226)

This commit is contained in:
Eduardo Quezada 2025-02-09 16:03:53 -03:00 committed by GitHub
parent a8c9857a56
commit 621d2ef83d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
24 changed files with 73 additions and 73 deletions

View File

@ -760,7 +760,7 @@ void BattleAI_DoAIProcessing_PredictedSwitchin(struct AI_ThinkingStruct *aiThink
&& aiThink->score[aiThink->movesetIndex] > 0
&& ShouldConsiderMoveForBattler(battlerAtk, battlerDef, aiThink->moveConsidered))
{
if (IsChaseEffect(gMovesInfo[aiThink->moveConsidered].effect))
if (IsChaseEffect(GetMoveEffect(aiThink->moveConsidered)))
{
// Save new switchin data
simulatedDamageSwitchin[aiThink->movesetIndex] = aiData->simulatedDmg[battlerAtk][battlerDef][aiThink->movesetIndex];
@ -5398,7 +5398,7 @@ static s32 AI_PredictSwitch(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
u32 ability = gBattleMons[battlerAtk].ability;
u32 opposingHazardFlags = gSideStatuses[GetBattlerSide(battlerDef)] & (SIDE_STATUS_SPIKES | SIDE_STATUS_STEALTH_ROCK | SIDE_STATUS_TOXIC_SPIKES);
u32 aiHazardFlags = gSideStatuses[GetBattlerSide(battlerAtk)] & (SIDE_STATUS_HAZARDS_ANY);
u32 moveEffect = gMovesInfo[move].effect;
u32 moveEffect = GetMoveEffect(move);
struct AiLogicData *aiData = AI_DATA;
uq4_12_t effectiveness = aiData->effectiveness[battlerAtk][battlerDef][AI_THINKING_STRUCT->movesetIndex];
@ -5518,9 +5518,9 @@ static s32 AI_PredictSwitch(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
}
// Additional effects
for (i = 0; i < gMovesInfo[move].numAdditionalEffects; i++)
for (i = 0; i < GetMoveAdditionalEffectCount(move); i++)
{
switch (gMovesInfo[move].additionalEffects[i].moveEffect)
switch (GetMoveAdditionalEffectById(move, i)->moveEffect)
{
case MOVE_EFFECT_WRAP:
ADJUST_SCORE(-GOOD_EFFECT);

View File

@ -164,7 +164,7 @@ static bool32 ShouldSwitchIfHasBadOdds(u32 battler)
for (i = 0; i < MAX_MON_MOVES; i++)
{
playerMove = gBattleMons[opposingBattler].moves[i];
if (playerMove != MOVE_NONE && !IsBattleMoveStatus(playerMove) && gMovesInfo[playerMove].effect != EFFECT_FOCUS_PUNCH)
if (playerMove != MOVE_NONE && !IsBattleMoveStatus(playerMove) && GetMoveEffect(playerMove) != EFFECT_FOCUS_PUNCH)
{
damageTaken = AI_CalcDamage(playerMove, opposingBattler, battler, &effectiveness, FALSE, weather, DMG_ROLL_HIGHEST).expected;
if (damageTaken > maxDamageTaken)
@ -1703,7 +1703,7 @@ static s32 GetMaxDamagePlayerCouldDealToSwitchin(u32 battler, u32 opposingBattle
for (i = 0; i < MAX_MON_MOVES; i++)
{
playerMove = gBattleMons[opposingBattler].moves[i];
if (playerMove != MOVE_NONE && !IsBattleMoveStatus(playerMove) && gMovesInfo[playerMove].effect != EFFECT_FOCUS_PUNCH)
if (playerMove != MOVE_NONE && !IsBattleMoveStatus(playerMove) && GetMoveEffect(playerMove) != EFFECT_FOCUS_PUNCH)
{
damageTaken = AI_CalcPartyMonDamage(playerMove, opposingBattler, battler, battleMon, FALSE, DMG_ROLL_HIGHEST);
if (damageTaken > maxDamageTaken)

View File

@ -3923,7 +3923,7 @@ void IncreaseParalyzeScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score)
void IncreaseSleepScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score)
{
if (((AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0) && gMovesInfo[GetBestDmgMoveFromBattler(battlerAtk, battlerDef)].effect != EFFECT_FOCUS_PUNCH)
if (((AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0) && GetMoveEffect(GetBestDmgMoveFromBattler(battlerAtk, battlerDef)) != EFFECT_FOCUS_PUNCH)
|| AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_CURE_SLP || AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_CURE_STATUS)
return;

View File

@ -6468,7 +6468,7 @@ static void Cmd_moveend(void)
break;
}
case MOVEEND_RAPID_SPIN:
if (gMovesInfo[gCurrentMove].effect == EFFECT_RAPID_SPIN
if (GetMoveEffect(gCurrentMove) == EFFECT_RAPID_SPIN
&& !(gHitMarker & HITMARKER_UNABLE_TO_USE_MOVE)
&& IsBattlerTurnDamaged(gBattlerTarget))
{
@ -6644,7 +6644,7 @@ static void Cmd_moveend(void)
gBattleScripting.moveendState++;
break;
case MOVEEND_HIT_SWITCH_TARGET:
if (gMovesInfo[gCurrentMove].effect == EFFECT_HIT_SWITCH_TARGET
if (GetMoveEffect(gCurrentMove) == EFFECT_HIT_SWITCH_TARGET
&& !(gHitMarker & HITMARKER_UNABLE_TO_USE_MOVE)
&& IsBattlerTurnDamaged(gBattlerTarget)
&& IsBattlerAlive(gBattlerTarget)
@ -7088,7 +7088,7 @@ static void Cmd_moveend(void)
else // Eject Pack
{
if (!gDisableStructs[gBattlerTarget].startEmergencyExit
&& !(gMovesInfo[gCurrentMove].effect == EFFECT_PARTING_SHOT && CanBattlerSwitch(gBattlerAttacker)))
&& !(GetMoveEffect(gCurrentMove) == EFFECT_PARTING_SHOT && CanBattlerSwitch(gBattlerAttacker)))
{
effect = TRUE;
gBattleStruct->battlerState[battler].usedEjectItem = TRUE;

View File

@ -934,7 +934,7 @@ static void AddMovePoints(u8 caseId, u16 arg1, u8 arg2, u8 arg3)
// Various cases to add/remove points
if (GetMoveRecoil(arg2) > 0)
baseFromEffect++; // Recoil moves
if (gMovesInfo[arg2].effect == EFFECT_RAPID_SPIN)
if (GetMoveEffect(arg2) == EFFECT_RAPID_SPIN)
baseFromEffect++;
if (MoveHasAdditionalEffect(arg2, MOVE_EFFECT_SP_ATK_MINUS_2) || MoveHasAdditionalEffect(arg2, MOVE_EFFECT_ATK_DEF_DOWN))
baseFromEffect += 2; // Overheat, Superpower, etc.

View File

@ -8189,8 +8189,8 @@ u32 ItemBattleEffects(enum ItemCaseId caseID, u32 battler, bool32 moveTurn)
&& gBattlerAttacker != gBattlerTarget
&& !IsBattlerAtMaxHp(gBattlerAttacker)
&& IsBattlerAlive(gBattlerAttacker)
&& gMovesInfo[gCurrentMove].effect != EFFECT_FUTURE_SIGHT
&& gMovesInfo[gCurrentMove].effect != EFFECT_PAIN_SPLIT
&& GetMoveEffect(gCurrentMove) != EFFECT_FUTURE_SIGHT
&& GetMoveEffect(gCurrentMove) != EFFECT_PAIN_SPLIT
&& (B_HEAL_BLOCKING < GEN_5 || !(gStatuses3[battler] & STATUS3_HEAL_BLOCK)))
{
gLastUsedItem = atkItem;

View File

@ -7,8 +7,8 @@ DOUBLE_BATTLE_TEST("Aroma Veil protects the Pokémon's side from Taunt")
PARAMETRIZE { moveTarget = playerLeft; }
PARAMETRIZE { moveTarget = playerRight; }
GIVEN {
ASSUME(gMovesInfo[MOVE_TAUNT].effect == EFFECT_TAUNT);
ASSUME(gMovesInfo[MOVE_HARDEN].category == DAMAGE_CATEGORY_STATUS);
ASSUME(GetMoveEffect(MOVE_TAUNT) == EFFECT_TAUNT);
ASSUME(GetMoveCategory(MOVE_HARDEN) == DAMAGE_CATEGORY_STATUS);
PLAYER(SPECIES_AROMATISSE) { Ability(ABILITY_AROMA_VEIL); }
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET);
@ -28,8 +28,8 @@ DOUBLE_BATTLE_TEST("Aroma Veil protects the Pokémon's side from Torment")
PARAMETRIZE { moveTarget = playerLeft; }
PARAMETRIZE { moveTarget = playerRight; }
GIVEN {
ASSUME(gMovesInfo[MOVE_TORMENT].effect == EFFECT_TORMENT);
ASSUME(gMovesInfo[MOVE_HARDEN].category == DAMAGE_CATEGORY_STATUS);
ASSUME(GetMoveEffect(MOVE_TORMENT) == EFFECT_TORMENT);
ASSUME(GetMoveCategory(MOVE_HARDEN) == DAMAGE_CATEGORY_STATUS);
PLAYER(SPECIES_AROMATISSE) { Ability(ABILITY_AROMA_VEIL); }
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET);
@ -51,8 +51,8 @@ DOUBLE_BATTLE_TEST("Aroma Veil protects the Pokémon's side from Encore")
PARAMETRIZE { moveTarget = playerLeft; }
PARAMETRIZE { moveTarget = playerRight; }
GIVEN {
ASSUME(gMovesInfo[MOVE_ENCORE].effect == EFFECT_ENCORE);
ASSUME(gMovesInfo[MOVE_HARDEN].category == DAMAGE_CATEGORY_STATUS);
ASSUME(GetMoveEffect(MOVE_ENCORE) == EFFECT_ENCORE);
ASSUME(GetMoveCategory(MOVE_HARDEN) == DAMAGE_CATEGORY_STATUS);
PLAYER(SPECIES_AROMATISSE) { Ability(ABILITY_AROMA_VEIL); }
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET);
@ -74,8 +74,8 @@ DOUBLE_BATTLE_TEST("Aroma Veil protects the Pokémon's side from Disable")
PARAMETRIZE { moveTarget = playerLeft; }
PARAMETRIZE { moveTarget = playerRight; }
GIVEN {
ASSUME(gMovesInfo[MOVE_DISABLE].effect == EFFECT_DISABLE);
ASSUME(gMovesInfo[MOVE_HARDEN].category == DAMAGE_CATEGORY_STATUS);
ASSUME(GetMoveEffect(MOVE_DISABLE) == EFFECT_DISABLE);
ASSUME(GetMoveCategory(MOVE_HARDEN) == DAMAGE_CATEGORY_STATUS);
PLAYER(SPECIES_AROMATISSE) { Ability(ABILITY_AROMA_VEIL); }
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET);
@ -94,7 +94,7 @@ DOUBLE_BATTLE_TEST("Aroma Veil protects the Pokémon's side from Disable")
DOUBLE_BATTLE_TEST("Aroma Veil protects the Pokémon's side from Cursed Body")
{
GIVEN {
ASSUME(gMovesInfo[MOVE_PECK].makesContact);
ASSUME(MoveMakesContact(MOVE_PECK));
PLAYER(SPECIES_AROMATISSE) { Ability(ABILITY_AROMA_VEIL); }
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_JELLICENT) { Ability(ABILITY_CURSED_BODY); }
@ -118,8 +118,8 @@ DOUBLE_BATTLE_TEST("Aroma Veil protects the Pokémon's side from Heal Block")
PARAMETRIZE { moveTarget = playerLeft; }
PARAMETRIZE { moveTarget = playerRight; }
GIVEN {
ASSUME(gMovesInfo[MOVE_HEAL_BLOCK].effect == EFFECT_HEAL_BLOCK);
ASSUME(gMovesInfo[MOVE_RECOVER].effect == EFFECT_RESTORE_HP);
ASSUME(GetMoveEffect(MOVE_HEAL_BLOCK) == EFFECT_HEAL_BLOCK);
ASSUME(GetMoveEffect(MOVE_RECOVER) == EFFECT_RESTORE_HP);
PLAYER(SPECIES_AROMATISSE) { Ability(ABILITY_AROMA_VEIL); HP(1); }
PLAYER(SPECIES_WOBBUFFET) { HP(1); }
OPPONENT(SPECIES_WOBBUFFET);
@ -139,7 +139,7 @@ DOUBLE_BATTLE_TEST("Aroma Veil protects the Pokémon's side from Infatuation")
PARAMETRIZE { moveTarget = playerLeft; }
PARAMETRIZE { moveTarget = playerRight; }
GIVEN {
ASSUME(gMovesInfo[MOVE_ATTRACT].effect == EFFECT_ATTRACT);
ASSUME(GetMoveEffect(MOVE_ATTRACT) == EFFECT_ATTRACT);
PLAYER(SPECIES_AROMATISSE) { Ability(ABILITY_AROMA_VEIL); }
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET);
@ -156,7 +156,7 @@ DOUBLE_BATTLE_TEST("Aroma Veil protects the Pokémon's side from Infatuation")
DOUBLE_BATTLE_TEST("Aroma Veil does not protect the Pokémon's side from Imprison")
{
GIVEN {
ASSUME(gMovesInfo[MOVE_IMPRISON].effect == EFFECT_IMPRISON);
ASSUME(GetMoveEffect(MOVE_IMPRISON) == EFFECT_IMPRISON);
PLAYER(SPECIES_AROMATISSE) { Ability(ABILITY_AROMA_VEIL); }
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET) {Moves(MOVE_IMPRISON, MOVE_CELEBRATE); }
@ -180,7 +180,7 @@ DOUBLE_BATTLE_TEST("Aroma Veil prevents Psychic Noise's effect")
PARAMETRIZE { moveTarget = playerLeft; }
PARAMETRIZE { moveTarget = playerRight; }
GIVEN {
ASSUME(gMovesInfo[MOVE_PSYCHIC_NOISE].additionalEffects[0].moveEffect == MOVE_EFFECT_PSYCHIC_NOISE);
ASSUME(GetMoveAdditionalEffectById(MOVE_PSYCHIC_NOISE, 0)->moveEffect == MOVE_EFFECT_PSYCHIC_NOISE);
PLAYER(SPECIES_AROMATISSE) { Ability(ABILITY_AROMA_VEIL); }
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET);

View File

@ -4,7 +4,7 @@
SINGLE_BATTLE_TEST("Big Pecks prevents Defense stage reduction from moves")
{
GIVEN {
ASSUME(gMovesInfo[MOVE_LEER].effect == EFFECT_DEFENSE_DOWN);
ASSUME(GetMoveEffect(MOVE_LEER) == EFFECT_DEFENSE_DOWN);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_PIDGEY) { Ability(ABILITY_BIG_PECKS); }
} WHEN {
@ -18,7 +18,7 @@ SINGLE_BATTLE_TEST("Big Pecks prevents Defense stage reduction from moves")
SINGLE_BATTLE_TEST("Big Pecks is ignored by Mold Breaker")
{
GIVEN {
ASSUME(gMovesInfo[MOVE_LEER].effect == EFFECT_DEFENSE_DOWN);
ASSUME(GetMoveEffect(MOVE_LEER) == EFFECT_DEFENSE_DOWN);
PLAYER(SPECIES_PINSIR) { Ability(ABILITY_MOLD_BREAKER); }
OPPONENT(SPECIES_PIDGEY) { Ability(ABILITY_BIG_PECKS); }
} WHEN {
@ -56,8 +56,8 @@ SINGLE_BATTLE_TEST("Big Pecks doesn't prevent Defense stage reduction from moves
SINGLE_BATTLE_TEST("Big Pecks doesn't prevent Topsy-Turvy")
{
GIVEN {
ASSUME(gMovesInfo[MOVE_HARDEN].effect == EFFECT_DEFENSE_UP);
ASSUME(gMovesInfo[MOVE_TOPSY_TURVY].effect == EFFECT_TOPSY_TURVY);
ASSUME(GetMoveEffect(MOVE_HARDEN) == EFFECT_DEFENSE_UP);
ASSUME(GetMoveEffect(MOVE_TOPSY_TURVY) == EFFECT_TOPSY_TURVY);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_PIDGEY) { Ability(ABILITY_BIG_PECKS); }
} WHEN {
@ -75,9 +75,9 @@ SINGLE_BATTLE_TEST("Big Pecks doesn't prevent Topsy-Turvy")
SINGLE_BATTLE_TEST("Big Pecks doesn't prevent Spectral Thief from resetting positive Defense stage changes")
{
GIVEN {
ASSUME(gMovesInfo[MOVE_HARDEN].effect == EFFECT_DEFENSE_UP);
ASSUME(GetMoveEffect(MOVE_HARDEN) == EFFECT_DEFENSE_UP);
ASSUME(MoveHasAdditionalEffect(MOVE_SPECTRAL_THIEF, MOVE_EFFECT_SPECTRAL_THIEF));
ASSUME(gMovesInfo[MOVE_SOAK].effect == EFFECT_SOAK);
ASSUME(GetMoveEffect(MOVE_SOAK) == EFFECT_SOAK);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_PIDGEY) { Ability(ABILITY_BIG_PECKS); }
} WHEN {
@ -96,8 +96,8 @@ SINGLE_BATTLE_TEST("Big Pecks doesn't prevent Spectral Thief from resetting posi
SINGLE_BATTLE_TEST("Big Pecks doesn't prevent receiving negative Defense stage changes from Baton Pass")
{
GIVEN {
ASSUME(gMovesInfo[MOVE_LEER].effect == EFFECT_DEFENSE_DOWN);
ASSUME(gMovesInfo[MOVE_BATON_PASS].effect == EFFECT_BATON_PASS);
ASSUME(GetMoveEffect(MOVE_LEER) == EFFECT_DEFENSE_DOWN);
ASSUME(GetMoveEffect(MOVE_BATON_PASS) == EFFECT_BATON_PASS);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_PIDGEY) { Ability(ABILITY_BIG_PECKS); }

View File

@ -69,7 +69,7 @@ SINGLE_BATTLE_TEST("Innards Out does not damage Magic Guard Pokemon")
SINGLE_BATTLE_TEST("Innards Out uses correct damage amount for Future Sight")
{
GIVEN {
ASSUME(gMovesInfo[MOVE_FUTURE_SIGHT].effect == EFFECT_FUTURE_SIGHT);
ASSUME(GetMoveEffect(MOVE_FUTURE_SIGHT) == EFFECT_FUTURE_SIGHT);
PLAYER(SPECIES_PYUKUMUKU) { HP(1); Ability(ABILITY_INNARDS_OUT); }
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WYNAUT);
@ -89,7 +89,7 @@ SINGLE_BATTLE_TEST("Innards Out uses correct damage amount for Future Sight")
SINGLE_BATTLE_TEST("Innards Out doesn't trigger if Future Sight user is not on field")
{
GIVEN {
ASSUME(gMovesInfo[MOVE_FUTURE_SIGHT].effect == EFFECT_FUTURE_SIGHT);
ASSUME(GetMoveEffect(MOVE_FUTURE_SIGHT) == EFFECT_FUTURE_SIGHT);
PLAYER(SPECIES_PYUKUMUKU) { HP(1); Ability(ABILITY_INNARDS_OUT); }
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET);
@ -112,7 +112,7 @@ SINGLE_BATTLE_TEST("Innards Out doesn't trigger if Future Sight user is not on f
SINGLE_BATTLE_TEST("Innards Out triggers if Future Sight user is back on the field")
{
GIVEN {
ASSUME(gMovesInfo[MOVE_FUTURE_SIGHT].effect == EFFECT_FUTURE_SIGHT);
ASSUME(GetMoveEffect(MOVE_FUTURE_SIGHT) == EFFECT_FUTURE_SIGHT);
PLAYER(SPECIES_PYUKUMUKU) { HP(1); Ability(ABILITY_INNARDS_OUT); }
OPPONENT(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WYNAUT);

View File

@ -75,7 +75,7 @@ DOUBLE_BATTLE_TEST("Lightning Rod forces single-target Electric-type moves to ta
DOUBLE_BATTLE_TEST("Lightning Rod redirects an ally's attack")
{
GIVEN {
ASSUME(gMovesInfo[MOVE_THUNDERBOLT].type == TYPE_ELECTRIC);
ASSUME(GetMoveType(MOVE_THUNDERBOLT) == TYPE_ELECTRIC);
PLAYER(SPECIES_WOBBUFFET);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_RAICHU) { Ability(ABILITY_LIGHTNING_ROD); }

View File

@ -3,8 +3,8 @@
ASSUMPTIONS
{
ASSUME(gMovesInfo[MOVE_HYPER_VOICE].type == TYPE_NORMAL);
ASSUME(gMovesInfo[MOVE_HYPER_VOICE].power > 0);
ASSUME(GetMoveType(MOVE_HYPER_VOICE) == TYPE_NORMAL);
ASSUME(GetMovePower(MOVE_HYPER_VOICE) > 0);
}
SINGLE_BATTLE_TEST("Liquid voice turns a sound move into a Water-type move")

View File

@ -93,7 +93,7 @@ SINGLE_BATTLE_TEST("Shield Dust does not block self-targeting effects, primary o
PARAMETRIZE { move = MOVE_METEOR_ASSAULT; }
GIVEN {
ASSUME(gMovesInfo[MOVE_RAPID_SPIN].effect == EFFECT_RAPID_SPIN);
ASSUME(GetMoveEffect(MOVE_RAPID_SPIN) == EFFECT_RAPID_SPIN);
ASSUME(MoveHasAdditionalEffectSelf(MOVE_POWER_UP_PUNCH, MOVE_EFFECT_ATK_PLUS_1) == TRUE);
ASSUME(MoveHasAdditionalEffectSelf(MOVE_LEAF_STORM, MOVE_EFFECT_SP_ATK_MINUS_2) == TRUE);
ASSUME(MoveHasAdditionalEffectSelf(MOVE_METEOR_ASSAULT, MOVE_EFFECT_RECHARGE) == TRUE);

View File

@ -45,7 +45,7 @@ SINGLE_BATTLE_TEST("Snow Cloak increases evasion during snow")
{
PASSES_RANDOMLY(4, 5, RNG_ACCURACY);
GIVEN {
ASSUME(gMovesInfo[MOVE_POUND].accuracy == 100);
ASSUME(GetMoveAccuracy(MOVE_POUND) == 100);
PLAYER(SPECIES_GLACEON) { Ability(ABILITY_SNOW_CLOAK); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {

View File

@ -28,7 +28,7 @@ SINGLE_BATTLE_TEST("Unnerve doesn't prevent opposing Pokémon from using Natural
PARAMETRIZE { mon = SPECIES_JOLTIK, ability = ABILITY_UNNERVE; }
PARAMETRIZE { mon = SPECIES_CALYREX_ICE, ability = ABILITY_AS_ONE_ICE_RIDER; }
GIVEN {
ASSUME(gMovesInfo[MOVE_NATURAL_GIFT].effect == EFFECT_NATURAL_GIFT);
ASSUME(GetMoveEffect(MOVE_NATURAL_GIFT) == EFFECT_NATURAL_GIFT);
PLAYER(mon) { Ability(ability); }
OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_ORAN_BERRY); }
} WHEN {

View File

@ -4,7 +4,7 @@
SINGLE_BATTLE_TEST("Water Compaction raises Defense 2 stages when hit by a water type move")
{
GIVEN {
ASSUME(gMovesInfo[MOVE_WATER_GUN].type == TYPE_WATER);
ASSUME(GetMoveType(MOVE_WATER_GUN) == TYPE_WATER);
PLAYER(SPECIES_SANDYGAST) { Ability(ABILITY_WATER_COMPACTION); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
@ -20,8 +20,8 @@ SINGLE_BATTLE_TEST("Water Compaction raises Defense 2 stages when hit by a water
SINGLE_BATTLE_TEST("Water Compaction raises Defense 2 stages on each hit of a multi-hit Water type move")
{
GIVEN {
ASSUME(gMovesInfo[MOVE_SURGING_STRIKES].type == TYPE_WATER);
ASSUME(gMovesInfo[MOVE_SURGING_STRIKES].strikeCount == 3);
ASSUME(GetMoveType(MOVE_SURGING_STRIKES) == TYPE_WATER);
ASSUME(GetMoveStrikeCount(MOVE_SURGING_STRIKES) == 3);
PLAYER(SPECIES_SANDYGAST) { Ability(ABILITY_WATER_COMPACTION); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
@ -47,7 +47,7 @@ SINGLE_BATTLE_TEST("Water Compaction does not affect damage taken from Water typ
PARAMETRIZE { ability = ABILITY_SAND_VEIL; }
PARAMETRIZE { ability = ABILITY_WATER_COMPACTION; }
GIVEN {
ASSUME(gMovesInfo[MOVE_WATER_GUN].type == TYPE_WATER);
ASSUME(GetMoveType(MOVE_WATER_GUN) == TYPE_WATER);
PLAYER(SPECIES_SANDYGAST) { Ability(ability); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {

View File

@ -975,7 +975,7 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI won't switch out if Yawn'd wi
PARAMETRIZE{ aceFlag = 0; }
PARAMETRIZE{ aceFlag = AI_FLAG_ACE_POKEMON; }
GIVEN {
ASSUME(gMovesInfo[MOVE_YAWN].effect == EFFECT_YAWN);
ASSUME(GetMoveEffect(MOVE_YAWN) == EFFECT_YAWN);
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | aceFlag | AI_FLAG_CHECK_VIABILITY | AI_FLAG_OMNISCIENT | AI_FLAG_SMART_MON_CHOICES | AI_FLAG_SMART_SWITCHING);
PLAYER(SPECIES_SLOWKING) { Moves(MOVE_YAWN, MOVE_CONFUSION, MOVE_POWER_GEM, MOVE_WATER_PULSE); Item(ITEM_LEFTOVERS); }
OPPONENT(SPECIES_SCOLIPEDE) { Moves(MOVE_POISON_TAIL); }

View File

@ -192,7 +192,7 @@ SINGLE_BATTLE_TEST("(TERA) Terastallization's 60 BP floor does not apply to dyna
PARAMETRIZE { tera = GIMMICK_NONE; }
PARAMETRIZE { tera = GIMMICK_TERA; }
GIVEN {
ASSUME(gMovesInfo[MOVE_WATER_SPOUT].effect == EFFECT_POWER_BASED_ON_USER_HP);
ASSUME(GetMoveEffect(MOVE_WATER_SPOUT) == EFFECT_POWER_BASED_ON_USER_HP);
PLAYER(SPECIES_WOBBUFFET) { HP(1); TeraType(TYPE_WATER); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {

View File

@ -97,7 +97,7 @@ SINGLE_BATTLE_TEST("Covert Cloak does not block self-targeting effects, primary
PARAMETRIZE { move = MOVE_METEOR_ASSAULT; }
GIVEN {
ASSUME(gMovesInfo[MOVE_RAPID_SPIN].effect == EFFECT_RAPID_SPIN);
ASSUME(GetMoveEffect(MOVE_RAPID_SPIN) == EFFECT_RAPID_SPIN);
ASSUME(MoveHasAdditionalEffectSelf(MOVE_POWER_UP_PUNCH, MOVE_EFFECT_ATK_PLUS_1) == TRUE);
ASSUME(MoveHasAdditionalEffectSelf(MOVE_LEAF_STORM, MOVE_EFFECT_SP_ATK_MINUS_2) == TRUE);
ASSUME(MoveHasAdditionalEffectSelf(MOVE_METEOR_ASSAULT, MOVE_EFFECT_RECHARGE) == TRUE);

View File

@ -133,7 +133,7 @@ SINGLE_BATTLE_TEST("Shell Bell restores 1/8 HP of damage dealt")
SINGLE_BATTLE_TEST("Shell Bell doesn't restore HP for damage dealt by a foreseen move")
{
GIVEN {
ASSUME(gMovesInfo[MOVE_FUTURE_SIGHT].effect == EFFECT_FUTURE_SIGHT);
ASSUME(GetMoveEffect(MOVE_FUTURE_SIGHT) == EFFECT_FUTURE_SIGHT);
PLAYER(SPECIES_WOBBUFFET) { Level(16); Item(ITEM_SHELL_BELL); HP(10); }
OPPONENT(SPECIES_WOBBUFFET) { Level(16); };
} WHEN {

View File

@ -134,7 +134,7 @@ SINGLE_BATTLE_TEST("Charge will not expire if it flinches twice in a row")
{
s16 damage[2];
GIVEN {
ASSUME(gMovesInfo[MOVE_IRON_HEAD].additionalEffects[0].moveEffect == MOVE_EFFECT_FLINCH);
ASSUME(GetMoveAdditionalEffectById(MOVE_IRON_HEAD, 0)->moveEffect == MOVE_EFFECT_FLINCH);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_LUM_BERRY); }
} WHEN {

View File

@ -5,7 +5,7 @@ SINGLE_BATTLE_TEST("Electrify makes the target's move Electric-type for the rema
{
GIVEN {
ASSUME(gSpeciesInfo[SPECIES_SANDSLASH].types[0] == TYPE_GROUND || gSpeciesInfo[SPECIES_SANDSLASH].types[1] == TYPE_GROUND);
ASSUME(gMovesInfo[MOVE_TACKLE].type != TYPE_ELECTRIC);
ASSUME(GetMoveType(MOVE_TACKLE) != TYPE_ELECTRIC);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_SANDSLASH);
} WHEN {
@ -21,7 +21,7 @@ DOUBLE_BATTLE_TEST("Electrify makes the target's move Electric-type for the rema
KNOWN_FAILING;
GIVEN {
ASSUME(gSpeciesInfo[SPECIES_SANDSLASH].types[0] == TYPE_GROUND || gSpeciesInfo[SPECIES_SANDSLASH].types[1] == TYPE_GROUND);
ASSUME(gMovesInfo[MOVE_TACKLE].type != TYPE_ELECTRIC);
ASSUME(GetMoveType(MOVE_TACKLE) != TYPE_ELECTRIC);
PLAYER(SPECIES_WOBBUFFET);
PLAYER(SPECIES_WYNAUT);
OPPONENT(SPECIES_SANDSLASH);
@ -41,8 +41,8 @@ SINGLE_BATTLE_TEST("Electrify can change status moves to Electric-type")
KNOWN_FAILING;
GIVEN {
ASSUME(gSpeciesInfo[SPECIES_SANDSLASH].types[0] == TYPE_GROUND || gSpeciesInfo[SPECIES_SANDSLASH].types[1] == TYPE_GROUND);
ASSUME(gMovesInfo[MOVE_LEER].category == DAMAGE_CATEGORY_STATUS);
ASSUME(gMovesInfo[MOVE_LEER].type != TYPE_ELECTRIC);
ASSUME(GetMoveCategory(MOVE_LEER) == DAMAGE_CATEGORY_STATUS);
ASSUME(GetMoveType(MOVE_LEER) != TYPE_ELECTRIC);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_SANDSLASH);
} WHEN {
@ -58,8 +58,8 @@ SINGLE_BATTLE_TEST("Electrify changes the type of foreseen moves")
KNOWN_FAILING;
GIVEN {
ASSUME(gSpeciesInfo[SPECIES_SANDSLASH].types[0] == TYPE_GROUND || gSpeciesInfo[SPECIES_SANDSLASH].types[1] == TYPE_GROUND);
ASSUME(gMovesInfo[MOVE_FUTURE_SIGHT].effect == EFFECT_FUTURE_SIGHT);
ASSUME(gMovesInfo[MOVE_FUTURE_SIGHT].type != TYPE_ELECTRIC);
ASSUME(GetMoveEffect(MOVE_FUTURE_SIGHT) == EFFECT_FUTURE_SIGHT);
ASSUME(GetMoveType(MOVE_FUTURE_SIGHT) != TYPE_ELECTRIC);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_SANDSLASH);
} WHEN {

View File

@ -6,14 +6,14 @@
/*
ASSUMPTIONS
{
ASSUME(gMovesInfo[MOVE_X].effect == EFFECT_EVASION_UP_2);
ASSUME(GetMoveEffect(MOVE_X) == EFFECT_EVASION_UP_2);
}
SINGLE_BATTLE_TEST("Double Team raises Evasion by 1 stage")
{
PASSES_RANDOMLY(gMovesInfo[MOVE_SCRATCH].accuracy * 3 / 5, 100, RNG_ACCURACY);
PASSES_RANDOMLY(GetMoveAccuracy(MOVE_SCRATCH) * 3 / 5, 100, RNG_ACCURACY);
GIVEN {
ASSUME(gMovesInfo[MOVE_SCRATCH].accuracy == 100);
ASSUME(GetMoveAccuracy(MOVE_SCRATCH) == 100);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {

View File

@ -1,19 +1,13 @@
#include "global.h"
#include "test/battle.h"
ASSUMPTIONS
{
ASSUME(gMovesInfo[MOVE_RAPID_SPIN].effect == EFFECT_RAPID_SPIN);
ASSUME(gMovesInfo[MOVE_MORTAL_SPIN].effect == EFFECT_RAPID_SPIN);
#if B_SPEED_BUFFING_RAPID_SPIN >= GEN_8
ASSUME(MoveHasAdditionalEffectSelf(MOVE_RAPID_SPIN, MOVE_EFFECT_SPD_PLUS_1) == TRUE);
#endif
ASSUME(MoveHasAdditionalEffect(MOVE_MORTAL_SPIN, MOVE_EFFECT_POISON) == TRUE);
}
SINGLE_BATTLE_TEST("Rapid Spin activates after Toxic Debris")
{
GIVEN {
ASSUME(GetMoveEffect(MOVE_RAPID_SPIN) == EFFECT_RAPID_SPIN);
#if B_SPEED_BUFFING_RAPID_SPIN >= GEN_8
ASSUME(MoveHasAdditionalEffectSelf(MOVE_RAPID_SPIN, MOVE_EFFECT_SPD_PLUS_1) == TRUE);
#endif
PLAYER(SPECIES_GLIMMORA) { Ability(ABILITY_TOXIC_DEBRIS); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
@ -29,6 +23,10 @@ SINGLE_BATTLE_TEST("Rapid Spin activates after Toxic Debris")
SINGLE_BATTLE_TEST("Rapid Spin blows away Wrap, hazards and raises Speed (Gen 8+)")
{
GIVEN {
ASSUME(GetMoveEffect(MOVE_RAPID_SPIN) == EFFECT_RAPID_SPIN);
#if B_SPEED_BUFFING_RAPID_SPIN >= GEN_8
ASSUME(MoveHasAdditionalEffectSelf(MOVE_RAPID_SPIN, MOVE_EFFECT_SPD_PLUS_1) == TRUE);
#endif
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
@ -49,6 +47,8 @@ SINGLE_BATTLE_TEST("Rapid Spin blows away Wrap, hazards and raises Speed (Gen 8+
SINGLE_BATTLE_TEST("Rapid Spin: Mortal Spin blows away Wrap, hazards and poisons foe")
{
GIVEN {
ASSUME(GetMoveEffect(MOVE_MORTAL_SPIN) == EFFECT_RAPID_SPIN);
ASSUME(MoveHasAdditionalEffect(MOVE_MORTAL_SPIN, MOVE_EFFECT_POISON) == TRUE);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {

View File

@ -141,7 +141,7 @@ SINGLE_BATTLE_TEST("Trainer Slide: Last Half Hp")
{
gBattleTestRunnerState->data.recordedBattle.opponentA = TRAINER_SLIDE_LAST_HALF_HP;
GIVEN {
ASSUME(gMovesInfo[MOVE_SUPER_FANG].effect == EFFECT_SUPER_FANG);
ASSUME(GetMoveEffect(MOVE_SUPER_FANG) == EFFECT_SUPER_FANG);
ASSUME(gSpeciesInfo[SPECIES_WOBBUFFET].baseHP == 190);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET);