implemented G-Max Drum Solo, G-Max Hydrosnipe, G-Max Fireball

This commit is contained in:
AgustinGDLV 2023-02-27 12:11:52 -08:00
parent 92c8503869
commit 05fe62cbab
4 changed files with 22 additions and 10 deletions

View File

@ -50,10 +50,12 @@ enum MaxMoveEffect
MAX_EFFECT_TORMENT_FOES, MAX_EFFECT_TORMENT_FOES,
MAX_EFFECT_LOWER_SPEED_2_FOES, MAX_EFFECT_LOWER_SPEED_2_FOES,
MAX_EFFECT_FIRE_SPIN_FOES, MAX_EFFECT_FIRE_SPIN_FOES,
MAX_EFFECT_FIXED_POWER,
}; };
bool8 ShouldUseMaxMove(u16 battlerId, u16 baseMove); bool8 ShouldUseMaxMove(u16 battlerId, u16 baseMove);
u16 GetMaxMove(u16 battlerId, u16 baseMove); u16 GetMaxMove(u16 battlerId, u16 baseMove);
u8 GetMaxMovePower(u16 move);
bool8 IsMaxMove(u16 move); bool8 IsMaxMove(u16 move);
const u8 *GetMaxMoveName(u16 move); const u8 *GetMaxMoveName(u16 move);
void ChooseDamageNonTypesString(u8 move); void ChooseDamageNonTypesString(u8 move);

View File

@ -22,7 +22,7 @@ static const u16 sMaxMoveTable[] =
[TYPE_GHOST] = MOVE_MAX_PHANTASM, [TYPE_GHOST] = MOVE_MAX_PHANTASM,
[TYPE_STEEL] = MOVE_MAX_STEELSPIKE, [TYPE_STEEL] = MOVE_MAX_STEELSPIKE,
[TYPE_FIRE] = MOVE_MAX_FLARE, [TYPE_FIRE] = MOVE_MAX_FLARE,
[TYPE_WATER] = MOVE_MAX_GEYSER, [TYPE_WATER] = MOVE_G_MAX_HYDROSNIPE,
[TYPE_GRASS] = MOVE_MAX_OVERGROWTH, [TYPE_GRASS] = MOVE_MAX_OVERGROWTH,
[TYPE_ELECTRIC] = MOVE_MAX_LIGHTNING, [TYPE_ELECTRIC] = MOVE_MAX_LIGHTNING,
[TYPE_PSYCHIC] = MOVE_MAX_MINDSTORM, [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}, {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. // Returns whether a move should be converted into a Max Move.
bool8 ShouldUseMaxMove(u16 battlerId, u16 baseMove) bool8 ShouldUseMaxMove(u16 battlerId, u16 baseMove)
{ {
@ -109,6 +111,15 @@ u16 GetMaxMove(u16 battlerId, u16 baseMove)
return move; 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. // Returns whether a move is a Max Move or not.
bool8 IsMaxMove(u16 move) bool8 IsMaxMove(u16 move)
{ {

View File

@ -47,7 +47,6 @@
#include "constants/pokemon.h" #include "constants/pokemon.h"
extern struct Evolution gEvolutionTable[][EVOS_PER_MON]; 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 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 #endif
break; break;
case EFFECT_MAX_MOVE: case EFFECT_MAX_MOVE:
basePower = gDynamaxMovePowers[gBattleMons[battlerAtk].moves[gBattleStruct->chosenMovePositions[battlerAtk]]]; basePower = GetMaxMovePower(gBattleMons[battlerAtk].moves[gBattleStruct->chosenMovePositions[battlerAtk]]);
break; break;
} }

View File

@ -15521,9 +15521,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
.secondaryEffectChance = 100, .secondaryEffectChance = 100,
.target = MOVE_TARGET_SELECTED, .target = MOVE_TARGET_SELECTED,
.priority = 0, .priority = 0,
.flags = 0, .flags = FLAG_TARGET_ABILITY_IGNORED,
.split = SPLIT_PHYSICAL, .split = SPLIT_PHYSICAL,
.argument = MAX_EFFECT_TORMENT_FOES, //EFFECT TODO .argument = MAX_EFFECT_FIXED_POWER, //EFFECT TODO
}, },
[MOVE_G_MAX_FIREBALL] = [MOVE_G_MAX_FIREBALL] =
@ -15536,9 +15536,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
.secondaryEffectChance = 100, .secondaryEffectChance = 100,
.target = MOVE_TARGET_SELECTED, .target = MOVE_TARGET_SELECTED,
.priority = 0, .priority = 0,
.flags = 0, .flags = FLAG_TARGET_ABILITY_IGNORED,
.split = SPLIT_PHYSICAL, .split = SPLIT_PHYSICAL,
.argument = MAX_EFFECT_TORMENT_FOES, //EFFECT TODO .argument = MAX_EFFECT_FIXED_POWER, //EFFECT TODO
}, },
[MOVE_G_MAX_HYDROSNIPE] = [MOVE_G_MAX_HYDROSNIPE] =
@ -15551,9 +15551,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
.secondaryEffectChance = 100, .secondaryEffectChance = 100,
.target = MOVE_TARGET_SELECTED, .target = MOVE_TARGET_SELECTED,
.priority = 0, .priority = 0,
.flags = 0, .flags = FLAG_TARGET_ABILITY_IGNORED,
.split = SPLIT_PHYSICAL, .split = SPLIT_PHYSICAL,
.argument = MAX_EFFECT_TORMENT_FOES, //EFFECT TODO .argument = MAX_EFFECT_FIXED_POWER, //EFFECT TODO
}, },
[MOVE_G_MAX_WIND_RAGE] = [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_POUND] = 90,
[MOVE_KARATE_CHOP] = 75, [MOVE_KARATE_CHOP] = 75,