diff options
Diffstat (limited to 'src/charge_move.c')
-rw-r--r-- | src/charge_move.c | 48 |
1 files changed, 47 insertions, 1 deletions
diff --git a/src/charge_move.c b/src/charge_move.c index 7fe358c..c0d09fc 100644 --- a/src/charge_move.c +++ b/src/charge_move.c @@ -1,9 +1,29 @@ #include "global.h" #include "charge_move.h" +#include "constants/move_id.h" #include "constants/status.h" #include "dungeon_util.h" +struct MultiTurnChargeMove +{ + u16 moveID; + u8 chargingStatus; +}; + +const struct MultiTurnChargeMove gMultiTurnChargeMoves[10] = { + {MOVE_SOLARBEAM, CHARGING_STATUS_SOLARBEAM}, + {MOVE_SKY_ATTACK, CHARGING_STATUS_SKY_ATTACK}, + {MOVE_RAZOR_WIND, CHARGING_STATUS_RAZOR_WIND}, + {MOVE_FOCUS_PUNCH, CHARGING_STATUS_FOCUS_PUNCH}, + {MOVE_SKULL_BASH, CHARGING_STATUS_SKULL_BASH}, + {MOVE_FLY, CHARGING_STATUS_FLY}, + {MOVE_BOUNCE, CHARGING_STATUS_BOUNCE}, + {MOVE_DIVE, CHARGING_STATUS_DIVE}, + {MOVE_DIG, CHARGING_STATUS_DIG}, + {MOVE_NONE, CHARGING_STATUS_NONE} +}; + const u32 gMultiTurnChargingStatuses[10] = { CHARGING_STATUS_SOLARBEAM, CHARGING_STATUS_SKY_ATTACK, @@ -19,6 +39,32 @@ const u32 gMultiTurnChargingStatuses[10] = { ALIGNED(4) const char chargingStatusFill[] = "pksdir0"; +bool8 MoveMatchesChargingStatus(struct DungeonEntity *pokemon, struct PokemonMove *move) +{ + if (!EntityExists(pokemon)) + { + return FALSE; + } + else + { + struct DungeonEntityData *pokemonData = pokemon->entityData; + s32 i; + for (i = 0; i < 100; i++) + { + if (gMultiTurnChargeMoves[i].moveID == MOVE_NONE) + { + return FALSE; + } + if (move->moveID == gMultiTurnChargeMoves[i].moveID && + pokemonData->chargingStatus == gMultiTurnChargeMoves[i].chargingStatus) + { + return TRUE; + } + } + return FALSE; + } +} + bool8 IsCharging(struct DungeonEntity *pokemon, bool8 checkCharge) { if (!EntityExists(pokemon)) @@ -53,4 +99,4 @@ bool8 IsCharging(struct DungeonEntity *pokemon, bool8 checkCharge) } return FALSE; } -} +}
\ No newline at end of file |