summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2019-04-23 11:45:59 -0400
committerhuderlem <huderlem@gmail.com>2019-04-23 19:57:44 -0500
commit900a1d32c1926264bd612f55972d9da37b363411 (patch)
treef755d81f0f7e5736344b870283c2373cbb75065c /src
parent6e6edda078b9a66e3ddea10d4b4b0aae0faf1b8e (diff)
BADGE_BOOST macro
Diffstat (limited to 'src')
-rw-r--r--src/battle/calculate_base_damage.c47
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++)
{