Sync battle transitions
This commit is contained in:
+38
-28
@@ -33,6 +33,13 @@
|
||||
#include "constants/pokemon.h"
|
||||
#include "constants/trainers.h"
|
||||
|
||||
enum {
|
||||
TRANSITION_TYPE_NORMAL,
|
||||
TRANSITION_TYPE_CAVE,
|
||||
TRANSITION_TYPE_FLASH,
|
||||
TRANSITION_TYPE_WATER,
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
TRAINER_PARAM_LOAD_VAL_8BIT,
|
||||
@@ -74,20 +81,22 @@ static EWRAM_DATA u8 *sTrainerBattleEndScript = NULL;
|
||||
static EWRAM_DATA u8 *sTrainerABattleScriptRetAddr = NULL;
|
||||
static EWRAM_DATA u16 sRivalBattleFlags = 0;
|
||||
|
||||
// The first transition is used if the enemy pokemon are lower level than our pokemon.
|
||||
// Otherwise, the second transition is used.
|
||||
static const u8 sBattleTransitionTable_Wild[][2] =
|
||||
{
|
||||
{ B_TRANSITION_SLICED_SCREEN, B_TRANSITION_WHITEFADE_IN_STRIPES },
|
||||
{ B_TRANSITION_CLOCKWISE_BLACKFADE, B_TRANSITION_GRID_SQUARES },
|
||||
{ B_TRANSITION_BLUR, B_TRANSITION_GRID_SQUARES },
|
||||
{ B_TRANSITION_BLACK_WAVE_TO_RIGHT, B_TRANSITION_FULLSCREEN_WAVE },
|
||||
[TRANSITION_TYPE_NORMAL] = {B_TRANSITION_SLICE, B_TRANSITION_WHITE_BARS_FADE},
|
||||
[TRANSITION_TYPE_CAVE] = {B_TRANSITION_CLOCKWISE_WIPE, B_TRANSITION_GRID_SQUARES},
|
||||
[TRANSITION_TYPE_FLASH] = {B_TRANSITION_BLUR, B_TRANSITION_GRID_SQUARES},
|
||||
[TRANSITION_TYPE_WATER] = {B_TRANSITION_WAVE, B_TRANSITION_RIPPLE},
|
||||
};
|
||||
|
||||
static const u8 sBattleTransitionTable_Trainer[][2] =
|
||||
{
|
||||
{ B_TRANSITION_SLIDING_POKEBALLS, B_TRANSITION_BLACK_DOODLES },
|
||||
{ B_TRANSITION_HORIZONTAL_CORRUGATE, B_TRANSITION_BIG_POKEBALL },
|
||||
{ B_TRANSITION_BLUR, B_TRANSITION_GRID_SQUARES },
|
||||
{ B_TRANSITION_DISTORTED_WAVE, B_TRANSITION_FULLSCREEN_WAVE },
|
||||
[TRANSITION_TYPE_NORMAL] = {B_TRANSITION_POKEBALLS_TRAIL, B_TRANSITION_ANGLED_WIPES},
|
||||
[TRANSITION_TYPE_CAVE] = {B_TRANSITION_SHUFFLE, B_TRANSITION_BIG_POKEBALL},
|
||||
[TRANSITION_TYPE_FLASH] = {B_TRANSITION_BLUR, B_TRANSITION_GRID_SQUARES},
|
||||
[TRANSITION_TYPE_WATER] = {B_TRANSITION_SWIRL, B_TRANSITION_RIPPLE},
|
||||
};
|
||||
|
||||
static const struct TrainerBattleParameter sOrdinaryBattleParams[] =
|
||||
@@ -182,12 +191,12 @@ static void Task_BattleStart(u8 taskId)
|
||||
if (!FldEffPoison_IsActive())
|
||||
{
|
||||
HelpSystem_Disable();
|
||||
BT_StartOnField(tTransition);
|
||||
BattleTransition_StartOnField(tTransition);
|
||||
++tState;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (BT_IsDone() == TRUE)
|
||||
if (IsBattleTransitionDone() == TRUE)
|
||||
{
|
||||
HelpSystem_Enable();
|
||||
CleanupOverworldWindowsAndTilemaps();
|
||||
@@ -294,7 +303,7 @@ void StartOldManTutorialBattle(void)
|
||||
LockPlayerFieldControls();
|
||||
gMain.savedCallback = CB2_ReturnToFieldContinueScriptPlayMapMusic;
|
||||
gBattleTypeFlags = BATTLE_TYPE_OLD_MAN_TUTORIAL;
|
||||
CreateBattleStartTask(B_TRANSITION_SLICED_SCREEN, 0);
|
||||
CreateBattleStartTask(B_TRANSITION_SLICE, 0);
|
||||
}
|
||||
|
||||
void StartScriptedWildBattle(void)
|
||||
@@ -373,9 +382,9 @@ void StartGroudonKyogreBattle(void)
|
||||
gMain.savedCallback = CB2_EndScriptedWildBattle;
|
||||
gBattleTypeFlags = BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_KYOGRE_GROUDON;
|
||||
if (gGameVersion == VERSION_FIRE_RED)
|
||||
CreateBattleStartTask(B_TRANSITION_BLACK_DOODLES, MUS_RS_VS_TRAINER);
|
||||
CreateBattleStartTask(B_TRANSITION_ANGLED_WIPES, MUS_RS_VS_TRAINER);
|
||||
else // pointless, exactly the same
|
||||
CreateBattleStartTask(B_TRANSITION_BLACK_DOODLES, MUS_RS_VS_TRAINER);
|
||||
CreateBattleStartTask(B_TRANSITION_ANGLED_WIPES, MUS_RS_VS_TRAINER);
|
||||
IncrementGameStat(GAME_STAT_TOTAL_BATTLES);
|
||||
IncrementGameStat(GAME_STAT_WILD_BATTLES);
|
||||
}
|
||||
@@ -506,26 +515,27 @@ u8 BattleSetup_GetTerrainId(void)
|
||||
|
||||
static u8 GetBattleTransitionTypeByMap(void)
|
||||
{
|
||||
u16 tileBehavior;
|
||||
u16 behavior;
|
||||
s16 x, y;
|
||||
|
||||
PlayerGetDestCoords(&x, &y);
|
||||
tileBehavior = MapGridGetMetatileBehaviorAt(x, y);
|
||||
behavior = MapGridGetMetatileBehaviorAt(x, y);
|
||||
|
||||
if (Overworld_GetFlashLevel())
|
||||
return B_TRANSITION_HORIZONTAL_CORRUGATE;
|
||||
if (!MetatileBehavior_IsSurfable(tileBehavior))
|
||||
return TRANSITION_TYPE_FLASH;
|
||||
|
||||
if (MetatileBehavior_IsSurfable(behavior))
|
||||
return TRANSITION_TYPE_WATER;
|
||||
|
||||
switch (gMapHeader.mapType)
|
||||
{
|
||||
switch (gMapHeader.mapType)
|
||||
{
|
||||
case MAP_TYPE_UNDERGROUND:
|
||||
return B_TRANSITION_DISTORTED_WAVE;
|
||||
case MAP_TYPE_UNDERWATER:
|
||||
return B_TRANSITION_BIG_POKEBALL;
|
||||
default:
|
||||
return B_TRANSITION_BLUR;
|
||||
}
|
||||
case MAP_TYPE_UNDERGROUND:
|
||||
return TRANSITION_TYPE_CAVE;
|
||||
case MAP_TYPE_UNDERWATER:
|
||||
return TRANSITION_TYPE_WATER;
|
||||
default:
|
||||
return TRANSITION_TYPE_NORMAL;
|
||||
}
|
||||
return B_TRANSITION_BIG_POKEBALL;
|
||||
}
|
||||
|
||||
static u16 GetSumOfPlayerPartyLevel(u8 numMons)
|
||||
@@ -652,7 +662,7 @@ u8 BattleSetup_GetBattleTowerBattleTransition(void)
|
||||
u8 playerLevel = GetSumOfPlayerPartyLevel(1);
|
||||
|
||||
if (enemyLevel < playerLevel)
|
||||
return B_TRANSITION_SLIDING_POKEBALLS;
|
||||
return B_TRANSITION_POKEBALLS_TRAIL;
|
||||
else
|
||||
return B_TRANSITION_BIG_POKEBALL;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user