diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c index 23c008fdc3..d2d81c2a53 100644 --- a/src/battle_ai_main.c +++ b/src/battle_ai_main.c @@ -4008,7 +4008,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) bool32 isBattle1v1 = IsBattle1v1(); bool32 hasTwoOpponents = HasTwoOpponents(battlerAtk); bool32 hasPartner = HasPartner(battlerAtk); - bool32 moveTargetsBothOpponents = hasTwoOpponents && (gMovesInfo[move].target & (MOVE_TARGET_BOTH | MOVE_TARGET_FOES_AND_ALLY | MOVE_TARGET_ALL_BATTLERS)); + bool32 moveTargetsBothOpponents = hasTwoOpponents && (GetMoveTarget(move) & (MOVE_TARGET_BOTH | MOVE_TARGET_FOES_AND_ALLY | MOVE_TARGET_ALL_BATTLERS)); u32 i; // The AI should understand that while Dynamaxed, status moves function like Protect. diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index f300741675..e4a560ca6e 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -387,7 +387,7 @@ static u32 FindMonWithMoveOfEffectiveness(u32 battler, u32 opposingBattler, uq4_ for (j = 0; j < MAX_MON_MOVES; j++) { move = GetMonData(&party[i], MON_DATA_MOVE1 + j); - if (move != MOVE_NONE && AI_GetMoveEffectiveness(move, battler, opposingBattler) >= effectiveness && gMovesInfo[move].power != 0) + if (move != MOVE_NONE && AI_GetMoveEffectiveness(move, battler, opposingBattler) >= effectiveness && GetMovePower(move) != 0) return SetSwitchinAndSwitch(battler, i); } } @@ -422,7 +422,7 @@ static bool32 ShouldSwitchIfAllMovesBad(u32 battler) if (AI_GetMoveEffectiveness(aiMove, battler, opposingBattler) > UQ_4_12(0.0) && aiMove != MOVE_NONE && !CanAbilityAbsorbMove(battler, opposingBattler, gAiLogicData->abilities[opposingBattler], aiMove, GetBattleMoveType(aiMove), AI_CHECK) && !CanAbilityBlockMove(battler, opposingBattler, gBattleMons[battler].ability, gAiLogicData->abilities[opposingBattler], aiMove, AI_CHECK) - && (!ALL_MOVES_BAD_STATUS_MOVES_BAD || gMovesInfo[aiMove].power != 0)) // If using ALL_MOVES_BAD_STATUS_MOVES_BAD, then need power to be non-zero + && (!ALL_MOVES_BAD_STATUS_MOVES_BAD || GetMovePower(aiMove) != 0)) // If using ALL_MOVES_BAD_STATUS_MOVES_BAD, then need power to be non-zero return FALSE; } } diff --git a/src/battle_ai_util.c b/src/battle_ai_util.c index db7ab937b1..e39e80a2d2 100644 --- a/src/battle_ai_util.c +++ b/src/battle_ai_util.c @@ -3965,7 +3965,7 @@ bool32 AreMovesEquivalent(u32 battlerAtk, u32 battlerAtkPartner, u32 move, u32 p // shared bits indicate they're meaningfully the same in some way if (atkEffect & partnerEffect) { - if (gMovesInfo[move].target == MOVE_TARGET_SELECTED && gMovesInfo[partnerMove].target == MOVE_TARGET_SELECTED) + if (GetMoveTarget(move) == MOVE_TARGET_SELECTED && GetMoveTarget(partnerMove) == MOVE_TARGET_SELECTED) { if (battlerDef == gBattleStruct->moveTarget[battlerAtkPartner]) return TRUE; @@ -4111,7 +4111,7 @@ bool32 DoesPartnerHaveSameMoveEffect(u32 battlerAtkPartner, u32 battlerDef, u32 if (GetMoveEffect(move) == GetMoveEffect(partnerMove) && partnerMove != MOVE_NONE) { - if (gMovesInfo[move].target == MOVE_TARGET_SELECTED && gMovesInfo[partnerMove].target == MOVE_TARGET_SELECTED) + if (GetMoveTarget(move) == MOVE_TARGET_SELECTED && GetMoveTarget(partnerMove) == MOVE_TARGET_SELECTED) { return gBattleStruct->moveTarget[battlerAtkPartner] == battlerDef; } @@ -4512,7 +4512,7 @@ bool32 IsRecycleEncouragedItem(u32 item) static bool32 HasMoveThatChangesKOThreshold(u32 battlerId, u32 noOfHitsToFaint, u32 aiIsFaster) { - s32 i; + s32 i, j; u16 *moves = GetMovesArray(battlerId); for (i = 0; i < MAX_MON_MOVES; i++) @@ -4524,16 +4524,21 @@ static bool32 HasMoveThatChangesKOThreshold(u32 battlerId, u32 noOfHitsToFaint, if (GetMovePriority(moves[i]) > 0) return TRUE; - switch (gMovesInfo[moves[i]].additionalEffects[i].moveEffect) + u32 additionalEffectCount = GetMoveAdditionalEffectCount(moves[i]); + for (j = 0; j < additionalEffectCount; j++) { - case MOVE_EFFECT_SPD_MINUS_1: - case MOVE_EFFECT_SPD_MINUS_2: - { - if(aiIsFaster) - return TRUE; - } - default: - break; + const struct AdditionalEffect *additionalEffect = GetMoveAdditionalEffectById(moves[i], j); + switch (additionalEffect->moveEffect) + { + case MOVE_EFFECT_SPD_MINUS_1: + case MOVE_EFFECT_SPD_MINUS_2: + { + if(aiIsFaster) + return TRUE; + } + default: + break; + } } } } diff --git a/src/battle_anim_effects_1.c b/src/battle_anim_effects_1.c index 128862994b..49ec4e5e3a 100644 --- a/src/battle_anim_effects_1.c +++ b/src/battle_anim_effects_1.c @@ -5189,7 +5189,7 @@ void AnimNeedleArmSpike(struct Sprite *sprite) { if (gBattleAnimArgs[0] == 0) { - if (gMovesInfo[gAnimMoveIndex].target == MOVE_TARGET_BOTH) + if (GetMoveTarget(gAnimMoveIndex) == MOVE_TARGET_BOTH) { SetAverageBattlerPositions(gBattleAnimAttacker, TRUE, &a, &b); } @@ -5201,7 +5201,7 @@ void AnimNeedleArmSpike(struct Sprite *sprite) } else { - if (gMovesInfo[gAnimMoveIndex].target == MOVE_TARGET_BOTH) + if (GetMoveTarget(gAnimMoveIndex) == MOVE_TARGET_BOTH) { SetAverageBattlerPositions(gBattleAnimTarget, TRUE, &a, &b); } diff --git a/src/battle_anim_new.c b/src/battle_anim_new.c index 1263632ab7..378fde42a4 100644 --- a/src/battle_anim_new.c +++ b/src/battle_anim_new.c @@ -9431,7 +9431,7 @@ static void SpriteCB_MaxFlutterby(struct Sprite* sprite) { s16 target_x; s16 target_y; - if (gMovesInfo[gAnimMoveIndex].target == MOVE_TARGET_BOTH) + if (GetMoveTarget(gAnimMoveIndex) == MOVE_TARGET_BOTH) { SetAverageBattlerPositions(gBattleAnimTarget, TRUE, &target_x, &target_y); } diff --git a/src/battle_util.c b/src/battle_util.c index a5039231e4..76f6d36f6d 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -11486,9 +11486,9 @@ bool32 IsAnyTargetAffected(u32 battlerAtk) void UpdateStallMons(void) { - if (IsBattlerTurnDamaged(gBattlerTarget) || IsBattlerProtected(gBattlerAttacker, gBattlerTarget, gCurrentMove) || gMovesInfo[gCurrentMove].category == DAMAGE_CATEGORY_STATUS) + if (IsBattlerTurnDamaged(gBattlerTarget) || IsBattlerProtected(gBattlerAttacker, gBattlerTarget, gCurrentMove) || GetMoveCategory(gCurrentMove) == DAMAGE_CATEGORY_STATUS) return; - if (!IsDoubleBattle() || gMovesInfo[gCurrentMove].target == MOVE_TARGET_SELECTED) + if (!IsDoubleBattle() || GetMoveTarget(gCurrentMove) == MOVE_TARGET_SELECTED) { u32 moveType = GetBattleMoveType(gCurrentMove); // Probably doesn't handle dynamic move types right now u32 abilityAtk = GetBattlerAbility(gBattlerAttacker); diff --git a/src/item_menu.c b/src/item_menu.c index 6bb65b5a2e..f19cad0cdc 100755 --- a/src/item_menu.c +++ b/src/item_menu.c @@ -2916,8 +2916,8 @@ static s32 CompareItemsAlphabetically(enum Pocket pocketId, struct ItemSlot item if (pocketId == POCKET_TM_HM) { - name1 = gMovesInfo[GetTMHMMoveId(GetItemTMHMIndex(item1.itemId))].name; - name2 = gMovesInfo[GetTMHMMoveId(GetItemTMHMIndex(item2.itemId))].name; + name1 = GetMoveName(GetTMHMMoveId(GetItemTMHMIndex(item1.itemId))); + name2 = GetMoveName(GetTMHMMoveId(GetItemTMHMIndex(item2.itemId))); } else { diff --git a/src/party_menu.c b/src/party_menu.c index 3964716afa..ce18d0a0db 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -6320,8 +6320,9 @@ static void SwapFusionMonMoves(struct Pokemon *mon, const u16 moveTable[][2], u3 { if (move == moveTable[j][oldMoveIndex]) { + u32 pp = GetMovePP(moveTable[j][newMoveIndex]); SetMonData(mon, MON_DATA_MOVE1 + i, &moveTable[j][newMoveIndex]); - SetMonData(mon, MON_DATA_PP1 + i, &gMovesInfo[moveTable[j][newMoveIndex]].pp); + SetMonData(mon, MON_DATA_PP1 + i, &pp); } } } diff --git a/test/battle/ability/filter.c b/test/battle/ability/filter.c index c9a742c48d..69c0e96278 100644 --- a/test/battle/ability/filter.c +++ b/test/battle/ability/filter.c @@ -9,7 +9,7 @@ SINGLE_BATTLE_TEST("Filter reduces damage to Super Effective moves by 0.75", s16 GIVEN { ASSUME(gSpeciesInfo[SPECIES_MR_MIME].types[0] == TYPE_PSYCHIC); ASSUME(gSpeciesInfo[SPECIES_MR_MIME].types[1] == TYPE_FAIRY); - ASSUME(gMovesInfo[MOVE_POISON_JAB].type == TYPE_POISON); + ASSUME(GetMoveType(MOVE_POISON_JAB) == TYPE_POISON); ASSUME(gTypeEffectivenessTable[TYPE_POISON][TYPE_FAIRY] > UQ_4_12(1.0)); ASSUME(gTypeEffectivenessTable[TYPE_POISON][TYPE_PSYCHIC] == UQ_4_12(1.0)); PLAYER(SPECIES_MR_MIME) { Ability(ability); } diff --git a/test/battle/ability/prism_armor.c b/test/battle/ability/prism_armor.c index 60c8e238cf..69bdde0a0f 100644 --- a/test/battle/ability/prism_armor.c +++ b/test/battle/ability/prism_armor.c @@ -9,7 +9,7 @@ SINGLE_BATTLE_TEST("Prism Armor reduces damage to Super Effective moves by 0.75" GIVEN { ASSUME(gSpeciesInfo[SPECIES_NECROZMA].types[0] == TYPE_PSYCHIC); ASSUME(gSpeciesInfo[SPECIES_NECROZMA].types[1] == TYPE_PSYCHIC); - ASSUME(gMovesInfo[MOVE_DARK_PULSE].type == TYPE_DARK); + ASSUME(GetMoveType(MOVE_DARK_PULSE) == TYPE_DARK); ASSUME(gTypeEffectivenessTable[TYPE_POISON][TYPE_FAIRY] > UQ_4_12(1.0)); ASSUME(gTypeEffectivenessTable[TYPE_POISON][TYPE_PSYCHIC] == UQ_4_12(1.0)); PLAYER(SPECIES_NECROZMA); diff --git a/test/battle/ability/solid_rock.c b/test/battle/ability/solid_rock.c index b3dea4ae5e..d15b87e236 100644 --- a/test/battle/ability/solid_rock.c +++ b/test/battle/ability/solid_rock.c @@ -9,7 +9,7 @@ SINGLE_BATTLE_TEST("Solid Rock reduces damage to Super Effective moves by 0.75", GIVEN { ASSUME(gSpeciesInfo[SPECIES_CARRACOSTA].types[0] == TYPE_WATER); ASSUME(gSpeciesInfo[SPECIES_CARRACOSTA].types[1] == TYPE_ROCK); - ASSUME(gMovesInfo[MOVE_CLOSE_COMBAT].type == TYPE_FIGHTING); + ASSUME(GetMoveType(MOVE_CLOSE_COMBAT) == TYPE_FIGHTING); ASSUME(gTypeEffectivenessTable[TYPE_FIGHTING][TYPE_ROCK] > UQ_4_12(1.0)); ASSUME(gTypeEffectivenessTable[TYPE_FIGHTING][TYPE_WATER] == UQ_4_12(1.0)); PLAYER(SPECIES_CARRACOSTA) { Ability(ability); } diff --git a/test/battle/ai/ai.c b/test/battle/ai/ai.c index 4c86673473..3e8f45717e 100644 --- a/test/battle/ai/ai.c +++ b/test/battle/ai/ai.c @@ -690,7 +690,7 @@ AI_SINGLE_BATTLE_TEST("AI won't use thawing moves if target is frozen unless it ASSUME(GetMoveType(MOVE_EMBER) == TYPE_FIRE); ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL); ASSUME(GetMoveCategory(MOVE_WATER_GUN) == DAMAGE_CATEGORY_SPECIAL); - ASSUME(gMovesInfo[MOVE_SCALD].thawsUser == TRUE); + ASSUME(MoveThawsUser(MOVE_SCALD) == TRUE); AI_FLAGS(aiFlags | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); PLAYER(SPECIES_WOBBUFFET) { Moves(MOVE_TACKLE); Status1(status); } OPPONENT(SPECIES_VULPIX) { Moves(MOVE_TACKLE, aiMove); } diff --git a/test/battle/move_animations/all_anims.c b/test/battle/move_animations/all_anims.c index c929921d3f..acf5dcbb56 100644 --- a/test/battle/move_animations/all_anims.c +++ b/test/battle/move_animations/all_anims.c @@ -11,42 +11,43 @@ static void ParametrizeMovesAndSpecies(u32 j, u32 *pMove, u32 *pSpecies) { - if (gMovesInfo[j].effect == EFFECT_DARK_VOID) // User needs to be Darkrai + enum BattleMoveEffects effect = GetMoveEffect(j); + if (effect == EFFECT_DARK_VOID) // User needs to be Darkrai { *pMove = j; *pSpecies = SPECIES_DARKRAI; } - else if (gMovesInfo[j].effect == EFFECT_HYPERSPACE_FURY) // User needs to be Hoopa Unbound + else if (effect == EFFECT_HYPERSPACE_FURY) // User needs to be Hoopa Unbound { *pMove = j; *pSpecies = SPECIES_HOOPA_UNBOUND; } - else if (gMovesInfo[j].effect == EFFECT_AURA_WHEEL) // User needs to be Morpeko + else if (effect == EFFECT_AURA_WHEEL) // User needs to be Morpeko { *pMove = j; *pSpecies = SPECIES_MORPEKO_FULL_BELLY; } - else if (gMovesInfo[j].effect == EFFECT_ROTOTILLER || gMovesInfo[j].effect == EFFECT_FLOWER_SHIELD) // User needs to be Grass-type + else if (effect == EFFECT_ROTOTILLER || effect == EFFECT_FLOWER_SHIELD) // User needs to be Grass-type { *pMove = j; *pSpecies = SPECIES_TANGELA; } - else if (gMovesInfo[j].effect == EFFECT_FAIL_IF_NOT_ARG_TYPE && gMovesInfo[j].argument.type == TYPE_FIRE) // User needs to be Fire-type + else if (effect == EFFECT_FAIL_IF_NOT_ARG_TYPE && GetMoveArgType(j) == TYPE_FIRE) // User needs to be Fire-type { *pMove = j; *pSpecies = SPECIES_FLAREON; } - else if (gMovesInfo[j].effect == EFFECT_FAIL_IF_NOT_ARG_TYPE && gMovesInfo[j].argument.type == TYPE_ELECTRIC) // User needs to be Electric-type + else if (effect == EFFECT_FAIL_IF_NOT_ARG_TYPE && GetMoveArgType(j) == TYPE_ELECTRIC) // User needs to be Electric-type { *pMove = j; *pSpecies = SPECIES_JOLTEON; } - else if (gMovesInfo[j].effect == EFFECT_MAGNETIC_FLUX || gMovesInfo[j].effect == EFFECT_GEAR_UP) // User needs to have Plus + else if (effect == EFFECT_MAGNETIC_FLUX || effect == EFFECT_GEAR_UP) // User needs to have Plus { *pMove = j; *pSpecies = SPECIES_KLINKLANG; } - else if (gMovesInfo[j].effect == EFFECT_PLACEHOLDER) // Ignore placeholder *pMoves + else if (effect == EFFECT_PLACEHOLDER) // Ignore placeholder *pMoves { *pMove = MOVE_POUND; *pSpecies = SPECIES_WOBBUFFET; @@ -60,100 +61,104 @@ static void ParametrizeMovesAndSpecies(u32 j, u32 *pMove, u32 *pSpecies) static bool32 TargetHasToMove(u32 move) // Opponent needs to hit the player first { - if (gMovesInfo[move].effect == EFFECT_COUNTER - || gMovesInfo[move].effect == EFFECT_MIRROR_MOVE - || gMovesInfo[move].effect == EFFECT_CONVERSION_2 - || gMovesInfo[move].effect == EFFECT_MIRROR_COAT - || gMovesInfo[move].effect == EFFECT_METAL_BURST - || gMovesInfo[move].effect == EFFECT_COPYCAT - || gMovesInfo[move].effect == EFFECT_SUCKER_PUNCH - || gMovesInfo[move].effect == EFFECT_INSTRUCT) + enum BattleMoveEffects effect = GetMoveEffect(move); + if (effect == EFFECT_COUNTER + || effect == EFFECT_MIRROR_MOVE + || effect == EFFECT_CONVERSION_2 + || effect == EFFECT_MIRROR_COAT + || effect == EFFECT_METAL_BURST + || effect == EFFECT_COPYCAT + || effect == EFFECT_SUCKER_PUNCH + || effect == EFFECT_INSTRUCT) return TRUE; return FALSE; } static bool32 AttackerHasToSwitch(u32 move) // User needs to send out a different team member { - if (gMovesInfo[move].effect == EFFECT_TELEPORT - || gMovesInfo[move].effect == EFFECT_EXPLOSION - || gMovesInfo[move].effect == EFFECT_MISTY_EXPLOSION - || gMovesInfo[move].effect == EFFECT_BATON_PASS - || gMovesInfo[move].effect == EFFECT_MEMENTO - || gMovesInfo[move].effect == EFFECT_HEALING_WISH - || gMovesInfo[move].effect == EFFECT_HIT_ESCAPE - || gMovesInfo[move].effect == EFFECT_FINAL_GAMBIT - || gMovesInfo[move].effect == EFFECT_PARTING_SHOT - || gMovesInfo[move].effect == EFFECT_SHED_TAIL - || gMovesInfo[move].effect == EFFECT_CHILLY_RECEPTION) + enum BattleMoveEffects effect = GetMoveEffect(move); + if (effect == EFFECT_TELEPORT + || effect == EFFECT_EXPLOSION + || effect == EFFECT_MISTY_EXPLOSION + || effect == EFFECT_BATON_PASS + || effect == EFFECT_MEMENTO + || effect == EFFECT_HEALING_WISH + || effect == EFFECT_HIT_ESCAPE + || effect == EFFECT_FINAL_GAMBIT + || effect == EFFECT_PARTING_SHOT + || effect == EFFECT_SHED_TAIL + || effect == EFFECT_CHILLY_RECEPTION) return TRUE; return FALSE; } static bool32 UserHasToGoFirst(u32 move) // Player needs to go first { - if (gMovesInfo[move].effect == EFFECT_PROTECT - || gMovesInfo[move].effect == EFFECT_ENDURE - || gMovesInfo[move].effect == EFFECT_FOLLOW_ME - || gMovesInfo[move].effect == EFFECT_MAGIC_COAT - || gMovesInfo[move].effect == EFFECT_ME_FIRST - || gMovesInfo[move].effect == EFFECT_QUASH - || gMovesInfo[move].effect == EFFECT_MAT_BLOCK - || gMovesInfo[move].effect == EFFECT_ELECTRIFY - || gMovesInfo[move].effect == EFFECT_SHELL_TRAP) + enum BattleMoveEffects effect = GetMoveEffect(move); + if (effect == EFFECT_PROTECT + || effect == EFFECT_ENDURE + || effect == EFFECT_FOLLOW_ME + || effect == EFFECT_MAGIC_COAT + || effect == EFFECT_ME_FIRST + || effect == EFFECT_QUASH + || effect == EFFECT_MAT_BLOCK + || effect == EFFECT_ELECTRIFY + || effect == EFFECT_SHELL_TRAP) return TRUE; return FALSE; } static void WhenSingles(u32 move, struct BattlePokemon *attacker, struct BattlePokemon *defender) { + enum BattleMoveEffects effect = GetMoveEffect(move); // Setup turn - if (gMovesInfo[move].effect == EFFECT_SNORE - || gMovesInfo[move].effect == EFFECT_SLEEP_TALK) + if (effect == EFFECT_SNORE + || effect == EFFECT_SLEEP_TALK) { // attacker needs to be asleep TURN { MOVE(attacker, MOVE_REST); } } - else if (gMovesInfo[move].effect == EFFECT_SPIT_UP - || gMovesInfo[move].effect == EFFECT_SWALLOW) + else if (effect == EFFECT_SPIT_UP + || effect == EFFECT_SWALLOW) { // attacker needs to have used Stockpile TURN { MOVE(attacker, MOVE_STOCKPILE); } } - else if ((gMovesInfo[move].effect == EFFECT_DOUBLE_POWER_ON_ARG_STATUS && gMovesInfo[move].argument.status == STATUS1_PARALYSIS)) + else if ((effect == EFFECT_DOUBLE_POWER_ON_ARG_STATUS && GetMoveEffectArg_Status(move) == STATUS1_PARALYSIS)) { // defender needs to be paralyzed TURN { MOVE(attacker, MOVE_THUNDER_WAVE); } } - else if (gMovesInfo[move].effect == EFFECT_RECYCLE - || gMovesInfo[move].effect == EFFECT_BELCH) + else if (effect == EFFECT_RECYCLE + || effect == EFFECT_BELCH) { // attacker needs to have eaten its Berry TURN { MOVE(attacker, MOVE_STUFF_CHEEKS); } } - else if (gMovesInfo[move].effect == EFFECT_REFRESH - || gMovesInfo[move].effect == EFFECT_PSYCHO_SHIFT) + else if (effect == EFFECT_REFRESH + || effect == EFFECT_PSYCHO_SHIFT) { // attacker needs to be paralyzed TURN { MOVE(defender, MOVE_THUNDER_WAVE); } } - else if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) + else if (effect == EFFECT_LAST_RESORT) { // attacker needs to have used all other moves TURN { MOVE(attacker, MOVE_POUND); } } - else if (gMovesInfo[move].effect == EFFECT_DREAM_EATER - || gMovesInfo[move].effect == EFFECT_NIGHTMARE) + else if (effect == EFFECT_DREAM_EATER + || effect == EFFECT_NIGHTMARE) { // defender needs to be asleep TURN { MOVE(defender, MOVE_REST); } } - else if (gMovesInfo[move].effect == EFFECT_VENOM_DRENCH - || gMovesInfo[move].effect == EFFECT_PURIFY) + else if (effect == EFFECT_VENOM_DRENCH + || effect == EFFECT_PURIFY) { // defender needs to be poisoned TURN { MOVE(attacker, MOVE_POISON_POWDER); } } - else if (gMovesInfo[move].effect == EFFECT_TOPSY_TURVY) + else if (effect == EFFECT_TOPSY_TURVY) { // defender needs to have its stats buffed TURN { MOVE(defender, MOVE_SWORDS_DANCE); } } - else if (gMovesInfo[move].effect == EFFECT_AURORA_VEIL) + else if (effect == EFFECT_AURORA_VEIL) { // Has to be hailing TURN { MOVE(attacker, MOVE_HAIL); } } - else if (gMovesInfo[move].effect == EFFECT_STEEL_ROLLER) + else if (effect == EFFECT_STEEL_ROLLER) { // Needs a terrain TURN { MOVE(attacker, MOVE_ELECTRIC_TERRAIN); } } @@ -161,15 +166,15 @@ static void WhenSingles(u32 move, struct BattlePokemon *attacker, struct BattleP TURN { if (TargetHasToMove(move)) { - MOVE(defender, gMovesInfo[move].effect == EFFECT_MIRROR_COAT ? MOVE_SWIFT : MOVE_POUND); + MOVE(defender, effect == EFFECT_MIRROR_COAT ? MOVE_SWIFT : MOVE_POUND); MOVE(attacker, move); } - else if (gMovesInfo[move].effect == EFFECT_SNATCH) + else if (effect == EFFECT_SNATCH) { // defender needs to steal the defender's buffing move MOVE(attacker, move); MOVE(defender, MOVE_SWORDS_DANCE); } - else if (gMovesInfo[move].effect == EFFECT_OHKO || gMovesInfo[move].effect == EFFECT_SHEER_COLD) + else if (effect == EFFECT_OHKO || effect == EFFECT_SHEER_COLD) { // defender needs to send out a different team member MOVE(attacker, move); SEND_OUT(defender, 1); @@ -184,17 +189,17 @@ static void WhenSingles(u32 move, struct BattlePokemon *attacker, struct BattleP MOVE(attacker, move); MOVE(defender, MOVE_POUND); } - else if (gMovesInfo[move].effect == EFFECT_REVIVAL_BLESSING) + else if (effect == EFFECT_REVIVAL_BLESSING) { // attacker selects party member MOVE(attacker, move, partyIndex: 1); MOVE(defender, MOVE_HELPING_HAND); } - else if (gMovesInfo[move].effect == EFFECT_UPPER_HAND) + else if (effect == EFFECT_UPPER_HAND) { // defender needs to choose priority move MOVE(attacker, move); MOVE(defender, MOVE_QUICK_ATTACK); } - else if (gMovesInfo[move].effect == EFFECT_ACUPRESSURE) + else if (effect == EFFECT_ACUPRESSURE) { MOVE(attacker, move, target: attacker); } @@ -208,22 +213,23 @@ static void WhenSingles(u32 move, struct BattlePokemon *attacker, struct BattleP static void SceneSingles(u32 move, struct BattlePokemon *mon) { - if (gMovesInfo[move].effect == EFFECT_FOLLOW_ME - || gMovesInfo[move].effect == EFFECT_HELPING_HAND - || gMovesInfo[move].effect == EFFECT_AFTER_YOU - || gMovesInfo[move].effect == EFFECT_ALLY_SWITCH - || gMovesInfo[move].effect == EFFECT_AROMATIC_MIST + enum BattleMoveEffects effect = GetMoveEffect(move); + if (effect == EFFECT_FOLLOW_ME + || effect == EFFECT_HELPING_HAND + || effect == EFFECT_AFTER_YOU + || effect == EFFECT_ALLY_SWITCH + || effect == EFFECT_AROMATIC_MIST || move == MOVE_HOLD_HANDS // Hack here because it shares its effect with Splash and Celebrate - || gMovesInfo[move].effect == EFFECT_COACHING - || gMovesInfo[move].effect == EFFECT_DRAGON_CHEER) + || effect == EFFECT_COACHING + || effect == EFFECT_DRAGON_CHEER) { // Moves that fail in Single Battles } - else if (gMovesInfo[move].effect == EFFECT_MIRROR_MOVE) // Copy the opponent's move + else if (effect == EFFECT_MIRROR_MOVE) // Copy the opponent's move { ANIMATION(ANIM_TYPE_MOVE, MOVE_POUND, mon); } - else if (gMovesInfo[move].effect == EFFECT_NATURE_POWER) // Recorded battles always use BATTLE_ENVIRONMENT_BUILDING + else if (effect == EFFECT_NATURE_POWER) // Recorded battles always use BATTLE_ENVIRONMENT_BUILDING { ANIMATION(ANIM_TYPE_MOVE, B_NATURE_POWER_MOVES >= GEN_4 ? MOVE_TRI_ATTACK : MOVE_SWIFT, mon); } @@ -235,54 +241,55 @@ static void SceneSingles(u32 move, struct BattlePokemon *mon) static void DoublesWhen(u32 move, struct BattlePokemon *attacker, struct BattlePokemon *target, struct BattlePokemon *ignore1, struct BattlePokemon *ignore2) { + enum BattleMoveEffects effect = GetMoveEffect(move); // Setup turn - if (gMovesInfo[move].effect == EFFECT_SNORE - || gMovesInfo[move].effect == EFFECT_SLEEP_TALK) + if (effect == EFFECT_SNORE + || effect == EFFECT_SLEEP_TALK) { // Player needs to be asleep TURN { MOVE(attacker, MOVE_REST); } } - else if (gMovesInfo[move].effect == EFFECT_SPIT_UP - || gMovesInfo[move].effect == EFFECT_SWALLOW) + else if (effect == EFFECT_SPIT_UP + || effect == EFFECT_SWALLOW) { // Player needs to have used Stockpile TURN { MOVE(attacker, MOVE_STOCKPILE); } } - else if ((gMovesInfo[move].effect == EFFECT_DOUBLE_POWER_ON_ARG_STATUS && gMovesInfo[move].argument.status == STATUS1_PARALYSIS)) + else if ((effect == EFFECT_DOUBLE_POWER_ON_ARG_STATUS && GetMoveEffectArg_Status(move) == STATUS1_PARALYSIS)) { // Opponent needs to be paralyzed TURN { MOVE(attacker, MOVE_THUNDER_WAVE, target: target); } } - else if (gMovesInfo[move].effect == EFFECT_RECYCLE - || gMovesInfo[move].effect == EFFECT_BELCH) + else if (effect == EFFECT_RECYCLE + || effect == EFFECT_BELCH) { // Player needs to have eaten its Berry TURN { MOVE(attacker, MOVE_STUFF_CHEEKS); } } - else if (gMovesInfo[move].effect == EFFECT_REFRESH - || gMovesInfo[move].effect == EFFECT_PSYCHO_SHIFT) + else if (effect == EFFECT_REFRESH + || effect == EFFECT_PSYCHO_SHIFT) { // Player needs to be paralyzed TURN { MOVE(target, MOVE_THUNDER_WAVE, target: attacker); } } - else if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) + else if (effect == EFFECT_LAST_RESORT) { // Player needs to have used all other moves TURN { MOVE(attacker, MOVE_POUND, target: target); } } - else if (gMovesInfo[move].effect == EFFECT_DREAM_EATER - || gMovesInfo[move].effect == EFFECT_NIGHTMARE) + else if (effect == EFFECT_DREAM_EATER + || effect == EFFECT_NIGHTMARE) { // Opponent needs to be asleep TURN { MOVE(target, MOVE_REST); } } - else if (gMovesInfo[move].effect == EFFECT_VENOM_DRENCH - || gMovesInfo[move].effect == EFFECT_PURIFY) + else if (effect == EFFECT_VENOM_DRENCH + || effect == EFFECT_PURIFY) { // Opponent needs to be poisoned TURN { MOVE(attacker, MOVE_POISON_POWDER, target: target); } } - else if (gMovesInfo[move].effect == EFFECT_TOPSY_TURVY) + else if (effect == EFFECT_TOPSY_TURVY) { // Opponent needs to have its stats buffed TURN { MOVE(target, MOVE_SWORDS_DANCE); } } - else if (gMovesInfo[move].effect == EFFECT_AURORA_VEIL) + else if (effect == EFFECT_AURORA_VEIL) { // Has to be hailing TURN { MOVE(attacker, MOVE_HAIL); } } - else if (gMovesInfo[move].effect == EFFECT_STEEL_ROLLER) + else if (effect == EFFECT_STEEL_ROLLER) { // Needs a terrain TURN { MOVE(attacker, MOVE_ELECTRIC_TERRAIN); } } @@ -290,15 +297,15 @@ static void DoublesWhen(u32 move, struct BattlePokemon *attacker, struct BattleP TURN { if (TargetHasToMove(move)) { // Opponent needs to hit the player first - MOVE(target, gMovesInfo[move].effect == EFFECT_MIRROR_COAT ? MOVE_SWIFT : MOVE_POUND, target: attacker); + MOVE(target, effect == EFFECT_MIRROR_COAT ? MOVE_SWIFT : MOVE_POUND, target: attacker); MOVE(attacker, move, target: target); } - else if (gMovesInfo[move].effect == EFFECT_SNATCH) + else if (effect == EFFECT_SNATCH) { // Opponent needs to steal the opponent's buffing move MOVE(attacker, move, target: target); MOVE(target, MOVE_SWORDS_DANCE); } - else if (gMovesInfo[move].effect == EFFECT_OHKO || gMovesInfo[move].effect == EFFECT_SHEER_COLD) + else if (effect == EFFECT_OHKO || effect == EFFECT_SHEER_COLD) { // Opponent needs to send out a different team member MOVE(attacker, move, target: target); SEND_OUT(target, 2); @@ -313,19 +320,19 @@ static void DoublesWhen(u32 move, struct BattlePokemon *attacker, struct BattleP MOVE(attacker, move, target: target); MOVE(target, MOVE_POUND, target: attacker); } - else if (gMovesInfo[move].effect == EFFECT_AFTER_YOU) + else if (effect == EFFECT_AFTER_YOU) { // Player goes first, opponent third MOVE(attacker, move, target: target); MOVE(ignore1, MOVE_CELEBRATE); MOVE(target, MOVE_POUND, target: attacker); MOVE(ignore2, MOVE_CELEBRATE); } - else if (gMovesInfo[move].effect == EFFECT_REVIVAL_BLESSING) + else if (effect == EFFECT_REVIVAL_BLESSING) { // Player selects party member MOVE(attacker, move, partyIndex: 2); MOVE(target, MOVE_LAST_RESORT, target: attacker); // Last Resort, so there's no anim on the opponent's side. } - else if (gMovesInfo[move].effect == EFFECT_UPPER_HAND) + else if (effect == EFFECT_UPPER_HAND) { // Opponent needs to choose priority move MOVE(attacker, move, target: target); MOVE(target, MOVE_QUICK_ATTACK, target: attacker); @@ -335,7 +342,7 @@ static void DoublesWhen(u32 move, struct BattlePokemon *attacker, struct BattleP MOVE(target, MOVE_LAST_RESORT, target: attacker); // Last Resort, so there's no anim on the opponent's side. MOVE(attacker, move, target: target); } - if (gMovesInfo[move].effect != EFFECT_AFTER_YOU) + if (effect != EFFECT_AFTER_YOU) { // Actions for the remaining battlers MOVE(ignore1, MOVE_CELEBRATE); @@ -346,15 +353,16 @@ static void DoublesWhen(u32 move, struct BattlePokemon *attacker, struct BattleP static void DoublesScene(u32 move, struct BattlePokemon *attacker) { - if (gMovesInfo[move].effect == EFFECT_MAGNETIC_FLUX || gMovesInfo[move].effect == EFFECT_GEAR_UP) // For some reason, Magnetic Flux and Gear Up are failing in Double Battles here + enum BattleMoveEffects effect = GetMoveEffect(move); + if (effect == EFFECT_MAGNETIC_FLUX || effect == EFFECT_GEAR_UP) // For some reason, Magnetic Flux and Gear Up are failing in Double Battles here { // Moves that fail in Double Battles } - else if (gMovesInfo[move].effect == EFFECT_MIRROR_MOVE) + else if (effect == EFFECT_MIRROR_MOVE) { // Copy the opponent's move ANIMATION(ANIM_TYPE_MOVE, MOVE_POUND, attacker); } - else if (gMovesInfo[move].effect == EFFECT_NATURE_POWER) + else if (effect == EFFECT_NATURE_POWER) { // Recorded battles always use BATTLE_ENVIRONMENT_BUILDING ANIMATION(ANIM_TYPE_MOVE, B_NATURE_POWER_MOVES >= GEN_4 ? MOVE_TRI_ATTACK : MOVE_SWIFT, attacker); } @@ -382,16 +390,16 @@ SINGLE_BATTLE_TEST("Move Animations don't leak when used - Singles (player to op PLAYER(species) { HP(9997); MaxHP(9999); Item(ITEM_ORAN_BERRY); if (species == SPECIES_WOBBUFFET) Gender(MON_FEMALE); - if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); + if (GetMoveEffect(move) == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); if (species == SPECIES_KLINKLANG) Ability(ABILITY_PLUS); } PLAYER(SPECIES_WOBBUFFET) { Gender(MON_MALE); MaxHP(9999); Moves(MOVE_POUND); - HP(gMovesInfo[move].effect == EFFECT_REVIVAL_BLESSING ? 0 : 9998); + HP(GetMoveEffect(move) == EFFECT_REVIVAL_BLESSING ? 0 : 9998); } OPPONENT(SPECIES_WOBBUFFET) { Gender(MON_MALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); Ability(ABILITY_TELEPATHY); - if (gMovesInfo[move].effect != EFFECT_BESTOW) + if (GetMoveEffect(move) != EFFECT_BESTOW) Item(ITEM_ORAN_BERRY); } OPPONENT(SPECIES_WOBBUFFET) { Gender(MON_FEMALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); } @@ -402,7 +410,7 @@ SINGLE_BATTLE_TEST("Move Animations don't leak when used - Singles (player to op } THEN { FORCE_MOVE_ANIM(FALSE); if (gLoadFail) - DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + DebugPrintf("Move failed: %S (%u)", GetMoveName(move), move); EXPECT_EQ(gLoadFail, FALSE); } } @@ -420,16 +428,16 @@ SINGLE_BATTLE_TEST("Move Animations don't leak when used - Singles (opponent to OPPONENT(species) { HP(9997); MaxHP(9999); Item(ITEM_ORAN_BERRY); if (species == SPECIES_WOBBUFFET) Gender(MON_FEMALE); - if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); + if (GetMoveEffect(move) == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); if (species == SPECIES_KLINKLANG) Ability(ABILITY_PLUS); } OPPONENT(SPECIES_WOBBUFFET) { Gender(MON_MALE); MaxHP(9999); Moves(MOVE_POUND); - HP(gMovesInfo[move].effect == EFFECT_REVIVAL_BLESSING ? 0 : 9998); + HP(GetMoveEffect(move) == EFFECT_REVIVAL_BLESSING ? 0 : 9998); } PLAYER(SPECIES_WOBBUFFET) { Gender(MON_MALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); Ability(ABILITY_TELEPATHY); - if (gMovesInfo[move].effect != EFFECT_BESTOW) + if (GetMoveEffect(move) != EFFECT_BESTOW) Item(ITEM_ORAN_BERRY); } PLAYER(SPECIES_WOBBUFFET) { Gender(MON_FEMALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); } @@ -440,7 +448,7 @@ SINGLE_BATTLE_TEST("Move Animations don't leak when used - Singles (opponent to } THEN { FORCE_MOVE_ANIM(FALSE); if (gLoadFail) - DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + DebugPrintf("Move failed: %S (%u)", GetMoveName(move), move); EXPECT_EQ(gLoadFail, FALSE); } } @@ -463,7 +471,7 @@ DOUBLE_BATTLE_TEST("Move Animations don't leak when used - Doubles (playerLeft t HP(9997); MaxHP(9999); Item(ITEM_ORAN_BERRY); if (attacker == playerLeft) { if (species == SPECIES_WOBBUFFET) Gender(MON_FEMALE); - if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); + if (GetMoveEffect(move) == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); if (species == SPECIES_KLINKLANG) Ability(ABILITY_PLUS); } } @@ -472,22 +480,22 @@ DOUBLE_BATTLE_TEST("Move Animations don't leak when used - Doubles (playerLeft t if (attacker == playerRight) { if (species == SPECIES_WOBBUFFET) Gender(MON_FEMALE); - if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); + if (GetMoveEffect(move) == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); if (species == SPECIES_KLINKLANG) Ability(ABILITY_PLUS); } } PLAYER(SPECIES_WOBBUFFET) { Gender(MON_MALE); MaxHP(9999); Moves(MOVE_POUND, MOVE_CELEBRATE); - HP(gMovesInfo[move].effect == EFFECT_REVIVAL_BLESSING ? 0 : 9998); + HP(GetMoveEffect(move) == EFFECT_REVIVAL_BLESSING ? 0 : 9998); } OPPONENT(SPECIES_WOBBUFFET) { Gender(MON_MALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); Ability(ABILITY_TELEPATHY); - if (gMovesInfo[move].effect != EFFECT_BESTOW) + if (GetMoveEffect(move) != EFFECT_BESTOW) Item(ITEM_ORAN_BERRY); } OPPONENT(SPECIES_WOBBUFFET) { Gender(MON_MALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); Ability(ABILITY_TELEPATHY); - if (gMovesInfo[move].effect != EFFECT_BESTOW) + if (GetMoveEffect(move) != EFFECT_BESTOW) Item(ITEM_ORAN_BERRY); } OPPONENT(SPECIES_WOBBUFFET) { Gender(MON_FEMALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); } @@ -498,7 +506,7 @@ DOUBLE_BATTLE_TEST("Move Animations don't leak when used - Doubles (playerLeft t } THEN { FORCE_MOVE_ANIM(FALSE); if (gLoadFail) - DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + DebugPrintf("Move failed: %S (%u)", GetMoveName(move), move); EXPECT_EQ(gLoadFail, FALSE); } } @@ -521,7 +529,7 @@ DOUBLE_BATTLE_TEST("Move Animations don't leak when used - Doubles (opponentLeft HP(9997); MaxHP(9999); Item(ITEM_ORAN_BERRY); if (attacker == opponentLeft) { if (species == SPECIES_WOBBUFFET) Gender(MON_FEMALE); - if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); + if (GetMoveEffect(move) == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); if (species == SPECIES_KLINKLANG) Ability(ABILITY_PLUS); } } @@ -529,23 +537,23 @@ DOUBLE_BATTLE_TEST("Move Animations don't leak when used - Doubles (opponentLeft HP(9997); MaxHP(9999); Item(ITEM_ORAN_BERRY); if (attacker == opponentRight) { if (species == SPECIES_WOBBUFFET) Gender(MON_FEMALE); - if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); + if (GetMoveEffect(move) == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); if (species == SPECIES_KLINKLANG) Ability(ABILITY_PLUS); } } OPPONENT(SPECIES_WOBBUFFET) { Gender(MON_MALE); MaxHP(9999); Moves(MOVE_POUND, MOVE_CELEBRATE); - HP(gMovesInfo[move].effect == EFFECT_REVIVAL_BLESSING ? 0 : 9998); + HP(GetMoveEffect(move) == EFFECT_REVIVAL_BLESSING ? 0 : 9998); } PLAYER(SPECIES_WOBBUFFET) { Gender(MON_MALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); Ability(ABILITY_TELEPATHY); - if (gMovesInfo[move].effect != EFFECT_BESTOW) { + if (GetMoveEffect(move) != EFFECT_BESTOW) { Item(ITEM_ORAN_BERRY); } } PLAYER(SPECIES_WOBBUFFET) { Gender(MON_MALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); Ability(ABILITY_TELEPATHY); - if (gMovesInfo[move].effect != EFFECT_BESTOW) { + if (GetMoveEffect(move) != EFFECT_BESTOW) { Item(ITEM_ORAN_BERRY); } } @@ -557,7 +565,7 @@ DOUBLE_BATTLE_TEST("Move Animations don't leak when used - Doubles (opponentLeft } THEN { FORCE_MOVE_ANIM(FALSE); if (gLoadFail) - DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + DebugPrintf("Move failed: %S (%u)", GetMoveName(move), move); EXPECT_EQ(gLoadFail, FALSE); } } @@ -580,7 +588,7 @@ DOUBLE_BATTLE_TEST("Move Animations don't leak when used - Doubles (playerLeft t HP(9997); MaxHP(9999); Item(ITEM_ORAN_BERRY); if (attacker == playerLeft) { if (species == SPECIES_WOBBUFFET) Gender(MON_FEMALE); - if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); + if (GetMoveEffect(move) == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); if (species == SPECIES_KLINKLANG) Ability(ABILITY_PLUS); } } @@ -588,23 +596,23 @@ DOUBLE_BATTLE_TEST("Move Animations don't leak when used - Doubles (playerLeft t HP(9997); MaxHP(9999); Item(ITEM_ORAN_BERRY); if (attacker == playerRight) { if (species == SPECIES_WOBBUFFET) Gender(MON_FEMALE); - if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); + if (GetMoveEffect(move) == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); if (species == SPECIES_KLINKLANG) Ability(ABILITY_PLUS); } } PLAYER(SPECIES_WOBBUFFET) { Gender(MON_MALE); MaxHP(9999); Moves(MOVE_POUND, MOVE_CELEBRATE); - HP(gMovesInfo[move].effect == EFFECT_REVIVAL_BLESSING ? 0 : 9998); + HP(GetMoveEffect(move) == EFFECT_REVIVAL_BLESSING ? 0 : 9998); } OPPONENT(SPECIES_WOBBUFFET) { Gender(MON_MALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); Ability(ABILITY_TELEPATHY); - if (gMovesInfo[move].effect != EFFECT_BESTOW) { + if (GetMoveEffect(move) != EFFECT_BESTOW) { Item(ITEM_ORAN_BERRY); } } OPPONENT(SPECIES_WOBBUFFET) { Gender(MON_MALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); Ability(ABILITY_TELEPATHY); - if (gMovesInfo[move].effect != EFFECT_BESTOW) { + if (GetMoveEffect(move) != EFFECT_BESTOW) { Item(ITEM_ORAN_BERRY); } } @@ -616,7 +624,7 @@ DOUBLE_BATTLE_TEST("Move Animations don't leak when used - Doubles (playerLeft t } THEN { FORCE_MOVE_ANIM(FALSE); if (gLoadFail) - DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + DebugPrintf("Move failed: %S (%u)", GetMoveName(move), move); EXPECT_EQ(gLoadFail, FALSE); } } @@ -639,7 +647,7 @@ DOUBLE_BATTLE_TEST("Move Animations don't leak when used - Doubles (opponentRigh HP(9997); MaxHP(9999); Item(ITEM_ORAN_BERRY); if (attacker == opponentLeft) { if (species == SPECIES_WOBBUFFET) Gender(MON_FEMALE); - if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); + if (GetMoveEffect(move) == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); if (species == SPECIES_KLINKLANG) Ability(ABILITY_PLUS); } } @@ -647,23 +655,23 @@ DOUBLE_BATTLE_TEST("Move Animations don't leak when used - Doubles (opponentRigh HP(9997); MaxHP(9999); Item(ITEM_ORAN_BERRY); if (attacker == opponentRight) { if (species == SPECIES_WOBBUFFET) Gender(MON_FEMALE); - if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); + if (GetMoveEffect(move) == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); if (species == SPECIES_KLINKLANG) Ability(ABILITY_PLUS); } } OPPONENT(SPECIES_WOBBUFFET) { Gender(MON_MALE); MaxHP(9999); Moves(MOVE_POUND, MOVE_CELEBRATE); - HP(gMovesInfo[move].effect == EFFECT_REVIVAL_BLESSING ? 0 : 9998); + HP(GetMoveEffect(move) == EFFECT_REVIVAL_BLESSING ? 0 : 9998); } PLAYER(SPECIES_WOBBUFFET) { Gender(MON_MALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); Ability(ABILITY_TELEPATHY); - if (gMovesInfo[move].effect != EFFECT_BESTOW) { + if (GetMoveEffect(move) != EFFECT_BESTOW) { Item(ITEM_ORAN_BERRY); } } PLAYER(SPECIES_WOBBUFFET) { Gender(MON_MALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); Ability(ABILITY_TELEPATHY); - if (gMovesInfo[move].effect != EFFECT_BESTOW) { + if (GetMoveEffect(move) != EFFECT_BESTOW) { Item(ITEM_ORAN_BERRY); } } @@ -675,7 +683,7 @@ DOUBLE_BATTLE_TEST("Move Animations don't leak when used - Doubles (opponentRigh } THEN { FORCE_MOVE_ANIM(FALSE); if (gLoadFail) - DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + DebugPrintf("Move failed: %S (%u)", GetMoveName(move), move); EXPECT_EQ(gLoadFail, FALSE); } } @@ -698,7 +706,7 @@ DOUBLE_BATTLE_TEST("Move Animations don't leak when used - Doubles (playerRight HP(9997); MaxHP(9999); Item(ITEM_ORAN_BERRY); if (attacker == playerLeft) { if (species == SPECIES_WOBBUFFET) Gender(MON_FEMALE); - if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); + if (GetMoveEffect(move) == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); if (species == SPECIES_KLINKLANG) Ability(ABILITY_PLUS); } } @@ -706,23 +714,23 @@ DOUBLE_BATTLE_TEST("Move Animations don't leak when used - Doubles (playerRight HP(9997); MaxHP(9999); Item(ITEM_ORAN_BERRY); if (attacker == playerRight) { if (species == SPECIES_WOBBUFFET) Gender(MON_FEMALE); - if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); + if (GetMoveEffect(move) == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); if (species == SPECIES_KLINKLANG) Ability(ABILITY_PLUS); } } PLAYER(SPECIES_WOBBUFFET) { Gender(MON_MALE); MaxHP(9999); Moves(MOVE_POUND, MOVE_CELEBRATE); - HP(gMovesInfo[move].effect == EFFECT_REVIVAL_BLESSING ? 0 : 9998); + HP(GetMoveEffect(move) == EFFECT_REVIVAL_BLESSING ? 0 : 9998); } OPPONENT(SPECIES_WOBBUFFET) { Gender(MON_MALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); Ability(ABILITY_TELEPATHY); - if (gMovesInfo[move].effect != EFFECT_BESTOW) { + if (GetMoveEffect(move) != EFFECT_BESTOW) { Item(ITEM_ORAN_BERRY); } } OPPONENT(SPECIES_WOBBUFFET) { Gender(MON_MALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); Ability(ABILITY_TELEPATHY); - if (gMovesInfo[move].effect != EFFECT_BESTOW) { + if (GetMoveEffect(move) != EFFECT_BESTOW) { Item(ITEM_ORAN_BERRY); } } @@ -734,7 +742,7 @@ DOUBLE_BATTLE_TEST("Move Animations don't leak when used - Doubles (playerRight } THEN { FORCE_MOVE_ANIM(FALSE); if (gLoadFail) - DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + DebugPrintf("Move failed: %S (%u)", GetMoveName(move), move); EXPECT_EQ(gLoadFail, FALSE); } } @@ -757,7 +765,7 @@ DOUBLE_BATTLE_TEST("Move Animations don't leak when used - Doubles (opponentLeft HP(9997); MaxHP(9999); Item(ITEM_ORAN_BERRY); if (attacker == opponentLeft) { if (species == SPECIES_WOBBUFFET) Gender(MON_FEMALE); - if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); + if (GetMoveEffect(move) == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); if (species == SPECIES_KLINKLANG) Ability(ABILITY_PLUS); } } @@ -765,23 +773,23 @@ DOUBLE_BATTLE_TEST("Move Animations don't leak when used - Doubles (opponentLeft HP(9997); MaxHP(9999); Item(ITEM_ORAN_BERRY); if (attacker == opponentRight) { if (species == SPECIES_WOBBUFFET) Gender(MON_FEMALE); - if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); + if (GetMoveEffect(move) == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); if (species == SPECIES_KLINKLANG) Ability(ABILITY_PLUS); } } OPPONENT(SPECIES_WOBBUFFET) { Gender(MON_MALE); MaxHP(9999); Moves(MOVE_POUND, MOVE_CELEBRATE); - HP(gMovesInfo[move].effect == EFFECT_REVIVAL_BLESSING ? 0 : 9998); + HP(GetMoveEffect(move) == EFFECT_REVIVAL_BLESSING ? 0 : 9998); } PLAYER(SPECIES_WOBBUFFET) { Gender(MON_MALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); Ability(ABILITY_TELEPATHY); - if (gMovesInfo[move].effect != EFFECT_BESTOW) { + if (GetMoveEffect(move) != EFFECT_BESTOW) { Item(ITEM_ORAN_BERRY); } } PLAYER(SPECIES_WOBBUFFET) { Gender(MON_MALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); Ability(ABILITY_TELEPATHY); - if (gMovesInfo[move].effect != EFFECT_BESTOW) { + if (GetMoveEffect(move) != EFFECT_BESTOW) { Item(ITEM_ORAN_BERRY); } } @@ -793,7 +801,7 @@ DOUBLE_BATTLE_TEST("Move Animations don't leak when used - Doubles (opponentLeft } THEN { FORCE_MOVE_ANIM(FALSE); if (gLoadFail) - DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + DebugPrintf("Move failed: %S (%u)", GetMoveName(move), move); EXPECT_EQ(gLoadFail, FALSE); } } @@ -816,7 +824,7 @@ DOUBLE_BATTLE_TEST("Move Animations don't leak when used - Doubles (playerRight HP(9997); MaxHP(9999); Item(ITEM_ORAN_BERRY); if (attacker == playerLeft) { if (species == SPECIES_WOBBUFFET) Gender(MON_FEMALE); - if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); + if (GetMoveEffect(move) == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); if (species == SPECIES_KLINKLANG) Ability(ABILITY_PLUS); } } @@ -824,23 +832,23 @@ DOUBLE_BATTLE_TEST("Move Animations don't leak when used - Doubles (playerRight HP(9997); MaxHP(9999); Item(ITEM_ORAN_BERRY); if (attacker == playerRight) { if (species == SPECIES_WOBBUFFET) Gender(MON_FEMALE); - if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); + if (GetMoveEffect(move) == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); if (species == SPECIES_KLINKLANG) Ability(ABILITY_PLUS); } } PLAYER(SPECIES_WOBBUFFET) { Gender(MON_MALE); MaxHP(9999); Moves(MOVE_POUND, MOVE_CELEBRATE); - HP(gMovesInfo[move].effect == EFFECT_REVIVAL_BLESSING ? 0 : 9998); + HP(GetMoveEffect(move) == EFFECT_REVIVAL_BLESSING ? 0 : 9998); } OPPONENT(SPECIES_WOBBUFFET) { Gender(MON_MALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); Ability(ABILITY_TELEPATHY); - if (gMovesInfo[move].effect != EFFECT_BESTOW) { + if (GetMoveEffect(move) != EFFECT_BESTOW) { Item(ITEM_ORAN_BERRY); } } OPPONENT(SPECIES_WOBBUFFET) { Gender(MON_MALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); Ability(ABILITY_TELEPATHY); - if (gMovesInfo[move].effect != EFFECT_BESTOW) { + if (GetMoveEffect(move) != EFFECT_BESTOW) { Item(ITEM_ORAN_BERRY); } } @@ -852,7 +860,7 @@ DOUBLE_BATTLE_TEST("Move Animations don't leak when used - Doubles (playerRight } THEN { FORCE_MOVE_ANIM(FALSE); if (gLoadFail) - DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + DebugPrintf("Move failed: %S (%u)", GetMoveName(move), move); EXPECT_EQ(gLoadFail, FALSE); } } @@ -875,7 +883,7 @@ DOUBLE_BATTLE_TEST("Move Animations don't leak when used - Doubles (opponentRigh HP(9997); MaxHP(9999); Item(ITEM_ORAN_BERRY); if (attacker == opponentLeft) { if (species == SPECIES_WOBBUFFET) Gender(MON_FEMALE); - if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); + if (GetMoveEffect(move) == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); if (species == SPECIES_KLINKLANG) Ability(ABILITY_PLUS); } } @@ -883,23 +891,23 @@ DOUBLE_BATTLE_TEST("Move Animations don't leak when used - Doubles (opponentRigh HP(9997); MaxHP(9999); Item(ITEM_ORAN_BERRY); if (attacker == opponentRight) { if (species == SPECIES_WOBBUFFET) Gender(MON_FEMALE); - if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); + if (GetMoveEffect(move) == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); if (species == SPECIES_KLINKLANG) Ability(ABILITY_PLUS); } } OPPONENT(SPECIES_WOBBUFFET) { Gender(MON_MALE); MaxHP(9999); Moves(MOVE_POUND, MOVE_CELEBRATE); - HP(gMovesInfo[move].effect == EFFECT_REVIVAL_BLESSING ? 0 : 9998); + HP(GetMoveEffect(move) == EFFECT_REVIVAL_BLESSING ? 0 : 9998); } PLAYER(SPECIES_WOBBUFFET) { Gender(MON_MALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); Ability(ABILITY_TELEPATHY); - if (gMovesInfo[move].effect != EFFECT_BESTOW) { + if (GetMoveEffect(move) != EFFECT_BESTOW) { Item(ITEM_ORAN_BERRY); } } PLAYER(SPECIES_WOBBUFFET) { Gender(MON_MALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); Ability(ABILITY_TELEPATHY); - if (gMovesInfo[move].effect != EFFECT_BESTOW) { + if (GetMoveEffect(move) != EFFECT_BESTOW) { Item(ITEM_ORAN_BERRY); } } @@ -911,7 +919,7 @@ DOUBLE_BATTLE_TEST("Move Animations don't leak when used - Doubles (opponentRigh } THEN { FORCE_MOVE_ANIM(FALSE); if (gLoadFail) - DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + DebugPrintf("Move failed: %S (%u)", GetMoveName(move), move); EXPECT_EQ(gLoadFail, FALSE); } } @@ -935,7 +943,7 @@ DOUBLE_BATTLE_TEST("Move Animations don't leak when used - Doubles (playerLeft t HP(9997); MaxHP(9999); Item(ITEM_ORAN_BERRY); if (attacker == opponentLeft) { if (species == SPECIES_WOBBUFFET) Gender(MON_FEMALE); - if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); + if (GetMoveEffect(move) == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); if (species == SPECIES_KLINKLANG) Ability(ABILITY_PLUS); } } @@ -943,23 +951,23 @@ DOUBLE_BATTLE_TEST("Move Animations don't leak when used - Doubles (playerLeft t HP(9997); MaxHP(9999); Item(ITEM_ORAN_BERRY); if (attacker == opponentRight) { if (species == SPECIES_WOBBUFFET) Gender(MON_FEMALE); - if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); + if (GetMoveEffect(move) == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); if (species == SPECIES_KLINKLANG) Ability(ABILITY_PLUS); } } OPPONENT(SPECIES_WOBBUFFET) { Gender(MON_MALE); MaxHP(9999); Moves(MOVE_POUND, MOVE_CELEBRATE); - HP(gMovesInfo[move].effect == EFFECT_REVIVAL_BLESSING ? 0 : 9998); + HP(GetMoveEffect(move) == EFFECT_REVIVAL_BLESSING ? 0 : 9998); } PLAYER(SPECIES_WOBBUFFET) { Gender(MON_MALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); Ability(ABILITY_TELEPATHY); - if (gMovesInfo[move].effect != EFFECT_BESTOW) { + if (GetMoveEffect(move) != EFFECT_BESTOW) { Item(ITEM_ORAN_BERRY); } } PLAYER(SPECIES_WOBBUFFET) { Gender(MON_MALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); Ability(ABILITY_TELEPATHY); - if (gMovesInfo[move].effect != EFFECT_BESTOW) { + if (GetMoveEffect(move) != EFFECT_BESTOW) { Item(ITEM_ORAN_BERRY); } } @@ -971,7 +979,7 @@ DOUBLE_BATTLE_TEST("Move Animations don't leak when used - Doubles (playerLeft t } THEN { FORCE_MOVE_ANIM(FALSE); if (gLoadFail) - DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + DebugPrintf("Move failed: %S (%u)", GetMoveName(move), move); EXPECT_EQ(gLoadFail, FALSE); } } @@ -994,7 +1002,7 @@ DOUBLE_BATTLE_TEST("Move Animations don't leak when used - Doubles (playerRight HP(9997); MaxHP(9999); Item(ITEM_ORAN_BERRY); if (attacker == opponentLeft) { if (species == SPECIES_WOBBUFFET) Gender(MON_FEMALE); - if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); + if (GetMoveEffect(move) == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); if (species == SPECIES_KLINKLANG) Ability(ABILITY_PLUS); } } @@ -1002,23 +1010,23 @@ DOUBLE_BATTLE_TEST("Move Animations don't leak when used - Doubles (playerRight HP(9997); MaxHP(9999); Item(ITEM_ORAN_BERRY); if (attacker == opponentRight) { if (species == SPECIES_WOBBUFFET) Gender(MON_FEMALE); - if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); + if (GetMoveEffect(move) == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); if (species == SPECIES_KLINKLANG) Ability(ABILITY_PLUS); } } OPPONENT(SPECIES_WOBBUFFET) { Gender(MON_MALE); MaxHP(9999); Moves(MOVE_POUND, MOVE_CELEBRATE); - HP(gMovesInfo[move].effect == EFFECT_REVIVAL_BLESSING ? 0 : 9998); + HP(GetMoveEffect(move) == EFFECT_REVIVAL_BLESSING ? 0 : 9998); } PLAYER(SPECIES_WOBBUFFET) { Gender(MON_MALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); Ability(ABILITY_TELEPATHY); - if (gMovesInfo[move].effect != EFFECT_BESTOW) { + if (GetMoveEffect(move) != EFFECT_BESTOW) { Item(ITEM_ORAN_BERRY); } } PLAYER(SPECIES_WOBBUFFET) { Gender(MON_MALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); Ability(ABILITY_TELEPATHY); - if (gMovesInfo[move].effect != EFFECT_BESTOW) { + if (GetMoveEffect(move) != EFFECT_BESTOW) { Item(ITEM_ORAN_BERRY); } } @@ -1030,7 +1038,7 @@ DOUBLE_BATTLE_TEST("Move Animations don't leak when used - Doubles (playerRight } THEN { FORCE_MOVE_ANIM(FALSE); if (gLoadFail) - DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + DebugPrintf("Move failed: %S (%u)", GetMoveName(move), move); EXPECT_EQ(gLoadFail, FALSE); } } @@ -1053,7 +1061,7 @@ DOUBLE_BATTLE_TEST("Move Animations don't leak when used - Doubles (opponentleft HP(9997); MaxHP(9999); Item(ITEM_ORAN_BERRY); if (attacker == opponentLeft) { if (species == SPECIES_WOBBUFFET) Gender(MON_FEMALE); - if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); + if (GetMoveEffect(move) == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); if (species == SPECIES_KLINKLANG) Ability(ABILITY_PLUS); } } @@ -1061,23 +1069,23 @@ DOUBLE_BATTLE_TEST("Move Animations don't leak when used - Doubles (opponentleft HP(9997); MaxHP(9999); Item(ITEM_ORAN_BERRY); if (attacker == opponentRight) { if (species == SPECIES_WOBBUFFET) Gender(MON_FEMALE); - if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); + if (GetMoveEffect(move) == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); if (species == SPECIES_KLINKLANG) Ability(ABILITY_PLUS); } } OPPONENT(SPECIES_WOBBUFFET) { Gender(MON_MALE); MaxHP(9999); Moves(MOVE_POUND, MOVE_CELEBRATE); - HP(gMovesInfo[move].effect == EFFECT_REVIVAL_BLESSING ? 0 : 9998); + HP(GetMoveEffect(move) == EFFECT_REVIVAL_BLESSING ? 0 : 9998); } PLAYER(SPECIES_WOBBUFFET) { Gender(MON_MALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); Ability(ABILITY_TELEPATHY); - if (gMovesInfo[move].effect != EFFECT_BESTOW) { + if (GetMoveEffect(move) != EFFECT_BESTOW) { Item(ITEM_ORAN_BERRY); } } PLAYER(SPECIES_WOBBUFFET) { Gender(MON_MALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); Ability(ABILITY_TELEPATHY); - if (gMovesInfo[move].effect != EFFECT_BESTOW) { + if (GetMoveEffect(move) != EFFECT_BESTOW) { Item(ITEM_ORAN_BERRY); } } @@ -1089,7 +1097,7 @@ DOUBLE_BATTLE_TEST("Move Animations don't leak when used - Doubles (opponentleft } THEN { FORCE_MOVE_ANIM(FALSE); if (gLoadFail) - DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + DebugPrintf("Move failed: %S (%u)", GetMoveName(move), move); EXPECT_EQ(gLoadFail, FALSE); } } @@ -1112,7 +1120,7 @@ DOUBLE_BATTLE_TEST("Move Animations don't leak when used - Doubles (opponentRigh HP(9997); MaxHP(9999); Item(ITEM_ORAN_BERRY); if (attacker == opponentLeft) { if (species == SPECIES_WOBBUFFET) Gender(MON_FEMALE); - if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); + if (GetMoveEffect(move) == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); if (species == SPECIES_KLINKLANG) Ability(ABILITY_PLUS); } } @@ -1120,23 +1128,23 @@ DOUBLE_BATTLE_TEST("Move Animations don't leak when used - Doubles (opponentRigh HP(9997); MaxHP(9999); Item(ITEM_ORAN_BERRY); if (attacker == opponentRight) { if (species == SPECIES_WOBBUFFET) Gender(MON_FEMALE); - if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); + if (GetMoveEffect(move) == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); if (species == SPECIES_KLINKLANG) Ability(ABILITY_PLUS); } } OPPONENT(SPECIES_WOBBUFFET) { Gender(MON_MALE); MaxHP(9999); Moves(MOVE_POUND, MOVE_CELEBRATE); - HP(gMovesInfo[move].effect == EFFECT_REVIVAL_BLESSING ? 0 : 9998); + HP(GetMoveEffect(move) == EFFECT_REVIVAL_BLESSING ? 0 : 9998); } PLAYER(SPECIES_WOBBUFFET) { Gender(MON_MALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); Ability(ABILITY_TELEPATHY); - if (gMovesInfo[move].effect != EFFECT_BESTOW) { + if (GetMoveEffect(move) != EFFECT_BESTOW) { Item(ITEM_ORAN_BERRY); } } PLAYER(SPECIES_WOBBUFFET) { Gender(MON_MALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); Ability(ABILITY_TELEPATHY); - if (gMovesInfo[move].effect != EFFECT_BESTOW) { + if (GetMoveEffect(move) != EFFECT_BESTOW) { Item(ITEM_ORAN_BERRY); } } @@ -1148,7 +1156,7 @@ DOUBLE_BATTLE_TEST("Move Animations don't leak when used - Doubles (opponentRigh } THEN { FORCE_MOVE_ANIM(FALSE); if (gLoadFail) - DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + DebugPrintf("Move failed: %S (%u)", GetMoveName(move), move); EXPECT_EQ(gLoadFail, FALSE); } } @@ -1167,27 +1175,27 @@ SINGLE_BATTLE_TEST("Move Animations occur before their stat change animations - PLAYER(species) { HP(9997); MaxHP(9999); Item(ITEM_ORAN_BERRY); if (species == SPECIES_WOBBUFFET) Gender(MON_FEMALE); - if (gMovesInfo[move].effect == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); + if (GetMoveEffect(move) == EFFECT_LAST_RESORT) Moves(move, MOVE_POUND); if (species == SPECIES_KLINKLANG) Ability(ABILITY_PLUS); } PLAYER(SPECIES_WOBBUFFET) { Gender(MON_MALE); MaxHP(9999); Moves(MOVE_POUND); - HP(gMovesInfo[move].effect == EFFECT_REVIVAL_BLESSING ? 0 : 9998); + HP(GetMoveEffect(move) == EFFECT_REVIVAL_BLESSING ? 0 : 9998); } OPPONENT(SPECIES_WOBBUFFET) { Gender(MON_MALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); Ability(ABILITY_TELEPATHY); - if (gMovesInfo[move].effect != EFFECT_BESTOW) + if (GetMoveEffect(move) != EFFECT_BESTOW) Item(ITEM_ORAN_BERRY); } OPPONENT(SPECIES_WOBBUFFET) { Gender(MON_FEMALE); HP(9998); MaxHP(9999); SpDefense(9999); Defense(9999); } } WHEN { WhenSingles(move, player, opponent); } SCENE { - if (!(gMovesInfo[move].effect == EFFECT_RECYCLE - || gMovesInfo[move].effect == EFFECT_BELCH - || gMovesInfo[move].effect == EFFECT_SPIT_UP - || gMovesInfo[move].effect == EFFECT_SWALLOW - || gMovesInfo[move].effect == EFFECT_TOPSY_TURVY)) // require a move that boosts stats before using this move + if (!(GetMoveEffect(move) == EFFECT_RECYCLE + || GetMoveEffect(move) == EFFECT_BELCH + || GetMoveEffect(move) == EFFECT_SPIT_UP + || GetMoveEffect(move) == EFFECT_SWALLOW + || GetMoveEffect(move) == EFFECT_TOPSY_TURVY)) // require a move that boosts stats before using this move { NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); @@ -1198,7 +1206,7 @@ SINGLE_BATTLE_TEST("Move Animations occur before their stat change animations - } THEN { FORCE_MOVE_ANIM(FALSE); if (gLoadFail) - DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + DebugPrintf("Move failed: %S (%u)", GetMoveName(move), move); EXPECT_EQ(gLoadFail, FALSE); } } @@ -1266,7 +1274,7 @@ SINGLE_BATTLE_TEST("Z-Moves don't leak when used - Singles (player to opponent)" } THEN { FORCE_MOVE_ANIM(FALSE); if (gLoadFail) - DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + DebugPrintf("Move failed: %S (%u)", GetMoveName(move), move); EXPECT_EQ(gLoadFail, FALSE); } } @@ -1295,7 +1303,7 @@ SINGLE_BATTLE_TEST("Z-Moves don't leak when used - Singles (opponent to player)" } THEN { FORCE_MOVE_ANIM(FALSE); if (gLoadFail) - DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + DebugPrintf("Move failed: %S (%u)", GetMoveName(move), move); EXPECT_EQ(gLoadFail, FALSE); } } @@ -1326,7 +1334,7 @@ DOUBLE_BATTLE_TEST("Z-Moves don't leak when used - Doubles (playerLeft to oppone } THEN { FORCE_MOVE_ANIM(FALSE); if (gLoadFail) - DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + DebugPrintf("Move failed: %S (%u)", GetMoveName(move), move); EXPECT_EQ(gLoadFail, FALSE); } } @@ -1357,7 +1365,7 @@ DOUBLE_BATTLE_TEST("Z-Moves don't leak when used - Doubles (playerLeft to oppone } THEN { FORCE_MOVE_ANIM(FALSE); if (gLoadFail) - DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + DebugPrintf("Move failed: %S (%u)", GetMoveName(move), move); EXPECT_EQ(gLoadFail, FALSE); } } @@ -1388,7 +1396,7 @@ DOUBLE_BATTLE_TEST("Z-Moves don't leak when used - Doubles (playerRight to oppon } THEN { FORCE_MOVE_ANIM(FALSE); if (gLoadFail) - DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + DebugPrintf("Move failed: %S (%u)", GetMoveName(move), move); EXPECT_EQ(gLoadFail, FALSE); } } @@ -1419,7 +1427,7 @@ DOUBLE_BATTLE_TEST("Z-Moves don't leak when used - Doubles (playerRight to oppon } THEN { FORCE_MOVE_ANIM(FALSE); if (gLoadFail) - DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + DebugPrintf("Move failed: %S (%u)", GetMoveName(move), move); EXPECT_EQ(gLoadFail, FALSE); } } @@ -1450,7 +1458,7 @@ DOUBLE_BATTLE_TEST("Z-Moves don't leak when used - Doubles (opponentLeft to play } THEN { FORCE_MOVE_ANIM(FALSE); if (gLoadFail) - DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + DebugPrintf("Move failed: %S (%u)", GetMoveName(move), move); EXPECT_EQ(gLoadFail, FALSE); } } @@ -1481,7 +1489,7 @@ DOUBLE_BATTLE_TEST("Z-Moves don't leak when used - Doubles (opponentLeft to play } THEN { FORCE_MOVE_ANIM(FALSE); if (gLoadFail) - DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + DebugPrintf("Move failed: %S (%u)", GetMoveName(move), move); EXPECT_EQ(gLoadFail, FALSE); } } @@ -1512,7 +1520,7 @@ DOUBLE_BATTLE_TEST("Z-Moves don't leak when used - Doubles (opponentRight to pla } THEN { FORCE_MOVE_ANIM(FALSE); if (gLoadFail) - DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + DebugPrintf("Move failed: %S (%u)", GetMoveName(move), move); EXPECT_EQ(gLoadFail, FALSE); } } @@ -1543,7 +1551,7 @@ DOUBLE_BATTLE_TEST("Z-Moves don't leak when used - Doubles (opponentRight to pla } THEN { FORCE_MOVE_ANIM(FALSE); if (gLoadFail) - DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + DebugPrintf("Move failed: %S (%u)", GetMoveName(move), move); EXPECT_EQ(gLoadFail, FALSE); } } @@ -1588,7 +1596,7 @@ SINGLE_BATTLE_TEST("Tera Blast doesn't leak when used - Singles (player to oppon } THEN { FORCE_MOVE_ANIM(FALSE); if (gLoadFail) - DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + DebugPrintf("Move failed: %S (%u)", GetMoveName(move), move); EXPECT_EQ(gLoadFail, FALSE); } } @@ -1610,7 +1618,7 @@ SINGLE_BATTLE_TEST("Tera Blast doesn't leak when used - Singles (opponent to pla } THEN { FORCE_MOVE_ANIM(FALSE); if (gLoadFail) - DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + DebugPrintf("Move failed: %S (%u)", GetMoveName(move), move); EXPECT_EQ(gLoadFail, FALSE); } } @@ -1634,7 +1642,7 @@ DOUBLE_BATTLE_TEST("Tera Blast doesn't leak when used - Doubles (playerLeft to o } THEN { FORCE_MOVE_ANIM(FALSE); if (gLoadFail) - DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + DebugPrintf("Move failed: %S (%u)", GetMoveName(move), move); EXPECT_EQ(gLoadFail, FALSE); } } @@ -1658,7 +1666,7 @@ DOUBLE_BATTLE_TEST("Tera Blast doesn't leak when used - Doubles (playerLeft to o } THEN { FORCE_MOVE_ANIM(FALSE); if (gLoadFail) - DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + DebugPrintf("Move failed: %S (%u)", GetMoveName(move), move); EXPECT_EQ(gLoadFail, FALSE); } } @@ -1682,7 +1690,7 @@ DOUBLE_BATTLE_TEST("Tera Blast doesn't leak when used - Doubles (playerRight to } THEN { FORCE_MOVE_ANIM(FALSE); if (gLoadFail) - DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + DebugPrintf("Move failed: %S (%u)", GetMoveName(move), move); EXPECT_EQ(gLoadFail, FALSE); } } @@ -1706,7 +1714,7 @@ DOUBLE_BATTLE_TEST("Tera Blast doesn't leak when used - Doubles (playerRight to } THEN { FORCE_MOVE_ANIM(FALSE); if (gLoadFail) - DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + DebugPrintf("Move failed: %S (%u)", GetMoveName(move), move); EXPECT_EQ(gLoadFail, FALSE); } } @@ -1730,7 +1738,7 @@ DOUBLE_BATTLE_TEST("Tera Blast doesn't leak when used - Doubles (opponentLeft to } THEN { FORCE_MOVE_ANIM(FALSE); if (gLoadFail) - DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + DebugPrintf("Move failed: %S (%u)", GetMoveName(move), move); EXPECT_EQ(gLoadFail, FALSE); } } @@ -1754,7 +1762,7 @@ DOUBLE_BATTLE_TEST("Tera Blast doesn't leak when used - Doubles (opponentLeft to } THEN { FORCE_MOVE_ANIM(FALSE); if (gLoadFail) - DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + DebugPrintf("Move failed: %S (%u)", GetMoveName(move), move); EXPECT_EQ(gLoadFail, FALSE); } } @@ -1778,7 +1786,7 @@ DOUBLE_BATTLE_TEST("Tera Blast doesn't leak when used - Doubles (opponentRight t } THEN { FORCE_MOVE_ANIM(FALSE); if (gLoadFail) - DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + DebugPrintf("Move failed: %S (%u)", GetMoveName(move), move); EXPECT_EQ(gLoadFail, FALSE); } } @@ -1802,7 +1810,7 @@ DOUBLE_BATTLE_TEST("Tera Blast doesn't leak when used - Doubles (opponentRight t } THEN { FORCE_MOVE_ANIM(FALSE); if (gLoadFail) - DebugPrintf("Move failed: %S (%u)", gMovesInfo[move].name, move); + DebugPrintf("Move failed: %S (%u)", GetMoveName(move), move); EXPECT_EQ(gLoadFail, FALSE); } } diff --git a/test/battle/move_effect/ally_switch.c b/test/battle/move_effect/ally_switch.c index e3f99cb73b..8300c7b9c8 100644 --- a/test/battle/move_effect/ally_switch.c +++ b/test/battle/move_effect/ally_switch.c @@ -170,7 +170,7 @@ DOUBLE_BATTLE_TEST("Ally Switch - move fails if the target was ally which change DOUBLE_BATTLE_TEST("Ally Switch doesn't make self-targeting status moves fail") { GIVEN { - ASSUME(gMovesInfo[MOVE_HARDEN].target == MOVE_TARGET_USER); + ASSUME(GetMoveTarget(MOVE_HARDEN) == MOVE_TARGET_USER); PLAYER(SPECIES_WOBBUFFET); PLAYER(SPECIES_WYNAUT); OPPONENT(SPECIES_WOBBUFFET); @@ -366,7 +366,7 @@ DOUBLE_BATTLE_TEST("Ally Switch does not update leech seed battler") ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_LEECH_SEED_DRAIN, playerLeft); HP_BAR(playerLeft); HP_BAR(opponentLeft); - + MESSAGE("The opposing Ralts used Ally Switch!"); ANIMATION(ANIM_TYPE_MOVE, MOVE_ALLY_SWITCH, opponentRight); MESSAGE("The opposing Ralts and the opposing Bulbasaur switched places!"); diff --git a/test/battle/move_effect/heal_bell.c b/test/battle/move_effect/heal_bell.c index 67bdfda1b8..b3f6af0c45 100644 --- a/test/battle/move_effect/heal_bell.c +++ b/test/battle/move_effect/heal_bell.c @@ -3,8 +3,8 @@ ASSUMPTIONS { - ASSUME(gMovesInfo[MOVE_HEAL_BELL].effect == EFFECT_HEAL_BELL); - ASSUME(gMovesInfo[MOVE_AROMATHERAPY].effect == EFFECT_HEAL_BELL); + ASSUME(GetMoveEffect(MOVE_HEAL_BELL) == EFFECT_HEAL_BELL); + ASSUME(GetMoveEffect(MOVE_AROMATHERAPY) == EFFECT_HEAL_BELL); ASSUME(MoveHasAdditionalEffect(MOVE_SPARKLY_SWIRL, MOVE_EFFECT_AROMATHERAPY)); }