diff --git a/include/constants/battle_config.h b/include/constants/battle_config.h index 60673db1d6..f3b5ba13ce 100644 --- a/include/constants/battle_config.h +++ b/include/constants/battle_config.h @@ -1,61 +1,69 @@ #ifndef GUARD_CONSTANTS_BATTLE_CONFIG_H #define GUARD_CONSTANTS_BATTLE_CONFIG_H -// Species with peculiar battle effects. Remove them if they're properly placed in constant/species.h -#define SPECIES_DIALGA 0 -#define SPECIES_PALKIA 0 -#define SPECIES_GIRATINA 0 -#define SPECIES_CHERRIM 0 -#define SPECIES_ARCEUS 0 -#define SPECIES_SILVALLY 0 -#define SPECIES_GENESECT 0 -#define SPECIES_AEGISLASH 0 -#define SPECIES_AEGISLASH_BLADE 10000 -#define SPECIES_MIMIKYU 0 -#define SPECIES_MIMIKYU_BUSTED 10001 -#define SPECIES_DARMANITAN 0 -#define SPECIES_DARMANITAN_ZEN 10002 -#define SPECIES_MINIOR_CORE 0 -#define SPECIES_MINIOR 10003 -#define SPECIES_WISHIWASHI 0 -#define SPECIES_WISHIWASHI_SCHOOL 10004 -#define SPECIES_ZYGARDE 0 // 50% -#define SPECIES_ZYGARDE_10 10005 // 10 % -#define SPECIES_ZYGARDE_COMPLETE 10006 // 100 % +#define BATTLE_ENGINE -// Items with peculiar battle effects. Remove them if they're properly placed in constant/items.h -#define ITEM_GRISEOUS_ORB 0 -#define ITEM_OCCA_BERRY 204 -#define ITEM_PASSHO_BERRY 205 -#define ITEM_WACAN_BERRY 206 -#define ITEM_RINDO_BERRY 207 -#define ITEM_YACHE_BERRY 208 -#define ITEM_CHOPLE_BERRY 177 -#define ITEM_KEBIA_BERRY 178 -#define ITEM_SHUCA_BERRY 179 -#define ITEM_COBA_BERRY 180 -#define ITEM_PAYAPA_BERRY 181 -#define ITEM_TANGA_BERRY 182 -#define ITEM_CHARTI_BERRY 183 -#define ITEM_KASIB_BERRY 184 -#define ITEM_HABAN_BERRY 185 -#define ITEM_COLBUR_BERRY 186 -#define ITEM_BABIRI_BERRY 187 -#define ITEM_CHILAN_BERRY 188 -#define ITEM_ROSELI_BERRY 189 -#define ITEM_MICLE_BERRY 197 -#define ITEM_CUSTAP_BERRY 199 -#define ITEM_JABOCA_BERRY 200 -#define ITEM_ROWAP_BERRY 201 -#define ITEM_KEE_BERRY 202 -#define ITEM_MARANGA_BERRY 203 +// Species with peculiar battle effects. +#ifndef POKEMON_EXPANSION + #define SPECIES_DIALGA 0 + #define SPECIES_PALKIA 0 + #define SPECIES_GIRATINA 0 + #define SPECIES_CHERRIM 0 + #define SPECIES_ARCEUS 0 + #define SPECIES_SILVALLY 0 + #define SPECIES_GENESECT 0 + #define SPECIES_AEGISLASH 0 + #define SPECIES_AEGISLASH_BLADE 10000 + #define SPECIES_MIMIKYU 0 + #define SPECIES_MIMIKYU_BUSTED 10001 + #define SPECIES_DARMANITAN 0 + #define SPECIES_DARMANITAN_ZEN 10002 + #define SPECIES_MINIOR_CORE 0 + #define SPECIES_MINIOR 10003 + #define SPECIES_WISHIWASHI 0 + #define SPECIES_WISHIWASHI_SCHOOL 10004 + #define SPECIES_ZYGARDE 0 // 50% + #define SPECIES_ZYGARDE_10 10005 // 10 % + #define SPECIES_ZYGARDE_COMPLETE 10006 // 100 % +#endif -#define GEN_3 0 -#define GEN_4 1 -#define GEN_5 2 -#define GEN_6 3 -#define GEN_7 4 -#define GEN_8 5 +// Items with peculiar battle effects. +#ifndef ITEM_EXPANSION + #define ITEM_CHOPLE_BERRY 177 + #define ITEM_KEBIA_BERRY 178 + #define ITEM_SHUCA_BERRY 179 + #define ITEM_COBA_BERRY 180 + #define ITEM_PAYAPA_BERRY 181 + #define ITEM_TANGA_BERRY 182 + #define ITEM_CHARTI_BERRY 183 + #define ITEM_KASIB_BERRY 184 + #define ITEM_HABAN_BERRY 185 + #define ITEM_COLBUR_BERRY 186 + #define ITEM_BABIRI_BERRY 187 + #define ITEM_CHILAN_BERRY 188 + #define ITEM_ROSELI_BERRY 189 + #define ITEM_MICLE_BERRY 197 + #define ITEM_CUSTAP_BERRY 199 + #define ITEM_JABOCA_BERRY 200 + #define ITEM_ROWAP_BERRY 201 + #define ITEM_KEE_BERRY 202 + #define ITEM_MARANGA_BERRY 203 + #define ITEM_OCCA_BERRY 204 + #define ITEM_PASSHO_BERRY 205 + #define ITEM_WACAN_BERRY 206 + #define ITEM_RINDO_BERRY 207 + #define ITEM_YACHE_BERRY 208 + #define ITEM_GRISEOUS_ORB 369 +#endif + +#ifndef GEN_3 + #define GEN_3 0 + #define GEN_4 1 + #define GEN_5 2 + #define GEN_6 3 + #define GEN_7 4 + #define GEN_8 5 +#endif // Calculation settings #define B_CRIT_CHANCE GEN_6 // Chances of a critical hit landing. See CalcCritChanceStage. @@ -72,21 +80,24 @@ #define B_PSYWAVE_DMG GEN_6 // Psywave's damage formula. See Cmd_psywavedamageeffect. #define B_BADGE_BOOST GEN_6 // In Gen4+, Gym Badges no longer boost a Pokémon's stats -// Move settings +// Move data settings +#define B_UPDATED_MOVE_DATA GEN_7 // Updates move data in gBattleMoves, including Power, Accuracy, PP, stat changes, targets, chances of secondary effects, etc. #define B_FELL_STINGER_STAT_RAISE GEN_6 // In Gen7+, it raises Atk by 3 stages instead of 2 if it causes the target to faint. +#define B_KINGS_SHIELD_LOWER_ATK GEN_6 // In Gen7+, it lowers Atk by 1 stage instead of 2 of oponents that hit it. +#define B_SPEED_BUFFING_RAPID_SPIN GEN_8 // In Gen8, Rapid Spin raises the user's Speed by 1 stage. +#define B_WATER_SHURIKEN_SPLIT GEN_8 // In Gen7, Water Shuriken was changed from Physical to Special. + +// Other move settings #define B_SOUND_SUBSTITUTE GEN_6 // In Gen6+, sound moves bypass Substitute. #define B_TOXIC_NEVER_MISS GEN_6 // In Gen6+, if Toxic is used by a Poison type, it will never miss. #define B_PAYBACK_SWITCH_BOOST GEN_6 // In Gen5+, if the opponent switches out, Payback's damage will no longer be doubled. -#define B_KINGS_SHIELD_LOWER_ATK GEN_6 // In Gen7+, it lowers Atk by 1 stage instead of 2 of oponents that hit it. #define B_BINDING_TURNS GEN_6 // In Gen5+, binding moves last for 4-5 turns instead of 2-5 turns. (With Grip Claw, 7 and 5 turns respectively.) #define B_UPROAR_TURNS GEN_6 // In Gen5+, Uproar lasts for 3 turns instead of 2-5 turns. #define B_DISABLE_TURNS GEN_6 // Disable's turns. See Cmd_disablelastusedattack. #define B_INCINERATE_GEMS GEN_6 // In Gen6+, Incinerate can destroy Gems. #define B_MINIMIZE_DMG_ACC GEN_6 // In Gen6+, moves that causes double damage to minimized Pokémon will also skip accuracy checks. -#define B_SPEED_BUFFING_RAPID_SPIN GEN_8 // In Gen8, Rapid Spin raises the user's Speed by 1 stage. // Ability settings -#define B_ABILITY_POP_UP GEN_6 // In Gen5+, the Pokémon abilities are displayed in a pop-up, when they activate in battle. #define B_ABILITY_WEATHER GEN_6 // In Gen5+, weather caused by abilities lasts the same amount of turns as induced from a move. Before, they lasted till the battle's end or weather change by a move. #define B_GALE_WINGS GEN_6 // In Gen7+ requires full HP to trigger. #define B_STANCE_CHANGE_FAIL GEN_7 // In Gen7+, Aegislash's form change does not happen, if the Pokémon cannot use a move, because of confusion, paralysis, etc. In gen6, the form change occurs despite not being able to move. @@ -99,29 +110,36 @@ #define B_HP_BERRIES GEN_6 // In Gen4+, berries which restore hp activate immediately after hp drops to half. In gen3, the effect occurs at the end of the turn. #define B_BERRIES_INSTANT GEN_6 // In Gen4+, most berries activate on battle start/switch-in if applicable. In gen3, they only activate either at the move end or turn end. -// Other -#define B_FLAG_INVERSE_BATTLE 0 // If this flag is set, the battle's type effectiveness are inversed. For example, fire is super effective against water. 0 disables the feature. +// Flag settings. Replace the 0s with defined flags to be able to toggle the following features using those flags. +#define B_FLAG_INVERSE_BATTLE 0 // If the flag is set, the battle's type effectiveness are inversed. For example, fire is super effective against water. +#define B_FLAG_FORCE_DOUBLE_WILD 0 // If the flag is set, all land and surfing wild battles will be double battles. + +// Interface settings +#define B_ABILITY_POP_UP TRUE // In Gen5+, the Pokémon abilities are displayed in a pop-up, when they activate in battle. #define B_FAST_INTRO TRUE // If set to TRUE, battle intro texts print at the same time as animation of a Pokémon, as opposing to waiting for the animation to end. #define B_SHOW_TARGETS TRUE // If set to TRUE, all available targets, for moves hitting 2 or 3 Pokémon, will be shown before selecting a move. + +// Other +#define B_DOUBLE_WILD_CHANCE 0 // % chance of encountering two Pokémon in a Wild Encounter. #define B_SLEEP_TURNS GEN_6 // In Gen5+, sleep lasts for 1-3 turns instead of 2-5 turns. #define B_PARALYZE_ELECTRIC GEN_6 // In Gen6+, Electric type Pokémon can't be paralyzed. #define B_POWDER_GRASS GEN_6 // In Gen6+, Grass type Pokémon are immune to powder and spore moves. // Animation Settings -#define NEW_SWORD_PARTICLE TRUE // update swords dance particle -#define NEW_LEECH_SEED_PARTICLE TRUE //update leech seed's animation particle -#define NEW_HORN_ATTACK_PARTICLE TRUE //update horn attack's horn -#define NEW_LEAF_PARTICLE TRUE // update leaf particle -#define NEW_EMBER_PARTICLES TRUE //updates ember fire particle -#define NEW_MEAN_LOOK_PARTICLE TRUE //update mean look eye -#define NEW_TEETH_PARTICLE TRUE //update bite/crunch teeth particle -#define NEW_HANDS_FEET_PARTICLE TRUE //update chop/kick/punch particles -#define NEW_SPIKES_PARTICLE TRUE //update spikes particle -#define NEW_FLY_BUBBLE_PARTICLE TRUE //update fly 'bubble' particle -#define NEW_CURSE_NAIL_PARTICLE TRUE //updates curse nail -#define NEW_BATON_PASS_BALL_PARTICLE TRUE //update baton pass pokeball sprite -#define NEW_MORNING_SUN_STAR_PARTICLE TRUE //updates morning sun star particles -#define NEW_IMPACT_PALETTE TRUE //updates the basic 'hit' particle -#define NEW_SURF_PARTICLE_PALETTE TRUE //updates the surf wave palette +#define B_NEW_SWORD_PARTICLE TRUE // update swords dance particle +#define B_NEW_LEECH_SEED_PARTICLE TRUE //update leech seed's animation particle +#define B_NEW_HORN_ATTACK_PARTICLE TRUE //update horn attack's horn +#define B_NEW_LEAF_PARTICLE TRUE // update leaf particle +#define B_NEW_EMBER_PARTICLES TRUE //updates ember fire particle +#define B_NEW_MEAN_LOOK_PARTICLE TRUE //update mean look eye +#define B_NEW_TEETH_PARTICLE TRUE //update bite/crunch teeth particle +#define B_NEW_HANDS_FEET_PARTICLE TRUE //update chop/kick/punch particles +#define B_NEW_SPIKES_PARTICLE TRUE //update spikes particle +#define B_NEW_FLY_BUBBLE_PARTICLE TRUE //update fly 'bubble' particle +#define B_NEW_CURSE_NAIL_PARTICLE TRUE //updates curse nail +#define B_NEW_BATON_PASS_BALL_PARTICLE TRUE //update baton pass pokeball sprite +#define B_NEW_MORNING_SUN_STAR_PARTICLE TRUE //updates morning sun star particles +#define B_NEW_IMPACT_PALETTE TRUE //updates the basic 'hit' particle +#define B_NEW_SURF_PARTICLE_PALETTE TRUE //updates the surf wave palette #endif // GUARD_CONSTANTS_BATTLE_CONFIG_H diff --git a/include/pokemon.h b/include/pokemon.h index d7dd3d9c5c..d681b9744d 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -204,6 +204,7 @@ struct BaseStats u8 noFlip : 1; }; +#include "constants/battle_config.h" struct BattleMove { u16 effect; diff --git a/include/wild_encounter.h b/include/wild_encounter.h index 55bbaa7dde..2002431707 100644 --- a/include/wild_encounter.h +++ b/include/wild_encounter.h @@ -40,5 +40,6 @@ void FishingWildEncounter(u8 rod); u16 GetLocalWildMon(bool8 *isWaterMon); u16 GetLocalWaterMon(void); bool8 UpdateRepelCounter(void); +bool8 TryDoDoubleWildBattle(void); #endif // GUARD_WILD_ENCOUNTER_H diff --git a/src/battle_interface.c b/src/battle_interface.c index e7cf26cff1..3df20066fe 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -2956,7 +2956,7 @@ void CreateAbilityPopUp(u8 battlerId, u32 ability, bool32 isDoubleBattle) const s16 (*coords)[2]; u8 spriteId1, spriteId2, battlerPosition, taskId; - if (B_ABILITY_POP_UP < GEN_5) + if (!B_ABILITY_POP_UP) return; if (!gBattleStruct->activeAbilityPopUps) diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index ec66e0b347..2e32bb1bc3 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -4828,14 +4828,14 @@ static void Cmd_moveend(void) BattleScriptPushCursor(); if (gBattleTypeFlags & BATTLE_TYPE_TRAINER || GetBattlerSide(i) == B_SIDE_PLAYER) { - if (B_ABILITY_POP_UP >= GEN_6) + if (B_ABILITY_POP_UP) gBattlescriptCurrInstr = BattleScript_EmergencyExit; else gBattlescriptCurrInstr = BattleScript_EmergencyExitNoPopUp; } else { - if (B_ABILITY_POP_UP >= GEN_6) + if (B_ABILITY_POP_UP) gBattlescriptCurrInstr = BattleScript_EmergencyExitWild; else gBattlescriptCurrInstr = BattleScript_EmergencyExitWildNoPopUp; diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h index b9b745f592..b290b2a5bf 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -184,6 +184,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_RAZOR_WIND] = { + #if B_UPDATED_MOVE_DATA >= GEN_4 + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED | FLAG_HIGH_CRIT, + #else + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + #endif .effect = EFFECT_TWO_TURNS_ATTACK, .power = 80, .type = TYPE_NORMAL, @@ -192,17 +197,20 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_BOTH, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED | FLAG_HIGH_CRIT, .split = SPLIT_SPECIAL, }, [MOVE_SWORDS_DANCE] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .pp = 20, + #else + .pp = 30, + #endif .effect = EFFECT_ATTACK_UP_2, .power = 0, .type = TYPE_NORMAL, .accuracy = 0, - .pp = 20, .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, @@ -254,22 +262,34 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_WHIRLWIND] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .accuracy = 0, + .flags = FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + #elif B_UPDATED_MOVE_DATA >= GEN_5 + .accuracy = 100, + .flags = FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + #else + .accuracy = 100, + .flags = FLAG_MIRROR_MOVE_AFFECTED, + #endif .effect = EFFECT_ROAR, .power = 0, .type = TYPE_NORMAL, - .accuracy = 0, .pp = 20, .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = -6, - .flags = FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, }, [MOVE_FLY] = { + #if B_UPDATED_MOVE_DATA >= GEN_4 + .power = 90, + #else + .power = 70, + #endif .effect = EFFECT_SEMI_INVULNERABLE, - .power = 90, .type = TYPE_FLYING, .accuracy = 95, .pp = 15, @@ -282,10 +302,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_BIND] = { + #if B_UPDATED_MOVE_DATA >= GEN_5 + .accuracy = 85, + #else + .accuracy = 75, + #endif .effect = EFFECT_TRAP, .power = 15, .type = TYPE_NORMAL, - .accuracy = 85, .pp = 20, .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, @@ -310,11 +334,19 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_VINE_WHIP] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .power = 45, + .pp = 25, + #elif B_UPDATED_MOVE_DATA >= GEN_4 + .power = 35, + .pp = 15, + #else + .power = 35, + .pp = 10, + #endif .effect = EFFECT_HIT, - .power = 45, .type = TYPE_GRASS, .accuracy = 100, - .pp = 25, .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, @@ -366,11 +398,19 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_JUMP_KICK] = { + #if B_UPDATED_MOVE_DATA >= GEN_5 + .power = 100, + .pp = 10, + #elif B_UPDATED_MOVE_DATA == GEN_4 + .power = 85, + .pp = 25, + #else + .power = 70, + .pp = 25, + #endif .effect = EFFECT_RECOIL_IF_MISS, - .power = 100, .type = TYPE_FIGHTING, .accuracy = 95, - .pp = 10, .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, @@ -464,10 +504,18 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_TACKLE] = { + #if B_UPDATED_MOVE_DATA >= GEN_7 + .power = 40, + .accuracy = 100, + #elif B_UPDATED_MOVE_DATA >= GEN_5 + .power = 50, + .accuracy = 100, + #else + .power = 35, + .accuracy = 95, + #endif .effect = EFFECT_HIT, - .power = 40, .type = TYPE_NORMAL, - .accuracy = 100, .pp = 35, .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, @@ -492,10 +540,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_WRAP] = { + #if B_UPDATED_MOVE_DATA >= GEN_5 + .accuracy = 90, + #else + .accuracy = 85, + #endif .effect = EFFECT_TRAP, .power = 15, .type = TYPE_NORMAL, - .accuracy = 90, .pp = 20, .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, @@ -520,11 +572,16 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_THRASH] = { + #if B_UPDATED_MOVE_DATA >= GEN_5 + .power = 120, + .pp = 10, + #else + .power = 90, + .pp = 20, + #endif .effect = EFFECT_RAMPAGE, - .power = 120, .type = TYPE_NORMAL, .accuracy = 100, - .pp = 10, .secondaryEffectChance = 100, .target = MOVE_TARGET_RANDOM, .priority = 0, @@ -590,10 +647,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_PIN_MISSILE] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .power = 25, + .accuracy = 95, + #else + .power = 14, + .accuracy = 85, + #endif .effect = EFFECT_MULTI_HIT, - .power = 25, .type = TYPE_BUG, - .accuracy = 95, .pp = 20, .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, @@ -646,15 +708,23 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_ROAR] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .accuracy = 0, + .flags = FLAG_MIRROR_MOVE_AFFECTED | FLAG_SOUND | FLAG_MAGICCOAT_AFFECTED, + #elif B_UPDATED_MOVE_DATA >= GEN_5 + .accuracy = 100, + .flags = FLAG_MIRROR_MOVE_AFFECTED | FLAG_SOUND | FLAG_MAGICCOAT_AFFECTED, + #else + .accuracy = 100, + .flags = FLAG_MIRROR_MOVE_AFFECTED | FLAG_SOUND, + #endif .effect = EFFECT_ROAR, .power = 0, .type = TYPE_NORMAL, - .accuracy = 0, .pp = 20, .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = -6, - .flags = FLAG_MIRROR_MOVE_AFFECTED | FLAG_SOUND | FLAG_MAGICCOAT_AFFECTED, .split = SPLIT_STATUS, }, @@ -702,21 +772,33 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_DISABLE] = { + #if B_UPDATED_MOVE_DATA >= GEN_5 + .accuracy = 100, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_MAGICCOAT_AFFECTED, + #elif B_UPDATED_MOVE_DATA == GEN_4 + .accuracy = 80, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + #else + .accuracy = 55, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + #endif .effect = EFFECT_DISABLE, .power = 0, .type = TYPE_NORMAL, - .accuracy = 100, .pp = 20, .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_MAGICCOAT_AFFECTED, .split = SPLIT_STATUS, }, [MOVE_ACID] = { - .effect = EFFECT_SPECIAL_DEFENSE_DOWN_HIT, + #if B_UPDATED_MOVE_DATA >= GEN_4 + .effect = EFFECT_SPECIAL_DEFENSE_DOWN_HIT, + #else + .effect = EFFECT_DEFENSE_DOWN_HIT, + #endif .power = 40, .type = TYPE_POISON, .accuracy = 100, @@ -744,8 +826,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_FLAMETHROWER] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .power = 90, + #else + .power = 95, + #endif .effect = EFFECT_BURN_HIT, - .power = 90, .type = TYPE_FIRE, .accuracy = 100, .pp = 15, @@ -786,8 +872,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_HYDRO_PUMP] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .power = 110, + #else + .power = 120, + #endif .effect = EFFECT_HIT, - .power = 110, .type = TYPE_WATER, .accuracy = 80, .pp = 5, @@ -800,13 +890,21 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_SURF] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .power = 90, + .target = MOVE_TARGET_FOES_AND_ALLY, + #elif B_UPDATED_MOVE_DATA >= GEN_4 + .power = 95, + .target = MOVE_TARGET_FOES_AND_ALLY, + #else + .power = 95, + .target = MOVE_TARGET_BOTH, + #endif .effect = EFFECT_HIT, - .power = 90, .type = TYPE_WATER, .accuracy = 100, .pp = 15, .secondaryEffectChance = 0, - .target = MOVE_TARGET_FOES_AND_ALLY, .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED | FLAG_DMG_UNDERWATER, .split = SPLIT_SPECIAL, @@ -814,8 +912,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_ICE_BEAM] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .power = 90, + #else + .power = 95, + #endif .effect = EFFECT_FREEZE_HIT, - .power = 90, .type = TYPE_ICE, .accuracy = 100, .pp = 10, @@ -828,8 +930,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_BLIZZARD] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .power = 110, + #else + .power = 120, + #endif .effect = EFFECT_FREEZE_HIT, - .power = 110, .type = TYPE_ICE, .accuracy = 70, .pp = 5, @@ -926,11 +1032,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_SUBMISSION] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .pp = 20, + #else + .pp = 25, + #endif .effect = EFFECT_RECOIL_25, .power = 80, .type = TYPE_FIGHTING, .accuracy = 80, - .pp = 20, .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, @@ -954,6 +1064,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_COUNTER] = { + #if B_UPDATED_MOVE_DATA >= GEN_4 + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED, + #else + .flags = FLAG_MAKES_CONTACT | FLAG_MIRROR_MOVE_AFFECTED, + #endif .effect = EFFECT_COUNTER, .power = 1, .type = TYPE_FIGHTING, @@ -962,7 +1077,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_DEPENDS, .priority = -5, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED, .split = SPLIT_PHYSICAL, }, @@ -996,11 +1110,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_ABSORB] = { + #if B_UPDATED_MOVE_DATA >= GEN_4 + .pp = 25, + #else + .pp = 20, + #endif .effect = EFFECT_ABSORB, .power = 20, .type = TYPE_GRASS, .accuracy = 100, - .pp = 25, .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, @@ -1010,11 +1128,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_MEGA_DRAIN] = { + #if B_UPDATED_MOVE_DATA >= GEN_4 + .pp = 15, + #else + .pp = 10, + #endif .effect = EFFECT_ABSORB, .power = 40, .type = TYPE_GRASS, .accuracy = 100, - .pp = 15, .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, @@ -1038,11 +1160,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_GROWTH] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .pp = 20, + #else + .pp = 40, + #endif .effect = EFFECT_GROWTH, .power = 0, .type = TYPE_NORMAL, .accuracy = 0, - .pp = 20, .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, @@ -1122,11 +1248,19 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_PETAL_DANCE] = { + #if B_UPDATED_MOVE_DATA >= GEN_5 + .power = 120, + .pp = 10, + #elif B_UPDATED_MOVE_DATA == GEN_4 + .power = 90, + .pp = 20, + #else + .power = 70, + .pp = 20, + #endif .effect = EFFECT_RAMPAGE, - .power = 120, .type = TYPE_GRASS, .accuracy = 100, - .pp = 10, .secondaryEffectChance = 100, .target = MOVE_TARGET_RANDOM, .priority = 0, @@ -1164,10 +1298,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_FIRE_SPIN] = { + #if B_UPDATED_MOVE_DATA >= GEN_5 + .power = 35, + .accuracy = 85, + #else + .power = 15, + .accuracy = 70, + #endif .effect = EFFECT_TRAP, - .power = 35, .type = TYPE_FIRE, - .accuracy = 85, .pp = 15, .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, @@ -1192,8 +1331,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_THUNDERBOLT] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .power = 90, + #else + .power = 95, + #endif .effect = EFFECT_PARALYZE_HIT, - .power = 90, .type = TYPE_ELECTRIC, .accuracy = 100, .pp = 15, @@ -1206,10 +1349,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_THUNDER_WAVE] = { + #if B_UPDATED_MOVE_DATA >= GEN_7 + .accuracy = 90, + #else + .accuracy = 100, + #endif .effect = EFFECT_PARALYZE, .power = 0, .type = TYPE_ELECTRIC, - .accuracy = 90, .pp = 20, .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, @@ -1220,8 +1367,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_THUNDER] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .power = 110, + #else + .power = 120, + #endif .effect = EFFECT_THUNDER, - .power = 110, .type = TYPE_ELECTRIC, .accuracy = 70, .pp = 10, @@ -1276,8 +1427,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_DIG] = { + #if B_UPDATED_MOVE_DATA >= GEN_4 + .power = 80, + #else + .power = 60, + #endif .effect = EFFECT_SEMI_INVULNERABLE, - .power = 80, .type = TYPE_GROUND, .accuracy = 100, .pp = 10, @@ -1290,10 +1445,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_TOXIC] = { + #if B_UPDATED_MOVE_DATA >= GEN_5 + .accuracy = 90, + #else + .accuracy = 85, + #endif .effect = EFFECT_TOXIC, .power = 0, .type = TYPE_POISON, - .accuracy = 90, .pp = 10, .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, @@ -1472,11 +1631,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_RECOVER] = { + #if B_UPDATED_MOVE_DATA >= GEN_4 + .pp = 10, + #else + .pp = 20, + #endif .effect = EFFECT_RESTORE_HP, .power = 0, .type = TYPE_NORMAL, .accuracy = 0, - .pp = 10, .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, @@ -1500,11 +1663,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_MINIMIZE] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .pp = 10, + #else + .pp = 20, + #endif .effect = EFFECT_MINIMIZE, .power = 0, .type = TYPE_NORMAL, .accuracy = 0, - .pp = 10, .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, @@ -1570,11 +1737,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_BARRIER] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .pp = 20, + #else + .pp = 30, + #endif .effect = EFFECT_DEFENSE_UP_2, .power = 0, .type = TYPE_PSYCHIC, .accuracy = 0, - .pp = 20, .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, @@ -1640,14 +1811,19 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_BIDE] = { + #if B_UPDATED_MOVE_DATA >= GEN_4 + .accuracy = 0, + .priority = 1, + #else + .accuracy = 100, + .priority = 0, + #endif .effect = EFFECT_BIDE, .power = 1, .type = TYPE_NORMAL, - .accuracy = 0, .pp = 10, .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, - .priority = 1, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_KINGSROCK_AFFECTED, .split = SPLIT_PHYSICAL, }, @@ -1710,8 +1886,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_LICK] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .power = 30, + #else + .power = 20, + #endif .effect = EFFECT_PARALYZE_HIT, - .power = 30, .type = TYPE_GHOST, .accuracy = 100, .pp = 30, @@ -1724,8 +1904,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_SMOG] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .power = 30, + #else + .power = 20, + #endif .effect = EFFECT_POISON_HIT, - .power = 30, .type = TYPE_POISON, .accuracy = 70, .pp = 20, @@ -1766,8 +1950,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_FIRE_BLAST] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .power = 120, + #else + .power = 110, + #endif .effect = EFFECT_BURN_HIT, - .power = 110, .type = TYPE_FIRE, .accuracy = 85, .pp = 5, @@ -1780,7 +1968,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_WATERFALL] = { - .effect = EFFECT_FLINCH_HIT, + #if B_UPDATED_MOVE_DATA >= GEN_4 + .effect = EFFECT_FLINCH_HIT, + #else + .effect = EFFECT_HIT, + #endif .power = 80, .type = TYPE_WATER, .accuracy = 100, @@ -1794,11 +1986,16 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_CLAMP] = { + #if B_UPDATED_MOVE_DATA >= GEN_5 + .accuracy = 85, + .pp = 15, + #else + .accuracy = 75, + .pp = 10, + #endif .effect = EFFECT_TRAP, .power = 35, .type = TYPE_WATER, - .accuracy = 85, - .pp = 15, .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, @@ -1822,11 +2019,16 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_SKULL_BASH] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .power = 130, + .pp = 10, + #else + .power = 100, + .pp = 15, + #endif .effect = EFFECT_SKULL_BASH, - .power = 130, .type = TYPE_NORMAL, .accuracy = 100, - .pp = 10, .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, @@ -1878,6 +2080,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_KINESIS] = { + #if B_UPDATED_MOVE_DATA >= GEN_4 + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_MAGICCOAT_AFFECTED, + #else + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + #endif .effect = EFFECT_ACCURACY_DOWN, .power = 0, .type = TYPE_PSYCHIC, @@ -1886,7 +2093,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_MAGICCOAT_AFFECTED, .split = SPLIT_STATUS, }, @@ -1906,11 +2112,19 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_HI_JUMP_KICK] = { + #if B_UPDATED_MOVE_DATA >= GEN_5 + .power = 130, + .pp = 10, + #elif B_UPDATED_MOVE_DATA == GEN_4 + .power = 100, + .pp = 20, + #else + .power = 85, + .pp = 20, + #endif .effect = EFFECT_RECOIL_IF_MISS, - .power = 130, .type = TYPE_FIGHTING, .accuracy = 90, - .pp = 10, .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, @@ -1920,10 +2134,16 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_GLARE] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .accuracy = 100, + #elif B_UPDATED_MOVE_DATA == GEN_5 + .accuracy = 90, + #else + .accuracy = 75, + #endif .effect = EFFECT_PARALYZE, .power = 0, .type = TYPE_NORMAL, - .accuracy = 100, .pp = 30, .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, @@ -1948,13 +2168,21 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_POISON_GAS] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .accuracy = 90, + .target = MOVE_TARGET_FOES_AND_ALLY, + #elif B_UPDATED_MOVE_DATA == GEN_5 + .accuracy = 80, + .target = MOVE_TARGET_FOES_AND_ALLY, + #else + .accuracy = 55, + .target = MOVE_TARGET_BOTH, + #endif .effect = EFFECT_POISON, .power = 0, .type = TYPE_POISON, - .accuracy = 90, .pp = 40, .secondaryEffectChance = 0, - .target = MOVE_TARGET_BOTH, .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, @@ -1976,11 +2204,16 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_LEECH_LIFE] = { + #if B_UPDATED_MOVE_DATA >= GEN_7 + .power = 80, + .pp = 10, + #else + .power = 20, + .pp = 15, + #endif .effect = EFFECT_ABSORB, - .power = 80, .type = TYPE_BUG, .accuracy = 100, - .pp = 10, .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, @@ -2033,8 +2266,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_BUBBLE] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .power = 40, + #else + .power = 20, + #endif .effect = EFFECT_SPEED_DOWN_HIT, - .power = 40, .type = TYPE_WATER, .accuracy = 100, .pp = 30, @@ -2075,10 +2312,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_FLASH] = { + #if B_UPDATED_MOVE_DATA >= GEN_4 + .accuracy = 100, + #else + .accuracy = 70, + #endif .effect = EFFECT_ACCURACY_DOWN, .power = 0, .type = TYPE_NORMAL, - .accuracy = 100, .pp = 20, .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, @@ -2089,10 +2330,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_PSYWAVE] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .accuracy = 100, + #else + .accuracy = 80, + #endif .effect = EFFECT_PSYWAVE, .power = 1, .type = TYPE_PSYCHIC, - .accuracy = 100, .pp = 15, .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, @@ -2117,11 +2362,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_ACID_ARMOR] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .pp = 20, + #else + .pp = 40, + #endif .effect = EFFECT_DEFENSE_UP_2, .power = 0, .type = TYPE_POISON, .accuracy = 0, - .pp = 20, .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, @@ -2131,10 +2380,18 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_CRABHAMMER] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .power = 100, + .accuracy = 90, + #elif B_UPDATED_MOVE_DATA == GEN_5 + .power = 90, + .accuracy = 90, + #else + .power = 90, + .accuracy = 85, + #endif .effect = EFFECT_HIT, - .power = 100, .type = TYPE_WATER, - .accuracy = 90, .pp = 10, .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, @@ -2243,6 +2500,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_CONVERSION] = { + #if B_UPDATED_MOVE_DATA >= GEN_5 + .flags = FLAG_SNATCH_AFFECTED, + #else + .flags = 0, + #endif .effect = EFFECT_CONVERSION, .power = 0, .type = TYPE_NORMAL, @@ -2251,7 +2513,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, }, @@ -2313,15 +2574,20 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_STRUGGLE] = { + #if B_UPDATED_MOVE_DATA >= GEN_4 + .accuracy = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_KINGSROCK_AFFECTED, + #else + .accuracy = 100, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + #endif .effect = EFFECT_RECOIL_25, .power = 50, .type = TYPE_NORMAL, - .accuracy = 0, .pp = 1, .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_KINGSROCK_AFFECTED, .split = SPLIT_PHYSICAL, }, @@ -2355,11 +2621,16 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_THIEF] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .power = 60, + .pp = 25, + #else + .power = 40, + .pp = 10, + #endif .effect = EFFECT_THIEF, - .power = 60, .type = TYPE_DARK, .accuracy = 100, - .pp = 25, .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, @@ -2369,6 +2640,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_SPIDER_WEB] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .flags = FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + #else + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + #endif .effect = EFFECT_MEAN_LOOK, .power = 0, .type = TYPE_BUG, @@ -2377,16 +2653,19 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, }, [MOVE_MIND_READER] = { + #if B_UPDATED_MOVE_DATA >= GEN_4 + .accuracy = 0, + #else + .accuracy = 100, + #endif .effect = EFFECT_LOCK_ON, .power = 0, .type = TYPE_NORMAL, - .accuracy = 0, .pp = 5, .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, @@ -2397,10 +2676,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_NIGHTMARE] = { + #if B_UPDATED_MOVE_DATA >= GEN_4 + .accuracy = 100, + #else + .accuracy = 0, + #endif .effect = EFFECT_NIGHTMARE, .power = 0, .type = TYPE_GHOST, - .accuracy = 100, .pp = 15, .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, @@ -2425,8 +2708,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_SNORE] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .power = 50, + #else + .power = 40, + #endif .effect = EFFECT_SNORE, - .power = 50, .type = TYPE_NORMAL, .accuracy = 100, .pp = 15, @@ -2439,9 +2726,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_CURSE] = { + #if B_UPDATED_MOVE_DATA >= GEN_5 + .type = TYPE_GHOST, + #else + .type = TYPE_MYSTERY, + #endif .effect = EFFECT_CURSE, .power = 0, - .type = TYPE_GHOST, .accuracy = 0, .pp = 10, .secondaryEffectChance = 0, @@ -2467,13 +2758,17 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_CONVERSION_2] = { + #if B_UPDATED_MOVE_DATA >= GEN_5 + .target = MOVE_TARGET_USER, + #else + .target = MOVE_TARGET_FOES_AND_ALLY, + #endif .effect = EFFECT_CONVERSION_2, .power = 0, .type = TYPE_NORMAL, .accuracy = 100, .pp = 30, .secondaryEffectChance = 0, - .target = MOVE_TARGET_USER, .priority = 0, .flags = 0, .split = SPLIT_STATUS, @@ -2495,13 +2790,21 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_COTTON_SPORE] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .accuracy = 100, + .target = MOVE_TARGET_BOTH, + #elif B_UPDATED_MOVE_DATA == GEN_5 + .accuracy = 100, + .target = MOVE_TARGET_FOES_AND_ALLY, + #else + .accuracy = 85, + .target = MOVE_TARGET_FOES_AND_ALLY, + #endif .effect = EFFECT_SPEED_DOWN_2, .power = 0, .type = TYPE_GRASS, - .accuracy = 100, .pp = 40, .secondaryEffectChance = 0, - .target = MOVE_TARGET_BOTH, .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_POWDER, .split = SPLIT_STATUS, @@ -2523,6 +2826,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_SPITE] = { + #if B_UPDATED_MOVE_DATA >= GEN_5 + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_MAGICCOAT_AFFECTED, + #else + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + #endif .effect = EFFECT_SPITE, .power = 0, .type = TYPE_GHOST, @@ -2531,7 +2839,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_MAGICCOAT_AFFECTED, .split = SPLIT_STATUS, }, @@ -2579,10 +2886,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_SCARY_FACE] = { + #if B_UPDATED_MOVE_DATA >= GEN_5 + .accuracy = 100, + #else + .accuracy = 90, + #endif .effect = EFFECT_SPEED_DOWN_2, .power = 0, .type = TYPE_NORMAL, - .accuracy = 100, .pp = 10, .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, @@ -2593,6 +2904,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_FAINT_ATTACK] = { + #if B_UPDATED_MOVE_DATA >= GEN_4 + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + #else + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + #endif .effect = EFFECT_HIT, .power = 60, .type = TYPE_DARK, @@ -2601,15 +2917,18 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, .split = SPLIT_PHYSICAL, }, [MOVE_SWEET_KISS] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .type = TYPE_FAIRY, + #else + .type = TYPE_NORMAL, + #endif .effect = EFFECT_CONFUSE, .power = 0, - .type = TYPE_FAIRY, .accuracy = 75, .pp = 10, .secondaryEffectChance = 0, @@ -2677,6 +2996,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_SPIKES] = { + #if B_UPDATED_MOVE_DATA >= GEN_5 + .flags = FLAG_MAGICCOAT_AFFECTED, + #else + .flags = 0, + #endif .effect = EFFECT_SPIKES, .power = 0, .type = TYPE_GROUND, @@ -2685,14 +3009,17 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_OPPONENTS_FIELD, .priority = 0, - .flags = FLAG_MAGICCOAT_AFFECTED, .split = SPLIT_STATUS, }, [MOVE_ZAP_CANNON] = { + #if B_UPDATED_MOVE_DATA >= GEN_4 + .power = 120, + #else + .power = 100, + #endif .effect = EFFECT_PARALYZE_HIT, - .power = 120, .type = TYPE_ELECTRIC, .accuracy = 50, .pp = 5, @@ -2705,15 +3032,23 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_FORESIGHT] = { + #if B_UPDATED_MOVE_DATA >= GEN_5 + .accuracy = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_MAGICCOAT_AFFECTED, + #elif B_UPDATED_MOVE_DATA >= GEN_4 + .accuracy = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + #else + .accuracy = 100, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + #endif .effect = EFFECT_FORESIGHT, .power = 0, .type = TYPE_NORMAL, - .accuracy = 0, .pp = 40, .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_MAGICCOAT_AFFECTED, .split = SPLIT_STATUS, }, @@ -2775,10 +3110,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_BONE_RUSH] = { + #if B_UPDATED_MOVE_DATA >= GEN_5 + .accuracy = 90, + #else + .accuracy = 80, + #endif .effect = EFFECT_MULTI_HIT, .power = 25, .type = TYPE_GROUND, - .accuracy = 90, .pp = 10, .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, @@ -2789,10 +3128,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_LOCK_ON] = { + #if B_UPDATED_MOVE_DATA >= GEN_4 + .accuracy = 100, + #else + .accuracy = 0, + #endif .effect = EFFECT_LOCK_ON, .power = 0, .type = TYPE_NORMAL, - .accuracy = 0, .pp = 5, .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, @@ -2803,11 +3146,19 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_OUTRAGE] = { + #if B_UPDATED_MOVE_DATA >= GEN_5 + .power = 120, + .pp = 10, + #elif B_UPDATED_MOVE_DATA == GEN_4 + .power = 120, + .pp = 15, + #else + .power = 90, + .pp = 15, + #endif .effect = EFFECT_RAMPAGE, - .power = 120, .type = TYPE_DRAGON, .accuracy = 100, - .pp = 10, .secondaryEffectChance = 100, .target = MOVE_TARGET_RANDOM, .priority = 0, @@ -2831,11 +3182,19 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_GIGA_DRAIN] = { + #if B_UPDATED_MOVE_DATA >= GEN_5 + .power = 75, + .pp = 10, + #elif B_UPDATED_MOVE_DATA == GEN_4 + .power = 60, + .pp = 10, + #else + .power = 60, + .pp = 5, + #endif .effect = EFFECT_ABSORB, - .power = 75, .type = TYPE_GRASS, .accuracy = 100, - .pp = 10, .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, @@ -2859,9 +3218,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_CHARM] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .type = TYPE_FAIRY, + #else + .type = TYPE_NORMAL, + #endif .effect = EFFECT_ATTACK_DOWN_2, .power = 0, - .type = TYPE_FAIRY, .accuracy = 100, .pp = 20, .secondaryEffectChance = 0, @@ -2901,10 +3264,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_SWAGGER] = { + #if B_UPDATED_MOVE_DATA >= GEN_7 + .accuracy = 85, + #else + .accuracy = 90, + #endif .effect = EFFECT_SWAGGER, .power = 0, .type = TYPE_NORMAL, - .accuracy = 85, .pp = 15, .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, @@ -2943,8 +3310,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_FURY_CUTTER] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .power = 40, + #elif B_UPDATED_MOVE_DATA == GEN_5 + .power = 20, + #else + .power = 10, + #endif .effect = EFFECT_FURY_CUTTER, - .power = 40, .type = TYPE_BUG, .accuracy = 95, .pp = 20, @@ -2971,6 +3344,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_MEAN_LOOK] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .flags = FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + #else + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + #endif .effect = EFFECT_MEAN_LOOK, .power = 0, .type = TYPE_NORMAL, @@ -2979,7 +3357,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, }, @@ -3181,6 +3558,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_ENCORE] = { + #if B_UPDATED_MOVE_DATA >= GEN_5 + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_MAGICCOAT_AFFECTED, + #else + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + #endif .effect = EFFECT_ENCORE, .power = 0, .type = TYPE_NORMAL, @@ -3189,7 +3571,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_MAGICCOAT_AFFECTED, .split = SPLIT_STATUS, }, @@ -3209,8 +3590,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_RAPID_SPIN] = { + #if B_UPDATED_MOVE_DATA >= GEN_4 + .power = 50, + #else + .power = 20, + #endif .effect = EFFECT_RAPID_SPIN, - .power = 50, .type = TYPE_NORMAL, .accuracy = 100, .pp = 40, @@ -3307,9 +3692,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_MOONLIGHT] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .type = TYPE_FAIRY, + #else + .type = TYPE_NORMAL, + #endif .effect = EFFECT_MOONLIGHT, .power = 0, - .type = TYPE_FAIRY, .accuracy = 0, .pp = 5, .secondaryEffectChance = 0, @@ -3391,7 +3780,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_CRUNCH] = { - .effect = EFFECT_DEFENSE_DOWN_HIT, + #if B_UPDATED_MOVE_DATA >= GEN_4 + .effect = EFFECT_DEFENSE_DOWN_HIT, + #else + .effect = EFFECT_SPECIAL_DEFENSE_DOWN_HIT, + #endif .power = 80, .type = TYPE_DARK, .accuracy = 100, @@ -3405,6 +3798,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_MIRROR_COAT] = { + #if B_UPDATED_MOVE_DATA >= GEN_4 + .flags = FLAG_PROTECT_AFFECTED, + #else + .flags = FLAG_MIRROR_MOVE_AFFECTED, + #endif .effect = EFFECT_MIRROR_COAT, .power = 1, .type = TYPE_PSYCHIC, @@ -3413,12 +3811,16 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_DEPENDS, .priority = -5, - .flags = FLAG_PROTECT_AFFECTED, .split = SPLIT_SPECIAL, }, [MOVE_PSYCH_UP] = { + #if B_UPDATED_MOVE_DATA >= GEN_5 + .flags = FLAG_SNATCH_AFFECTED, + #else + .flags = 0, + #endif .effect = EFFECT_PSYCH_UP, .power = 0, .type = TYPE_NORMAL, @@ -3427,12 +3829,16 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, .split = SPLIT_STATUS, }, [MOVE_EXTREME_SPEED] = { + #if B_UPDATED_MOVE_DATA >= GEN_5 + .priority = 2, + #else + .priority = 1, + #endif .effect = EFFECT_HIT, .power = 80, .type = TYPE_NORMAL, @@ -3440,13 +3846,17 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .pp = 5, .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, - .priority = 2, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, .split = SPLIT_PHYSICAL, }, [MOVE_ANCIENT_POWER] = { + #if B_UPDATED_MOVE_DATA >= GEN_4 + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, + #else + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, + #endif .effect = EFFECT_ALL_STATS_UP_HIT, .power = 60, .type = TYPE_ROCK, @@ -3455,7 +3865,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_SPECIAL, }, @@ -3475,11 +3884,21 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_FUTURE_SIGHT] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .power = 120, + .accuracy = 100, + .pp = 10, + #elif B_UPDATED_MOVE_DATA == GEN_5 + .power = 100, + .accuracy = 100, + .pp = 10, + #else + .power = 80, + .accuracy = 90, + .pp = 15, + #endif .effect = EFFECT_FUTURE_SIGHT, - .power = 120, .type = TYPE_PSYCHIC, - .accuracy = 100, - .pp = 10, .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, @@ -3489,8 +3908,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_ROCK_SMASH] = { + #if B_UPDATED_MOVE_DATA >= GEN_4 + .power = 40, + #else + .power = 20, + #endif .effect = EFFECT_DEFENSE_DOWN_HIT, - .power = 40, .type = TYPE_FIGHTING, .accuracy = 100, .pp = 15, @@ -3503,10 +3926,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_WHIRLPOOL] = { + #if B_UPDATED_MOVE_DATA >= GEN_5 + .power = 35, + .accuracy = 85, + #else + .power = 15, + .accuracy = 70, + #endif .effect = EFFECT_TRAP, - .power = 35, .type = TYPE_WATER, - .accuracy = 85, .pp = 15, .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, @@ -3518,7 +3946,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_BEAT_UP] = { .effect = EFFECT_BEAT_UP, - .power = 10, + #if B_BEAT_UP_DMG >= GEN_5 + .power = 1, + #else + .power = 10, + #endif .type = TYPE_DARK, .accuracy = 100, .pp = 10, @@ -3531,6 +3963,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_FAKE_OUT] = { + #if B_UPDATED_MOVE_DATA >= GEN_4 + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, + #else + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, + #endif .effect = EFFECT_FAKE_OUT, .power = 40, .type = TYPE_NORMAL, @@ -3539,14 +3976,17 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 3, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, }, [MOVE_UPROAR] = { + #if B_UPDATED_MOVE_DATA >= GEN_5 + .power = 90, + #else + .power = 50, + #endif .effect = EFFECT_UPROAR, - .power = 90, .type = TYPE_NORMAL, .accuracy = 100, .pp = 10, @@ -3559,11 +3999,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_STOCKPILE] = { + #if B_UPDATED_MOVE_DATA >= GEN_4 + .pp = 20, + #else + .pp = 10, + #endif .effect = EFFECT_STOCKPILE, .power = 0, .type = TYPE_NORMAL, .accuracy = 0, - .pp = 20, .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, @@ -3573,8 +4017,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_SPIT_UP] = { + #if B_UPDATED_MOVE_DATA >= GEN_4 + .power = 1, + #else + .power = 100, + #endif .effect = EFFECT_SPIT_UP, - .power = 100, .type = TYPE_NORMAL, .accuracy = 100, .pp = 10, @@ -3601,8 +4049,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_HEAT_WAVE] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .power = 95, + #else + .power = 100, + #endif .effect = EFFECT_BURN_HIT, - .power = 95, .type = TYPE_FIRE, .accuracy = 90, .pp = 10, @@ -3629,6 +4081,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_TORMENT] = { + #if B_UPDATED_MOVE_DATA >= GEN_5 + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_MAGICCOAT_AFFECTED, + #else + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + #endif .effect = EFFECT_TORMENT, .power = 0, .type = TYPE_DARK, @@ -3637,7 +4094,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_MAGICCOAT_AFFECTED, .split = SPLIT_STATUS, }, @@ -3657,10 +4113,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_WILL_O_WISP] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .accuracy = 85, + #else + .accuracy = 75, + #endif .effect = EFFECT_WILL_O_WISP, .power = 0, .type = TYPE_FIRE, - .accuracy = 85, .pp = 15, .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, @@ -3713,8 +4173,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_SMELLING_SALT] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .power = 70, + #else + .power = 60, + #endif .effect = EFFECT_SMELLINGSALT, - .power = 70, .type = TYPE_NORMAL, .accuracy = 100, .pp = 10, @@ -3770,6 +4234,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_TAUNT] = { + #if B_UPDATED_MOVE_DATA >= GEN_5 + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + #else + .flags = FLAG_PROTECT_AFFECTED, + #endif .effect = EFFECT_TAUNT, .power = 0, .type = TYPE_DARK, @@ -3778,19 +4247,22 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, }, [MOVE_HELPING_HAND] = { + #if B_UPDATED_MOVE_DATA >= GEN_4 + .target = MOVE_TARGET_ALLY, + #else + .target = MOVE_TARGET_USER, + #endif .effect = EFFECT_HELPING_HAND, .power = 0, .type = TYPE_NORMAL, .accuracy = 100, .pp = 20, .secondaryEffectChance = 0, - .target = MOVE_TARGET_USER, .priority = 5, .flags = 0, .split = SPLIT_STATUS, @@ -3826,6 +4298,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_WISH] = { + #if B_UPDATED_MOVE_DATA >= GEN_5 + .flags = FLAG_SNATCH_AFFECTED, + #else + .flags = 0, + #endif .effect = EFFECT_WISH, .power = 0, .type = TYPE_NORMAL, @@ -3834,7 +4311,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, }, @@ -3896,6 +4372,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_RECYCLE] = { + #if B_UPDATED_MOVE_DATA >= GEN_5 + .flags = FLAG_SNATCH_AFFECTED, + #else + .flags = 0, + #endif .effect = EFFECT_RECYCLE, .power = 0, .type = TYPE_NORMAL, @@ -3904,7 +4385,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, }, @@ -3952,8 +4432,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_KNOCK_OFF] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .power = 65, + #else + .power = 20, + #endif .effect = EFFECT_KNOCK_OFF, - .power = 65, .type = TYPE_DARK, .accuracy = 100, .pp = 20, @@ -4008,6 +4492,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_IMPRISON] = { + #if B_UPDATED_MOVE_DATA >= GEN_5 + .flags = FLAG_PROTECT_AFFECTED | FLAG_SNATCH_AFFECTED, + #else + .flags = FLAG_PROTECT_AFFECTED, + #endif .effect = EFFECT_IMPRISON, .power = 0, .type = TYPE_PSYCHIC, @@ -4016,7 +4505,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, }, @@ -4078,8 +4566,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_DIVE] = { + #if B_UPDATED_MOVE_DATA >= GEN_4 + .power = 80, + #else + .power = 60, + #endif .effect = EFFECT_SEMI_INVULNERABLE, - .power = 80, .type = TYPE_WATER, .accuracy = 100, .pp = 10, @@ -4176,6 +4668,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_TEETER_DANCE] = { + #if B_UPDATED_MOVE_DATA >= GEN_4 + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_DANCE, + #else + .flags = FLAG_PROTECT_AFFECTED | FLAG_DANCE, + #endif .effect = EFFECT_TEETER_DANCE, .power = 0, .type = TYPE_NORMAL, @@ -4184,7 +4681,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_FOES_AND_ALLY, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_DANCE, .split = SPLIT_STATUS, }, @@ -4274,12 +4770,16 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_POISON_FANG] = { + #if B_UPDATED_MOVE_DATA >= GEN_4 + .secondaryEffectChance = 50, + #else + .secondaryEffectChance = 30, + #endif .effect = EFFECT_POISON_FANG, .power = 50, .type = TYPE_POISON, .accuracy = 100, .pp = 15, - .secondaryEffectChance = 50, .target = MOVE_TARGET_SELECTED, .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_SHEER_FORCE_BOOST | FLAG_STRONG_JAW_BOOST, @@ -4330,10 +4830,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_METEOR_MASH] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .power = 90, + .accuracy = 90, + #else + .power = 100, + .accuracy = 85, + #endif .effect = EFFECT_ATTACK_UP_HIT, - .power = 90, .type = TYPE_STEEL, - .accuracy = 90, .pp = 10, .secondaryEffectChance = 20, .target = MOVE_TARGET_SELECTED, @@ -4400,8 +4905,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_AIR_CUTTER] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .power = 60, + #else + .power = 55, + #endif .effect = EFFECT_HIT, - .power = 60, .type = TYPE_FLYING, .accuracy = 95, .pp = 25, @@ -4414,39 +4923,58 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_OVERHEAT] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .power = 130, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + #elif B_UPDATED_MOVE_DATA >= GEN_4 + .power = 130, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + #else + .power = 140, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, + #endif .effect = EFFECT_OVERHEAT, - .power = 130, .type = TYPE_FIRE, .accuracy = 90, .pp = 5, .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, .split = SPLIT_SPECIAL, }, [MOVE_ODOR_SLEUTH] = { + #if B_UPDATED_MOVE_DATA >= GEN_4 + .accuracy = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_MAGICCOAT_AFFECTED, + #else + .accuracy = 100, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + #endif .effect = EFFECT_FORESIGHT, .power = 0, .type = TYPE_NORMAL, - .accuracy = 0, .pp = 40, .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_MAGICCOAT_AFFECTED, .split = SPLIT_STATUS, }, [MOVE_ROCK_TOMB] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .power = 60, + .accuracy = 95, + .pp = 15, + #else + .power = 50, + .accuracy = 80, + .pp = 10, + #endif .effect = EFFECT_SPEED_DOWN_HIT, - .power = 60, .type = TYPE_ROCK, - .accuracy = 95, - .pp = 15, .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, @@ -4568,11 +5096,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_EXTRASENSORY] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .pp = 20, + #else + .pp = 30, + #endif .effect = EFFECT_FLINCH_MINIMIZE_HIT, .power = 80, .type = TYPE_PSYCHIC, .accuracy = 100, - .pp = 20, .secondaryEffectChance = 10, .target = MOVE_TARGET_SELECTED, .priority = 0, @@ -4596,10 +5128,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_SAND_TOMB] = { + #if B_UPDATED_MOVE_DATA >= GEN_5 + .power = 35, + .accuracy = 85, + #else + .power = 15, + .accuracy = 70, + #endif .effect = EFFECT_TRAP, - .power = 35, .type = TYPE_GROUND, - .accuracy = 85, .pp = 15, .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, @@ -4624,8 +5161,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_MUDDY_WATER] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .power = 90, + #else + .power = 95, + #endif .effect = EFFECT_ACCURACY_DOWN_HIT, - .power = 90, .type = TYPE_WATER, .accuracy = 85, .pp = 10, @@ -4638,8 +5179,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_BULLET_SEED] = { + #if B_UPDATED_MOVE_DATA >= GEN_5 + .power = 25, + #else + .power = 10, + #endif .effect = EFFECT_MULTI_HIT, - .power = 25, .type = TYPE_GRASS, .accuracy = 100, .pp = 30, @@ -4666,8 +5211,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_ICICLE_SPEAR] = { + #if B_UPDATED_MOVE_DATA >= GEN_5 + .power = 25, + #else + .power = 10, + #endif .effect = EFFECT_MULTI_HIT, - .power = 25, .type = TYPE_ICE, .accuracy = 100, .pp = 30, @@ -4694,6 +5243,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_BLOCK] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .flags = FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + #else + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + #endif .effect = EFFECT_MEAN_LOOK, .power = 0, .type = TYPE_NORMAL, @@ -4702,7 +5256,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, }, @@ -4807,21 +5360,40 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_COVET] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .power = 60, + .pp = 25, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + #elif B_UPDATED_MOVE_DATA == GEN_5 + .power = 60, + .pp = 40, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + #elif B_UPDATED_MOVE_DATA == GEN_4 + .power = 40, + .pp = 40, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + #else + .power = 40, + .pp = 40, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + #endif .effect = EFFECT_THIEF, - .power = 60, .type = TYPE_NORMAL, .accuracy = 100, - .pp = 25, .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_PHYSICAL, }, [MOVE_VOLT_TACKLE] = { - .effect = EFFECT_RECOIL_33_STATUS, + #if B_UPDATED_MOVE_DATA >= GEN_4 + .effect = EFFECT_RECOIL_33_STATUS, + .argument = STATUS1_PARALYSIS, + #else + .effect = EFFECT_RECOIL_33, + #endif .power = 120, .type = TYPE_ELECTRIC, .accuracy = 100, @@ -4831,7 +5403,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED | FLAG_RECKLESS_BOOST | FLAG_SHEER_FORCE_BOOST, .split = SPLIT_PHYSICAL, - .argument = STATUS1_PARALYSIS, }, [MOVE_MAGICAL_LEAF] = @@ -4878,8 +5449,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_LEAF_BLADE] = { + #if B_UPDATED_MOVE_DATA >= GEN_4 + .power = 90, + #else + .power = 70, + #endif .effect = EFFECT_HIT, - .power = 90, .type = TYPE_GRASS, .accuracy = 100, .pp = 15, @@ -4906,10 +5481,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_ROCK_BLAST] = { + #if B_UPDATED_MOVE_DATA >= GEN_5 + .accuracy = 90, + #else + .accuracy = 80, + #endif .effect = EFFECT_MULTI_HIT, .power = 25, .type = TYPE_ROCK, - .accuracy = 90, .pp = 10, .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, @@ -4948,10 +5527,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_DOOM_DESIRE] = { + #if B_UPDATED_MOVE_DATA >= GEN_5 + .power = 140, + .accuracy = 100, + #else + .power = 120, + .accuracy = 85, + #endif .effect = EFFECT_FUTURE_SIGHT, - .power = 140, .type = TYPE_STEEL, - .accuracy = 100, .pp = 5, .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, @@ -5004,6 +5588,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_MIRACLE_EYE] = { + #if B_UPDATED_MOVE_DATA >= GEN_5 + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + #else + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + #endif .effect = EFFECT_MIRACLE_EYE, .power = 0, .type = TYPE_PSYCHIC, @@ -5012,14 +5601,17 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, }, [MOVE_WAKE_UP_SLAP] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .power = 70, + #else + .power = 60, + #endif .effect = EFFECT_WAKE_UP_SLAP, - .power = 70, .type = TYPE_FIGHTING, .accuracy = 100, .pp = 10, @@ -5061,6 +5653,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_HEALING_WISH] = { + #if B_UPDATED_MOVE_DATA >= GEN_5 + .flags = FLAG_SNATCH_AFFECTED, + #else + .flags = 0, + #endif .effect = EFFECT_HEALING_WISH, .power = 0, .type = TYPE_PSYCHIC, @@ -5069,7 +5666,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, }, @@ -5103,15 +5699,23 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_FEINT] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .power = 30, + .flags = FLAG_MIRROR_MOVE_AFFECTED, + #elif B_UPDATED_MOVE_DATA >= GEN_5 + .power = 30, + .flags = 0, + #else + .power = 50, + .flags = 0, + #endif .effect = EFFECT_FEINT, - .power = 30, .type = TYPE_NORMAL, .accuracy = 100, .pp = 10, .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 2, - .flags = FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_PHYSICAL, }, @@ -5131,11 +5735,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_TAILWIND] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .pp = 15, + #else + .pp = 30, + #endif .effect = EFFECT_TAILWIND, .power = 0, .type = TYPE_FLYING, .accuracy = 0, - .pp = 15, .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, @@ -5145,6 +5753,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_ACUPRESSURE] = { + #if B_UPDATED_MOVE_DATA >= GEN_5 + .flags = 0, + #else + .flags = FLAG_SNATCH_AFFECTED, + #endif .effect = EFFECT_ACUPRESSURE, .power = 0, .type = TYPE_NORMAL, @@ -5153,12 +5766,16 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER | MOVE_TARGET_ALLY, .priority = 0, - .flags = 0, .split = SPLIT_STATUS, }, [MOVE_METAL_BURST] = { + #if B_UPDATED_MOVE_DATA >= GEN_4 + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + #else + .flags = FLAG_MIRROR_MOVE_AFFECTED, + #endif .effect = EFFECT_METAL_BURST, .power = 0, .type = TYPE_STEEL, @@ -5167,7 +5784,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_DEPENDS, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_PHYSICAL, }, @@ -5215,8 +5831,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_ASSURANCE] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .power = 60, + #else + .power = 50, + #endif .effect = EFFECT_ASSURANCE, - .power = 60, .type = TYPE_DARK, .accuracy = 100, .pp = 10, @@ -5229,6 +5849,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_EMBARGO] = { + #if B_UPDATED_MOVE_DATA >= GEN_5 + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + #else + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + #endif .effect = EFFECT_EMBARGO, .power = 0, .type = TYPE_DARK, @@ -5237,7 +5862,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, }, @@ -5257,10 +5881,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_PSYCHO_SHIFT] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .accuracy = 100, + #else + .accuracy = 90, + #endif .effect = EFFECT_PSYCHO_SHIFT, .power = 0, .type = TYPE_PSYCHIC, - .accuracy = 100, .pp = 10, .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, @@ -5285,6 +5913,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_HEAL_BLOCK] = { + #if B_UPDATED_MOVE_DATA >= GEN_5 + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + #else + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + #endif .effect = EFFECT_HEAL_BLOCK, .power = 0, .type = TYPE_PSYCHIC, @@ -5293,7 +5926,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, }, @@ -5313,6 +5945,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_POWER_TRICK] = { + #if B_UPDATED_MOVE_DATA >= GEN_5 + .flags = FLAG_SNATCH_AFFECTED, + #else + .flags = 0, + #endif .effect = EFFECT_POWER_TRICK, .power = 0, .type = TYPE_PSYCHIC, @@ -5321,7 +5958,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, }, @@ -5341,6 +5977,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_LUCKY_CHANT] = { + #if B_UPDATED_MOVE_DATA >= GEN_5 + .flags = FLAG_SNATCH_AFFECTED, + #else + .flags = 0, + #endif .effect = EFFECT_LUCKY_CHANT, .power = 0, .type = TYPE_NORMAL, @@ -5349,7 +5990,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, }, @@ -5425,8 +6065,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_LAST_RESORT] = { + #if B_UPDATED_MOVE_DATA >= GEN_5 + .power = 140, + #else + .power = 130, + #endif .effect = EFFECT_LAST_RESORT, - .power = 140, .type = TYPE_NORMAL, .accuracy = 100, .pp = 5, @@ -5453,8 +6097,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_SUCKER_PUNCH] = { + #if B_UPDATED_MOVE_DATA >= GEN_7 + .power = 70, + #else + .power = 80, + #endif .effect = EFFECT_SUCKER_PUNCH, - .power = 70, .type = TYPE_DARK, .accuracy = 100, .pp = 5, @@ -5467,6 +6115,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_TOXIC_SPIKES] = { + #if B_UPDATED_MOVE_DATA >= GEN_5 + .flags = FLAG_MAGICCOAT_AFFECTED, + #else + .flags = 0, + #endif .effect = EFFECT_TOXIC_SPIKES, .power = 0, .type = TYPE_POISON, @@ -5475,7 +6128,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_OPPONENTS_FIELD, .priority = 0, - .flags = FLAG_MAGICCOAT_AFFECTED, .split = SPLIT_STATUS, }, @@ -5495,6 +6147,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_AQUA_RING] = { + #if B_UPDATED_MOVE_DATA >= GEN_5 + .flags = FLAG_SNATCH_AFFECTED, + #else + .flags = 0, + #endif .effect = EFFECT_AQUA_RING, .power = 0, .type = TYPE_WATER, @@ -5503,12 +6160,16 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, }, [MOVE_MAGNET_RISE] = { + #if B_UPDATED_MOVE_DATA >= GEN_5 + .flags = FLAG_SNATCH_AFFECTED, + #else + .flags = 0, + #endif .effect = EFFECT_MAGNET_RISE, .power = 0, .type = TYPE_ELECTRIC, @@ -5517,7 +6178,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, }, @@ -5552,8 +6212,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_AURA_SPHERE] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .power = 80, + #else + .power = 90, + #endif .effect = EFFECT_HIT, - .power = 80, .type = TYPE_FIGHTING, .accuracy = 0, .pp = 20, @@ -5650,11 +6314,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_AIR_SLASH] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .pp = 15, + #else + .pp = 20, + #endif .effect = EFFECT_FLINCH_HIT, .power = 75, .type = TYPE_FLYING, .accuracy = 95, - .pp = 15, .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, .priority = 0, @@ -5692,8 +6360,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_DRAGON_PULSE] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .power = 85, + #else + .power = 90, + #endif .effect = EFFECT_HIT, - .power = 85, .type = TYPE_DRAGON, .accuracy = 100, .pp = 10, @@ -5720,8 +6392,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_POWER_GEM] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .power = 80, + #else + .power = 70, + #endif .effect = EFFECT_HIT, - .power = 80, .type = TYPE_ROCK, .accuracy = 100, .pp = 20, @@ -5734,11 +6410,16 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_DRAIN_PUNCH] = { + #if B_UPDATED_MOVE_DATA >= GEN_5 + .power = 75, + .pp = 10, + #else + .power = 60, + .pp = 5, + #endif .effect = EFFECT_ABSORB, - .power = 75, .type = TYPE_FIGHTING, .accuracy = 100, - .pp = 10, .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, @@ -5776,8 +6457,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_ENERGY_BALL] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .power = 90, + #else + .power = 80, + #endif .effect = EFFECT_SPECIAL_DEFENSE_DOWN_HIT, - .power = 90, .type = TYPE_GRASS, .accuracy = 100, .pp = 10, @@ -6059,6 +6744,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_DEFOG] = { + #if B_UPDATED_MOVE_DATA >= GEN_5 + .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + #else + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + #endif .effect = EFFECT_DEFOG, .power = 0, .type = TYPE_FLYING, @@ -6067,7 +6757,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, }, @@ -6087,8 +6776,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_DRACO_METEOR] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .power = 130, + #else + .power = 140, + #endif .effect = EFFECT_OVERHEAT, - .power = 130, .type = TYPE_DRAGON, .accuracy = 90, .pp = 5, @@ -6129,8 +6822,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_LEAF_STORM] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .power = 130, + #else + .power = 140, + #endif .effect = EFFECT_OVERHEAT, - .power = 130, .type = TYPE_GRASS, .accuracy = 90, .pp = 5, @@ -6185,10 +6882,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_GUNK_SHOT] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .accuracy = 80, + #else + .accuracy = 70, + #endif .effect = EFFECT_POISON_HIT, .power = 120, .type = TYPE_POISON, - .accuracy = 80, .pp = 5, .secondaryEffectChance = 30, .target = MOVE_TARGET_SELECTED, @@ -6255,6 +6956,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_STEALTH_ROCK] = { + #if B_UPDATED_MOVE_DATA >= GEN_5 + .flags = FLAG_MAGICCOAT_AFFECTED, + #else + .flags = 0, + #endif .effect = EFFECT_STEALTH_ROCK, .power = 0, .type = TYPE_ROCK, @@ -6263,7 +6969,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_OPPONENTS_FIELD, .priority = 0, - .flags = FLAG_MAGICCOAT_AFFECTED, .split = SPLIT_STATUS, }, @@ -6283,8 +6988,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_CHATTER] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .power = 65, + #else + .power = 60, + #endif .effect = EFFECT_CONFUSE_HIT, - .power = 65, .type = TYPE_FLYING, .accuracy = 100, .pp = 20, @@ -6465,6 +7174,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_LUNAR_DANCE] = { + #if B_UPDATED_MOVE_DATA >= GEN_5 + .flags = FLAG_DANCE | FLAG_SNATCH_AFFECTED, + #else + .flags = FLAG_DANCE, + #endif .effect = EFFECT_HEALING_WISH, .power = 0, .type = TYPE_PSYCHIC, @@ -6473,7 +7187,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, .priority = 0, - .flags = FLAG_DANCE | FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, }, @@ -6493,10 +7206,18 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_MAGMA_STORM] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .power = 100, + .accuracy = 75, + #elif B_UPDATED_MOVE_DATA == GEN_5 + .power = 120, + .accuracy = 75, + #else + .power = 120, + .accuracy = 70, + #endif .effect = EFFECT_TRAP, - .power = 100, .type = TYPE_FIRE, - .accuracy = 75, .pp = 5, .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, @@ -6507,10 +7228,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_DARK_VOID] = { + #if B_UPDATED_MOVE_DATA >= GEN_7 + .accuracy = 50, + #else + .accuracy = 80, + #endif .effect = EFFECT_SLEEP, .power = 0, .type = TYPE_DARK, - .accuracy = 50, .pp = 10, .secondaryEffectChance = 0, .target = MOVE_TARGET_BOTH, @@ -6620,6 +7345,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_WONDER_ROOM] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .priority = 0, + #else + .priority = -7, + #endif .effect = EFFECT_WONDER_ROOM, .power = 0, .type = TYPE_PSYCHIC, @@ -6627,7 +7357,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .pp = 10, .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, - .priority = 0, .flags = 0, .split = SPLIT_STATUS, }, @@ -6676,6 +7405,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_RAGE_POWDER] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .priority = 2, + #else + .priority = 3, + #endif .effect = EFFECT_FOLLOW_ME, .power = 0, .type = TYPE_BUG, @@ -6683,7 +7417,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .pp = 20, .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, - .priority = 2, .flags = FLAG_POWDER, .split = SPLIT_STATUS, }, @@ -6704,6 +7437,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_MAGIC_ROOM] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .priority = 0, + #else + .priority = -7, + #endif .effect = EFFECT_MAGIC_ROOM, .power = 0, .type = TYPE_PSYCHIC, @@ -6711,7 +7449,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .pp = 10, .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, - .priority = 0, .flags = 0, .split = SPLIT_STATUS, }, @@ -6732,8 +7469,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_STORM_THROW] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .power = 60, + #else + .power = 40, + #endif .effect = EFFECT_ALWAYS_CRIT, - .power = 60, .type = TYPE_FIGHTING, .accuracy = 100, .pp = 10, @@ -6802,11 +7543,16 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_SYNCHRONOISE] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .power = 120, + .pp = 10, + #else + .power = 70, + .pp = 15, + #endif .effect = EFFECT_SYNCHRONOISE, - .power = 120, .type = TYPE_PSYCHIC, .accuracy = 100, - .pp = 10, .secondaryEffectChance = 0, .target = MOVE_TARGET_FOES_AND_ALLY, .priority = 0, @@ -6872,8 +7618,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_LOW_SWEEP] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .power = 65, + #else + .power = 60, + #endif .effect = EFFECT_SPEED_DOWN_HIT, - .power = 65, .type = TYPE_FIGHTING, .accuracy = 100, .pp = 20, @@ -7041,6 +7791,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_ALLY_SWITCH] = { + #if B_UPDATED_MOVE_DATA >= GEN_7 + .priority = 2, + #else + .priority = 1, + #endif .effect = EFFECT_ALLY_SWITCH, .power = 0, .type = TYPE_PSYCHIC, @@ -7048,7 +7803,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .pp = 15, .secondaryEffectChance = 0, .target = MOVE_TARGET_USER, - .priority = 2, .flags = 0, .split = SPLIT_STATUS, }, @@ -7097,8 +7851,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_HEX] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .power = 65, + #else + .power = 50, + #endif .effect = EFFECT_HEX, - .power = 65, .type = TYPE_GHOST, .accuracy = 100, .pp = 10, @@ -7153,8 +7911,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_INCINERATE] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .power = 60, + #else + .power = 30, + #endif .effect = EFFECT_INCINERATE, - .power = 60, .type = TYPE_FIRE, .accuracy = 100, .pp = 15, @@ -7237,6 +7999,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_BESTOW] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .flags = FLAG_MIRROR_MOVE_AFFECTED, + #else + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + #endif .effect = EFFECT_BESTOW, .power = 0, .type = TYPE_NORMAL, @@ -7245,7 +8012,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, }, @@ -7265,8 +8031,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_WATER_PLEDGE] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .power = 80, + #else + .power = 50, + #endif .effect = EFFECT_PLEDGE, - .power = 80, .type = TYPE_WATER, .accuracy = 100, .pp = 10, @@ -7279,8 +8049,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_FIRE_PLEDGE] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .power = 80, + #else + .power = 50, + #endif .effect = EFFECT_PLEDGE, - .power = 80, .type = TYPE_FIRE, .accuracy = 100, .pp = 10, @@ -7293,8 +8067,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_GRASS_PLEDGE] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .power = 80, + #else + .power = 50, + #endif .effect = EFFECT_PLEDGE, - .power = 80, .type = TYPE_GRASS, .accuracy = 100, .pp = 10, @@ -7321,8 +8099,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_STRUGGLE_BUG] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .power = 50, + #else + .power = 30, + #endif .effect = EFFECT_SPECIAL_ATTACK_DOWN_HIT, - .power = 50, .type = TYPE_BUG, .accuracy = 100, .pp = 20, @@ -7349,8 +8131,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_FROST_BREATH] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .power = 60, + #else + .power = 40, + #endif .effect = EFFECT_ALWAYS_CRIT, - .power = 60, .type = TYPE_ICE, .accuracy = 90, .pp = 10, @@ -7475,11 +8261,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_SACRED_SWORD] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .pp = 15, + #else + .pp = 20, + #endif .effect = EFFECT_HIT, .power = 90, .type = TYPE_FIGHTING, .accuracy = 100, - .pp = 15, .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, .priority = 0, @@ -7601,8 +8391,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_HURRICANE] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .power = 110, + #else + .power = 120, + #endif .effect = EFFECT_HURRICANE, - .power = 110, .type = TYPE_FLYING, .accuracy = 70, .pp = 10, @@ -7657,8 +8451,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_TECHNO_BLAST] = { + #if B_UPDATED_MOVE_DATA >= GEN_6 + .power = 120, + #else + .power = 85, + #endif .effect = EFFECT_TECHNO_BLAST, - .power = 120, .type = TYPE_NORMAL, .accuracy = 100, .pp = 5, @@ -7855,8 +8653,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_FLYING_PRESS] = { + #if B_UPDATED_MOVE_DATA >= GEN_7 + .power = 100, + #else + .power = 80, + #endif .effect = EFFECT_TWO_TYPED_MOVE, - .power = 100, .type = TYPE_FIGHTING, .accuracy = 95, .pp = 10, @@ -7927,8 +8729,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_FELL_STINGER] = { + #if B_UPDATED_MOVE_DATA >= GEN_7 + .power = 50, + #else + .power = 30, + #endif .effect = EFFECT_FELL_STINGER, - .power = 50, .type = TYPE_BUG, .accuracy = 100, .pp = 25, @@ -7999,8 +8805,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_PARABOLIC_CHARGE] = { + #if B_UPDATED_MOVE_DATA >= GEN_7 + .power = 65, + #else + .power = 50, + #endif .effect = EFFECT_ABSORB, - .power = 65, .type = TYPE_ELECTRIC, .accuracy = 100, .pp = 20, @@ -8084,10 +8894,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_TOPSY_TURVY] = { + #if B_UPDATED_MOVE_DATA >= GEN_7 + .accuracy = 0, + #else + .accuracy = 100, + #endif .effect = EFFECT_TOPSY_TURVY, .power = 0, .type = TYPE_DARK, - .accuracy = 0, .pp = 20, .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, @@ -8296,7 +9110,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_DIAMOND_STORM] = { - .effect = EFFECT_DEFENSE_UP2_HIT, + #if B_UPDATED_MOVE_DATA >= GEN_4 + .effect = EFFECT_DEFENSE_UP2_HIT, + #else + .effect = EFFECT_DEFENSE_UP_HIT, + #endif .power = 100, .type = TYPE_ROCK, .accuracy = 95, @@ -8338,6 +9156,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_WATER_SHURIKEN] = { + #if B_WATER_SHURIKEN_SPLIT >= GEN_7 + .split = SPLIT_SPECIAL, + #else + .split = SPLIT_PHYSICAL, + #endif .effect = EFFECT_MULTI_HIT, .power = 15, .type = TYPE_WATER, @@ -8347,13 +9170,16 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = .target = MOVE_TARGET_SELECTED, .priority = 1, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED, - .split = SPLIT_SPECIAL, }, [MOVE_MYSTICAL_FIRE] = { + #if B_UPDATED_MOVE_DATA >= GEN_7 + .power = 75, + #else + .power = 65, + #endif .effect = EFFECT_SPECIAL_ATTACK_DOWN_HIT, - .power = 75, .type = TYPE_FIRE, .accuracy = 100, .pp = 10, @@ -8719,7 +9545,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = { .effect = EFFECT_PLACEHOLDER, .power = 0, - .type = TYPE_MYSTERY, + .type = TYPE_DARK, .accuracy = 0, .pp = 0, .secondaryEffectChance = 0, @@ -9432,8 +10258,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] = [MOVE_MULTI_ATTACK] = { + #if B_UPDATED_MOVE_DATA >= GEN_8 + .power = 120, + #else + .power = 90, + #endif .effect = EFFECT_PLACEHOLDER, - .power = 120, .type = TYPE_NORMAL, .accuracy = 100, .pp = 10, diff --git a/src/wild_encounter.c b/src/wild_encounter.c index 0ff3e08ab1..0f2b44e3e0 100644 --- a/src/wild_encounter.c +++ b/src/wild_encounter.c @@ -610,7 +610,7 @@ bool8 StandardWildEncounter(u16 currMetaTileBehavior, u16 previousMetaTileBehavi // try a regular wild land encounter if (TryGenerateWildMon(gWildMonHeaders[headerId].landMonsInfo, WILD_AREA_LAND, WILD_CHECK_REPEL | WILD_CHECK_KEEN_EYE) == TRUE) { - if (USE_BATTLE_DEBUG && !GetSafariZoneFlag() && GetMonsStateToDoubles() == PLAYER_HAS_TWO_USABLE_MONS) + if (TryDoDoubleWildBattle()) { struct Pokemon mon1 = gEnemyParty[0]; TryGenerateWildMon(gWildMonHeaders[headerId].landMonsInfo, WILD_AREA_LAND, WILD_CHECK_KEEN_EYE); @@ -652,7 +652,17 @@ bool8 StandardWildEncounter(u16 currMetaTileBehavior, u16 previousMetaTileBehavi { if (TryGenerateWildMon(gWildMonHeaders[headerId].waterMonsInfo, WILD_AREA_WATER, WILD_CHECK_REPEL | WILD_CHECK_KEEN_EYE) == TRUE) { - BattleSetup_StartWildBattle(); + if (TryDoDoubleWildBattle()) + { + struct Pokemon mon1 = gEnemyParty[0]; + TryGenerateWildMon(gWildMonHeaders[headerId].waterMonsInfo, WILD_AREA_WATER, WILD_CHECK_KEEN_EYE); + gEnemyParty[1] = mon1; + BattleSetup_StartDoubleWildBattle(); + } + else + { + BattleSetup_StartWildBattle(); + } return TRUE; } @@ -957,3 +967,16 @@ static void ApplyCleanseTagEncounterRateMod(u32 *encRate) if (GetMonData(&gPlayerParty[0], MON_DATA_HELD_ITEM) == ITEM_CLEANSE_TAG) *encRate = *encRate * 2 / 3; } + +bool8 TryDoDoubleWildBattle(void) +{ + if (GetSafariZoneFlag() || GetMonsStateToDoubles() != PLAYER_HAS_TWO_USABLE_MONS) + return FALSE; + else if (B_FLAG_FORCE_DOUBLE_WILD != 0 && FlagGet(B_FLAG_FORCE_DOUBLE_WILD)) + return TRUE; + #if B_DOUBLE_WILD_CHANCE != 0 + else if ((Random() % 100) + 1 < B_DOUBLE_WILD_CHANCE) + return TRUE; + #endif + return FALSE; +}