Merge remote-tracking branch 'pret/master' into pret-merge

Conflicts:
	data/battle_anim_scripts.s
	src/battle_anim_water.c
	src/event_object_movement.c
	src/field_player_avatar.c
This commit is contained in:
Hedara 2026-02-26 15:33:26 +01:00
commit 4dba49657a
15 changed files with 194 additions and 167 deletions

View File

@ -648,3 +648,7 @@
.macro shake_battle_platforms priority=2, x_offset:req, y_offset:req, shakes:req, delay:req
createvisualtask AnimTask_ShakeBattlePlatforms, \priority, \x_offset, \y_offset, \shakes, \delay
.endm
.macro create_surf_wave priority=2, palette:req
createvisualtask AnimTask_CreateSurfWave, \priority, \palette
.endm

View File

@ -4296,7 +4296,7 @@ FlameBurstSpread:
gBattleAnimMove_SludgeWave::
panse SE_M_WHIRLPOOL, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0
createvisualtask AnimTask_CreateSurfWave, 2, ANIM_SURF_PAL_SLUDGE_WAVE
create_surf_wave palette=ANIM_SURF_PAL_SLUDGE_WAVE
waitforvisualfinish
end
@ -12770,7 +12770,7 @@ gBattleAnimMove_ZippyZap::
gBattleAnimMove_SplishySplash::
loadspritegfx ANIM_TAG_SPARK_2
createvisualtask AnimTask_CreateSurfWave, 2, ANIM_SURF_PAL_SURF
create_surf_wave palette=ANIM_SURF_PAL_SURF
delay 24
panse SE_M_SURF, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
waitforvisualfinish
@ -26924,7 +26924,7 @@ gBattleAnimMove_Crabhammer::
end
gBattleAnimMove_Surf::
createvisualtask AnimTask_CreateSurfWave, 2, ANIM_SURF_PAL_SURF
create_surf_wave palette=ANIM_SURF_PAL_SURF
delay 24
panse SE_M_SURF, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
waitforvisualfinish
@ -29226,7 +29226,7 @@ ArmThrustLeft:
gBattleAnimMove_MuddyWater::
panse SE_M_WHIRLPOOL, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
createvisualtask AnimTask_CreateSurfWave, 2, ANIM_SURF_PAL_MUDDY_WATER
create_surf_wave palette=ANIM_SURF_PAL_MUDDY_WATER
waitforvisualfinish
end
@ -32423,7 +32423,7 @@ FinishAcidDownpour:
createsprite gAcidDownpourReversalSpriteTemplate, ANIM_ATTACKER, 2, 0x1a, 0xd2
delay 32
panse SE_M_WHIRLPOOL, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0
createvisualtask AnimTask_CreateSurfWave, 0x2, ANIM_SURF_PAL_SLUDGE_WAVE
create_surf_wave priority=0x2, palette=ANIM_SURF_PAL_SLUDGE_WAVE
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 7, (RGB(28, 3, 22) | RGB_ALPHA)
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 2, 50, 1
call AcidDownpourFlare
@ -33318,7 +33318,7 @@ gBattleAnimMove_HydroVortex::
loadspritegfx ANIM_TAG_WATER_ORB @whirlpool
createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 0xA
waitforvisualfinish
createvisualtask AnimTask_CreateSurfWave, 0x2, 0x0
create_surf_wave priority=0x2, palette=0x0
delay 24
panse SE_M_SURF, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0
waitforvisualfinish

View File

@ -678,6 +678,10 @@ enum SpeciesGfxChange
SPECIES_GFX_CHANGE_ILLUSION_OFF,
};
// Surf wave palettes
#define ANIM_SURF_PAL_SURF 0
#define ANIM_SURF_PAL_MUDDY_WATER 1
// Flags given to various functions to indicate which palettes to consider.
// Handled by UnpackSelectedBattlePalettes
#define F_PAL_BG (1 << 0)

View File

@ -11,6 +11,15 @@
#define MAPGRID_COLLISION_SHIFT 10
#define MAPGRID_ELEVATION_SHIFT 12
enum
{
ELEVATION_TRANSITION = 0,
ELEVATION_SURF = 1,
ELEVATION_DEFAULT = 3,
ELEVATION_MULTI_LEVEL = 15,
ELEVATION_INVALID = 0xFFFF
};
#define PACK_METATILE(metatileId) PACK(metatileId, MAPGRID_METATILE_ID_SHIFT, MAPGRID_METATILE_ID_MASK)
#define PACK_COLLISION(collision) PACK(collision, MAPGRID_COLLISION_SHIFT, MAPGRID_COLLISION_MASK)
#define PACK_ELEVATION(elevation) PACK(elevation, MAPGRID_ELEVATION_SHIFT, MAPGRID_ELEVATION_MASK)

View File

@ -124,6 +124,9 @@ SECTIONS {
.debug_loc 0 : { *(.debug_loc) }
.debug_macinfo 0 : { *(.debug_macinfo) }
/* DWARF 5*/
.debug_line_str 0 : { *(.debug_line_str) }
/* Discard everything not specifically mentioned above. */
/DISCARD/ :
{

View File

@ -1,6 +1,7 @@
#include "global.h"
#include "battle.h"
#include "battle_anim.h"
#include "battle_anim_internal.h"
#include "gpu_regs.h"
#include "graphics.h"
#include "palette.h"
@ -1023,6 +1024,8 @@ static void AnimSmallBubblePair_Step(struct Sprite *sprite)
void AnimTask_CreateSurfWave(u8 taskId)
{
CMD_ARGS(palette);
struct BattleAnimBgData animBg;
u8 taskId2;
u16 *x;
@ -1049,7 +1052,7 @@ void AnimTask_CreateSurfWave(u8 taskId)
AnimLoadCompressedBgTilemapHandleContest(&animBg, gBattleAnimBgTilemap_SurfContest, TRUE);
}
AnimLoadCompressedBgGfx(animBg.bgId, gBattleAnimBgImage_Surf, animBg.tilesOffset);
switch (gBattleAnimArgs[0])
switch (cmd->palette)
{
case ANIM_SURF_PAL_SURF:
default:

View File

@ -1197,7 +1197,7 @@ static void WarpToInitialPosition(u8 taskId)
static u16 GetDecorationElevation(u8 decoration, u8 tileIndex)
{
u16 elevation = -1;
u16 elevation = ELEVATION_INVALID;
switch (decoration)
{
case DECOR_STAND:
@ -1240,7 +1240,7 @@ static void ShowDecorationOnMap_(u16 mapX, u16 mapY, u8 decWidth, u8 decHeight,
overlapsWall = 0;
elevation = GetDecorationElevation(gDecorations[decoration].id, j * decWidth + i);
if (elevation != 0xFFFF)
if (elevation != ELEVATION_INVALID)
MapGridSetMetatileEntryAt(x, y, (gDecorations[decoration].tiles[j * decWidth + i] + (NUM_TILES_IN_PRIMARY | overlapsWall)) | impassableFlag | elevation);
else
MapGridSetMetatileIdAt(x, y, (gDecorations[decoration].tiles[j * decWidth + i] + (NUM_TILES_IN_PRIMARY | overlapsWall)) | impassableFlag);

View File

@ -3368,7 +3368,7 @@ u8 GetObjectEventIdByPosition(u16 x, u16 y, u8 elevation)
static bool8 ObjectEventDoesElevationMatch(struct ObjectEvent *objectEvent, u8 elevation)
{
if (objectEvent->currentElevation != 0 && elevation != 0 && objectEvent->currentElevation != elevation)
if (objectEvent->currentElevation != ELEVATION_TRANSITION && elevation != ELEVATION_TRANSITION && objectEvent->currentElevation != elevation)
return FALSE;
return TRUE;
@ -9807,12 +9807,12 @@ bool8 IsElevationMismatchAt(u8 elevation, s16 x, s16 y)
{
u8 mapElevation;
if (elevation == 0)
if (elevation == ELEVATION_TRANSITION)
return FALSE;
mapElevation = MapGridGetElevationAt(x, y);
if (mapElevation == 0 || mapElevation == 15)
if (mapElevation == ELEVATION_TRANSITION || mapElevation == ELEVATION_MULTI_LEVEL)
return FALSE;
if (mapElevation != elevation)
@ -9871,7 +9871,7 @@ void ObjectEventUpdateElevation(struct ObjectEvent *objEvent, struct Sprite *spr
u8 curElevation = MapGridGetElevationAt(objEvent->currentCoords.x, objEvent->currentCoords.y);
u8 prevElevation = MapGridGetElevationAt(objEvent->previousCoords.x, objEvent->previousCoords.y);
if (curElevation == 15 || prevElevation == 15)
if (curElevation == ELEVATION_MULTI_LEVEL || prevElevation == ELEVATION_MULTI_LEVEL)
{
// Ignore subsprite priorities under bridges
// so all subsprites will display below it
@ -9882,7 +9882,7 @@ void ObjectEventUpdateElevation(struct ObjectEvent *objEvent, struct Sprite *spr
objEvent->currentElevation = curElevation;
if (curElevation != 0 && curElevation != 15)
if (curElevation != ELEVATION_TRANSITION && curElevation != ELEVATION_MULTI_LEVEL)
objEvent->previousElevation = curElevation;
}
@ -9910,7 +9910,7 @@ static void ObjectEventUpdateSubpriority(struct ObjectEvent *objEvent, struct Sp
static bool8 AreElevationsCompatible(u8 a, u8 b)
{
if (a == 0 || b == 0)
if (a == ELEVATION_TRANSITION || b == ELEVATION_TRANSITION)
return TRUE;
if (a != b)

View File

@ -267,10 +267,10 @@ static void GetInFrontOfPlayerPosition(struct MapPosition *position)
GetXYCoordsOneStepInFrontOfPlayer(&position->x, &position->y);
PlayerGetDestCoords(&x, &y);
if (MapGridGetElevationAt(x, y) != 0)
if (MapGridGetElevationAt(x, y) != ELEVATION_TRANSITION)
position->elevation = PlayerGetElevation();
else
position->elevation = 0;
position->elevation = ELEVATION_TRANSITION;
}
static u16 GetPlayerCurMetatileBehavior(int runningState)
@ -1041,7 +1041,7 @@ static s8 GetWarpEventAtPosition(struct MapHeader *mapHeader, u16 x, u16 y, u8 e
{
if ((u16)warpEvent->x == x && (u16)warpEvent->y == y)
{
if (warpEvent->elevation == elevation || warpEvent->elevation == 0)
if (warpEvent->elevation == elevation || warpEvent->elevation == ELEVATION_TRANSITION)
return i;
}
}
@ -1088,7 +1088,7 @@ static const u8 *GetCoordEventScriptAtPosition(struct MapHeader *mapHeader, u16
{
if ((u16)coordEvents[i].x == x && (u16)coordEvents[i].y == y)
{
if (coordEvents[i].elevation == elevation || coordEvents[i].elevation == 0)
if (coordEvents[i].elevation == elevation || coordEvents[i].elevation == ELEVATION_TRANSITION)
{
const u8 *script = TryRunCoordEventScript(&coordEvents[i]);
if (script != NULL)
@ -1114,7 +1114,7 @@ static const struct BgEvent *GetBackgroundEventAtPosition(struct MapHeader *mapH
{
if ((u16)bgEvents[i].x == x && (u16)bgEvents[i].y == y)
{
if (bgEvents[i].elevation == elevation || bgEvents[i].elevation == 0)
if (bgEvents[i].elevation == elevation || bgEvents[i].elevation == ELEVATION_TRANSITION)
return &bgEvents[i];
}
}

View File

@ -1289,7 +1289,7 @@ void SynchronizeSurfPosition(struct ObjectEvent *playerObj, struct Sprite *sprit
for (i = DIR_SOUTH; i <= DIR_EAST; i++, x = sprite->sPrevX, y = sprite->sPrevY)
{
MoveCoords(i, &x, &y);
if (MapGridGetElevationAt(x, y) == 3)
if (MapGridGetElevationAt(x, y) == ELEVATION_DEFAULT)
{
// While dismounting the surf blob bobs at a slower rate
sprite->sIntervalIdx++;

View File

@ -939,9 +939,9 @@ static u8 CheckForObjectEventStaticCollision(struct ObjectEvent *objectEvent, s1
static bool8 CanStopSurfing(s16 x, s16 y, u8 direction)
{
if ((gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING)
&& MapGridGetElevationAt(x, y) == 3
&& (GetObjectEventIdByPosition(x, y, 3) == OBJECT_EVENTS_COUNT
|| GetObjectEventIdByPosition(x, y, 3) == GetFollowerNPCObjectId()
&& MapGridGetElevationAt(x, y) == ELEVATION_DEFAULT
&& (GetObjectEventIdByPosition(x, y, ELEVATION_DEFAULT) == OBJECT_EVENTS_COUNT
|| GetObjectEventIdByPosition(x, y, ELEVATION_DEFAULT) == GetFollowerNPCObjectId()
))
{
CreateStopSurfingTask(direction);
@ -1557,7 +1557,7 @@ bool8 IsPlayerFacingSurfableFishableWater(void)
MoveCoords(playerObjEvent->facingDirection, &x, &y);
if (GetCollisionAtCoords(playerObjEvent, x, y, playerObjEvent->facingDirection) == COLLISION_ELEVATION_MISMATCH
&& PlayerGetElevation() == 3
&& PlayerGetElevation() == ELEVATION_DEFAULT
&& MetatileBehavior_IsSurfableFishableWater(MapGridGetMetatileBehaviorAt(x, y)))
return TRUE;
else
@ -1618,7 +1618,7 @@ void InitPlayerAvatar(s16 x, s16 y, u8 direction, u8 gender)
playerObjEventTemplate.graphicsId = GetPlayerAvatarGraphicsIdByStateIdAndGender(PLAYER_AVATAR_STATE_NORMAL, gender);
playerObjEventTemplate.x = x - MAP_OFFSET;
playerObjEventTemplate.y = y - MAP_OFFSET;
playerObjEventTemplate.elevation = 0;
playerObjEventTemplate.elevation = ELEVATION_TRANSITION;
playerObjEventTemplate.movementType = MOVEMENT_TYPE_PLAYER;
playerObjEventTemplate.movementRangeX = 0;
playerObjEventTemplate.movementRangeY = 0;

View File

@ -1292,7 +1292,7 @@ void SpawnCameraObject(void)
LOCALID_CAMERA,
gSaveBlock1Ptr->pos.x + MAP_OFFSET,
gSaveBlock1Ptr->pos.y + MAP_OFFSET,
3); // elevation
ELEVATION_DEFAULT);
gObjectEvents[obj].invisible = TRUE;
CameraObjectSetFollowedSpriteId(gObjectEvents[obj].spriteId);
}

View File

@ -3027,7 +3027,7 @@ static const u8 *TryInteractWithPlayer(struct CableClubPlayer *player)
otherPlayerPos = player->pos;
otherPlayerPos.x += gDirectionToVectors[player->facing].x;
otherPlayerPos.y += gDirectionToVectors[player->facing].y;
otherPlayerPos.elevation = 0;
otherPlayerPos.elevation = ELEVATION_TRANSITION;
linkPlayerId = GetLinkPlayerIdAt(otherPlayerPos.x, otherPlayerPos.y);
if (linkPlayerId != MAX_LINK_PLAYERS)

View File

@ -28,8 +28,8 @@ enum
typedef struct MatchCallTextDataStruct {
const u8 *text;
u16 flag;
u16 flag2;
u16 availabilityFlag;
u16 flagToSetOnCompletion;
} match_call_text_data_t;
struct MatchCallStructCommon {
@ -157,21 +157,25 @@ static void MatchCall_BufferCallMessageText(const match_call_text_data_t *, u8 *
static void MatchCall_BufferCallMessageTextByRematchTeam(const match_call_text_data_t *, u16, u8 *);
static void MatchCall_GetNameAndDescByRematchIdx(u32, const u8 **, const u8 **);
#define ALWAYS_AVAILABLE 0xFFFF
#define NO_FLAG_TO_SET 0xFFFF
#define MATCH_CALL_TEXT_END {NULL, ALWAYS_AVAILABLE, NO_FLAG_TO_SET}
// .rodata
static const match_call_text_data_t sMrStoneTextScripts[] = {
{ MatchCall_Text_MrStone1, 0xFFFF, FLAG_ENABLE_MR_STONE_POKENAV },
{ MatchCall_Text_MrStone2, FLAG_ENABLE_MR_STONE_POKENAV, 0xFFFF },
{ MatchCall_Text_MrStone3, FLAG_DELIVERED_STEVEN_LETTER, 0xFFFF },
{ MatchCall_Text_MrStone4, FLAG_RECEIVED_EXP_SHARE, 0xFFFF },
{ MatchCall_Text_MrStone5, FLAG_RECEIVED_HM_STRENGTH, 0xFFFF },
{ MatchCall_Text_MrStone6, FLAG_DEFEATED_PETALBURG_GYM, 0xFFFF },
{ MatchCall_Text_MrStone7, FLAG_RECEIVED_CASTFORM, 0xFFFF },
{ MatchCall_Text_MrStone8, FLAG_GROUDON_AWAKENED_MAGMA_HIDEOUT, 0xFFFF },
{ MatchCall_Text_MrStone9, FLAG_TEAM_AQUA_ESCAPED_IN_SUBMARINE, 0xFFFF },
{ MatchCall_Text_MrStone10, FLAG_DEFEATED_SOOTOPOLIS_GYM, 0xFFFF },
{ MatchCall_Text_MrStone11, FLAG_SYS_GAME_CLEAR, 0xFFFF },
{ NULL, 0xFFFF, 0xFFFF }
{ MatchCall_Text_MrStone1, ALWAYS_AVAILABLE, FLAG_ENABLE_MR_STONE_POKENAV },
{ MatchCall_Text_MrStone2, FLAG_ENABLE_MR_STONE_POKENAV, NO_FLAG_TO_SET },
{ MatchCall_Text_MrStone3, FLAG_DELIVERED_STEVEN_LETTER, NO_FLAG_TO_SET },
{ MatchCall_Text_MrStone4, FLAG_RECEIVED_EXP_SHARE, NO_FLAG_TO_SET },
{ MatchCall_Text_MrStone5, FLAG_RECEIVED_HM_STRENGTH, NO_FLAG_TO_SET },
{ MatchCall_Text_MrStone6, FLAG_DEFEATED_PETALBURG_GYM, NO_FLAG_TO_SET },
{ MatchCall_Text_MrStone7, FLAG_RECEIVED_CASTFORM, NO_FLAG_TO_SET },
{ MatchCall_Text_MrStone8, FLAG_GROUDON_AWAKENED_MAGMA_HIDEOUT, NO_FLAG_TO_SET },
{ MatchCall_Text_MrStone9, FLAG_TEAM_AQUA_ESCAPED_IN_SUBMARINE, NO_FLAG_TO_SET },
{ MatchCall_Text_MrStone10, FLAG_DEFEATED_SOOTOPOLIS_GYM, NO_FLAG_TO_SET },
{ MatchCall_Text_MrStone11, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET },
MATCH_CALL_TEXT_END
};
static const struct MatchCallStructNPC sMrStoneMatchCallHeader =
@ -185,16 +189,16 @@ static const struct MatchCallStructNPC sMrStoneMatchCallHeader =
};
static const match_call_text_data_t sNormanTextScripts[] = {
{ MatchCall_Text_Norman1, FLAG_ENABLE_NORMAN_MATCH_CALL, 0xFFFF },
{ MatchCall_Text_Norman2, FLAG_DEFEATED_DEWFORD_GYM, 0xFFFF },
{ MatchCall_Text_Norman3, FLAG_DEFEATED_LAVARIDGE_GYM, 0xFFFF },
{ MatchCall_Text_Norman4, FLAG_DEFEATED_PETALBURG_GYM, 0xFFFF },
{ MatchCall_Text_Norman5, FLAG_RECEIVED_RED_OR_BLUE_ORB, 0xFFFF },
{ MatchCall_Text_Norman6, 0xFFFE, 0xFFFF },
{ MatchCall_Text_Norman7, FLAG_SYS_GAME_CLEAR, 0xFFFF },
{ MatchCall_Text_Norman8, FLAG_SYS_GAME_CLEAR, 0xFFFF },
{ MatchCall_Text_Norman9, FLAG_SYS_GAME_CLEAR, 0xFFFF },
{ NULL, 0xFFFF, 0xFFFF }
{ MatchCall_Text_Norman1, FLAG_ENABLE_NORMAN_MATCH_CALL, NO_FLAG_TO_SET },
{ MatchCall_Text_Norman2, FLAG_DEFEATED_DEWFORD_GYM, NO_FLAG_TO_SET },
{ MatchCall_Text_Norman3, FLAG_DEFEATED_LAVARIDGE_GYM, NO_FLAG_TO_SET },
{ MatchCall_Text_Norman4, FLAG_DEFEATED_PETALBURG_GYM, NO_FLAG_TO_SET },
{ MatchCall_Text_Norman5, FLAG_RECEIVED_RED_OR_BLUE_ORB, NO_FLAG_TO_SET },
{ MatchCall_Text_Norman6, 0xFFFE, NO_FLAG_TO_SET },
{ MatchCall_Text_Norman7, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET },
{ MatchCall_Text_Norman8, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET },
{ MatchCall_Text_Norman9, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET },
MATCH_CALL_TEXT_END
};
static const struct MatchCallStructTrainer sNormanMatchCallHeader =
@ -218,10 +222,10 @@ static const struct MatchCallBirch sProfBirchMatchCallHeader =
};
static const match_call_text_data_t sMomTextScripts[] = {
{ MatchCall_Text_Mom1, 0xFFFF, 0xFFFF },
{ MatchCall_Text_Mom2, FLAG_DEFEATED_PETALBURG_GYM, 0xFFFF },
{ MatchCall_Text_Mom3, FLAG_SYS_GAME_CLEAR, 0xFFFF },
{ NULL, 0xFFFF, 0xFFFF }
{ MatchCall_Text_Mom1, ALWAYS_AVAILABLE, NO_FLAG_TO_SET },
{ MatchCall_Text_Mom2, FLAG_DEFEATED_PETALBURG_GYM, NO_FLAG_TO_SET },
{ MatchCall_Text_Mom3, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET },
MATCH_CALL_TEXT_END
};
static const struct MatchCallStructNPC sMomMatchCallHeader =
@ -235,14 +239,14 @@ static const struct MatchCallStructNPC sMomMatchCallHeader =
};
static const match_call_text_data_t sStevenTextScripts[] = {
{ MatchCall_Text_Steven1, 0xFFFF, 0xFFFF },
{ MatchCall_Text_Steven2, FLAG_RUSTURF_TUNNEL_OPENED, 0xFFFF },
{ MatchCall_Text_Steven3, FLAG_RECEIVED_RED_OR_BLUE_ORB, 0xFFFF },
{ MatchCall_Text_Steven4, FLAG_TEAM_AQUA_ESCAPED_IN_SUBMARINE, 0xFFFF },
{ MatchCall_Text_Steven5, FLAG_DEFEATED_MOSSDEEP_GYM, 0xFFFF },
{ MatchCall_Text_Steven6, FLAG_KYOGRE_ESCAPED_SEAFLOOR_CAVERN, 0xFFFF },
{ MatchCall_Text_Steven7, FLAG_SYS_GAME_CLEAR, 0xFFFF },
{ NULL, 0xFFFF, 0xFFFF },
{ MatchCall_Text_Steven1, ALWAYS_AVAILABLE, NO_FLAG_TO_SET },
{ MatchCall_Text_Steven2, FLAG_RUSTURF_TUNNEL_OPENED, NO_FLAG_TO_SET },
{ MatchCall_Text_Steven3, FLAG_RECEIVED_RED_OR_BLUE_ORB, NO_FLAG_TO_SET },
{ MatchCall_Text_Steven4, FLAG_TEAM_AQUA_ESCAPED_IN_SUBMARINE, NO_FLAG_TO_SET },
{ MatchCall_Text_Steven5, FLAG_DEFEATED_MOSSDEEP_GYM, NO_FLAG_TO_SET },
{ MatchCall_Text_Steven6, FLAG_KYOGRE_ESCAPED_SEAFLOOR_CAVERN, NO_FLAG_TO_SET },
{ MatchCall_Text_Steven7, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET },
MATCH_CALL_TEXT_END,
};
static const struct MatchCallStructNPC sStevenMatchCallHeader =
@ -258,22 +262,22 @@ static const struct MatchCallStructNPC sStevenMatchCallHeader =
static const u8 gText_MayBrendanMatchCallDesc[] = _("RAD NEIGHBOR");
static const match_call_text_data_t sMayTextScripts[] = {
{ MatchCall_Text_May1, 0xFFFF, 0xFFFF },
{ MatchCall_Text_May2, FLAG_DEFEATED_DEWFORD_GYM, 0xFFFF },
{ MatchCall_Text_May3, FLAG_DELIVERED_DEVON_GOODS, 0xFFFF },
{ MatchCall_Text_May4, FLAG_HIDE_MAUVILLE_CITY_WALLY, 0xFFFF },
{ MatchCall_Text_May5, FLAG_RECEIVED_HM_STRENGTH, 0xFFFF },
{ MatchCall_Text_May6, FLAG_DEFEATED_LAVARIDGE_GYM, 0xFFFF },
{ MatchCall_Text_May7, FLAG_DEFEATED_PETALBURG_GYM, 0xFFFF },
{ MatchCall_Text_May8, FLAG_RECEIVED_CASTFORM, 0xFFFF },
{ MatchCall_Text_May9, FLAG_RECEIVED_RED_OR_BLUE_ORB, 0xFFFF },
{ MatchCall_Text_May10, FLAG_GROUDON_AWAKENED_MAGMA_HIDEOUT, 0xFFFF },
{ MatchCall_Text_May11, FLAG_MET_TEAM_AQUA_HARBOR, 0xFFFF },
{ MatchCall_Text_May12, FLAG_TEAM_AQUA_ESCAPED_IN_SUBMARINE, 0xFFFF },
{ MatchCall_Text_May13, FLAG_KYOGRE_ESCAPED_SEAFLOOR_CAVERN, 0xFFFF },
{ MatchCall_Text_May14, FLAG_DEFEATED_SOOTOPOLIS_GYM, 0xFFFF },
{ MatchCall_Text_May15, FLAG_SYS_GAME_CLEAR, 0xFFFF },
{ NULL, 0xFFFF, 0xFFFF }
{ MatchCall_Text_May1, ALWAYS_AVAILABLE, NO_FLAG_TO_SET },
{ MatchCall_Text_May2, FLAG_DEFEATED_DEWFORD_GYM, NO_FLAG_TO_SET },
{ MatchCall_Text_May3, FLAG_DELIVERED_DEVON_GOODS, NO_FLAG_TO_SET },
{ MatchCall_Text_May4, FLAG_HIDE_MAUVILLE_CITY_WALLY, NO_FLAG_TO_SET },
{ MatchCall_Text_May5, FLAG_RECEIVED_HM_STRENGTH, NO_FLAG_TO_SET },
{ MatchCall_Text_May6, FLAG_DEFEATED_LAVARIDGE_GYM, NO_FLAG_TO_SET },
{ MatchCall_Text_May7, FLAG_DEFEATED_PETALBURG_GYM, NO_FLAG_TO_SET },
{ MatchCall_Text_May8, FLAG_RECEIVED_CASTFORM, NO_FLAG_TO_SET },
{ MatchCall_Text_May9, FLAG_RECEIVED_RED_OR_BLUE_ORB, NO_FLAG_TO_SET },
{ MatchCall_Text_May10, FLAG_GROUDON_AWAKENED_MAGMA_HIDEOUT, NO_FLAG_TO_SET },
{ MatchCall_Text_May11, FLAG_MET_TEAM_AQUA_HARBOR, NO_FLAG_TO_SET },
{ MatchCall_Text_May12, FLAG_TEAM_AQUA_ESCAPED_IN_SUBMARINE, NO_FLAG_TO_SET },
{ MatchCall_Text_May13, FLAG_KYOGRE_ESCAPED_SEAFLOOR_CAVERN, NO_FLAG_TO_SET },
{ MatchCall_Text_May14, FLAG_DEFEATED_SOOTOPOLIS_GYM, NO_FLAG_TO_SET },
{ MatchCall_Text_May15, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET },
MATCH_CALL_TEXT_END
};
static const struct MatchCallRival sMayMatchCallHeader =
@ -287,22 +291,22 @@ static const struct MatchCallRival sMayMatchCallHeader =
};
static const match_call_text_data_t sBrendanTextScripts[] = {
{ MatchCall_Text_Brendan1, 0xFFFF, 0xFFFF },
{ MatchCall_Text_Brendan2, FLAG_DEFEATED_DEWFORD_GYM, 0xFFFF },
{ MatchCall_Text_Brendan3, FLAG_DELIVERED_DEVON_GOODS, 0xFFFF },
{ MatchCall_Text_Brendan4, FLAG_HIDE_MAUVILLE_CITY_WALLY, 0xFFFF },
{ MatchCall_Text_Brendan5, FLAG_RECEIVED_HM_STRENGTH, 0xFFFF },
{ MatchCall_Text_Brendan6, FLAG_DEFEATED_LAVARIDGE_GYM, 0xFFFF },
{ MatchCall_Text_Brendan7, FLAG_DEFEATED_PETALBURG_GYM, 0xFFFF },
{ MatchCall_Text_Brendan8, FLAG_RECEIVED_CASTFORM, 0xFFFF },
{ MatchCall_Text_Brendan9, FLAG_RECEIVED_RED_OR_BLUE_ORB, 0xFFFF },
{ MatchCall_Text_Brendan10, FLAG_GROUDON_AWAKENED_MAGMA_HIDEOUT, 0xFFFF },
{ MatchCall_Text_Brendan11, FLAG_MET_TEAM_AQUA_HARBOR, 0xFFFF },
{ MatchCall_Text_Brendan12, FLAG_TEAM_AQUA_ESCAPED_IN_SUBMARINE, 0xFFFF },
{ MatchCall_Text_Brendan13, FLAG_KYOGRE_ESCAPED_SEAFLOOR_CAVERN, 0xFFFF },
{ MatchCall_Text_Brendan14, FLAG_DEFEATED_SOOTOPOLIS_GYM, 0xFFFF },
{ MatchCall_Text_Brendan15, FLAG_SYS_GAME_CLEAR, 0xFFFF },
{ NULL, 0xFFFF, 0xFFFF }
{ MatchCall_Text_Brendan1, ALWAYS_AVAILABLE, NO_FLAG_TO_SET },
{ MatchCall_Text_Brendan2, FLAG_DEFEATED_DEWFORD_GYM, NO_FLAG_TO_SET },
{ MatchCall_Text_Brendan3, FLAG_DELIVERED_DEVON_GOODS, NO_FLAG_TO_SET },
{ MatchCall_Text_Brendan4, FLAG_HIDE_MAUVILLE_CITY_WALLY, NO_FLAG_TO_SET },
{ MatchCall_Text_Brendan5, FLAG_RECEIVED_HM_STRENGTH, NO_FLAG_TO_SET },
{ MatchCall_Text_Brendan6, FLAG_DEFEATED_LAVARIDGE_GYM, NO_FLAG_TO_SET },
{ MatchCall_Text_Brendan7, FLAG_DEFEATED_PETALBURG_GYM, NO_FLAG_TO_SET },
{ MatchCall_Text_Brendan8, FLAG_RECEIVED_CASTFORM, NO_FLAG_TO_SET },
{ MatchCall_Text_Brendan9, FLAG_RECEIVED_RED_OR_BLUE_ORB, NO_FLAG_TO_SET },
{ MatchCall_Text_Brendan10, FLAG_GROUDON_AWAKENED_MAGMA_HIDEOUT, NO_FLAG_TO_SET },
{ MatchCall_Text_Brendan11, FLAG_MET_TEAM_AQUA_HARBOR, NO_FLAG_TO_SET },
{ MatchCall_Text_Brendan12, FLAG_TEAM_AQUA_ESCAPED_IN_SUBMARINE, NO_FLAG_TO_SET },
{ MatchCall_Text_Brendan13, FLAG_KYOGRE_ESCAPED_SEAFLOOR_CAVERN, NO_FLAG_TO_SET },
{ MatchCall_Text_Brendan14, FLAG_DEFEATED_SOOTOPOLIS_GYM, NO_FLAG_TO_SET },
{ MatchCall_Text_Brendan15, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET },
MATCH_CALL_TEXT_END
};
static const struct MatchCallRival sBrendanMatchCallHeader =
@ -316,14 +320,14 @@ static const struct MatchCallRival sBrendanMatchCallHeader =
};
static const match_call_text_data_t sWallyTextScripts[] = {
{ MatchCall_Text_Wally1, 0xFFFF, 0xFFFF },
{ MatchCall_Text_Wally2, FLAG_RUSTURF_TUNNEL_OPENED, 0xFFFF },
{ MatchCall_Text_Wally3, FLAG_DEFEATED_LAVARIDGE_GYM, 0xFFFF },
{ MatchCall_Text_Wally4, FLAG_RECEIVED_CASTFORM, 0xFFFF },
{ MatchCall_Text_Wally5, FLAG_GROUDON_AWAKENED_MAGMA_HIDEOUT, 0xFFFF },
{ MatchCall_Text_Wally6, FLAG_KYOGRE_ESCAPED_SEAFLOOR_CAVERN, 0xFFFF },
{ MatchCall_Text_Wally7, FLAG_DEFEATED_WALLY_VICTORY_ROAD, 0xFFFF },
{ NULL, 0xFFFF, 0xFFFF }
{ MatchCall_Text_Wally1, ALWAYS_AVAILABLE, NO_FLAG_TO_SET },
{ MatchCall_Text_Wally2, FLAG_RUSTURF_TUNNEL_OPENED, NO_FLAG_TO_SET },
{ MatchCall_Text_Wally3, FLAG_DEFEATED_LAVARIDGE_GYM, NO_FLAG_TO_SET },
{ MatchCall_Text_Wally4, FLAG_RECEIVED_CASTFORM, NO_FLAG_TO_SET },
{ MatchCall_Text_Wally5, FLAG_GROUDON_AWAKENED_MAGMA_HIDEOUT, NO_FLAG_TO_SET },
{ MatchCall_Text_Wally6, FLAG_KYOGRE_ESCAPED_SEAFLOOR_CAVERN, NO_FLAG_TO_SET },
{ MatchCall_Text_Wally7, FLAG_DEFEATED_WALLY_VICTORY_ROAD, NO_FLAG_TO_SET },
MATCH_CALL_TEXT_END
};
static const struct MatchCallLocationOverride sWallyLocationData[] = {
@ -345,14 +349,14 @@ static const struct MatchCallWally sWallyMatchCallHeader =
};
static const match_call_text_data_t sScottTextScripts[] = {
{ MatchCall_Text_Scott1, 0xFFFF, 0xFFFF },
{ MatchCall_Text_Scott2, FLAG_DEFEATED_EVIL_TEAM_MT_CHIMNEY, 0xFFFF },
{ MatchCall_Text_Scott3, FLAG_RECEIVED_CASTFORM, 0xFFFF },
{ MatchCall_Text_Scott4, FLAG_RECEIVED_RED_OR_BLUE_ORB, 0xFFFF },
{ MatchCall_Text_Scott5, FLAG_TEAM_AQUA_ESCAPED_IN_SUBMARINE, 0xFFFF },
{ MatchCall_Text_Scott6, FLAG_DEFEATED_SOOTOPOLIS_GYM, 0xFFFF },
{ MatchCall_Text_Scott7, FLAG_SYS_GAME_CLEAR, 0xFFFF },
{ NULL, 0xFFFF, 0xFFFF }
{ MatchCall_Text_Scott1, ALWAYS_AVAILABLE, NO_FLAG_TO_SET },
{ MatchCall_Text_Scott2, FLAG_DEFEATED_EVIL_TEAM_MT_CHIMNEY, NO_FLAG_TO_SET },
{ MatchCall_Text_Scott3, FLAG_RECEIVED_CASTFORM, NO_FLAG_TO_SET },
{ MatchCall_Text_Scott4, FLAG_RECEIVED_RED_OR_BLUE_ORB, NO_FLAG_TO_SET },
{ MatchCall_Text_Scott5, FLAG_TEAM_AQUA_ESCAPED_IN_SUBMARINE, NO_FLAG_TO_SET },
{ MatchCall_Text_Scott6, FLAG_DEFEATED_SOOTOPOLIS_GYM, NO_FLAG_TO_SET },
{ MatchCall_Text_Scott7, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET },
MATCH_CALL_TEXT_END
};
@ -367,11 +371,11 @@ static const struct MatchCallStructNPC sScottMatchCallHeader =
};
static const match_call_text_data_t sRoxanneTextScripts[] = {
{ MatchCall_Text_Roxanne1, 0xFFFE, 0xFFFF },
{ MatchCall_Text_Roxanne2, 0xFFFF, 0xFFFF },
{ MatchCall_Text_Roxanne3, 0xFFFF, 0xFFFF },
{ MatchCall_Text_Roxanne4, FLAG_SYS_GAME_CLEAR, 0xFFFF },
{ NULL, 0xFFFF, 0xFFFF }
{ MatchCall_Text_Roxanne1, 0xFFFE, NO_FLAG_TO_SET },
{ MatchCall_Text_Roxanne2, ALWAYS_AVAILABLE, NO_FLAG_TO_SET },
{ MatchCall_Text_Roxanne3, ALWAYS_AVAILABLE, NO_FLAG_TO_SET },
{ MatchCall_Text_Roxanne4, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET },
MATCH_CALL_TEXT_END
};
static const struct MatchCallStructTrainer sRoxanneMatchCallHeader =
@ -386,11 +390,11 @@ static const struct MatchCallStructTrainer sRoxanneMatchCallHeader =
};
static const match_call_text_data_t sBrawlyTextScripts[] = {
{ MatchCall_Text_Brawly1, 0xFFFE, 0xFFFF },
{ MatchCall_Text_Brawly2, 0xFFFF, 0xFFFF },
{ MatchCall_Text_Brawly3, 0xFFFF, 0xFFFF },
{ MatchCall_Text_Brawly4, FLAG_SYS_GAME_CLEAR, 0xFFFF },
{ NULL, 0xFFFF, 0xFFFF }
{ MatchCall_Text_Brawly1, 0xFFFE, NO_FLAG_TO_SET },
{ MatchCall_Text_Brawly2, ALWAYS_AVAILABLE, NO_FLAG_TO_SET },
{ MatchCall_Text_Brawly3, ALWAYS_AVAILABLE, NO_FLAG_TO_SET },
{ MatchCall_Text_Brawly4, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET },
MATCH_CALL_TEXT_END
};
static const struct MatchCallStructTrainer sBrawlyMatchCallHeader =
@ -405,11 +409,11 @@ static const struct MatchCallStructTrainer sBrawlyMatchCallHeader =
};
static const match_call_text_data_t sWattsonTextScripts[] = {
{ MatchCall_Text_Wattson1, 0xFFFE, 0xFFFF },
{ MatchCall_Text_Wattson2, 0xFFFF, 0xFFFF },
{ MatchCall_Text_Wattson3, 0xFFFF, 0xFFFF },
{ MatchCall_Text_Wattson4, FLAG_SYS_GAME_CLEAR, 0xFFFF },
{ NULL, 0xFFFF, 0xFFFF }
{ MatchCall_Text_Wattson1, 0xFFFE, NO_FLAG_TO_SET },
{ MatchCall_Text_Wattson2, ALWAYS_AVAILABLE, NO_FLAG_TO_SET },
{ MatchCall_Text_Wattson3, ALWAYS_AVAILABLE, NO_FLAG_TO_SET },
{ MatchCall_Text_Wattson4, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET },
MATCH_CALL_TEXT_END
};
static const struct MatchCallStructTrainer sWattsonMatchCallHeader =
@ -424,11 +428,11 @@ static const struct MatchCallStructTrainer sWattsonMatchCallHeader =
};
static const match_call_text_data_t sFlanneryTextScripts[] = {
{ MatchCall_Text_Flannery1, 0xFFFE, 0xFFFF },
{ MatchCall_Text_Flannery2, 0xFFFF, 0xFFFF },
{ MatchCall_Text_Flannery3, 0xFFFF, 0xFFFF },
{ MatchCall_Text_Flannery4, FLAG_SYS_GAME_CLEAR, 0xFFFF },
{ NULL, 0xFFFF, 0xFFFF }
{ MatchCall_Text_Flannery1, 0xFFFE, NO_FLAG_TO_SET },
{ MatchCall_Text_Flannery2, ALWAYS_AVAILABLE, NO_FLAG_TO_SET },
{ MatchCall_Text_Flannery3, ALWAYS_AVAILABLE, NO_FLAG_TO_SET },
{ MatchCall_Text_Flannery4, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET },
MATCH_CALL_TEXT_END
};
static const struct MatchCallStructTrainer sFlanneryMatchCallHeader =
@ -443,11 +447,11 @@ static const struct MatchCallStructTrainer sFlanneryMatchCallHeader =
};
static const match_call_text_data_t sWinonaTextScripts[] = {
{ MatchCall_Text_Winona1, 0xFFFE, 0xFFFF },
{ MatchCall_Text_Winona2, 0xFFFF, 0xFFFF },
{ MatchCall_Text_Winona3, 0xFFFF, 0xFFFF },
{ MatchCall_Text_Winona4, FLAG_SYS_GAME_CLEAR, 0xFFFF },
{ NULL, 0xFFFF, 0xFFFF }
{ MatchCall_Text_Winona1, 0xFFFE, NO_FLAG_TO_SET },
{ MatchCall_Text_Winona2, ALWAYS_AVAILABLE, NO_FLAG_TO_SET },
{ MatchCall_Text_Winona3, ALWAYS_AVAILABLE, NO_FLAG_TO_SET },
{ MatchCall_Text_Winona4, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET },
MATCH_CALL_TEXT_END
};
static const struct MatchCallStructTrainer sWinonaMatchCallHeader =
@ -462,11 +466,11 @@ static const struct MatchCallStructTrainer sWinonaMatchCallHeader =
};
static const match_call_text_data_t sTateLizaTextScripts[] = {
{ MatchCall_Text_TateLiza1, 0xFFFE, 0xFFFF },
{ MatchCall_Text_TateLiza2, 0xFFFF, 0xFFFF },
{ MatchCall_Text_TateLiza3, 0xFFFF, 0xFFFF },
{ MatchCall_Text_TateLiza4, FLAG_SYS_GAME_CLEAR, 0xFFFF },
{ NULL, 0xFFFF, 0xFFFF }
{ MatchCall_Text_TateLiza1, 0xFFFE, NO_FLAG_TO_SET },
{ MatchCall_Text_TateLiza2, ALWAYS_AVAILABLE, NO_FLAG_TO_SET },
{ MatchCall_Text_TateLiza3, ALWAYS_AVAILABLE, NO_FLAG_TO_SET },
{ MatchCall_Text_TateLiza4, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET },
MATCH_CALL_TEXT_END
};
static const struct MatchCallStructTrainer sTateLizaMatchCallHeader =
@ -481,11 +485,11 @@ static const struct MatchCallStructTrainer sTateLizaMatchCallHeader =
};
static const match_call_text_data_t sJuanTextScripts[] = {
{ MatchCall_Text_Juan1, 0xFFFE, 0xFFFF },
{ MatchCall_Text_Juan2, 0xFFFF, 0xFFFF },
{ MatchCall_Text_Juan3, 0xFFFF, 0xFFFF },
{ MatchCall_Text_Juan4, FLAG_SYS_GAME_CLEAR, 0xFFFF },
{ NULL, 0xFFFF, 0xFFFF }
{ MatchCall_Text_Juan1, 0xFFFE, NO_FLAG_TO_SET },
{ MatchCall_Text_Juan2, ALWAYS_AVAILABLE, NO_FLAG_TO_SET },
{ MatchCall_Text_Juan3, ALWAYS_AVAILABLE, NO_FLAG_TO_SET },
{ MatchCall_Text_Juan4, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET },
MATCH_CALL_TEXT_END
};
static const struct MatchCallStructTrainer sJuanMatchCallHeader =
@ -502,8 +506,8 @@ static const struct MatchCallStructTrainer sJuanMatchCallHeader =
static const u8 gText_EliteFourMatchCallDesc[] = _("ELITE FOUR");
static const match_call_text_data_t sSidneyTextScripts[] = {
{ MatchCall_Text_Sidney, 0xFFFF, 0xFFFF },
{ NULL, 0xFFFF, 0xFFFF }
{ MatchCall_Text_Sidney, ALWAYS_AVAILABLE, NO_FLAG_TO_SET },
MATCH_CALL_TEXT_END
};
static const struct MatchCallStructTrainer sSidneyMatchCallHeader =
@ -518,8 +522,8 @@ static const struct MatchCallStructTrainer sSidneyMatchCallHeader =
};
static const match_call_text_data_t sPhoebeTextScripts[] = {
{ MatchCall_Text_Phoebe, 0xFFFF, 0xFFFF },
{ NULL, 0xFFFF, 0xFFFF }
{ MatchCall_Text_Phoebe, ALWAYS_AVAILABLE, NO_FLAG_TO_SET },
MATCH_CALL_TEXT_END
};
static const struct MatchCallStructTrainer sPhoebeMatchCallHeader =
@ -534,8 +538,8 @@ static const struct MatchCallStructTrainer sPhoebeMatchCallHeader =
};
static const match_call_text_data_t sGlaciaTextScripts[] = {
{ MatchCall_Text_Glacia, 0xFFFF, 0xFFFF },
{ NULL, 0xFFFF, 0xFFFF }
{ MatchCall_Text_Glacia, ALWAYS_AVAILABLE, NO_FLAG_TO_SET },
MATCH_CALL_TEXT_END
};
static const struct MatchCallStructTrainer sGlaciaMatchCallHeader =
@ -550,8 +554,8 @@ static const struct MatchCallStructTrainer sGlaciaMatchCallHeader =
};
static const match_call_text_data_t sDrakeTextScripts[] = {
{ MatchCall_Text_Drake, 0xFFFF, 0xFFFF },
{ NULL, 0xFFFF, 0xFFFF }
{ MatchCall_Text_Drake, ALWAYS_AVAILABLE, NO_FLAG_TO_SET },
MATCH_CALL_TEXT_END
};
static const struct MatchCallStructTrainer sDrakeMatchCallHeader =
@ -566,8 +570,8 @@ static const struct MatchCallStructTrainer sDrakeMatchCallHeader =
};
static const match_call_text_data_t sWallaceTextScripts[] = {
{ MatchCall_Text_Wallace, 0xFFFF, 0xFFFF },
{ NULL, 0xFFFF, 0xFFFF }
{ MatchCall_Text_Wallace, ALWAYS_AVAILABLE, NO_FLAG_TO_SET },
MATCH_CALL_TEXT_END
};
static const struct MatchCallStructTrainer sWallaceMatchCallHeader =
@ -1018,12 +1022,12 @@ static void MatchCall_BufferCallMessageText(const match_call_text_data_t *textDa
i--;
while (i)
{
if (textData[i].flag != 0xFFFF && FlagGet(textData[i].flag) == TRUE)
if (textData[i].availabilityFlag != ALWAYS_AVAILABLE && FlagGet(textData[i].availabilityFlag) == TRUE)
break;
i--;
}
if (textData[i].flag2 != 0xFFFF)
FlagSet(textData[i].flag2);
if (textData[i].flagToSetOnCompletion != NO_FLAG_TO_SET)
FlagSet(textData[i].flagToSetOnCompletion);
StringExpandPlaceholders(dest, textData[i].text);
}
@ -1033,17 +1037,17 @@ static void MatchCall_BufferCallMessageTextByRematchTeam(const match_call_text_d
u32 i;
for (i = 0; textData[i].text != NULL; i++)
{
if (textData[i].flag == 0xFFFE)
if (textData[i].availabilityFlag == 0xFFFE)
break;
if (textData[i].flag != 0xFFFF && !FlagGet(textData[i].flag))
if (textData[i].availabilityFlag != ALWAYS_AVAILABLE && !FlagGet(textData[i].availabilityFlag))
break;
}
if (textData[i].flag != 0xFFFE)
if (textData[i].availabilityFlag != 0xFFFE)
{
if (i)
i--;
if (textData[i].flag2 != 0xFFFF)
FlagSet(textData[i].flag2);
if (textData[i].flagToSetOnCompletion != NO_FLAG_TO_SET)
FlagSet(textData[i].flagToSetOnCompletion);
StringExpandPlaceholders(dest, textData[i].text);
}
else

View File

@ -262,7 +262,7 @@ static const u8 *const sModeStrings[NUM_TRAINER_HILL_MODES] =
static const struct ObjectEventTemplate sTrainerObjectEventTemplate =
{
.graphicsId = OBJ_EVENT_GFX_RIVAL_BRENDAN_NORMAL,
.elevation = 3,
.elevation = ELEVATION_DEFAULT,
.movementType = MOVEMENT_TYPE_LOOK_AROUND,
.movementRangeX = 1,
.movementRangeY = 1,
@ -715,7 +715,7 @@ static u16 GetMapDataForFloor(u8 floorId, u32 x, u32 y, u32 floorWidth) // floor
impassable = (sHillData->floors[floorId].map.collisionData[y] >> (15 - x) & 1);
metatileId = sHillData->floors[floorId].map.metatileData[floorWidth * y + x] + NUM_METATILES_IN_PRIMARY;
elevation = PACK_ELEVATION(3);
elevation = PACK_ELEVATION(ELEVATION_DEFAULT);
return PACK_COLLISION(impassable) | elevation | PACK_METATILE(metatileId);
}