From fde3fc0a521ad0ce57a548920e27d9532e84629b Mon Sep 17 00:00:00 2001 From: Bassoonian Date: Thu, 28 Dec 2023 16:57:29 +0100 Subject: [PATCH] Metronome move fix (#3852) * Draft Indigo Disk move data * Add basic defines (flags, targets and priority missing) * Update move flags * Temper Flare is Stomping Tantrum * Fix failing tests * Disable Burning Bulwark for now --- data/battle_anim_scripts.s | 45 ++++-- include/config/battle.h | 1 + include/constants/moves.h | 32 ++-- include/pokemon.h | 1 + src/battle_script_commands.c | 4 +- src/data/battle_moves.h | 255 +++++++++++++++++++++++++++++- src/data/contest_moves.h | 30 ++++ src/data/text/move_descriptions.h | 63 ++++++++ src/data/text/move_names.h | 30 ++++ test/battle/ai_check_viability.c | 8 +- 10 files changed, 428 insertions(+), 41 deletions(-) diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index d9e7df63b6..70e3018094 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -860,21 +860,21 @@ gBattleAnims_Moves:: .4byte Move_MATCHA_GOTCHA .4byte Move_SYRUP_BOMB .4byte Move_IVY_CUDGEL - .4byte Move_833 - .4byte Move_834 - .4byte Move_835 - .4byte Move_836 - .4byte Move_837 - .4byte Move_838 - .4byte Move_839 - .4byte Move_840 - .4byte Move_841 - .4byte Move_842 - .4byte Move_843 - .4byte Move_844 - .4byte Move_845 - .4byte Move_846 - .4byte Move_847 + .4byte Move_ELECTRO_SHOT + .4byte Move_TERA_STARSTORM + .4byte Move_FICKLE_BEAM + .4byte Move_BURNING_BULWARK + .4byte Move_THUNDERCLAP + .4byte Move_MIGHTY_CLEAVE + .4byte Move_TACHYON_CUTTER + .4byte Move_HARD_PRESS + .4byte Move_DRAGON_CHEER + .4byte Move_ALLURING_VOICE + .4byte Move_TEMPER_FLARE + .4byte Move_SUPERCELL_SLAM + .4byte Move_PSYCHIC_NOISE + .4byte Move_UPPER_HAND + .4byte Move_MALIGNANT_CHAIN @@@@ Z MOVES .4byte Move_BREAKNECK_BLITZ .4byte Move_ALL_OUT_PUMMELING @@ -16972,6 +16972,21 @@ Move_HYDRO_STEAM:: Move_BLOOD_MOON:: Move_MATCHA_GOTCHA:: Move_IVY_CUDGEL:: +Move_ELECTRO_SHOT:: +Move_TERA_STARSTORM:: +Move_FICKLE_BEAM:: +Move_BURNING_BULWARK:: +Move_THUNDERCLAP:: +Move_MIGHTY_CLEAVE:: +Move_TACHYON_CUTTER:: +Move_HARD_PRESS:: +Move_DRAGON_CHEER:: +Move_ALLURING_VOICE:: +Move_TEMPER_FLARE:: +Move_SUPERCELL_SLAM:: +Move_PSYCHIC_NOISE:: +Move_UPPER_HAND:: +Move_MALIGNANT_CHAIN:: end @to do @@@@@@@@@@@@@@@@@@@@@@@ GEN 1-3 @@@@@@@@@@@@@@@@@@@@@@@ diff --git a/include/config/battle.h b/include/config/battle.h index 90c8728dde..9dde3bb0fe 100644 --- a/include/config/battle.h +++ b/include/config/battle.h @@ -111,6 +111,7 @@ #define B_WIDE_GUARD GEN_LATEST // In Gen5 only, Quick Guard has a chance to fail if used consecutively. #define B_QUICK_GUARD GEN_LATEST // In Gen5 only, Wide Guard has a chance to fail if used consecutively. #define B_IMPRISON GEN_LATEST // In Gen5+, Imprison doesn't fail if opposing pokemon don't have any moves the user knows. +#define B_SKETCH_BANS GEN_LATEST // In Gen9+, Sketch is unable to copy more moves than in previous generations. // Ability settings #define B_EXPANDED_ABILITY_NAMES TRUE // If TRUE, ability names are increased from 12 characters to 16 characters. diff --git a/include/constants/moves.h b/include/constants/moves.h index a8fcb01654..b7ded3d513 100644 --- a/include/constants/moves.h +++ b/include/constants/moves.h @@ -886,25 +886,27 @@ #define MOVE_MAGICAL_TORQUE 826 #define MOVE_PSYBLADE 827 #define MOVE_HYDRO_STEAM 828 +// The Teal Mask Moves #define MOVE_BLOOD_MOON 829 #define MOVE_MATCHA_GOTCHA 830 #define MOVE_SYRUP_BOMB 831 #define MOVE_IVY_CUDGEL 832 -#define MOVE_833 833 -#define MOVE_834 834 -#define MOVE_835 835 -#define MOVE_836 836 -#define MOVE_837 837 -#define MOVE_838 838 -#define MOVE_839 839 -#define MOVE_840 840 -#define MOVE_841 841 -#define MOVE_842 842 -#define MOVE_843 843 -#define MOVE_844 844 -#define MOVE_845 845 -#define MOVE_846 846 -#define MOVE_847 847 +// The Indigo Disk Moves +#define MOVE_ELECTRO_SHOT 833 +#define MOVE_TERA_STARSTORM 834 +#define MOVE_FICKLE_BEAM 835 +#define MOVE_BURNING_BULWARK 836 +#define MOVE_THUNDERCLAP 837 +#define MOVE_MIGHTY_CLEAVE 838 +#define MOVE_TACHYON_CUTTER 839 +#define MOVE_HARD_PRESS 840 +#define MOVE_DRAGON_CHEER 841 +#define MOVE_ALLURING_VOICE 842 +#define MOVE_TEMPER_FLARE 843 +#define MOVE_SUPERCELL_SLAM 844 +#define MOVE_PSYCHIC_NOISE 845 +#define MOVE_UPPER_HAND 846 +#define MOVE_MALIGNANT_CHAIN 847 #define MOVES_COUNT_GEN9 848 diff --git a/include/pokemon.h b/include/pokemon.h index dbf4c41c3b..4bfdd4b117 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -461,6 +461,7 @@ struct BattleMove u32 encoreBanned:1; u32 parentalBondBanned:1; u32 skyBattleBanned:1; + u32 sketchBanned:1; }; #define SPINDA_SPOT_WIDTH 16 diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 7450f573dc..0bcde61666 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -12650,10 +12650,8 @@ static void Cmd_copymovepermanently(void) gChosenMove = MOVE_UNAVAILABLE; if (!(gBattleMons[gBattlerAttacker].status2 & STATUS2_TRANSFORMED) - && gLastPrintedMoves[gBattlerTarget] != MOVE_STRUGGLE - && gLastPrintedMoves[gBattlerTarget] != MOVE_NONE && gLastPrintedMoves[gBattlerTarget] != MOVE_UNAVAILABLE - && gLastPrintedMoves[gBattlerTarget] != MOVE_SKETCH) + && !gBattleMoves[gLastPrintedMoves[gBattlerTarget]].sketchBanned) { s32 i; diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h index 49f5a87847..1fb2923c53 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -13,6 +13,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_PHYSICAL, .metronomeBanned = TRUE, .mirrorMoveBanned = TRUE, + .sketchBanned = TRUE, }, [MOVE_POUND] = @@ -2951,6 +2952,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .instructBanned = TRUE, .encoreBanned = TRUE, .assistBanned = TRUE, + .sketchBanned = TRUE, }, [MOVE_SKETCH] = @@ -2975,6 +2977,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .instructBanned = TRUE, .encoreBanned = TRUE, .assistBanned = TRUE, + .sketchBanned = TRUE, }, [MOVE_TRIPLE_KICK] = @@ -3176,6 +3179,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .highCritRatio = TRUE, + .windMove = TRUE, }, [MOVE_COTTON_SPORE] = @@ -5290,7 +5294,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = [MOVE_LUSTER_PURGE] = { .effect = EFFECT_SPECIAL_DEFENSE_DOWN_HIT, - .power = 70, + .power = (B_UPDATED_MOVE_DATA >= GEN_9) ? 95 : 70, .type = TYPE_PSYCHIC, .accuracy = 100, .pp = 5, @@ -5305,7 +5309,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = [MOVE_MIST_BALL] = { .effect = EFFECT_SPECIAL_ATTACK_DOWN_HIT, - .power = 70, + .power = (B_UPDATED_MOVE_DATA >= GEN_9) ? 95 : 70, .type = TYPE_PSYCHIC, .accuracy = 100, .pp = 5, @@ -8191,6 +8195,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .magicCoatAffected = TRUE, + .sketchBanned = (B_SKETCH_BANS >= GEN_9), }, [MOVE_SEED_FLARE] = @@ -10849,6 +10854,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .ignoresProtect = TRUE, .ignoresSubstitute = TRUE, .metronomeBanned = TRUE, + .sketchBanned = (B_SKETCH_BANS >= GEN_9), }, [MOVE_SHORE_UP] = @@ -13758,6 +13764,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, + .healBlockBanned = TRUE, + .sketchBanned = (B_SKETCH_BANS >= GEN_9), }, [MOVE_SALT_CURE] = @@ -14179,7 +14187,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, .slicingMove = TRUE, - .healBlockBanned = B_EXTRAPOLATED_MOVE_FLAGS, + .healBlockBanned = TRUE, }, [MOVE_DOUBLE_SHOCK] = @@ -14268,6 +14276,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .instructBanned = TRUE, .encoreBanned = TRUE, .assistBanned = TRUE, + .sketchBanned = (B_SKETCH_BANS >= GEN_9), }, [MOVE_WICKED_TORQUE] = @@ -14292,6 +14301,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .instructBanned = TRUE, .encoreBanned = TRUE, .assistBanned = TRUE, + .sketchBanned = (B_SKETCH_BANS >= GEN_9), }, [MOVE_NOXIOUS_TORQUE] = @@ -14316,6 +14326,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .instructBanned = TRUE, .encoreBanned = TRUE, .assistBanned = TRUE, + .sketchBanned = (B_SKETCH_BANS >= GEN_9), }, [MOVE_COMBAT_TORQUE] = @@ -14340,6 +14351,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .instructBanned = TRUE, .encoreBanned = TRUE, .assistBanned = TRUE, + .sketchBanned = (B_SKETCH_BANS >= GEN_9), }, [MOVE_MAGICAL_TORQUE] = @@ -14364,6 +14376,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .instructBanned = TRUE, .encoreBanned = TRUE, .assistBanned = TRUE, + .sketchBanned = (B_SKETCH_BANS >= GEN_9), }, [MOVE_PSYBLADE] = @@ -14426,7 +14439,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .zMoveEffect = Z_EFFECT_NONE, .thawsUser = TRUE, .metronomeBanned = TRUE, - .healBlockBanned = B_EXTRAPOLATED_MOVE_FLAGS, + .healBlockBanned = TRUE, }, [MOVE_SYRUP_BOMB] = @@ -14462,6 +14475,240 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .metronomeBanned = TRUE, }, + [MOVE_ELECTRO_SHOT] = + { + .effect = EFFECT_PLACEHOLDER, //EFFECT_ELECTRO_SHOT + .power = 130, + .type = TYPE_ELECTRIC, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_SPECIAL, + .zMoveEffect = Z_EFFECT_NONE, + //.sheerForceBoost = TRUE, (uncomment when effect is implemented, otherwise it breaks the Sheer Force Test) + }, + + [MOVE_TERA_STARSTORM] = + { + .effect = EFFECT_PLACEHOLDER, //EFFECT_TERA_STARSTORM + .power = 120, + .type = TYPE_NORMAL, // Stellar type if used by Terapagos-Stellar + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, // MOVE_TARGET_BOTH if used by Terapagos-Stellar + .priority = 0, + .split = SPLIT_SPECIAL, + .zMoveEffect = Z_EFFECT_NONE, + .assistBanned = TRUE, + .copycatBanned = TRUE, + .mimicBanned = TRUE, + .sketchBanned = (B_SKETCH_BANS >= GEN_9), + }, + + [MOVE_FICKLE_BEAM] = + { + .effect = EFFECT_PLACEHOLDER, //EFFECT_FICKLE_BEAM + .power = 80, + .type = TYPE_DRAGON, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_SPECIAL, + .zMoveEffect = Z_EFFECT_NONE, + }, + + [MOVE_BURNING_BULWARK] = + { + .effect = EFFECT_PLACEHOLDER, // EFFECT_PROTECT with effects + .power = 0, + .type = TYPE_FIRE, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 4, + .split = SPLIT_STATUS, + .zMoveEffect = Z_EFFECT_DEF_UP_1, + .protectionMove = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, + .metronomeBanned = TRUE, + .copycatBanned = TRUE, + .assistBanned = TRUE, + }, + + [MOVE_THUNDERCLAP] = + { + .effect = EFFECT_SUCKER_PUNCH, + .power = 70, + .type = TYPE_ELECTRIC, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 1, + .split = SPLIT_SPECIAL, + .zMoveEffect = Z_EFFECT_NONE, + }, + + [MOVE_MIGHTY_CLEAVE] = + { + .effect = EFFECT_FEINT, + .power = 95, + .type = TYPE_ROCK, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .slicingMove = TRUE, + }, + + [MOVE_TACHYON_CUTTER] = + { + .effect = EFFECT_HIT, + .power = 50, + .type = TYPE_STEEL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_SPECIAL, + .zMoveEffect = Z_EFFECT_NONE, + .strikeCount = 2, + .slicingMove = TRUE, + }, + + [MOVE_HARD_PRESS] = + { + .effect = EFFECT_WRING_OUT, + .power = 1, + .type = TYPE_STEEL, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + }, + + [MOVE_DRAGON_CHEER] = + { + .effect = EFFECT_PLACEHOLDER, //EFFECT_DRAGON_CHEER + .power = 0, + .type = TYPE_DRAGON, + .accuracy = 0, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_ALLY, + .priority = 0, + .split = SPLIT_STATUS, + .zMoveEffect = Z_EFFECT_NONE, + .ignoresSubstitute = TRUE, + }, + + [MOVE_ALLURING_VOICE] = + { + .effect = EFFECT_PLACEHOLDER, //EFFECT_ALLURING_VOICE + .power = 80, + .type = TYPE_FAIRY, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_SPECIAL, + .zMoveEffect = Z_EFFECT_NONE, + .soundMove = TRUE, + .ignoresSubstitute = TRUE, + }, + + [MOVE_TEMPER_FLARE] = + { + .effect = EFFECT_STOMPING_TANTRUM, + .power = 75, + .type = TYPE_FIRE, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + }, + + [MOVE_SUPERCELL_SLAM] = + { + .effect = EFFECT_RECOIL_IF_MISS, + .power = 100, + .type = TYPE_ELECTRIC, + .accuracy = 95, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + }, + + [MOVE_PSYCHIC_NOISE] = + { + .effect = EFFECT_PLACEHOLDER, //EFFECT_PSYCHIC_NOISE + .power = 75, + .type = TYPE_PSYCHIC, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_SPECIAL, + .zMoveEffect = Z_EFFECT_NONE, + .soundMove = TRUE, + .ignoresSubstitute = TRUE, + }, + + [MOVE_UPPER_HAND] = + { + .effect = EFFECT_PLACEHOLDER, //EFFECT_UPPER_HAND + .power = 65, + .type = TYPE_FIGHTING, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 3, + .split = SPLIT_PHYSICAL, + .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + }, + + [MOVE_MALIGNANT_CHAIN] = + { + .effect = EFFECT_POISON_FANG, + .power = 100, + .type = TYPE_POISON, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 50, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_SPECIAL, + .zMoveEffect = Z_EFFECT_NONE, + }, + // Z-Moves [MOVE_BREAKNECK_BLITZ] = { diff --git a/src/data/contest_moves.h b/src/data/contest_moves.h index 6084091683..8167f25104 100644 --- a/src/data/contest_moves.h +++ b/src/data/contest_moves.h @@ -6074,6 +6074,36 @@ const struct ContestMove gContestMoves[MOVES_COUNT] = [MOVE_SYRUP_BOMB] = {0}, // TODO [MOVE_IVY_CUDGEL] = {0}, // TODO + + [MOVE_ELECTRO_SHOT] = {0}, // TODO + + [MOVE_TERA_STARSTORM] = {0}, // TODO + + [MOVE_FICKLE_BEAM] = {0}, // TODO + + [MOVE_BURNING_BULWARK] = {0}, // TODO + + [MOVE_THUNDERCLAP] = {0}, // TODO + + [MOVE_MIGHTY_CLEAVE] = {0}, // TODO + + [MOVE_TACHYON_CUTTER] = {0}, // TODO + + [MOVE_HARD_PRESS] = {0}, // TODO + + [MOVE_DRAGON_CHEER] = {0}, // TODO + + [MOVE_ALLURING_VOICE] = {0}, // TODO + + [MOVE_TEMPER_FLARE] = {0}, // TODO + + [MOVE_SUPERCELL_SLAM] = {0}, // TODO + + [MOVE_PSYCHIC_NOISE] = {0}, // TODO + + [MOVE_UPPER_HAND] = {0}, // TODO + + [MOVE_MALIGNANT_CHAIN] = {0}, // TODO }; const struct ContestEffect gContestEffects[] = diff --git a/src/data/text/move_descriptions.h b/src/data/text/move_descriptions.h index c321a844b1..4aa7293036 100644 --- a/src/data/text/move_descriptions.h +++ b/src/data/text/move_descriptions.h @@ -3284,6 +3284,54 @@ static const u8 sIvyCudgelDescription[] = _( "Type changes with held mask.\n" "High critical-hit ratio."); +static const u8 sElectroShotDescription[] = _( + "Absorbs electricity in one turn,\n" + "then attacks next turn."); + +static const u8 sTeraStarstormDescription[] = _( + "Damages all opponents if user is\n" + "Stellar form Terapagos."); + +static const u8 sFickleBeamDescription[] = _( + "Shoots a beam of light. Sometimes\n" + "twice as strong."); + +static const u8 sBurningBulwarkDescription[] = _( + "Evades attack, and burns\n" + "the foe if struck."); + +static const u8 sTachyonCutterDescription[] = _( + "Launches particle blades at\n" + "the target. Strikes twice."); + +static const u8 sDragonCheerDescription[] = _( + "Increases allies' critical hit\n" + "ration, especially if Dragons."); + +static const u8 sAlluringVoiceDescription[] = _( + "Confuses the target if their\n" + "stats were boosted this turn."); + +static const u8 sTemperFlareDescription[] = _( + "A desperation attack. Power\n" + "doubles if last move failed."); + +static const u8 sSupercellSlamDescription[] = _( + "An electrified slam. If it\n" + "misses, the user is hurt."); + +static const u8 sPsychicNoiseDescription[] = _( + "Unpleasant sound waves that\n" + "damage and prevent healing."); + +static const u8 sUpperHandDescription[] = _( + "Makes the target flinch if\n" + "readying a priority move."); + +static const u8 sMalignantChainDescription[] = _( + "A corrosive chain attack\n" + "that may badly poison."); + const u8 gNotDoneYetDescription[] = _( "This move can't be used. Its\n" "effect is in development."); @@ -4127,4 +4175,19 @@ const u8 *const gMoveDescriptionPointers[MOVES_COUNT - 1] = [MOVE_MATCHA_GOTCHA - 1] = sMatchaGotchaDescription, [MOVE_SYRUP_BOMB - 1] = sSyrupBombDescription, [MOVE_IVY_CUDGEL - 1] = sIvyCudgelDescription, + [MOVE_ELECTRO_SHOT - 1] = sElectroShotDescription, + [MOVE_TERA_STARSTORM - 1] = sTeraStarstormDescription, + [MOVE_FICKLE_BEAM - 1] = sFickleBeamDescription, + [MOVE_BURNING_BULWARK - 1] = sBurningBulwarkDescription, + [MOVE_THUNDERCLAP - 1] = sSuckerPunchDescription, + [MOVE_MIGHTY_CLEAVE - 1] = sFeintDescription, + [MOVE_TACHYON_CUTTER - 1] = sTachyonCutterDescription, + [MOVE_HARD_PRESS - 1] = sWringOutDescription, + [MOVE_DRAGON_CHEER - 1] = sDragonCheerDescription, + [MOVE_ALLURING_VOICE - 1] = sAlluringVoiceDescription, + [MOVE_TEMPER_FLARE - 1] = sTemperFlareDescription, + [MOVE_SUPERCELL_SLAM - 1] = sSupercellSlamDescription, + [MOVE_PSYCHIC_NOISE - 1] = sPsychicNoiseDescription, + [MOVE_UPPER_HAND - 1] = sUpperHandDescription, + [MOVE_MALIGNANT_CHAIN - 1] = sMalignantChainDescription, }; diff --git a/src/data/text/move_names.h b/src/data/text/move_names.h index 01d613751e..f69b1f96a7 100644 --- a/src/data/text/move_names.h +++ b/src/data/text/move_names.h @@ -835,6 +835,21 @@ const u8 gMoveNames[MOVES_COUNT_DYNAMAX][MOVE_NAME_LENGTH + 1] = [MOVE_MATCHA_GOTCHA] = _("Matcha Gotcha"), [MOVE_SYRUP_BOMB] = _("Syrup Bomb"), [MOVE_IVY_CUDGEL] = _("Ivy Cudgel"), + [MOVE_ELECTRO_SHOT] = _("Electro Shot"), + [MOVE_TERA_STARSTORM] = _("Tera Starstorm"), + [MOVE_FICKLE_BEAM] = _("Fickle Beam"), + [MOVE_BURNING_BULWARK] = _("Burning Bulwark"), + [MOVE_THUNDERCLAP] = _("Thunderclap"), + [MOVE_MIGHTY_CLEAVE] = _("Mighty Cleave"), + [MOVE_TACHYON_CUTTER] = _("Tachyon Cutter"), + [MOVE_HARD_PRESS] = _("Hard Press"), + [MOVE_DRAGON_CHEER] = _("Dragon Cheer"), + [MOVE_ALLURING_VOICE] = _("Alluring Voice"), + [MOVE_TEMPER_FLARE] = _("Temper Flare"), + [MOVE_SUPERCELL_SLAM] = _("Supercell Slam"), + [MOVE_PSYCHIC_NOISE] = _("Psychic Noise"), + [MOVE_UPPER_HAND] = _("Upper Hand"), + [MOVE_MALIGNANT_CHAIN] = _("Malignant Chain"), // Max Moves [MOVE_MAX_GUARD] = _("Max Guard"), [MOVE_MAX_STRIKE] = _("Max Strike"), @@ -1727,6 +1742,21 @@ const u8 gMoveNames[MOVES_COUNT_DYNAMAX][MOVE_NAME_LENGTH + 1] = [MOVE_MATCHA_GOTCHA] = _("MatchaGotcha"), [MOVE_SYRUP_BOMB] = _("Syrup Bomb"), [MOVE_IVY_CUDGEL] = _("Ivy Cudgel"), + [MOVE_ELECTRO_SHOT] = _("Electro Shot"), + [MOVE_TERA_STARSTORM] = _("TeraStarstrm"), + [MOVE_FICKLE_BEAM] = _("Fickle Beam"), + [MOVE_BURNING_BULWARK] = _("BurnngBulwrk"), + [MOVE_THUNDERCLAP] = _("Thunderclap"), + [MOVE_MIGHTY_CLEAVE] = _("MightyCleave"), + [MOVE_TACHYON_CUTTER] = _("TachyonCuttr"), + [MOVE_HARD_PRESS] = _("Hard Press"), + [MOVE_DRAGON_CHEER] = _("Dragon Cheer"), + [MOVE_ALLURING_VOICE] = _("AllurngVoice"), + [MOVE_TEMPER_FLARE] = _("Temper Flare"), + [MOVE_SUPERCELL_SLAM] = _("SuprcellSlam"), + [MOVE_PSYCHIC_NOISE] = _("PsychicNoise"), + [MOVE_UPPER_HAND] = _("Upper Hand"), + [MOVE_MALIGNANT_CHAIN] = _("MalignntChan"), // Max Moves [MOVE_MAX_GUARD] = _("M-Guard"), [MOVE_MAX_STRIKE] = _("M-Strike"), diff --git a/test/battle/ai_check_viability.c b/test/battle/ai_check_viability.c index 4666eca7cb..2f229e3aca 100644 --- a/test/battle/ai_check_viability.c +++ b/test/battle/ai_check_viability.c @@ -177,15 +177,15 @@ AI_SINGLE_BATTLE_TEST("AI chooses moves with secondary effect that have a 100% c AI_LOG; ASSUME(gBattleMoves[MOVE_SHADOW_BALL].effect == EFFECT_SPECIAL_DEFENSE_DOWN_HIT); ASSUME(gBattleMoves[MOVE_SHADOW_BALL].secondaryEffectChance == 20); - ASSUME(gBattleMoves[MOVE_LUSTER_PURGE].effect == EFFECT_SPECIAL_DEFENSE_DOWN_HIT); - ASSUME(gBattleMoves[MOVE_LUSTER_PURGE].secondaryEffectChance == 50); + ASSUME(gBattleMoves[MOVE_OCTAZOOKA].effect == EFFECT_ACCURACY_DOWN_HIT); + ASSUME(gBattleMoves[MOVE_OCTAZOOKA].secondaryEffectChance == 50); AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); PLAYER(SPECIES_REGICE); - OPPONENT(SPECIES_REGIROCK) { Ability(ability); Moves(MOVE_SHADOW_BALL, MOVE_LUSTER_PURGE); } + OPPONENT(SPECIES_REGIROCK) { Ability(ability); Moves(MOVE_SHADOW_BALL, MOVE_OCTAZOOKA); } } WHEN { if (ability == ABILITY_NONE) TURN { EXPECT_MOVE(opponent, MOVE_SHADOW_BALL); } else - TURN { EXPECT_MOVES(opponent, MOVE_LUSTER_PURGE); } + TURN { EXPECT_MOVES(opponent, MOVE_OCTAZOOKA); } } }