diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2019-04-23 11:45:59 -0400 |
---|---|---|
committer | huderlem <huderlem@gmail.com> | 2019-04-23 19:57:44 -0500 |
commit | 900a1d32c1926264bd612f55972d9da37b363411 (patch) | |
tree | f755d81f0f7e5736344b870283c2373cbb75065c /src | |
parent | 6e6edda078b9a66e3ddea10d4b4b0aae0faf1b8e (diff) |
BADGE_BOOST macro
Diffstat (limited to 'src')
-rw-r--r-- | src/battle/calculate_base_damage.c | 47 |
1 files changed, 15 insertions, 32 deletions
diff --git a/src/battle/calculate_base_damage.c b/src/battle/calculate_base_damage.c index cc9d567bb..e4ae70c0b 100644 --- a/src/battle/calculate_base_damage.c +++ b/src/battle/calculate_base_damage.c @@ -79,6 +79,17 @@ u8 GetBattlerSide(u8 bank); (var) /= (gStatStageRatios)[(mon)->statStages[(statIndex)]][1]; \ } +#define BADGE_BOOST(badge, stat, bank) ({ \ +if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER))) \ +{ \ + if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER) \ + && gTrainerBattleOpponent != SECRET_BASE_OPPONENT \ + && FlagGet(FLAG_BADGE0##badge##_GET) \ + && GetBattlerSide(bank) == B_SIDE_PLAYER) \ + (stat) = (110 * (stat)) / 100; \ +} \ +}) + s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 sideStatus, u16 powerOverride, u8 typeOverride, u8 bankAtk, u8 bankDef) { u32 i; @@ -132,38 +143,10 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de if (attacker->ability == ABILITY_HUGE_POWER || attacker->ability == ABILITY_PURE_POWER) attack *= 2; - if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER))) - { - if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER) - && gTrainerBattleOpponent != SECRET_BASE_OPPONENT - && FlagGet(FLAG_BADGE01_GET) - && !GetBattlerSide(bankAtk)) - attack = (110 * attack) / 100; - } - if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER))) - { - if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER) - && gTrainerBattleOpponent != SECRET_BASE_OPPONENT - && FlagGet(FLAG_BADGE05_GET) - && !GetBattlerSide(bankDef)) - defense = (110 * defense) / 100; - } - if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER))) - { - if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER) - && gTrainerBattleOpponent != SECRET_BASE_OPPONENT - && FlagGet(FLAG_BADGE07_GET) - && !GetBattlerSide(bankAtk)) - spAttack = (110 * spAttack) / 100; - } - if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER))) - { - if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER) - && gTrainerBattleOpponent != SECRET_BASE_OPPONENT - && FlagGet(FLAG_BADGE07_GET) - && !GetBattlerSide(bankDef)) - spDefense = (110 * spDefense) / 100; - } + BADGE_BOOST(1, attack, bankAtk); + BADGE_BOOST(5, defense, bankDef); + BADGE_BOOST(7, spAttack, bankAtk); + BADGE_BOOST(7, spDefense, bankDef); for (i = 0; i < 17; i++) { |