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_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);

View file

@ -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)
{

View file

@ -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;
}

View file

@ -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,