diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index cdcf05f7db..073e2c55bc 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -406,7 +406,6 @@ static u8 GetMaxPowerTier(u32 move) case EFFECT_NATURAL_GIFT: case EFFECT_MIRROR_COAT: case EFFECT_FINAL_GAMBIT: - //case EFFECT_DRAGON_DARTS: return MAX_POWER_TIER_2; case EFFECT_OHKO: case EFFECT_RETURN: diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 3724208374..8da71c45fb 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -1729,6 +1729,8 @@ static void AccuracyCheck(bool32 recalcDragonDarts, const u8 *nextInstr, const u gBattlescriptCurrInstr = failInstr; else if (!JumpIfMoveAffectedByProtect(gCurrentMove)) gBattlescriptCurrInstr = nextInstr; + if (GetActiveGimmick(gBattlerAttacker) == GIMMICK_DYNAMAX) + AbilityBattleEffects(ABILITYEFFECT_ABSORBING, gBattlerTarget, 0, 0, gCurrentMove); } else if (gSpecialStatuses[gBattlerAttacker].parentalBondState == PARENTAL_BOND_2ND_HIT || (gSpecialStatuses[gBattlerAttacker].multiHitOn diff --git a/src/data/moves_info.h b/src/data/moves_info.h index cef7b6971a..6e0230cf31 100644 --- a/src/data/moves_info.h +++ b/src/data/moves_info.h @@ -21719,7 +21719,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, - .argument = MAX_EFFECT_FIXED_POWER, //EFFECT TODO + .argument = MAX_EFFECT_FIXED_POWER, .ignoresTargetAbility = TRUE, .battleAnimScript = Move_G_MAX_DRUM_SOLO, }, @@ -21736,7 +21736,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, - .argument = MAX_EFFECT_FIXED_POWER, //EFFECT TODO + .argument = MAX_EFFECT_FIXED_POWER, .ignoresTargetAbility = TRUE, .battleAnimScript = Move_G_MAX_FIREBALL, }, @@ -21753,7 +21753,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, - .argument = MAX_EFFECT_FIXED_POWER, //EFFECT TODO + .argument = MAX_EFFECT_FIXED_POWER, .ignoresTargetAbility = TRUE, .battleAnimScript = Move_G_MAX_HYDROSNIPE, }, @@ -21995,7 +21995,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, - .argument = MAX_EFFECT_BYPASS_PROTECT, //EFFECT TODO + .argument = MAX_EFFECT_BYPASS_PROTECT, .battleAnimScript = Move_G_MAX_ONE_BLOW, }, @@ -22011,7 +22011,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, - .argument = MAX_EFFECT_BYPASS_PROTECT, //EFFECT TODO + .argument = MAX_EFFECT_BYPASS_PROTECT, .battleAnimScript = Move_G_MAX_RAPID_FLOW, }, diff --git a/src/data/pokemon/species_info/gen_8_families.h b/src/data/pokemon/species_info/gen_8_families.h index ed5e89407c..fd52785a54 100644 --- a/src/data/pokemon/species_info/gen_8_families.h +++ b/src/data/pokemon/species_info/gen_8_families.h @@ -1063,7 +1063,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING), .abilities = { ABILITY_PRESSURE, ABILITY_UNNERVE, ABILITY_MIRROR_ARMOR }, .bodyColor = BODY_COLOR_PURPLE, - .speciesName = _("Corviknigh"), + .speciesName = HANDLE_EXPANDED_SPECIES_NAME("Corviknigh", "Corviknight"), .cryId = CRY_CORVIKNIGHT, .natDexNum = NATIONAL_DEX_CORVIKNIGHT, .categoryName = _("Raven"), @@ -3605,7 +3605,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), .abilities = { ABILITY_FLASH_FIRE, ABILITY_WHITE_SMOKE, ABILITY_FLAME_BODY }, .bodyColor = BODY_COLOR_RED, - .speciesName = _("Centiskorc"), + .speciesName = HANDLE_EXPANDED_SPECIES_NAME("Centiskorc", "Centiskorch"), .cryId = CRY_CENTISKORCH, .natDexNum = NATIONAL_DEX_CENTISKORCH, .categoryName = _("Radiator"), diff --git a/test/battle/gimmick/dynamax.c b/test/battle/gimmick/dynamax.c index b865ef2f1c..d0360918c8 100644 --- a/test/battle/gimmick/dynamax.c +++ b/test/battle/gimmick/dynamax.c @@ -1476,3 +1476,40 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Moxie clones can be triggered by Max Moves faintin MESSAGE("Gyarados's Moxie raised its Attack!"); } } + +SINGLE_BATTLE_TEST("(DYNAMAX) Max Moves don't bypass absorbing abilities") +{ + u32 move, ability, species; + PARAMETRIZE { move = MOVE_SPARK; ability = ABILITY_VOLT_ABSORB; species = SPECIES_LANTURN; } + PARAMETRIZE { move = MOVE_WATER_GUN; ability = ABILITY_WATER_ABSORB; species = SPECIES_LANTURN; } + PARAMETRIZE { move = MOVE_EMBER; ability = ABILITY_FLASH_FIRE; species = SPECIES_HEATRAN; } + PARAMETRIZE { move = MOVE_SPARK; ability = ABILITY_LIGHTNING_ROD; species = SPECIES_PIKACHU; } + PARAMETRIZE { move = MOVE_WATER_GUN; ability = ABILITY_STORM_DRAIN; species = SPECIES_GASTRODON; } + PARAMETRIZE { move = MOVE_EMBER; ability = ABILITY_WELL_BAKED_BODY; species = SPECIES_DACHSBUN; } + PARAMETRIZE { move = MOVE_SPARK; ability = ABILITY_MOTOR_DRIVE; species = SPECIES_ELECTIVIRE; } + PARAMETRIZE { move = MOVE_WATER_GUN; ability = ABILITY_DRY_SKIN; species = SPECIES_PARASECT; } + PARAMETRIZE { move = MOVE_MUD_BOMB; ability = ABILITY_EARTH_EATER; species = SPECIES_ORTHWORM; } + PARAMETRIZE { move = MOVE_VINE_WHIP; ability = ABILITY_SAP_SIPPER; species = SPECIES_MILTANK; } + + GIVEN { + ASSUME(gMovesInfo[MOVE_WATER_GUN].type == TYPE_WATER); + ASSUME(gMovesInfo[MOVE_SPARK].type == TYPE_ELECTRIC); + ASSUME(gMovesInfo[MOVE_EMBER].type == TYPE_FIRE); + ASSUME(gMovesInfo[MOVE_MUD_BOMB].type == TYPE_GROUND); + ASSUME(gMovesInfo[MOVE_VINE_WHIP].type == TYPE_GRASS); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(species) { Ability(ability); } + } WHEN { + TURN { MOVE(player, move, gimmick: GIMMICK_DYNAMAX); } + } SCENE { + NONE_OF { + ANIMATION(ANIM_TYPE_MOVE, MOVE_MAX_LIGHTNING, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_MAX_FLARE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_MAX_GEYSER, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_MAX_QUAKE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_MAX_OVERGROWTH, player); + HP_BAR(opponent); + } + ABILITY_POPUP(opponent, ability); + } +}