diff options
-rw-r--r-- | include/constants/battle.h | 14 | ||||
-rw-r--r-- | src/battle_ai_script_commands.c | 4 | ||||
-rw-r--r-- | src/battle_main.c | 8 | ||||
-rw-r--r-- | src/battle_message.c | 2 | ||||
-rw-r--r-- | src/battle_script_commands.c | 2 | ||||
-rw-r--r-- | src/battle_setup.c | 6 | ||||
-rw-r--r-- | src/battle_util.c | 4 | ||||
-rw-r--r-- | src/reshow_battle_screen.c | 4 |
8 files changed, 23 insertions, 21 deletions
diff --git a/include/constants/battle.h b/include/constants/battle.h index c273b9a50..b28955210 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -58,14 +58,15 @@ #define BATTLE_TYPE_EREADER_TRAINER 0x0800 #define BATTLE_TYPE_KYOGRE_GROUDON 0x1000 #define BATTLE_TYPE_LEGENDARY 0x2000 +#define BATTLE_TYPE_GHOST_UNVEILED 0x2000 // Re-use of BATTLE_TYPE_LEGENDARY, when combined with BATTLE_TYPE_GHOST #define BATTLE_TYPE_REGI 0x4000 #define BATTLE_TYPE_GHOST 0x8000 #define BATTLE_TYPE_POKEDUDE 0x10000 -#define BATTLE_TYPE_PALACE 0x20000 // TODO: Update name -#define BATTLE_TYPE_ARENA 0x40000 // TOOD: Update name +#define BATTLE_TYPE_WILD_SCRIPTED 0x20000 +#define BATTLE_TYPE_LEGENDARY_FRLG 0x40000 #define BATTLE_TYPE_TRAINER_TOWER 0x80000 -#define BATTLE_TYPE_PIKE 0x100000 -#define BATTLE_TYPE_PYRAMID 0x200000 +#define BATTLE_TYPE_x100000 0x100000 +#define BATTLE_TYPE_x200000 0x200000 #define BATTLE_TYPE_INGAME_PARTNER 0x400000 #define BATTLE_TYPE_x800000 0x800000 #define BATTLE_TYPE_RECORDED 0x1000000 @@ -76,8 +77,9 @@ #define BATTLE_TYPE_KYOGRE 0x20000000 #define BATTLE_TYPE_RAYQUAZA 0x40000000 #define BATTLE_TYPE_x80000000 0x80000000 -#define BATTLE_TYPE_FRONTIER (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_PIKE | BATTLE_TYPE_PYRAMID) -#define BATTLE_TYPE_FRONTIER_NO_PYRAMID (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_PIKE) + +#define IS_BATTLE_TYPE_GHOST_WITHOUT_SCOPE(flags) ((flags) & BATTLE_TYPE_GHOST && !((flags) & BATTLE_TYPE_GHOST_UNVEILED)) +#define IS_BATTLE_TYPE_GHOST_WITH_SCOPE(flags) ((flags) & BATTLE_TYPE_GHOST && (flags) & BATTLE_TYPE_GHOST_UNVEILED) // Battle Outcome defines #define B_OUTCOME_WON 0x1 diff --git a/src/battle_ai_script_commands.c b/src/battle_ai_script_commands.c index 8bd90ef2d..a8bc439f4 100644 --- a/src/battle_ai_script_commands.c +++ b/src/battle_ai_script_commands.c @@ -343,12 +343,12 @@ void BattleAI_SetupAIData(void) } else if (!(gBattleTypeFlags & (BATTLE_TYPE_TRAINER_TOWER | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER)) && (gTrainerBattleOpponent_A != SECRET_BASE_OPPONENT)) { - if (gBattleTypeFlags & BATTLE_TYPE_PALACE) + if (gBattleTypeFlags & BATTLE_TYPE_WILD_SCRIPTED) { AI_THINKING_STRUCT->aiFlags = AI_SCRIPT_CHECK_BAD_MOVE; return; } - else if (gBattleTypeFlags & BATTLE_TYPE_ARENA) + else if (gBattleTypeFlags & BATTLE_TYPE_LEGENDARY_FRLG) { AI_THINKING_STRUCT->aiFlags = (AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY); return; diff --git a/src/battle_main.c b/src/battle_main.c index 9f3477659..51509513f 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -2559,9 +2559,9 @@ static void BattleIntroDrawTrainersOrMonsSprites(void) { if (GetBattlerSide(gActiveBattler) == B_SIDE_OPPONENT) { - if (gBattleTypeFlags & (BATTLE_TYPE_GHOST | BATTLE_TYPE_LEGENDARY)) + if (gBattleTypeFlags & (BATTLE_TYPE_GHOST | BATTLE_TYPE_GHOST_UNVEILED)) { - if ((gBattleTypeFlags & (BATTLE_TYPE_GHOST | BATTLE_TYPE_LEGENDARY)) != BATTLE_TYPE_GHOST) + if (!IS_BATTLE_TYPE_GHOST_WITHOUT_SCOPE(gBattleTypeFlags)) HandleSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBattler].species), FLAG_SET_SEEN, gBattleMons[gActiveBattler].personality); } else if (!(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER @@ -2674,7 +2674,7 @@ static void BattleIntroPrintWildMonAttacked(void) { gBattleMainFunc = BattleIntroPrintPlayerSendsOut; PrepareStringBattle(STRINGID_INTROMSG, 0); - if ((gBattleTypeFlags & (BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_GHOST)) == (BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_GHOST)) + if (IS_BATTLE_TYPE_GHOST_WITH_SCOPE(gBattleTypeFlags)) { gBattleScripting.battler = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); BattleScriptExecute(BattleScript_SilphScopeUnveiled); @@ -4183,7 +4183,7 @@ bool8 TryRunFromBattle(u8 battler) gProtectStructs[battler].fleeFlag = 2; ++effect; } - else if ((gBattleTypeFlags & (BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_GHOST)) == BATTLE_TYPE_GHOST) + else if (IS_BATTLE_TYPE_GHOST_WITHOUT_SCOPE(gBattleTypeFlags)) { if (GetBattlerSide(battler) == B_SIDE_PLAYER) ++effect; diff --git a/src/battle_message.c b/src/battle_message.c index 568682031..c4faf73f9 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -1516,7 +1516,7 @@ void BufferStringBattle(u16 stringId) { if (gBattleTypeFlags & BATTLE_TYPE_GHOST) { - if (gBattleTypeFlags & BATTLE_TYPE_LEGENDARY) + if (gBattleTypeFlags & BATTLE_TYPE_GHOST_UNVEILED) stringPtr = gUnknown_83FD30D; else stringPtr = gUnknown_83FD2D9; diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 3b9270948..527e32bcc 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -7352,7 +7352,7 @@ static void atk95_setsandstorm(void) static void atk96_weatherdamage(void) { - if (((gBattleTypeFlags & (BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_GHOST)) == BATTLE_TYPE_GHOST) + if (IS_BATTLE_TYPE_GHOST_WITHOUT_SCOPE(gBattleTypeFlags) && (GetBattlerSide(gBattlerAttacker) == B_SIDE_OPPONENT)) { gBattleMoveDamage = 0; diff --git a/src/battle_setup.c b/src/battle_setup.c index a46191509..4859b9234 100644 --- a/src/battle_setup.c +++ b/src/battle_setup.c @@ -301,7 +301,7 @@ void BattleSetup_StartScriptedWildBattle(void) { ScriptContext2_Enable(); gMain.savedCallback = CB2_EndScriptedWildBattle; - gBattleTypeFlags = BATTLE_TYPE_PALACE; + gBattleTypeFlags = BATTLE_TYPE_WILD_SCRIPTED; CreateBattleStartTask(GetWildBattleTransition(), 0); IncrementGameStat(GAME_STAT_TOTAL_BATTLES); IncrementGameStat(GAME_STAT_WILD_BATTLES); @@ -313,7 +313,7 @@ void ScrSpecial_StartMarowakBattle(void) gMain.savedCallback = CB2_EndMarowakBattle; if (CheckBagHasItem(ITEM_SILPH_SCOPE, 1)) { - gBattleTypeFlags = BATTLE_TYPE_GHOST | BATTLE_TYPE_LEGENDARY; + gBattleTypeFlags = BATTLE_TYPE_GHOST | BATTLE_TYPE_GHOST_UNVEILED; CreateMonWithGenderNatureLetter(gEnemyParty, SPECIES_MAROWAK, 30, 31, MON_FEMALE, NATURE_SERIOUS, 0); } else @@ -342,7 +342,7 @@ void Special_StartLegendaryBattle(void) ScriptContext2_Enable(); gMain.savedCallback = CB2_EndScriptedWildBattle; - gBattleTypeFlags = BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_ARENA; + gBattleTypeFlags = BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_LEGENDARY_FRLG; species = GetMonData(&gEnemyParty[0], MON_DATA_SPECIES); switch (species) { diff --git a/src/battle_util.c b/src/battle_util.c index b415f6550..d28e524a8 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -1382,7 +1382,7 @@ u8 AtkCanceller_UnableToUseMove(void) ++gBattleStruct->atkCancellerTracker; break; case CANCELLER_GHOST: // GHOST in pokemon tower - if ((gBattleTypeFlags & (BATTLE_TYPE_GHOST | BATTLE_TYPE_LEGENDARY)) == BATTLE_TYPE_GHOST) + if (IS_BATTLE_TYPE_GHOST_WITHOUT_SCOPE(gBattleTypeFlags)) { if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER) gBattlescriptCurrInstr = BattleScript_TooScaredToMove; @@ -1616,7 +1616,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA if (!moveArg) moveArg = gCurrentMove; GET_MOVE_TYPE(moveArg, moveType); - if ((gBattleTypeFlags & (BATTLE_TYPE_GHOST | BATTLE_TYPE_LEGENDARY)) == BATTLE_TYPE_GHOST + if (IS_BATTLE_TYPE_GHOST_WITHOUT_SCOPE(gBattleTypeFlags) && (gLastUsedAbility == ABILITY_INTIMIDATE || gLastUsedAbility == ABILITY_TRACE)) return effect; switch (caseID) diff --git a/src/reshow_battle_screen.c b/src/reshow_battle_screen.c index 5ab38e461..ebfd18493 100644 --- a/src/reshow_battle_screen.c +++ b/src/reshow_battle_screen.c @@ -202,7 +202,7 @@ static bool8 LoadBattlerSpriteGfx(u8 battler) { if (GetBattlerSide(battler) != B_SIDE_PLAYER) { - if ((gBattleTypeFlags & (BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_GHOST)) == BATTLE_TYPE_GHOST) + if (IS_BATTLE_TYPE_GHOST_WITHOUT_SCOPE(gBattleTypeFlags)) DecompressGhostFrontPic(&gEnemyParty[gBattlerPartyIndexes[battler]], battler); else if (!gBattleSpritesDataPtr->battlerData[battler].behindSubstitute) BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[battler]], battler); @@ -228,7 +228,7 @@ static void CreateBattlerSprite(u8 battler) { u8 posY; - if ((gBattleTypeFlags & (BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_GHOST)) == BATTLE_TYPE_GHOST) + if (IS_BATTLE_TYPE_GHOST_WITHOUT_SCOPE(gBattleTypeFlags)) posY = GetGhostSpriteDefault_Y(battler); else if (gBattleSpritesDataPtr->battlerData[battler].behindSubstitute) posY = GetSubstituteSpriteDefault_Y(battler); |