From 05fe62cbabc78286cf9c919256565f8cacd5e2dd Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Mon, 27 Feb 2023 12:11:52 -0800 Subject: [PATCH] implemented G-Max Drum Solo, G-Max Hydrosnipe, G-Max Fireball --- include/battle_dynamax.h | 2 ++ src/battle_dynamax.c | 13 ++++++++++++- src/battle_util.c | 3 +-- src/data/battle_moves.h | 14 +++++++------- 4 files changed, 22 insertions(+), 10 deletions(-) diff --git a/include/battle_dynamax.h b/include/battle_dynamax.h index 24c4d06e3e..125f850119 100644 --- a/include/battle_dynamax.h +++ b/include/battle_dynamax.h @@ -50,10 +50,12 @@ enum MaxMoveEffect MAX_EFFECT_TORMENT_FOES, MAX_EFFECT_LOWER_SPEED_2_FOES, MAX_EFFECT_FIRE_SPIN_FOES, + MAX_EFFECT_FIXED_POWER, }; bool8 ShouldUseMaxMove(u16 battlerId, u16 baseMove); u16 GetMaxMove(u16 battlerId, u16 baseMove); +u8 GetMaxMovePower(u16 move); bool8 IsMaxMove(u16 move); const u8 *GetMaxMoveName(u16 move); void ChooseDamageNonTypesString(u8 move); diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index 048c0afb18..46097d9ced 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -22,7 +22,7 @@ static const u16 sMaxMoveTable[] = [TYPE_GHOST] = MOVE_MAX_PHANTASM, [TYPE_STEEL] = MOVE_MAX_STEELSPIKE, [TYPE_FIRE] = MOVE_MAX_FLARE, - [TYPE_WATER] = MOVE_MAX_GEYSER, + [TYPE_WATER] = MOVE_G_MAX_HYDROSNIPE, [TYPE_GRASS] = MOVE_MAX_OVERGROWTH, [TYPE_ELECTRIC] = MOVE_MAX_LIGHTNING, [TYPE_PSYCHIC] = MOVE_MAX_MINDSTORM, @@ -76,6 +76,8 @@ static const struct GMaxMove sGMaxMoveTable[] = {SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GMAX, TYPE_WATER, MOVE_G_MAX_RAPID_FLOW}, }; +extern u8 gMaxMovePowers[MOVES_COUNT]; + // Returns whether a move should be converted into a Max Move. bool8 ShouldUseMaxMove(u16 battlerId, u16 baseMove) { @@ -109,6 +111,15 @@ u16 GetMaxMove(u16 battlerId, u16 baseMove) return move; } +// Gets the base power of a Max Move. +u8 GetMaxMovePower(u16 move) +{ + if (gBattleMoves[GetMaxMove(gBattlerAttacker, move)].argument == MAX_EFFECT_FIXED_POWER) + return 160; + else + return gMaxMovePowers[move]; // TODO: Rework to a field in gBattleMoves. +} + // Returns whether a move is a Max Move or not. bool8 IsMaxMove(u16 move) { diff --git a/src/battle_util.c b/src/battle_util.c index 907891724b..da150277ab 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -47,7 +47,6 @@ #include "constants/pokemon.h" extern struct Evolution gEvolutionTable[][EVOS_PER_MON]; -extern u8 gDynamaxMovePowers[MOVES_COUNT]; /* NOTE: The data and functions in this file up until (but not including) sSoundMovesTable @@ -8802,7 +8801,7 @@ static u16 CalcMoveBasePower(u16 move, u8 battlerAtk, u8 battlerDef) #endif break; case EFFECT_MAX_MOVE: - basePower = gDynamaxMovePowers[gBattleMons[battlerAtk].moves[gBattleStruct->chosenMovePositions[battlerAtk]]]; + basePower = GetMaxMovePower(gBattleMons[battlerAtk].moves[gBattleStruct->chosenMovePositions[battlerAtk]]); break; } diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h index 88347ae913..cbb39caadd 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -15521,9 +15521,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_TARGET_ABILITY_IGNORED, .split = SPLIT_PHYSICAL, - .argument = MAX_EFFECT_TORMENT_FOES, //EFFECT TODO + .argument = MAX_EFFECT_FIXED_POWER, //EFFECT TODO }, [MOVE_G_MAX_FIREBALL] = @@ -15536,9 +15536,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_TARGET_ABILITY_IGNORED, .split = SPLIT_PHYSICAL, - .argument = MAX_EFFECT_TORMENT_FOES, //EFFECT TODO + .argument = MAX_EFFECT_FIXED_POWER, //EFFECT TODO }, [MOVE_G_MAX_HYDROSNIPE] = @@ -15551,9 +15551,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, - .flags = 0, + .flags = FLAG_TARGET_ABILITY_IGNORED, .split = SPLIT_PHYSICAL, - .argument = MAX_EFFECT_TORMENT_FOES, //EFFECT TODO + .argument = MAX_EFFECT_FIXED_POWER, //EFFECT TODO }, [MOVE_G_MAX_WIND_RAGE] = @@ -15799,7 +15799,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = }; -const u8 gDynamaxMovePowers[MOVES_COUNT] = +const u8 gMaxMovePowers[MOVES_COUNT] = { [MOVE_POUND] = 90, [MOVE_KARATE_CHOP] = 75,