summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/battle.h16
-rw-r--r--src/battle_ai.c20
-rw-r--r--src/battle_setup.c20
-rw-r--r--src/calculate_base_damage.c29
-rw-r--r--src/link.c5
-rw-r--r--src/sound.c3
-rw-r--r--src/text.c3
7 files changed, 60 insertions, 36 deletions
diff --git a/include/battle.h b/include/battle.h
index 06daeb081..14cbb3a1b 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -1,6 +1,22 @@
#ifndef GUARD_BATTLE_H
#define GUARD_BATTLE_H
+#define BATTLE_TYPE_DOUBLE 0x0001
+#define BATTLE_TYPE_LINK 0x0002
+#define BATTLE_TYPE_WILD 0x0004
+#define BATTLE_TYPE_TRAINER 0x0008
+#define BATTLE_TYPE_FIRST_BATTLE 0x0010
+#define BATTLE_TYPE_20 0x0020
+#define BATTLE_TYPE_40 0x0040
+#define BATTLE_TYPE_SAFARI 0x0080
+#define BATTLE_TYPE_BATTLE_TOWER 0x0100
+#define BATTLE_TYPE_WALLY_TUTORIAL 0x0200
+#define BATTLE_TYPE_ROAMER 0x0400
+#define BATTLE_TYPE_EREADER_TRAINER 0x0800
+#define BATTLE_TYPE_KYOGRE_GROUDON 0x1000
+#define BATTLE_TYPE_LEGENDARY 0x2000
+#define BATTLE_TYPE_REGI 0x4000
+
struct Trainer
{
/*0x00*/ u8 partyFlags;
diff --git a/src/battle_ai.c b/src/battle_ai.c
index 29fe7e0e0..6875ca745 100644
--- a/src/battle_ai.c
+++ b/src/battle_ai.c
@@ -101,19 +101,23 @@ void sub_81070D4(void)
s32 i;
u8 *data = (u8 *)&unk_2016A00;
- for(i = 0; (u32)i < 48; i++)
+ for (i = 0; (u32)i < 48; i++)
data[i] = 0;
- if((gBattleTypeFlags & 8) && gTrainerBattleOpponent != 0x400 && !(gBattleTypeFlags & 0x982))
+
+ if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER)
+ && gTrainerBattleOpponent != 0x400
+ && !(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_SAFARI | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER)))
{
- for(i = 0; i < 4; i++)
+ for (i = 0; i < 4; i++)
{
- if(gTrainers[gTrainerBattleOpponent].items[i] != 0)
+ if (gTrainers[gTrainerBattleOpponent].items[i] != 0)
{
unk_2016A00.items[unk_2016A00.unk8] = gTrainers[gTrainerBattleOpponent].items[i];
unk_2016A00.unk8++;
}
}
}
+
sub_810715C();
}
@@ -140,7 +144,7 @@ void sub_810715C(void)
unk_2016C00.unk20 = 0;
gUnknown_02024C07 = gUnknown_02024A60;
- if(gBattleTypeFlags & 1)
+ if(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
gUnknown_02024C08 = Random() & 2;
@@ -150,11 +154,11 @@ void sub_810715C(void)
else
gUnknown_02024C08 = gUnknown_02024A60 ^ 1;
- if(gBattleTypeFlags & 0x80)
+ if(gBattleTypeFlags & BATTLE_TYPE_SAFARI)
unk_2016800.aiFlags = 0x40000000;
- else if(gBattleTypeFlags & 0x400)
+ else if(gBattleTypeFlags & BATTLE_TYPE_ROAMER)
unk_2016800.aiFlags = 0x20000000;
- else if(gBattleTypeFlags & 0x10)
+ else if(gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE)
unk_2016800.aiFlags = 0x80000000;
else
unk_2016800.aiFlags = gTrainers[gTrainerBattleOpponent].aiFlags;
diff --git a/src/battle_setup.c b/src/battle_setup.c
index ed43b4437..fbdd37616 100644
--- a/src/battle_setup.c
+++ b/src/battle_setup.c
@@ -177,7 +177,7 @@ void sub_8081A5C(void)
player_bitmagic();
sub_80597F4();
gMain.field_8 = sub_8081C8C;
- gBattleTypeFlags = 1024;
+ gBattleTypeFlags = BATTLE_TYPE_ROAMER;
task_add_01_battle_start(GetWildBattleTransition(), 0);
sav12_xor_increment(7);
sav12_xor_increment(8);
@@ -189,7 +189,7 @@ void sub_8081AA4(void)
player_bitmagic();
sub_80597F4();
gMain.field_8 = sub_80C824C;
- gBattleTypeFlags = 128;
+ gBattleTypeFlags = BATTLE_TYPE_SAFARI;
task_add_01_battle_start(GetWildBattleTransition(), 0);
}
@@ -206,7 +206,7 @@ void sub_8081AFC(void)
CreateMaleMon(&gEnemyParty[0], SPECIES_RALTS, 5);
ScriptContext2_Enable();
gMain.field_8 = c2_exit_to_overworld_1_continue_scripts_restart_music;
- gBattleTypeFlags = 512;
+ gBattleTypeFlags = BATTLE_TYPE_WALLY_TUTORIAL;
task_add_01_battle_start(8, 0);
}
@@ -224,7 +224,7 @@ void sub_8081B78(void)
{
ScriptContext2_Enable();
gMain.field_8 = sub_8081CEC;
- gBattleTypeFlags = 0x2000;
+ gBattleTypeFlags = BATTLE_TYPE_LEGENDARY;
task_add_01_battle_start(GetWildBattleTransition(), 0);
sav12_xor_increment(7);
sav12_xor_increment(8);
@@ -234,7 +234,7 @@ void sub_8081BB8(void)
{
ScriptContext2_Enable();
gMain.field_8 = sub_8081CEC;
- gBattleTypeFlags = 0x2000;
+ gBattleTypeFlags = BATTLE_TYPE_LEGENDARY;
task_add_01_battle_start(0, BGM_BATTLE34);
sav12_xor_increment(7);
sav12_xor_increment(8);
@@ -244,7 +244,7 @@ void sub_8081BF8(void)
{
ScriptContext2_Enable();
gMain.field_8 = sub_8081CEC;
- gBattleTypeFlags = 12288;
+ gBattleTypeFlags = BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_KYOGRE_GROUDON;
if (gGameVersion == 2)
task_add_01_battle_start(0xB, BGM_BATTLE34); // KYOGRE
else
@@ -257,7 +257,7 @@ void sub_8081C50(void)
{
ScriptContext2_Enable();
gMain.field_8 = sub_8081CEC;
- gBattleTypeFlags = 24576;
+ gBattleTypeFlags = BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_REGI;
task_add_01_battle_start(0xA, BGM_BATTLE36);
sav12_xor_increment(7);
sav12_xor_increment(8);
@@ -523,7 +523,7 @@ void sub_80821D8(void)
if (sub_811AAE8() == TRUE)
{
- gBattleTypeFlags = 16;
+ gBattleTypeFlags = BATTLE_TYPE_FIRST_BATTLE;
gMain.field_8 = sub_8082228;
SetMainCallback2(sub_800E7C4);
prev_quest_postbuffer_cursor_backup_reset();
@@ -733,7 +733,7 @@ void trainer_flag_clear(u16 flag)
void sub_80825E4(void)
{
- gBattleTypeFlags = 8;
+ gBattleTypeFlags = BATTLE_TYPE_TRAINER;
gMain.field_8 = sub_808260C;
task_add_01_battle_start_with_music_and_stats();
ScriptContext1_Stop();
@@ -776,7 +776,7 @@ void do_choose_name_or_words_screen(void)
void sub_80826B0(void)
{
- gBattleTypeFlags = 8;
+ gBattleTypeFlags = BATTLE_TYPE_TRAINER;
gMain.field_8 = do_choose_name_or_words_screen;
task_add_01_battle_start_with_music_and_stats();
ScriptContext1_Stop();
diff --git a/src/calculate_base_damage.c b/src/calculate_base_damage.c
index b572011ce..29b00370d 100644
--- a/src/calculate_base_damage.c
+++ b/src/calculate_base_damage.c
@@ -10,6 +10,7 @@
#include "abilities.h"
#include "hold_effects.h"
#include "event_data.h"
+#include "battle.h"
extern u8 gPlayerPartyCount;
extern struct Pokemon gPlayerParty[6];
@@ -113,33 +114,33 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
if (attacker->ability == ABILITY_HUGE_POWER || attacker->ability == ABILITY_PURE_POWER)
attack *= 2;
- if (!(gBattleTypeFlags & 0x902))
+ if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER)))
{
- if ((gBattleTypeFlags & 8)
+ if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER)
&& gTrainerBattleOpponent != 1024
&& FlagGet(BADGE01_GET)
&& !battle_side_get_owner(a7))
attack = (110 * attack) / 100;
- if (!(gBattleTypeFlags & 0x902))
+ if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER)))
{
- if ((gBattleTypeFlags & 8)
+ if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER)
&& gTrainerBattleOpponent != 1024
&& FlagGet(BADGE05_GET)
&& !battle_side_get_owner(a8))
defense = (110 * defense) / 100;
- if (!(gBattleTypeFlags & 0x902))
+ if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER)))
{
- if ((gBattleTypeFlags & 8)
+ if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER)
&& gTrainerBattleOpponent != 1024
&& FlagGet(BADGE07_GET)
&& !battle_side_get_owner(a7))
spAttack = (110 * spAttack) / 100;
- if (!(gBattleTypeFlags & 0x902))
+ if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER)))
{
- if ((gBattleTypeFlags & 8)
+ if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER)
&& gTrainerBattleOpponent != 1024
&& FlagGet(BADGE07_GET)
&& !battle_side_get_owner(a8))
@@ -164,9 +165,9 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
if (attackerHoldEffect == HOLD_EFFECT_CHOICE_BAND)
attack = (150 * attack) / 100;
- if (attackerHoldEffect == HOLD_EFFECT_SOUL_DEW && !(gBattleTypeFlags & 0x100) && (attacker->species == SPECIES_LATIAS || attacker->species == SPECIES_LATIOS))
+ if (attackerHoldEffect == HOLD_EFFECT_SOUL_DEW && !(gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER) && (attacker->species == SPECIES_LATIAS || attacker->species == SPECIES_LATIOS))
spAttack = (150 * spAttack) / 100;
- if (defenderHoldEffect == HOLD_EFFECT_SOUL_DEW && !(gBattleTypeFlags & 0x100) && (defender->species == SPECIES_LATIAS || defender->species == SPECIES_LATIOS))
+ if (defenderHoldEffect == HOLD_EFFECT_SOUL_DEW && !(gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER) && (defender->species == SPECIES_LATIAS || defender->species == SPECIES_LATIOS))
spDefense = (150 * spDefense) / 100;
if (attackerHoldEffect == HOLD_EFFECT_DEEP_SEA_TOOTH && attacker->species == SPECIES_CLAMPERL)
spAttack *= 2;
@@ -236,13 +237,13 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
if ((a4 & 1) && gCritMultiplier == 1)
{
- if ((gBattleTypeFlags & 1) && sub_803C348(2) == 2)
+ if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && sub_803C348(2) == 2)
damage = 2 * (damage / 3);
else
damage /= 2;
}
- if ((gBattleTypeFlags & 1) && gBattleMoves[move].target == 8 && sub_803C348(2) == 2)
+ if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && gBattleMoves[move].target == 8 && sub_803C348(2) == 2)
damage /= 2;
if (damage == 0)
@@ -280,13 +281,13 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
if ((a4 & 2) && gCritMultiplier == 1)
{
- if ((gBattleTypeFlags & 1) && sub_803C348(2) == 2)
+ if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && sub_803C348(2) == 2)
damage = 2 * (damage / 3);
else
damage /= 2;
}
- if ((gBattleTypeFlags & 1) && gBattleMoves[move].target == 8 && sub_803C348(2) == 2)
+ if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && gBattleMoves[move].target == 8 && sub_803C348(2) == 2)
damage /= 2;
if (!sub_8018324(0xE, 0, ABILITY_CLOUD_NINE, 0, 0) && !sub_8018324(0xE, 0, ABILITY_AIR_LOCK, 0, 0))
diff --git a/src/link.c b/src/link.c
index 76a112607..25a7ce270 100644
--- a/src/link.c
+++ b/src/link.c
@@ -11,6 +11,7 @@
#include "menu.h"
#include "sound.h"
#include "save.h"
+#include "battle.h"
#define SIO_MULTI_CNT ((struct SioMultiCnt *)REG_ADDR_SIOCNT)
@@ -1107,7 +1108,7 @@ static void sub_800837C(void)
if (count == totalCount)
{
- gBattleTypeFlags &= 0xFFDF;
+ gBattleTypeFlags &= ~BATTLE_TYPE_20;
gLinkVSyncDisabled = TRUE;
CloseLink();
gLinkCallback = NULL;
@@ -1131,7 +1132,7 @@ static void sub_80083E0(void)
if (count == totalCount)
{
- gBattleTypeFlags &= 0xFFDF;
+ gBattleTypeFlags &= ~BATTLE_TYPE_20;
gLinkVSyncDisabled = TRUE;
CloseLink();
gLinkCallback = 0;
diff --git a/src/sound.c b/src/sound.c
index 7345dde85..aa12ba477 100644
--- a/src/sound.c
+++ b/src/sound.c
@@ -5,6 +5,7 @@
#include "task.h"
#include "songs.h"
#include "m4a.h"
+#include "battle.h"
struct Fanfare
{
@@ -329,7 +330,7 @@ void PlayCry4(u16 species, s8 pan, u8 mode)
}
else
{
- if (!(gBattleTypeFlags & 0x40))
+ if (!(gBattleTypeFlags & BATTLE_TYPE_40))
m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 85);
PlayCryInternal(species, pan, 125, 10, mode);
}
diff --git a/src/text.c b/src/text.c
index 2a2d2c0d3..fb6118b65 100644
--- a/src/text.c
+++ b/src/text.c
@@ -5,6 +5,7 @@
#include "songs.h"
#include "palette.h"
#include "sound.h"
+#include "battle.h"
enum
{
@@ -2911,7 +2912,7 @@ static bool8 PlayerCanInterruptWait(struct Window *win)
retVal = TRUE;
break;
case 1:
- retVal &= ~(gBattleTypeFlags >> 1);
+ retVal = (gBattleTypeFlags & BATTLE_TYPE_LINK) ? FALSE : TRUE;
break;
}