summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/apprentice.c2
-rw-r--r--src/battle_message.c1
-rw-r--r--src/battle_pike.c2
-rw-r--r--src/battle_util.c7
-rw-r--r--src/berry.c1
-rw-r--r--src/berry_blender.c1
-rw-r--r--src/berry_tag_screen.c1
-rw-r--r--src/contest.c2
-rw-r--r--src/crt0.s4
-rwxr-xr-xsrc/data/object_events/movement_type_func_tables.h4
-rw-r--r--src/daycare.c2
-rw-r--r--src/egg_hatch.c6
-rw-r--r--src/event_object_movement.c22
-rw-r--r--src/evolution_scene.c2
-rw-r--r--src/field_effect.c4
-rw-r--r--src/field_weather.c8
-rw-r--r--src/international_string_util.c2
-rw-r--r--src/mail.c2
-rw-r--r--src/menu_specialized.c1
-rwxr-xr-xsrc/party_menu.c8
-rw-r--r--src/pokeblock.c1
-rw-r--r--src/pokemon.c110
-rw-r--r--src/pokemon_size_record.c6
-rw-r--r--src/scrcmd.c12
-rw-r--r--src/secret_base.c473
-rw-r--r--src/trade.c18
-rw-r--r--src/trainer_see.c60
-rw-r--r--src/tv.c36
-rw-r--r--src/util.c7
29 files changed, 438 insertions, 367 deletions
diff --git a/src/apprentice.c b/src/apprentice.c
index 20c0cb9e3..8a8de009c 100644
--- a/src/apprentice.c
+++ b/src/apprentice.c
@@ -1083,7 +1083,7 @@ static void ApprenticeBufferString(void)
StringCopy(stringDst, ItemId_GetName(PLAYER_APPRENTICE.questions[CURRENT_QUESTION_NUM].data));
break;
case APPRENTICE_BUFF_NAME:
- TVShowConvertInternationalString(text, GetApprenticeNameInLanguage(PLAYER_APPRENTICE.id, LANGUAGE_ENGLISH), LANGUAGE_ENGLISH);
+ TVShowConvertInternationalString(text, GetApprenticeNameInLanguage(PLAYER_APPRENTICE.id, GAME_LANGUAGE), GAME_LANGUAGE);
StringCopy(stringDst, text);
break;
case APPRENTICE_BUFF_LEVEL:
diff --git a/src/battle_message.c b/src/battle_message.c
index 3920f94cf..46444a8fa 100644
--- a/src/battle_message.c
+++ b/src/battle_message.c
@@ -21,7 +21,6 @@
#include "window.h"
#include "constants/battle_dome.h"
#include "constants/battle_string_ids.h"
-#include "constants/berry.h"
#include "constants/frontier_util.h"
#include "constants/items.h"
#include "constants/moves.h"
diff --git a/src/battle_pike.c b/src/battle_pike.c
index a161b88b8..ed18b2f71 100644
--- a/src/battle_pike.c
+++ b/src/battle_pike.c
@@ -1326,7 +1326,7 @@ bool8 InBattlePike(void)
return gMapHeader.mapLayoutId == LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_THREE_PATH_ROOM
|| gMapHeader.mapLayoutId == LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_ROOM_NORMAL
|| gMapHeader.mapLayoutId == LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_ROOM_WILD_MONS
- || gMapHeader.mapLayoutId == LAYOUT_UNKNOWN_084693AC;
+ || gMapHeader.mapLayoutId == LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_ROOM_UNUSED;
}
static void SetHintedRoom(void)
diff --git a/src/battle_util.c b/src/battle_util.c
index b7919f904..2bf06f331 100644
--- a/src/battle_util.c
+++ b/src/battle_util.c
@@ -29,7 +29,6 @@
#include "constants/battle_move_effects.h"
#include "constants/battle_script_commands.h"
#include "constants/battle_string_ids.h"
-#include "constants/berry.h"
#include "constants/hold_effects.h"
#include "constants/items.h"
#include "constants/moves.h"
@@ -3950,14 +3949,14 @@ u8 GetMoveTarget(u16 move, u8 setTarget)
return targetBattler;
}
-static bool32 HasObedientBitSet(u8 battlerId)
+static bool32 IsNotEventLegalMewOrDeoxys(u8 battlerId)
{
if (GetBattlerSide(battlerId) == B_SIDE_OPPONENT)
return TRUE;
if (GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES, NULL) != SPECIES_DEOXYS
&& GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES, NULL) != SPECIES_MEW)
return TRUE;
- return GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_OBEDIENCE, NULL);
+ return GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_EVENT_LEGAL, NULL);
}
u8 IsMonDisobedient(void)
@@ -3971,7 +3970,7 @@ u8 IsMonDisobedient(void)
if (GetBattlerSide(gBattlerAttacker) == B_SIDE_OPPONENT)
return 0;
- if (HasObedientBitSet(gBattlerAttacker)) // only if species is Mew or Deoxys
+ if (IsNotEventLegalMewOrDeoxys(gBattlerAttacker)) // only if species is Mew or Deoxys
{
if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER && GetBattlerPosition(gBattlerAttacker) == 2)
return 0;
diff --git a/src/berry.c b/src/berry.c
index 022fdc934..ea62deabf 100644
--- a/src/berry.c
+++ b/src/berry.c
@@ -11,7 +11,6 @@
#include "random.h"
#include "string_util.h"
#include "text.h"
-#include "constants/berry.h"
#include "constants/event_object_movement.h"
#include "constants/items.h"
diff --git a/src/berry_blender.c b/src/berry_blender.c
index 08a25c58a..252407562 100644
--- a/src/berry_blender.c
+++ b/src/berry_blender.c
@@ -34,7 +34,6 @@
#include "new_game.h"
#include "save.h"
#include "strings.h"
-#include "constants/berry.h"
#include "constants/game_stat.h"
#include "constants/items.h"
#include "constants/rgb.h"
diff --git a/src/berry_tag_screen.c b/src/berry_tag_screen.c
index 089228b17..5be149b0f 100644
--- a/src/berry_tag_screen.c
+++ b/src/berry_tag_screen.c
@@ -26,7 +26,6 @@
#include "item_menu_icons.h"
#include "decompress.h"
#include "international_string_util.h"
-#include "constants/berry.h"
#include "constants/items.h"
#include "constants/rgb.h"
#include "constants/songs.h"
diff --git a/src/contest.c b/src/contest.c
index 36c32683a..8d8bd666c 100644
--- a/src/contest.c
+++ b/src/contest.c
@@ -5998,7 +5998,7 @@ static u8 GetMonNicknameLanguage(u8 *nickname)
u8 ret = GAME_LANGUAGE;
if (nickname[0] == EXT_CTRL_CODE_BEGIN && nickname[1] == EXT_CTRL_CODE_JPN)
- return LANGUAGE_ENGLISH;
+ return GAME_LANGUAGE;
if (StringLength(nickname) < PLAYER_NAME_LENGTH - 1)
{
diff --git a/src/crt0.s b/src/crt0.s
index cc83a04df..385e340a5 100644
--- a/src/crt0.s
+++ b/src/crt0.s
@@ -76,8 +76,8 @@ GPIOPortReadEnable: @ 80000C8
.4byte 0x00000008 @ offsetof(struct SaveBlock2, playerGender)
.4byte 0x00000ca8 @ offsetof(struct SaveBlock2, frontier.challengeStatus)
.4byte 0x00000ca8 @ offsetof(struct SaveBlock2, frontier.challengeStatus)
- .4byte 0x000031c7 @ offsetof(struct SaveBlock1, ? part-way into giftRibbons)
- .4byte 0x000031b3 @ offsetof(struct SaveBlock1, ? part-way into giftRibbons)
+ .4byte 0x000031c7 @ offsetof(struct SaveBlock1, externalEventFlags)
+ .4byte 0x000031b3 @ offsetof(struct SaveBlock1, externalEventData)
.4byte 0x00000000
.4byte gBaseStats
diff --git a/src/data/object_events/movement_type_func_tables.h b/src/data/object_events/movement_type_func_tables.h
index 68dfeb730..f4890d684 100755
--- a/src/data/object_events/movement_type_func_tables.h
+++ b/src/data/object_events/movement_type_func_tables.h
@@ -407,8 +407,8 @@ u8 (*const gMovementTypeFuncs_CopyPlayerInGrass[])(struct ObjectEvent *, struct
MovementType_CopyPlayer_Step2,
};
-u8 (*const gMovementTypeFuncs_Hidden[])(struct ObjectEvent *, struct Sprite *) = {
- MovementType_Hidden_Step0,
+u8 (*const gMovementTypeFuncs_Buried[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementType_Buried_Step0,
};
u8 (*const gMovementTypeFuncs_WalkInPlace[])(struct ObjectEvent *, struct Sprite *) = {
diff --git a/src/daycare.c b/src/daycare.c
index 7ae1e72c4..14cf57806 100644
--- a/src/daycare.c
+++ b/src/daycare.c
@@ -170,7 +170,7 @@ static void StorePokemonInDaycare(struct Pokemon *mon, struct DaycareMon *daycar
StringCopy(daycareMon->mail.OT_name, gSaveBlock2Ptr->playerName);
GetMonNickname2(mon, daycareMon->mail.monName);
StripExtCtrlCodes(daycareMon->mail.monName);
- daycareMon->mail.gameLanguage = LANGUAGE_ENGLISH;
+ daycareMon->mail.gameLanguage = GAME_LANGUAGE;
daycareMon->mail.monLanguage = GetMonData(mon, MON_DATA_LANGUAGE);
mailId = GetMonData(mon, MON_DATA_MAIL);
daycareMon->mail.message = gSaveBlock1Ptr->mail[mailId];
diff --git a/src/egg_hatch.c b/src/egg_hatch.c
index 4e050ce62..5b80bfb6c 100644
--- a/src/egg_hatch.c
+++ b/src/egg_hatch.c
@@ -297,7 +297,7 @@ static void CreateHatchedMon(struct Pokemon *egg, struct Pokemon *temp)
{
u16 species;
u32 personality, pokerus;
- u8 i, friendship, language, gameMet, markings, obedience;
+ u8 i, friendship, language, gameMet, markings, isEventLegal;
u16 moves[MAX_MON_MOVES];
u32 ivs[NUM_STATS];
@@ -320,7 +320,7 @@ static void CreateHatchedMon(struct Pokemon *egg, struct Pokemon *temp)
gameMet = GetMonData(egg, MON_DATA_MET_GAME);
markings = GetMonData(egg, MON_DATA_MARKINGS);
pokerus = GetMonData(egg, MON_DATA_POKERUS);
- obedience = GetMonData(egg, MON_DATA_OBEDIENCE);
+ isEventLegal = GetMonData(egg, MON_DATA_EVENT_LEGAL);
CreateMon(temp, species, EGG_HATCH_LEVEL, USE_RANDOM_IVS, TRUE, personality, OT_ID_PLAYER_ID, 0);
@@ -342,7 +342,7 @@ static void CreateHatchedMon(struct Pokemon *egg, struct Pokemon *temp)
friendship = 120;
SetMonData(temp, MON_DATA_FRIENDSHIP, &friendship);
SetMonData(temp, MON_DATA_POKERUS, &pokerus);
- SetMonData(temp, MON_DATA_OBEDIENCE, &obedience);
+ SetMonData(temp, MON_DATA_EVENT_LEGAL, &isEventLegal);
*egg = *temp;
}
diff --git a/src/event_object_movement.c b/src/event_object_movement.c
index f6e638f31..1a7d08db2 100644
--- a/src/event_object_movement.c
+++ b/src/event_object_movement.c
@@ -101,7 +101,7 @@ static void DoGroundEffects_OnFinishStep(struct ObjectEvent*, struct Sprite*);
static void UpdateObjectEventSpritePosition(struct Sprite*);
static void ApplyLevitateMovement(u8);
static bool8 MovementType_Disguise_Callback(struct ObjectEvent *, struct Sprite *);
-static bool8 MovementType_Hidden_Callback(struct ObjectEvent *, struct Sprite *);
+static bool8 MovementType_Buried_Callback(struct ObjectEvent *, struct Sprite *);
static void CreateReflectionEffectSprites(void);
static u8 GetObjectEventIdByLocalId(u8);
static u8 GetObjectEventIdByLocalIdAndMapInternal(u8, u8, u8);
@@ -212,7 +212,7 @@ static void (*const sMovementTypeCallbacks[])(struct Sprite *) =
[MOVEMENT_TYPE_COPY_PLAYER_OPPOSITE_IN_GRASS] = MovementType_CopyPlayerInGrass,
[MOVEMENT_TYPE_COPY_PLAYER_COUNTERCLOCKWISE_IN_GRASS] = MovementType_CopyPlayerInGrass,
[MOVEMENT_TYPE_COPY_PLAYER_CLOCKWISE_IN_GRASS] = MovementType_CopyPlayerInGrass,
- [MOVEMENT_TYPE_HIDDEN] = MovementType_Hidden,
+ [MOVEMENT_TYPE_BURIED] = MovementType_Buried,
[MOVEMENT_TYPE_WALK_IN_PLACE_DOWN] = MovementType_WalkInPlace,
[MOVEMENT_TYPE_WALK_IN_PLACE_UP] = MovementType_WalkInPlace,
[MOVEMENT_TYPE_WALK_IN_PLACE_LEFT] = MovementType_WalkInPlace,
@@ -296,7 +296,7 @@ const u8 gRangedMovementTypes[] = {
[MOVEMENT_TYPE_COPY_PLAYER_OPPOSITE_IN_GRASS] = 1,
[MOVEMENT_TYPE_COPY_PLAYER_COUNTERCLOCKWISE_IN_GRASS] = 1,
[MOVEMENT_TYPE_COPY_PLAYER_CLOCKWISE_IN_GRASS] = 1,
- [MOVEMENT_TYPE_HIDDEN] = 0,
+ [MOVEMENT_TYPE_BURIED] = 0,
[MOVEMENT_TYPE_WALK_IN_PLACE_DOWN] = 0,
[MOVEMENT_TYPE_WALK_IN_PLACE_UP] = 0,
[MOVEMENT_TYPE_WALK_IN_PLACE_LEFT] = 0,
@@ -380,7 +380,7 @@ const u8 gInitialMovementTypeFacingDirections[] = {
[MOVEMENT_TYPE_COPY_PLAYER_OPPOSITE_IN_GRASS] = DIR_SOUTH,
[MOVEMENT_TYPE_COPY_PLAYER_COUNTERCLOCKWISE_IN_GRASS] = DIR_WEST,
[MOVEMENT_TYPE_COPY_PLAYER_CLOCKWISE_IN_GRASS] = DIR_EAST,
- [MOVEMENT_TYPE_HIDDEN] = DIR_SOUTH,
+ [MOVEMENT_TYPE_BURIED] = DIR_SOUTH,
[MOVEMENT_TYPE_WALK_IN_PLACE_DOWN] = DIR_SOUTH,
[MOVEMENT_TYPE_WALK_IN_PLACE_UP] = DIR_NORTH,
[MOVEMENT_TYPE_WALK_IN_PLACE_LEFT] = DIR_WEST,
@@ -4467,7 +4467,7 @@ void MovementType_MountainDisguise(struct Sprite *sprite)
UpdateObjectEventCurrentMovement(&gObjectEvents[sprite->data[0]], sprite, MovementType_Disguise_Callback);
}
-void MovementType_Hidden(struct Sprite *sprite)
+void MovementType_Buried(struct Sprite *sprite)
{
if (!sprite->data[7])
{
@@ -4476,15 +4476,15 @@ void MovementType_Hidden(struct Sprite *sprite)
sprite->oam.priority = 3;
sprite->data[7]++;
}
- UpdateObjectEventCurrentMovement(&gObjectEvents[sprite->data[0]], sprite, MovementType_Hidden_Callback);
+ UpdateObjectEventCurrentMovement(&gObjectEvents[sprite->data[0]], sprite, MovementType_Buried_Callback);
}
-static bool8 MovementType_Hidden_Callback(struct ObjectEvent *objectEvent, struct Sprite *sprite)
+static bool8 MovementType_Buried_Callback(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- return gMovementTypeFuncs_Hidden[sprite->data[1]](objectEvent, sprite);
+ return gMovementTypeFuncs_Buried[sprite->data[1]](objectEvent, sprite);
}
-bool8 MovementType_Hidden_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
+bool8 MovementType_Buried_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ClearObjectEventMovement(objectEvent, sprite);
return FALSE;
@@ -6600,9 +6600,9 @@ bool8 MovementAction_EmoteHeart_Step0(struct ObjectEvent *objectEvent, struct Sp
bool8 MovementAction_RevealTrainer_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (objectEvent->movementType == MOVEMENT_TYPE_HIDDEN)
+ if (objectEvent->movementType == MOVEMENT_TYPE_BURIED)
{
- SetHiddenTrainerMovement(objectEvent);
+ SetBuriedTrainerMovement(objectEvent);
return FALSE;
}
if (objectEvent->movementType != MOVEMENT_TYPE_TREE_DISGUISE && objectEvent->movementType != MOVEMENT_TYPE_MOUNTAIN_DISGUISE)
diff --git a/src/evolution_scene.c b/src/evolution_scene.c
index b0e3067b1..6f5a4dce7 100644
--- a/src/evolution_scene.c
+++ b/src/evolution_scene.c
@@ -561,7 +561,7 @@ static void CreateShedinja(u16 preEvoSpecies, struct Pokemon* mon)
for (i = MON_DATA_COOL_RIBBON; i < MON_DATA_COOL_RIBBON + CONTEST_CATEGORIES_COUNT; i++)
SetMonData(&gPlayerParty[gPlayerPartyCount], i, (&data));
- for (i = MON_DATA_CHAMPION_RIBBON; i <= MON_DATA_FATEFUL_ENCOUNTER; i++)
+ for (i = MON_DATA_CHAMPION_RIBBON; i <= MON_DATA_FILLER; i++)
SetMonData(&gPlayerParty[gPlayerPartyCount], i, (&data));
SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_STATUS, (&data));
diff --git a/src/field_effect.c b/src/field_effect.c
index b1837c514..467a0f656 100644
--- a/src/field_effect.c
+++ b/src/field_effect.c
@@ -967,8 +967,8 @@ void MultiplyPaletteRGBComponents(u16 i, u8 r, u8 g, u8 b)
curBlue -= ((curBlue * b) >> 4);
color = curRed;
- color |= curGreen << 5;
- color |= curBlue << 10;
+ color |= (curGreen << 5);
+ color |= (curBlue << 10);
gPlttBufferFaded[i] = color;
}
diff --git a/src/field_weather.c b/src/field_weather.c
index 25ee0582a..02e3a0cb0 100644
--- a/src/field_weather.c
+++ b/src/field_weather.c
@@ -494,7 +494,7 @@ static void ApplyGammaShift(u8 startPalIndex, u8 numPalettes, s8 gammaIndex)
r = gammaTable[baseColor.r];
g = gammaTable[baseColor.g];
b = gammaTable[baseColor.b];
- gPlttBufferFaded[palOffset++] = (b << 10) | (g << 5) | r;
+ gPlttBufferFaded[palOffset++] = RGB2(r, g, b);
}
}
@@ -579,7 +579,7 @@ static void ApplyGammaShiftWithBlend(u8 startPalIndex, u8 numPalettes, s8 gammaI
r += ((rBlend - r) * blendCoeff) >> 4;
g += ((gBlend - g) * blendCoeff) >> 4;
b += ((bBlend - b) * blendCoeff) >> 4;
- gPlttBufferFaded[palOffset++] = (b << 10) | (g << 5) | r;
+ gPlttBufferFaded[palOffset++] = RGB2(r, g, b);
}
}
@@ -636,7 +636,7 @@ static void ApplyDroughtGammaShiftWithBlend(s8 gammaIndex, u8 blendCoeff, u16 bl
g2 += ((gBlend - g2) * blendCoeff) >> 4;
b2 += ((bBlend - b2) * blendCoeff) >> 4;
- gPlttBufferFaded[palOffset++] = (b2 << 10) | (g2 << 5) | r2;
+ gPlttBufferFaded[palOffset++] = RGB2(r2, g2, b2);
}
}
}
@@ -678,7 +678,7 @@ static void ApplyFogBlend(u8 blendCoeff, u16 blendColor)
g += ((gBlend - g) * blendCoeff) >> 4;
b += ((bBlend - b) * blendCoeff) >> 4;
- gPlttBufferFaded[palOffset] = (b << 10) | (g << 5) | r;
+ gPlttBufferFaded[palOffset] = RGB2(r, g, b);
palOffset++;
}
}
diff --git a/src/international_string_util.c b/src/international_string_util.c
index 23ca6c081..c2b4b43cf 100644
--- a/src/international_string_util.c
+++ b/src/international_string_util.c
@@ -214,7 +214,7 @@ int sub_81DB604(u8 *str)
if (str[0] == EXT_CTRL_CODE_BEGIN && str[1] == EXT_CTRL_CODE_JPN)
return LANGUAGE_JAPANESE;
else
- return LANGUAGE_ENGLISH;
+ return GAME_LANGUAGE;
}
void sub_81DB620(int windowId, int columnStart, int rowStart, int numFillTiles, int numRows)
diff --git a/src/mail.c b/src/mail.c
index 71e98b42a..09d5bfc44 100644
--- a/src/mail.c
+++ b/src/mail.c
@@ -248,7 +248,7 @@ void ReadMail(struct MailStruct *mail, void (*callback)(void), bool8 flag)
u16 species;
sMailRead = calloc(1, sizeof(*sMailRead));
- sMailRead->language = LANGUAGE_ENGLISH;
+ sMailRead->language = GAME_LANGUAGE;
sMailRead->playerIsSender = TRUE;
sMailRead->parserSingle = CopyEasyChatWord;
sMailRead->parserMultiple = ConvertEasyChatWordsToString;
diff --git a/src/menu_specialized.c b/src/menu_specialized.c
index 7de963893..74e3455c3 100644
--- a/src/menu_specialized.c
+++ b/src/menu_specialized.c
@@ -23,7 +23,6 @@
#include "text_window.h"
#include "trig.h"
#include "window.h"
-#include "constants/berry.h"
#include "constants/songs.h"
#include "gba/io_reg.h"
diff --git a/src/party_menu.c b/src/party_menu.c
index 096f87dd2..b2fd358ca 100755
--- a/src/party_menu.c
+++ b/src/party_menu.c
@@ -3520,9 +3520,9 @@ static void CursorCb_Register(u8 taskId)
{
u16 species2 = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_SPECIES2);
u16 species = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_SPECIES);
- u8 obedience = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_OBEDIENCE);
+ u8 isEventLegal = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_EVENT_LEGAL);
- switch (CanRegisterMonForTradingBoard(*(struct GFtgtGnameSub *)GetHostRFUtgtGname(), species2, species, obedience))
+ switch (CanRegisterMonForTradingBoard(*(struct GFtgtGnameSub *)GetHostRFUtgtGname(), species2, species, isEventLegal))
{
case CANT_REGISTER_MON:
StringExpandPlaceholders(gStringVar4, gText_PkmnCantBeTradedNow);
@@ -3547,8 +3547,8 @@ static void CursorCb_Trade1(u8 taskId)
{
u16 species2 = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_SPECIES2);
u16 species = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_SPECIES);
- u8 obedience = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_OBEDIENCE);
- u32 stringId = GetUnionRoomTradeMessageId(*(struct GFtgtGnameSub *)GetHostRFUtgtGname(), gPartnerTgtGnameSub, species2, gUnionRoomOfferedSpecies, gUnionRoomRequestedMonType, species, obedience);
+ u8 isEventLegal = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_EVENT_LEGAL);
+ u32 stringId = GetUnionRoomTradeMessageId(*(struct GFtgtGnameSub *)GetHostRFUtgtGname(), gPartnerTgtGnameSub, species2, gUnionRoomOfferedSpecies, gUnionRoomRequestedMonType, species, isEventLegal);
if (stringId != UR_TRADE_MSG_NONE)
{
diff --git a/src/pokeblock.c b/src/pokeblock.c
index 0bfb10632..4485fe1ef 100644
--- a/src/pokeblock.c
+++ b/src/pokeblock.c
@@ -29,7 +29,6 @@
#include "task.h"
#include "text.h"
#include "text_window.h"
-#include "constants/berry.h"
#include "constants/items.h"
#include "constants/songs.h"
#include "constants/rgb.h"
diff --git a/src/pokemon.c b/src/pokemon.c
index d890a3a6c..5812e987a 100644
--- a/src/pokemon.c
+++ b/src/pokemon.c
@@ -2615,12 +2615,12 @@ void ConvertPokemonToBattleTowerPokemon(struct Pokemon *mon, struct BattleTowerP
GetMonData(mon, MON_DATA_NICKNAME, dest->nickname);
}
-void CreateObedientMon(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 hasFixedPersonality, u32 fixedPersonality, u8 otIdType, u32 fixedOtId)
+void CreateEventLegalMon(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 hasFixedPersonality, u32 fixedPersonality, u8 otIdType, u32 fixedOtId)
{
- bool32 obedient = TRUE;
+ bool32 isEventLegal = TRUE;
CreateMon(mon, species, level, fixedIV, hasFixedPersonality, fixedPersonality, otIdType, fixedOtId);
- SetMonData(mon, MON_DATA_OBEDIENCE, &obedient);
+ SetMonData(mon, MON_DATA_EVENT_LEGAL, &isEventLegal);
}
// If FALSE, should load this game's Deoxys form. If TRUE, should load normal Deoxys form
@@ -2755,14 +2755,14 @@ u16 GetUnionRoomTrainerClass(void)
return gFacilityClassToTrainerClass[gLinkPlayerFacilityClasses[arrId]];
}
-void CreateObedientEnemyMon(void)
+void CreateEventLegalEnemyMon(void)
{
s32 species = gSpecialVar_0x8004;
s32 level = gSpecialVar_0x8005;
s32 itemId = gSpecialVar_0x8006;
ZeroEnemyPartyMons();
- CreateObedientMon(&gEnemyParty[0], species, level, USE_RANDOM_IVS, 0, 0, 0, 0);
+ CreateEventLegalMon(&gEnemyParty[0], species, level, USE_RANDOM_IVS, 0, 0, 0, 0);
if (itemId)
{
u8 heldItem[2];
@@ -3907,32 +3907,32 @@ u32 GetBoxMonData(struct BoxPokemon *boxMon, s32 field, u8 *data)
case MON_DATA_EFFORT_RIBBON:
retVal = substruct3->effortRibbon;
break;
- case MON_DATA_GIFT_RIBBON_1:
- retVal = substruct3->giftRibbon1;
+ case MON_DATA_MARINE_RIBBON:
+ retVal = substruct3->marineRibbon;
break;
- case MON_DATA_GIFT_RIBBON_2:
- retVal = substruct3->giftRibbon2;
+ case MON_DATA_LAND_RIBBON:
+ retVal = substruct3->landRibbon;
break;
- case MON_DATA_GIFT_RIBBON_3:
- retVal = substruct3->giftRibbon3;
+ case MON_DATA_SKY_RIBBON:
+ retVal = substruct3->skyRibbon;
break;
- case MON_DATA_GIFT_RIBBON_4:
- retVal = substruct3->giftRibbon4;
+ case MON_DATA_COUNTRY_RIBBON:
+ retVal = substruct3->countryRibbon;
break;
- case MON_DATA_GIFT_RIBBON_5:
- retVal = substruct3->giftRibbon5;
+ case MON_DATA_NATIONAL_RIBBON:
+ retVal = substruct3->nationalRibbon;
break;
- case MON_DATA_GIFT_RIBBON_6:
- retVal = substruct3->giftRibbon6;
+ case MON_DATA_EARTH_RIBBON:
+ retVal = substruct3->earthRibbon;
break;
- case MON_DATA_GIFT_RIBBON_7:
- retVal = substruct3->giftRibbon7;
+ case MON_DATA_WORLD_RIBBON:
+ retVal = substruct3->worldRibbon;
break;
- case MON_DATA_FATEFUL_ENCOUNTER:
- retVal = substruct3->fatefulEncounter;
+ case MON_DATA_FILLER:
+ retVal = substruct3->filler;
break;
- case MON_DATA_OBEDIENCE:
- retVal = substruct3->obedient;
+ case MON_DATA_EVENT_LEGAL:
+ retVal = substruct3->eventLegal;
break;
case MON_DATA_SPECIES2:
retVal = substruct0->species;
@@ -3974,13 +3974,13 @@ u32 GetBoxMonData(struct BoxPokemon *boxMon, s32 field, u8 *data)
retVal += substruct3->victoryRibbon;
retVal += substruct3->artistRibbon;
retVal += substruct3->effortRibbon;
- retVal += substruct3->giftRibbon1;
- retVal += substruct3->giftRibbon2;
- retVal += substruct3->giftRibbon3;
- retVal += substruct3->giftRibbon4;
- retVal += substruct3->giftRibbon5;
- retVal += substruct3->giftRibbon6;
- retVal += substruct3->giftRibbon7;
+ retVal += substruct3->marineRibbon;
+ retVal += substruct3->landRibbon;
+ retVal += substruct3->skyRibbon;
+ retVal += substruct3->countryRibbon;
+ retVal += substruct3->nationalRibbon;
+ retVal += substruct3->earthRibbon;
+ retVal += substruct3->worldRibbon;
}
break;
case MON_DATA_RIBBONS:
@@ -3997,13 +3997,13 @@ u32 GetBoxMonData(struct BoxPokemon *boxMon, s32 field, u8 *data)
| (substruct3->victoryRibbon << 17)
| (substruct3->artistRibbon << 18)
| (substruct3->effortRibbon << 19)
- | (substruct3->giftRibbon1 << 20)
- | (substruct3->giftRibbon2 << 21)
- | (substruct3->giftRibbon3 << 22)
- | (substruct3->giftRibbon4 << 23)
- | (substruct3->giftRibbon5 << 24)
- | (substruct3->giftRibbon6 << 25)
- | (substruct3->giftRibbon7 << 26);
+ | (substruct3->marineRibbon << 20)
+ | (substruct3->landRibbon << 21)
+ | (substruct3->skyRibbon << 22)
+ | (substruct3->countryRibbon << 23)
+ | (substruct3->nationalRibbon << 24)
+ | (substruct3->earthRibbon << 25)
+ | (substruct3->worldRibbon << 26);
}
break;
default:
@@ -4286,32 +4286,32 @@ void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const void *dataArg)
case MON_DATA_EFFORT_RIBBON:
SET8(substruct3->effortRibbon);
break;
- case MON_DATA_GIFT_RIBBON_1:
- SET8(substruct3->giftRibbon1);
+ case MON_DATA_MARINE_RIBBON:
+ SET8(substruct3->marineRibbon);
break;
- case MON_DATA_GIFT_RIBBON_2:
- SET8(substruct3->giftRibbon2);
+ case MON_DATA_LAND_RIBBON:
+ SET8(substruct3->landRibbon);
break;
- case MON_DATA_GIFT_RIBBON_3:
- SET8(substruct3->giftRibbon3);
+ case MON_DATA_SKY_RIBBON:
+ SET8(substruct3->skyRibbon);
break;
- case MON_DATA_GIFT_RIBBON_4:
- SET8(substruct3->giftRibbon4);
+ case MON_DATA_COUNTRY_RIBBON:
+ SET8(substruct3->countryRibbon);
break;
- case MON_DATA_GIFT_RIBBON_5:
- SET8(substruct3->giftRibbon5);
+ case MON_DATA_NATIONAL_RIBBON:
+ SET8(substruct3->nationalRibbon);
break;
- case MON_DATA_GIFT_RIBBON_6:
- SET8(substruct3->giftRibbon6);
+ case MON_DATA_EARTH_RIBBON:
+ SET8(substruct3->earthRibbon);
break;
- case MON_DATA_GIFT_RIBBON_7:
- SET8(substruct3->giftRibbon7);
+ case MON_DATA_WORLD_RIBBON:
+ SET8(substruct3->worldRibbon);
break;
- case MON_DATA_FATEFUL_ENCOUNTER:
- SET8(substruct3->fatefulEncounter);
+ case MON_DATA_FILLER:
+ SET8(substruct3->filler);
break;
- case MON_DATA_OBEDIENCE:
- SET8(substruct3->obedient);
+ case MON_DATA_EVENT_LEGAL:
+ SET8(substruct3->eventLegal);
break;
case MON_DATA_IVS:
{
diff --git a/src/pokemon_size_record.c b/src/pokemon_size_record.c
index f8b361912..5b80fd428 100644
--- a/src/pokemon_size_record.c
+++ b/src/pokemon_size_record.c
@@ -38,9 +38,9 @@ static const struct UnknownStruct sBigMonSizeTable[] =
static const u8 sGiftRibbonsMonDataIds[] =
{
- MON_DATA_GIFT_RIBBON_1, MON_DATA_GIFT_RIBBON_2, MON_DATA_GIFT_RIBBON_3,
- MON_DATA_GIFT_RIBBON_4, MON_DATA_GIFT_RIBBON_5, MON_DATA_GIFT_RIBBON_6,
- MON_DATA_GIFT_RIBBON_7
+ MON_DATA_MARINE_RIBBON, MON_DATA_LAND_RIBBON, MON_DATA_SKY_RIBBON,
+ MON_DATA_COUNTRY_RIBBON, MON_DATA_NATIONAL_RIBBON, MON_DATA_EARTH_RIBBON,
+ MON_DATA_WORLD_RIBBON
};
extern const u8 gText_DecimalPoint[];
diff --git a/src/scrcmd.c b/src/scrcmd.c
index f599a0004..7caaa194b 100644
--- a/src/scrcmd.c
+++ b/src/scrcmd.c
@@ -2207,21 +2207,21 @@ bool8 ScrCmd_lockfortrainer(struct ScriptContext *ctx)
}
}
-// This command will force the Pokémon to be obedient, you don't get to make it disobedient.
-bool8 ScrCmd_setmonobedient(struct ScriptContext *ctx)
+// This command will set a Pokémon's eventLegal bit; there is no similar command to clear it.
+bool8 ScrCmd_setmoneventlegal(struct ScriptContext *ctx)
{
- bool8 obedient = TRUE;
+ bool8 isEventLegal = TRUE;
u16 partyIndex = VarGet(ScriptReadHalfword(ctx));
- SetMonData(&gPlayerParty[partyIndex], MON_DATA_OBEDIENCE, &obedient);
+ SetMonData(&gPlayerParty[partyIndex], MON_DATA_EVENT_LEGAL, &isEventLegal);
return FALSE;
}
-bool8 ScrCmd_checkmonobedience(struct ScriptContext *ctx)
+bool8 ScrCmd_checkmoneventlegal(struct ScriptContext *ctx)
{
u16 partyIndex = VarGet(ScriptReadHalfword(ctx));
- gSpecialVar_Result = GetMonData(&gPlayerParty[partyIndex], MON_DATA_OBEDIENCE, NULL);
+ gSpecialVar_Result = GetMonData(&gPlayerParty[partyIndex], MON_DATA_EVENT_LEGAL, NULL);
return FALSE;
}
diff --git a/src/secret_base.c b/src/secret_base.c
index d49eef277..ddc051dca 100644
--- a/src/secret_base.c
+++ b/src/secret_base.c
@@ -49,6 +49,13 @@
#include "constants/trainers.h"
#include "constants/tv.h"
+// Values for registryStatus
+enum {
+ UNREGISTERED,
+ REGISTERED,
+ NEW, // Temporary, so new secret bases mixed at the same time don't overwrite each other
+};
+
struct SecretBaseRegistryMenu
{
struct ListMenuItem items[11];
@@ -72,21 +79,21 @@ static EWRAM_DATA u8 sCurSecretBaseId = 0;
static EWRAM_DATA bool8 sInFriendSecretBase = FALSE;
static EWRAM_DATA struct SecretBaseRegistryMenu *sRegistryMenu = NULL;
-static void Task_ShowSecretBaseRegistryMenu(u8 taskId);
-static void BuildRegistryMenuItems(u8 taskId);
-static void RegistryMenu_OnCursorMove(s32 unused, bool8 flag, struct ListMenu *menu);
-static void FinalizeRegistryMenu(u8 taskId);
-static void AddRegistryMenuScrollArrows(u8 taskId);
-static void HandleRegistryMenuInput(u8 taskId);
-static void ShowRegistryMenuActions(u8 taskId);
-static void HandleRegistryMenuActionsInput(u8 taskId);
-static void ShowRegistryMenuDeleteConfirmation(u8 taskId);
-static void ShowRegistryMenuDeleteYesNo(u8 taskId);
-static void DeleteRegistry_Yes(u8 taskId);
-static void DeleteRegistry_No(u8 taskId);
-static void ReturnToMainRegistryMenu(u8 taskId);
-static void GoToSecretBasePCRegisterMenu(u8 taskId);
-static u8 GetSecretBaseOwnerType(u8 secretBaseId);
+static void Task_ShowSecretBaseRegistryMenu(u8);
+static void BuildRegistryMenuItems(u8);
+static void RegistryMenu_OnCursorMove(s32, bool8, struct ListMenu *);
+static void FinalizeRegistryMenu(u8);
+static void AddRegistryMenuScrollArrows(u8);
+static void HandleRegistryMenuInput(u8);
+static void ShowRegistryMenuActions(u8);
+static void HandleRegistryMenuActionsInput(u8);
+static void ShowRegistryMenuDeleteConfirmation(u8);
+static void ShowRegistryMenuDeleteYesNo(u8);
+static void DeleteRegistry_Yes(u8);
+static void DeleteRegistry_No(u8);
+static void ReturnToMainRegistryMenu(u8);
+static void GoToSecretBasePCRegisterMenu(u8);
+static u8 GetSecretBaseOwnerType(u8);
static const struct SecretBaseEntranceMetatiles sSecretBaseEntranceMetatiles[] =
{
@@ -101,34 +108,39 @@ static const struct SecretBaseEntranceMetatiles sSecretBaseEntranceMetatiles[] =
// mapNum, warpId, x, y
// x, y positions are for when the player warps in for the first time (in front of the computer)
-static const u8 sSecretBaseEntrancePositions[] =
-{
- MAP_NUM(SECRET_BASE_RED_CAVE1), 0, 1, 3,
- MAP_NUM(SECRET_BASE_RED_CAVE2), 0, 5, 9,
- MAP_NUM(SECRET_BASE_RED_CAVE3), 0, 1, 3,
- MAP_NUM(SECRET_BASE_RED_CAVE4), 0, 7, 13,
- MAP_NUM(SECRET_BASE_BROWN_CAVE1), 0, 2, 3,
- MAP_NUM(SECRET_BASE_BROWN_CAVE2), 0, 9, 2,
- MAP_NUM(SECRET_BASE_BROWN_CAVE3), 0, 13, 4,
- MAP_NUM(SECRET_BASE_BROWN_CAVE4), 0, 1, 2,
- MAP_NUM(SECRET_BASE_BLUE_CAVE1), 0, 1, 3,
- MAP_NUM(SECRET_BASE_BLUE_CAVE2), 0, 1, 2,
- MAP_NUM(SECRET_BASE_BLUE_CAVE3), 0, 3, 15,
- MAP_NUM(SECRET_BASE_BLUE_CAVE4), 0, 3, 14,
- MAP_NUM(SECRET_BASE_YELLOW_CAVE1), 0, 9, 3,
- MAP_NUM(SECRET_BASE_YELLOW_CAVE2), 0, 8, 7,
- MAP_NUM(SECRET_BASE_YELLOW_CAVE3), 0, 3, 6,
- MAP_NUM(SECRET_BASE_YELLOW_CAVE4), 0, 5, 9,
- MAP_NUM(SECRET_BASE_TREE1), 0, 2, 3,
- MAP_NUM(SECRET_BASE_TREE2), 0, 5, 6,
- MAP_NUM(SECRET_BASE_TREE3), 0, 15, 3,
- MAP_NUM(SECRET_BASE_TREE4), 0, 4, 10,
- MAP_NUM(SECRET_BASE_SHRUB1), 0, 3, 3,
- MAP_NUM(SECRET_BASE_SHRUB2), 0, 1, 2,
- MAP_NUM(SECRET_BASE_SHRUB3), 0, 7, 8,
- MAP_NUM(SECRET_BASE_SHRUB4), 0, 9, 6,
+static const u8 sSecretBaseEntrancePositions[NUM_SECRET_BASE_GROUPS * 4] =
+{
+ [SECRET_BASE_RED_CAVE1] = MAP_NUM(SECRET_BASE_RED_CAVE1), 0, 1, 3,
+ [SECRET_BASE_RED_CAVE2] = MAP_NUM(SECRET_BASE_RED_CAVE2), 0, 5, 9,
+ [SECRET_BASE_RED_CAVE3] = MAP_NUM(SECRET_BASE_RED_CAVE3), 0, 1, 3,
+ [SECRET_BASE_RED_CAVE4] = MAP_NUM(SECRET_BASE_RED_CAVE4), 0, 7, 13,
+ [SECRET_BASE_BROWN_CAVE1] = MAP_NUM(SECRET_BASE_BROWN_CAVE1), 0, 2, 3,
+ [SECRET_BASE_BROWN_CAVE2] = MAP_NUM(SECRET_BASE_BROWN_CAVE2), 0, 9, 2,
+ [SECRET_BASE_BROWN_CAVE3] = MAP_NUM(SECRET_BASE_BROWN_CAVE3), 0, 13, 4,
+ [SECRET_BASE_BROWN_CAVE4] = MAP_NUM(SECRET_BASE_BROWN_CAVE4), 0, 1, 2,
+ [SECRET_BASE_BLUE_CAVE1] = MAP_NUM(SECRET_BASE_BLUE_CAVE1), 0, 1, 3,
+ [SECRET_BASE_BLUE_CAVE2] = MAP_NUM(SECRET_BASE_BLUE_CAVE2), 0, 1, 2,
+ [SECRET_BASE_BLUE_CAVE3] = MAP_NUM(SECRET_BASE_BLUE_CAVE3), 0, 3, 15,
+ [SECRET_BASE_BLUE_CAVE4] = MAP_NUM(SECRET_BASE_BLUE_CAVE4), 0, 3, 14,
+ [SECRET_BASE_YELLOW_CAVE1] = MAP_NUM(SECRET_BASE_YELLOW_CAVE1), 0, 9, 3,
+ [SECRET_BASE_YELLOW_CAVE2] = MAP_NUM(SECRET_BASE_YELLOW_CAVE2), 0, 8, 7,
+ [SECRET_BASE_YELLOW_CAVE3] = MAP_NUM(SECRET_BASE_YELLOW_CAVE3), 0, 3, 6,
+ [SECRET_BASE_YELLOW_CAVE4] = MAP_NUM(SECRET_BASE_YELLOW_CAVE4), 0, 5, 9,
+ [SECRET_BASE_TREE1] = MAP_NUM(SECRET_BASE_TREE1), 0, 2, 3,
+ [SECRET_BASE_TREE2] = MAP_NUM(SECRET_BASE_TREE2), 0, 5, 6,
+ [SECRET_BASE_TREE3] = MAP_NUM(SECRET_BASE_TREE3), 0, 15, 3,
+ [SECRET_BASE_TREE4] = MAP_NUM(SECRET_BASE_TREE4), 0, 4, 10,
+ [SECRET_BASE_SHRUB1] = MAP_NUM(SECRET_BASE_SHRUB1), 0, 3, 3,
+ [SECRET_BASE_SHRUB2] = MAP_NUM(SECRET_BASE_SHRUB2), 0, 1, 2,
+ [SECRET_BASE_SHRUB3] = MAP_NUM(SECRET_BASE_SHRUB3), 0, 7, 8,
+ [SECRET_BASE_SHRUB4] = MAP_NUM(SECRET_BASE_SHRUB4), 0, 9, 6,
};
+#define GET_BASE_MAP_NUM(group) (sSecretBaseEntrancePositions[(group) + 0])
+#define GET_BASE_WARP_ID(group) (sSecretBaseEntrancePositions[(group) + 1])
+#define GET_BASE_COMPUTER_X(group) (sSecretBaseEntrancePositions[(group) + 2])
+#define GET_BASE_COMPUTER_Y(group) (sSecretBaseEntrancePositions[(group) + 3])
+
static const struct MenuAction sRegistryMenuActions[] =
{
{
@@ -314,6 +326,8 @@ void ToggleSecretBaseEntranceMetatile(void)
GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
metatileId = MapGridGetMetatileIdAt(x, y);
+
+ // Look for entrance metatiles to open
for (i = 0; i < ARRAY_COUNT(sSecretBaseEntranceMetatiles); i++)
{
if (sSecretBaseEntranceMetatiles[i].closedMetatileId == metatileId)
@@ -324,6 +338,7 @@ void ToggleSecretBaseEntranceMetatile(void)
}
}
+ // Look for entrance metatiles to close
for (i = 0; i < ARRAY_COUNT(sSecretBaseEntranceMetatiles); i++)
{
if (sSecretBaseEntranceMetatiles[i].openMetatileId == metatileId)
@@ -362,6 +377,7 @@ void SetPlayerSecretBase(void)
VarSet(VAR_SECRET_BASE_MAP, gMapHeader.regionMapSectionId);
}
+// Set the 'open' entrance metatile for any occupied secret base on this map
void SetOccupiedSecretBaseEntranceMetatiles(struct MapEvents const *events)
{
u16 bgId;
@@ -395,24 +411,26 @@ void SetOccupiedSecretBaseEntranceMetatiles(struct MapEvents const *events)
static void SetSecretBaseWarpDestination(void)
{
- s8 offset = (sCurSecretBaseId / 10) * 4;
- SetWarpDestinationToMapWarp(MAP_GROUP(SECRET_BASE_RED_CAVE1), sSecretBaseEntrancePositions[offset], sSecretBaseEntrancePositions[offset + 1]);
+ s8 secretBaseGroup = SECRET_BASE_ID_TO_GROUP(sCurSecretBaseId);
+ SetWarpDestinationToMapWarp(MAP_GROUP(SECRET_BASE_RED_CAVE1), GET_BASE_MAP_NUM(secretBaseGroup), GET_BASE_WARP_ID(secretBaseGroup));
}
+#define tState data[0]
+
static void Task_EnterSecretBase(u8 taskId)
{
- u16 secretBaseId;
+ u16 secretBaseIdx;
- switch (gTasks[taskId].data[0])
+ switch (gTasks[taskId].tState)
{
case 0:
if (!gPaletteFade.active)
- gTasks[taskId].data[0] = 1;
+ gTasks[taskId].tState = 1;
break;
case 1:
- secretBaseId = VarGet(VAR_CURRENT_SECRET_BASE);
- if (gSaveBlock1Ptr->secretBases[secretBaseId].numTimesEntered < 255)
- gSaveBlock1Ptr->secretBases[secretBaseId].numTimesEntered++;
+ secretBaseIdx = VarGet(VAR_CURRENT_SECRET_BASE);
+ if (gSaveBlock1Ptr->secretBases[secretBaseIdx].numTimesEntered < 255)
+ gSaveBlock1Ptr->secretBases[secretBaseIdx].numTimesEntered++;
SetSecretBaseWarpDestination();
WarpIntoMap();
@@ -423,6 +441,8 @@ static void Task_EnterSecretBase(u8 taskId)
}
}
+#undef tState
+
void EnterSecretBase(void)
{
CreateTask(Task_EnterSecretBase, 0);
@@ -467,13 +487,13 @@ static void Task_EnterNewlyCreatedSecretBase(u8 taskId)
{
if (!gPaletteFade.active)
{
- s8 offset = sCurSecretBaseId / 10 * 4;
+ s8 secretBaseGroup = SECRET_BASE_ID_TO_GROUP(sCurSecretBaseId);
SetWarpDestination(
gSaveBlock1Ptr->location.mapGroup,
gSaveBlock1Ptr->location.mapNum,
-1,
- sSecretBaseEntrancePositions[offset + 2],
- sSecretBaseEntrancePositions[offset + 3]);
+ GET_BASE_COMPUTER_X(secretBaseGroup),
+ GET_BASE_COMPUTER_Y(secretBaseGroup));
WarpIntoMap();
gFieldCallback = EnterNewlyCreatedSecretBase_StartFadeIn;
SetMainCallback2(CB2_LoadMap);
@@ -498,23 +518,23 @@ bool8 CurMapIsSecretBase(void)
void InitSecretBaseAppearance(bool8 hidePC)
{
- u16 secretBaseId;
+ u16 secretBaseIdx;
u16 x, y;
u8 *decorations;
u8 *decorPos;
if (CurMapIsSecretBase())
{
- secretBaseId = VarGet(VAR_CURRENT_SECRET_BASE);
- decorations = gSaveBlock1Ptr->secretBases[secretBaseId].decorations;
- decorPos = gSaveBlock1Ptr->secretBases[secretBaseId].decorationPositions;
+ secretBaseIdx = VarGet(VAR_CURRENT_SECRET_BASE);
+ decorations = gSaveBlock1Ptr->secretBases[secretBaseIdx].decorations;
+ decorPos = gSaveBlock1Ptr->secretBases[secretBaseIdx].decorationPositions;
for (x = 0; x < DECOR_MAX_SECRET_BASE; x++)
{
if (decorations[x] > 0 && decorations[x] <= NUM_DECORATIONS && gDecorations[decorations[x]].permission != DECORPERM_SPRITE)
ShowDecorationOnMap((decorPos[x] >> 4) + 7, (decorPos[x] & 0xF) + 7, decorations[x]);
}
- if (secretBaseId != 0)
+ if (secretBaseIdx != 0)
{
// Another player's secret base. Change PC type to the "Register" PC.
FindMetatileIdMapCoords(&x, &y, METATILE_SecretBase_PC);
@@ -549,9 +569,9 @@ void InitSecretBaseDecorationSprites(void)
}
else
{
- u16 secretBaseId = VarGet(VAR_CURRENT_SECRET_BASE);
- decorations = gSaveBlock1Ptr->secretBases[secretBaseId].decorations;
- decorationPositions = gSaveBlock1Ptr->secretBases[secretBaseId].decorationPositions;
+ u16 secretBaseIdx = VarGet(VAR_CURRENT_SECRET_BASE);
+ decorations = gSaveBlock1Ptr->secretBases[secretBaseIdx].decorations;
+ decorationPositions = gSaveBlock1Ptr->secretBases[secretBaseIdx].decorationPositions;
numDecorations = DECOR_MAX_SECRET_BASE;
}
@@ -703,10 +723,10 @@ void IsCurSecretBaseOwnedByAnotherPlayer(void)
gSpecialVar_Result = FALSE;
}
-static u8 *GetSecretBaseName(u8 *dest, u8 secretBaseId)
+static u8 *GetSecretBaseName(u8 *dest, u8 secretBaseIdx)
{
- *StringCopyN(dest, gSaveBlock1Ptr->secretBases[secretBaseId].trainerName, GetNameLength(gSaveBlock1Ptr->secretBases[secretBaseId].trainerName)) = EOS;
- ConvertInternationalString(dest, gSaveBlock1Ptr->secretBases[secretBaseId].language);
+ *StringCopyN(dest, gSaveBlock1Ptr->secretBases[secretBaseIdx].trainerName, GetNameLength(gSaveBlock1Ptr->secretBases[secretBaseIdx].trainerName)) = EOS;
+ ConvertInternationalString(dest, gSaveBlock1Ptr->secretBases[secretBaseIdx].language);
return StringAppend(dest, gText_ApostropheSBase);
}
@@ -717,18 +737,18 @@ u8 *GetSecretBaseMapName(u8 *dest)
void CopyCurSecretBaseOwnerName_StrVar1(void)
{
- u8 secretBaseId;
+ u8 secretBaseIdx;
const u8 *name;
- secretBaseId = VarGet(VAR_CURRENT_SECRET_BASE);
- name = gSaveBlock1Ptr->secretBases[secretBaseId].trainerName;
+ secretBaseIdx = VarGet(VAR_CURRENT_SECRET_BASE);
+ name = gSaveBlock1Ptr->secretBases[secretBaseIdx].trainerName;
*StringCopyN(gStringVar1, name, GetNameLength(name)) = EOS;
- ConvertInternationalString(gStringVar1, gSaveBlock1Ptr->secretBases[secretBaseId].language);
+ ConvertInternationalString(gStringVar1, gSaveBlock1Ptr->secretBases[secretBaseIdx].language);
}
-static bool8 IsSecretBaseRegistered(u8 secretBaseId)
+static bool8 IsSecretBaseRegistered(u8 secretBaseIdx)
{
- if (gSaveBlock1Ptr->secretBases[secretBaseId].registryStatus)
+ if (gSaveBlock1Ptr->secretBases[secretBaseIdx].registryStatus)
return TRUE;
return FALSE;
@@ -812,7 +832,7 @@ static void ClosePlayerSecretBaseEntrance(void)
&& gSaveBlock1Ptr->secretBases[0].secretBaseId == events->bgEvents[i].bgUnion.secretBaseId)
{
metatileId = MapGridGetMetatileIdAt(events->bgEvents[i].x + 7, events->bgEvents[i].y + 7);
- for (j = 0; j < 7; j++)
+ for (j = 0; j < ARRAY_COUNT(sSecretBaseEntranceMetatiles); j++)
{
if (sSecretBaseEntranceMetatiles[j].openMetatileId == metatileId)
{
@@ -879,18 +899,28 @@ void ShowSecretBaseRegistryMenu(void)
CreateTask(Task_ShowSecretBaseRegistryMenu, 0);
}
+#define tNumBases data[0]
+#define tSelectedRow data[1]
+#define tScrollOffset data[2]
+#define tMaxShownItems data[3]
+#define tSelectedBaseId data[4]
+#define tListTaskId data[5]
+#define tMainWindowId data[6]
+#define tActionWindowId data[7]
+#define tArrowTaskId data[8]
+
static void Task_ShowSecretBaseRegistryMenu(u8 taskId)
{
s16 *data = gTasks[taskId].data;
ScriptContext2_Enable();
- data[0] = GetNumRegisteredSecretBases();
- if (data[0] != 0)
+ tNumBases = GetNumRegisteredSecretBases();
+ if (tNumBases != 0)
{
- data[1] = 0;
- data[2] = 0;
+ tSelectedRow = 0;
+ tScrollOffset = 0;
ClearDialogWindowAndFrame(0, 0);
sRegistryMenu = calloc(1, sizeof(*sRegistryMenu));
- data[6] = AddWindow(&sRegistryWindowTemplates[0]);
+ tMainWindowId = AddWindow(&sRegistryWindowTemplates[0]);
BuildRegistryMenuItems(taskId);
FinalizeRegistryMenu(taskId);
gTasks[taskId].func = HandleRegistryMenuInput;
@@ -922,17 +952,17 @@ static void BuildRegistryMenuItems(u8 taskId)
sRegistryMenu->items[count].name = gText_Cancel;
sRegistryMenu->items[count].id = -2;
- data[0] = count + 1;
- if (data[0] < 8)
- data[3] = data[0];
+ tNumBases = count + 1;
+ if (tNumBases < 8)
+ tMaxShownItems = tNumBases;
else
- data[3] = 8;
+ tMaxShownItems = 8;
gMultiuseListMenuTemplate = sRegistryListMenuTemplate;
- gMultiuseListMenuTemplate.windowId = data[6];
- gMultiuseListMenuTemplate.totalItems = data[0];
+ gMultiuseListMenuTemplate.windowId = tMainWindowId;
+ gMultiuseListMenuTemplate.totalItems = tNumBases;
gMultiuseListMenuTemplate.items = sRegistryMenu->items;
- gMultiuseListMenuTemplate.maxShowed = data[3];
+ gMultiuseListMenuTemplate.maxShowed = tMaxShownItems;
}
static void RegistryMenu_OnCursorMove(s32 unused, bool8 flag, struct ListMenu *menu)
@@ -944,8 +974,8 @@ static void RegistryMenu_OnCursorMove(s32 unused, bool8 flag, struct ListMenu *m
static void FinalizeRegistryMenu(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- SetStandardWindowBorderStyle(data[6], 0);
- data[5] = ListMenuInit(&gMultiuseListMenuTemplate, data[2], data[1]);
+ SetStandardWindowBorderStyle(tMainWindowId, 0);
+ tListTaskId = ListMenuInit(&gMultiuseListMenuTemplate, tScrollOffset, tSelectedRow);
AddRegistryMenuScrollArrows(taskId);
ScheduleBgCopyTilemapToVram(0);
}
@@ -953,35 +983,33 @@ static void FinalizeRegistryMenu(u8 taskId)
static void AddRegistryMenuScrollArrows(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- data[8] = AddScrollIndicatorArrowPairParameterized(SCROLL_ARROW_UP, 0xbc, 0x0c, 0x94, data[0] - data[3], 0x13f8, 0x13f8, &data[2]);
+ tArrowTaskId = AddScrollIndicatorArrowPairParameterized(SCROLL_ARROW_UP, 188, 12, 148, tNumBases - tMaxShownItems, 0x13f8, 0x13f8, &tScrollOffset);
}
static void HandleRegistryMenuInput(u8 taskId)
{
- s16 *data;
- s32 input;
+ s16 *data = gTasks[taskId].data;
+ s32 input = ListMenu_ProcessInput(tListTaskId);
+ ListMenuGetScrollAndRow(tListTaskId, &tScrollOffset, &tSelectedRow);
- data = gTasks[taskId].data;
- input = ListMenu_ProcessInput(data[5]);
- ListMenuGetScrollAndRow(data[5], &data[2], &data[1]);
switch (input)
{
case LIST_NOTHING_CHOSEN:
break;
case LIST_CANCEL:
PlaySE(SE_SELECT);
- DestroyListMenuTask(data[5], NULL, NULL);
- RemoveScrollIndicatorArrowPair(data[8]);
- ClearStdWindowAndFrame(data[6], 0);
- ClearWindowTilemap(data[6]);
- RemoveWindow(data[6]);
+ DestroyListMenuTask(tListTaskId, NULL, NULL);
+ RemoveScrollIndicatorArrowPair(tArrowTaskId);
+ ClearStdWindowAndFrame(tMainWindowId, 0);
+ ClearWindowTilemap(tMainWindowId);
+ RemoveWindow(tMainWindowId);
ScheduleBgCopyTilemapToVram(0);
free(sRegistryMenu);
GoToSecretBasePCRegisterMenu(taskId);
break;
default:
PlaySE(SE_SELECT);
- data[4] = input;
+ tSelectedBaseId = input;
ShowRegistryMenuActions(taskId);
break;
}
@@ -991,13 +1019,13 @@ static void ShowRegistryMenuActions(u8 taskId)
{
struct WindowTemplate template;
s16 *data = gTasks[taskId].data;
- RemoveScrollIndicatorArrowPair(data[8]);
+ RemoveScrollIndicatorArrowPair(tArrowTaskId);
template = sRegistryWindowTemplates[1];
template.width = GetMaxWidthInMenuTable(sRegistryMenuActions, 2);
- data[7] = AddWindow(&template);
- SetStandardWindowBorderStyle(data[7], 0);
- PrintMenuTable(data[7], ARRAY_COUNT(sRegistryMenuActions), sRegistryMenuActions);
- InitMenuInUpperLeftCornerPlaySoundWhenAPressed(data[7], 2, 0);
+ tActionWindowId = AddWindow(&template);
+ SetStandardWindowBorderStyle(tActionWindowId, 0);
+ PrintMenuTable(tActionWindowId, ARRAY_COUNT(sRegistryMenuActions), sRegistryMenuActions);
+ InitMenuInUpperLeftCornerPlaySoundWhenAPressed(tActionWindowId, 2, 0);
ScheduleBgCopyTilemapToVram(0);
gTasks[taskId].func = HandleRegistryMenuActionsInput;
}
@@ -1023,13 +1051,13 @@ static void HandleRegistryMenuActionsInput(u8 taskId)
static void ShowRegistryMenuDeleteConfirmation(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- ClearStdWindowAndFrame(data[6], FALSE);
- ClearStdWindowAndFrame(data[7], FALSE);
- ClearWindowTilemap(data[6]);
- ClearWindowTilemap(data[7]);
- RemoveWindow(data[7]);
+ ClearStdWindowAndFrame(tMainWindowId, FALSE);
+ ClearStdWindowAndFrame(tActionWindowId, FALSE);
+ ClearWindowTilemap(tMainWindowId);
+ ClearWindowTilemap(tActionWindowId);
+ RemoveWindow(tActionWindowId);
ScheduleBgCopyTilemapToVram(0);
- GetSecretBaseName(gStringVar1, data[4]);
+ GetSecretBaseName(gStringVar1, tSelectedBaseId);
StringExpandPlaceholders(gStringVar4, gText_OkayToDeleteFromRegistry);
DisplayItemMessageOnField(taskId, gStringVar4, ShowRegistryMenuDeleteYesNo);
}
@@ -1044,10 +1072,10 @@ void DeleteRegistry_Yes_Callback(u8 taskId)
{
s16 *data = gTasks[taskId].data;
ClearDialogWindowAndFrame(0, 0);
- DestroyListMenuTask(data[5], &data[2], &data[1]);
- gSaveBlock1Ptr->secretBases[data[4]].registryStatus = 0;
+ DestroyListMenuTask(tListTaskId, &tScrollOffset, &tSelectedRow);
+ gSaveBlock1Ptr->secretBases[tSelectedBaseId].registryStatus = UNREGISTERED;
BuildRegistryMenuItems(taskId);
- sub_812225C(&data[2], &data[1], data[3], data[0]);
+ sub_812225C(&tScrollOffset, &tSelectedRow, tMaxShownItems, tNumBases);
FinalizeRegistryMenu(taskId);
gTasks[taskId].func = HandleRegistryMenuInput;
}
@@ -1061,7 +1089,7 @@ static void DeleteRegistry_No(u8 taskId)
{
s16 *data = gTasks[taskId].data;
ClearDialogWindowAndFrame(0, 0);
- DestroyListMenuTask(data[5], &data[2], &data[1]);
+ DestroyListMenuTask(tListTaskId, &tScrollOffset, &tSelectedRow);
FinalizeRegistryMenu(taskId);
gTasks[taskId].func = HandleRegistryMenuInput;
}
@@ -1070,9 +1098,9 @@ static void ReturnToMainRegistryMenu(u8 taskId)
{
s16 *data = gTasks[taskId].data;
AddRegistryMenuScrollArrows(taskId);
- ClearStdWindowAndFrame(data[7], 0);
- ClearWindowTilemap(data[7]);
- RemoveWindow(data[7]);
+ ClearStdWindowAndFrame(tActionWindowId, 0);
+ ClearWindowTilemap(tActionWindowId);
+ RemoveWindow(tActionWindowId);
ScheduleBgCopyTilemapToVram(0);
gTasks[taskId].func = HandleRegistryMenuInput;
}
@@ -1087,10 +1115,20 @@ static void GoToSecretBasePCRegisterMenu(u8 taskId)
DestroyTask(taskId);
}
-static u8 GetSecretBaseOwnerType(u8 secretBaseId)
+#undef tNumBases
+#undef tSelectedRow
+#undef tScrollOffset
+#undef tMaxShownItems
+#undef tSelectedBaseId
+#undef tListTaskId
+#undef tMainWindowId
+#undef tActionWindowId
+#undef tArrowTaskId
+
+static u8 GetSecretBaseOwnerType(u8 secretBaseIdx)
{
- return (gSaveBlock1Ptr->secretBases[secretBaseId].trainerId[0] % 5)
- + (gSaveBlock1Ptr->secretBases[secretBaseId].gender * 5);
+ return (gSaveBlock1Ptr->secretBases[secretBaseIdx].trainerId[0] % 5)
+ + (gSaveBlock1Ptr->secretBases[secretBaseIdx].gender * 5);
}
const u8 *GetSecretBaseTrainerLoseText(void)
@@ -1132,10 +1170,10 @@ void SetBattledOwnerFromResult(void)
void GetSecretBaseOwnerAndState(void)
{
- u16 secretBaseId;
+ u16 secretBaseIdx;
u8 i;
- secretBaseId = VarGet(VAR_CURRENT_SECRET_BASE);
+ secretBaseIdx = VarGet(VAR_CURRENT_SECRET_BASE);
if (!FlagGet(FLAG_DAILY_SECRET_BASE))
{
for (i = 0; i < SECRET_BASES_COUNT; i++)
@@ -1143,10 +1181,16 @@ void GetSecretBaseOwnerAndState(void)
FlagSet(FLAG_DAILY_SECRET_BASE);
}
- gSpecialVar_0x8004 = GetSecretBaseOwnerType(secretBaseId);
- gSpecialVar_Result = gSaveBlock1Ptr->secretBases[secretBaseId].battledOwnerToday;
+ gSpecialVar_0x8004 = GetSecretBaseOwnerType(secretBaseIdx);
+ gSpecialVar_Result = gSaveBlock1Ptr->secretBases[secretBaseIdx].battledOwnerToday;
}
+#define tStepCb data[0] // See Task_RunPerStepCallback
+#define tState data[1]
+#define tPlayerX data[2]
+#define tPlayerY data[3]
+#define tFldEff data[4]
+
void SecretBasePerStepCallback(u8 taskId)
{
s16 x;
@@ -1156,23 +1200,23 @@ void SecretBasePerStepCallback(u8 taskId)
s16 *data;
data = gTasks[taskId].data;
- switch (data[1])
+ switch (tState)
{
case 0:
- if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
+ if (VarGet(VAR_CURRENT_SECRET_BASE))
sInFriendSecretBase = TRUE;
else
sInFriendSecretBase = FALSE;
- PlayerGetDestCoords(&data[2], &data[3]);
- data[1] = 1;
+ PlayerGetDestCoords(&tPlayerX, &tPlayerY);
+ tState = 1;
break;
case 1:
PlayerGetDestCoords(&x, &y);
- if (x != data[2] || y != data[3])
+ if (x != tPlayerX || y != tPlayerY)
{
- data[2] = x;
- data[3] = y;
+ tPlayerX = x;
+ tPlayerY = y;
VarSet(VAR_SECRET_BASE_STEP_COUNTER, VarGet(VAR_SECRET_BASE_STEP_COUNTER) + 1);
behavior = MapGridGetMetatileBehaviorAt(x, y);
tileId = MapGridGetMetatileIdAt(x, y);
@@ -1273,33 +1317,40 @@ void SecretBasePerStepCallback(u8 taskId)
}
break;
case 2:
- if (!FieldEffectActiveListContains(data[4]))
- data[1] = 1;
+ // This state is never reached, and tFldEff is never set
+ if (!FieldEffectActiveListContains(tFldEff))
+ tState = 1;
break;
}
}
-static void SetSecretBaseDataAndLanguage(u8 secretBaseId, struct SecretBase *secretBase, u32 version, u32 language)
+#undef tStepCb
+#undef tState
+#undef tPlayerX
+#undef tPlayerY
+#undef tFldEff
+
+static void SaveSecretBase(u8 secretBaseIdx, struct SecretBase *secretBase, u32 version, u32 language)
{
int stringLength;
u8 *name;
- gSaveBlock1Ptr->secretBases[secretBaseId] = *secretBase;
- gSaveBlock1Ptr->secretBases[secretBaseId].registryStatus = 2;
+ gSaveBlock1Ptr->secretBases[secretBaseIdx] = *secretBase;
+ gSaveBlock1Ptr->secretBases[secretBaseIdx].registryStatus = NEW;
if (version == VERSION_SAPPHIRE || version == VERSION_RUBY)
- gSaveBlock1Ptr->secretBases[secretBaseId].language = LANGUAGE_ENGLISH;
+ gSaveBlock1Ptr->secretBases[secretBaseIdx].language = GAME_LANGUAGE;
if (version == VERSION_EMERALD && language == LANGUAGE_JAPANESE)
{
- name = gSaveBlock1Ptr->secretBases[secretBaseId].trainerName;
- for (stringLength = 0; stringLength < 7; stringLength++)
+ name = gSaveBlock1Ptr->secretBases[secretBaseIdx].trainerName;
+ for (stringLength = 0; stringLength < PLAYER_NAME_LENGTH; stringLength++)
{
if (name[stringLength] == EOS)
break;
}
if (stringLength > 5)
- gSaveBlock1Ptr->secretBases[secretBaseId].language = LANGUAGE_ENGLISH;
+ gSaveBlock1Ptr->secretBases[secretBaseIdx].language = GAME_LANGUAGE;
}
}
@@ -1363,56 +1414,67 @@ static u8 FindAvailableSecretBaseIndex(void)
return 0;
}
-static u8 sub_80EAA18(void)
+static u8 FindUnregisteredSecretBaseIndex(void)
{
s16 i;
for (i = 1; i < SECRET_BASES_COUNT; i++)
{
- if (gSaveBlock1Ptr->secretBases[i].registryStatus == 0 && gSaveBlock1Ptr->secretBases[i].sbr_field_1_0 == 0)
+ if (gSaveBlock1Ptr->secretBases[i].registryStatus == UNREGISTERED && gSaveBlock1Ptr->secretBases[i].toRegister == FALSE)
return i;
}
return 0;
}
-static u8 sub_80EAA64(struct SecretBase *secretBase, u32 version, u32 language)
+static u8 TrySaveFriendsSecretBase(struct SecretBase *secretBase, u32 version, u32 language)
{
s16 index;
+ // Secret base has no location
if (!secretBase->secretBaseId)
return 0;
index = GetSecretBaseIndexFromId(secretBase->secretBaseId);
if (index != 0)
{
+ // An existing secret base is using this location
if (index != -1)
{
- if (gSaveBlock1Ptr->secretBases[index].sbr_field_1_0 == 1)
+ if (gSaveBlock1Ptr->secretBases[index].toRegister == TRUE)
return 0;
- if (gSaveBlock1Ptr->secretBases[index].registryStatus != 2 || secretBase->sbr_field_1_0 == 1)
+ if (gSaveBlock1Ptr->secretBases[index].registryStatus != NEW || secretBase->toRegister == TRUE)
{
- SetSecretBaseDataAndLanguage(index, secretBase, version, language);
+ // Overwrite unregistered base at this location
+ SaveSecretBase(index, secretBase, version, language);
return index;
}
}
+ // No secret base is using this location, find a spot to save it
else
{
index = FindAvailableSecretBaseIndex();
if (index != 0)
{
- SetSecretBaseDataAndLanguage(index, secretBase, version, language);
+ // Save in empty space
+ SaveSecretBase(index, secretBase, version, language);
return index;
}
- index = sub_80EAA18();
+ index = FindUnregisteredSecretBaseIndex();
if (index != 0)
{
- SetSecretBaseDataAndLanguage(index, secretBase, version, language);
+ // Overwrite unregistered base
+ SaveSecretBase(index, secretBase, version, language);
return index;
}
}
}
+
+ // Unable to save. Either...
+ // - This was the player's base
+ // - A registered base exists at this location
+ // - The secret base limit has been filled with registered bases
return 0;
}
@@ -1425,11 +1487,12 @@ static void SortSecretBasesByRegistryStatus(void)
struct SecretBase *secretBases;
secretBases = gSaveBlock1Ptr->secretBases;
- for (i = 1; i < 19; i++)
+ for (i = 1; i < SECRET_BASES_COUNT - 1; i++)
{
for (j = i + 1; j < SECRET_BASES_COUNT; j++)
{
- if ((secretBases[i].registryStatus == 0 && secretBases[j].registryStatus == 1) || (secretBases[i].registryStatus == 2 && secretBases[j].registryStatus != 2))
+ if ((secretBases[i].registryStatus == UNREGISTERED && secretBases[j].registryStatus == REGISTERED)
+ || (secretBases[i].registryStatus == NEW && secretBases[j].registryStatus != NEW))
{
struct SecretBase temp;
SWAP(secretBases[i], secretBases[j], temp)
@@ -1438,17 +1501,19 @@ static void SortSecretBasesByRegistryStatus(void)
}
}
-void sub_80EABA4(struct SecretBaseRecordMixer *mixer, u8 registryStatus)
+// Used to save a record mixing friends' bases other than their own
+// registryStatus is so registered bases can be attempted first
+static void TrySaveFriendsSecretBases(struct SecretBaseRecordMixer *mixer, u8 registryStatus)
{
u16 i;
for (i = 1; i < SECRET_BASES_COUNT; i++)
{
if (mixer->secretBases[i].registryStatus == registryStatus)
- sub_80EAA64(&mixer->secretBases[i], mixer->version, mixer->language);
+ TrySaveFriendsSecretBase(&mixer->secretBases[i], mixer->version, mixer->language);
}
}
-bool8 SecretBaseBelongsToPlayer(struct SecretBase *secretBase)
+static bool8 SecretBaseBelongsToPlayer(struct SecretBase *secretBase)
{
u8 i;
@@ -1478,7 +1543,7 @@ bool8 SecretBaseBelongsToPlayer(struct SecretBase *secretBase)
#define DELETED_BASE_B (1 << 1)
#define DELETED_BASE_C (1 << 2)
-void DeleteFirstOldBaseFromPlayerInRecordMixingFriendsRecords(struct SecretBase *basesA, struct SecretBase *basesB, struct SecretBase *basesC)
+static void DeleteFirstOldBaseFromPlayerInRecordMixingFriendsRecords(struct SecretBase *basesA, struct SecretBase *basesB, struct SecretBase *basesC)
{
u8 i;
u8 sbFlags = 0;
@@ -1524,7 +1589,7 @@ void DeleteFirstOldBaseFromPlayerInRecordMixingFriendsRecords(struct SecretBase
#undef DELETED_BASE_C
// returns TRUE if secretBase was deleted, FALSE otherwise
-static bool8 ClearDuplicateOwnedSecretBases(struct SecretBase *secretBase, struct SecretBase *secretBases, u8 c)
+static bool8 ClearDuplicateOwnedSecretBase(struct SecretBase *secretBase, struct SecretBase *secretBases, u8 idx)
{
u8 i;
@@ -1534,7 +1599,7 @@ static bool8 ClearDuplicateOwnedSecretBases(struct SecretBase *secretBase, struc
{
if (SecretBasesBelongToSamePlayer(secretBase, &secretBases[i]) == TRUE)
{
- if (c == 0)
+ if (idx == 0)
{
ClearSecretBase(&secretBases[i]);
return FALSE;
@@ -1546,7 +1611,7 @@ static bool8 ClearDuplicateOwnedSecretBases(struct SecretBase *secretBase, struc
return FALSE;
}
- secretBases[i].sbr_field_1_0 = secretBase->sbr_field_1_0;
+ secretBases[i].toRegister = secretBase->toRegister;
ClearSecretBase(secretBase);
return TRUE;
}
@@ -1556,87 +1621,97 @@ static bool8 ClearDuplicateOwnedSecretBases(struct SecretBase *secretBase, struc
return FALSE;
}
-void sub_80EAD94(struct SecretBase *basesA, struct SecretBase *basesB, struct SecretBase *basesC, struct SecretBase *basesD)
+static void ClearDuplicateOwnedSecretBases(struct SecretBase *playersBases, struct SecretBase *friendsBasesA, struct SecretBase *friendsBasesB, struct SecretBase *friendsBasesC)
{
u8 i;
for (i = 1; i < SECRET_BASES_COUNT; i++)
{
- if (basesA[i].secretBaseId)
+ if (playersBases[i].secretBaseId)
{
- if (basesA[i].registryStatus == 1)
+ if (playersBases[i].registryStatus == REGISTERED)
{
- basesA[i].sbr_field_1_0 = 1;
+ // Mark registered bases, so if they're deleted as a duplicate they
+ // will be re-registered later
+ playersBases[i].toRegister = TRUE;
}
- if (!ClearDuplicateOwnedSecretBases(&basesA[i], basesB, i))
+ if (!ClearDuplicateOwnedSecretBase(&playersBases[i], friendsBasesA, i))
{
- if (!ClearDuplicateOwnedSecretBases(&basesA[i], basesC, i))
+ if (!ClearDuplicateOwnedSecretBase(&playersBases[i], friendsBasesB, i))
{
- ClearDuplicateOwnedSecretBases(&basesA[i], basesD, i);
+ ClearDuplicateOwnedSecretBase(&playersBases[i], friendsBasesC, i);
}
}
}
}
for (i = 0; i < SECRET_BASES_COUNT; i++)
{
- if (basesB[i].secretBaseId)
+ if (friendsBasesA[i].secretBaseId)
{
- basesB[i].battledOwnerToday = 0;
- if (!ClearDuplicateOwnedSecretBases(&basesB[i], basesC, i))
+ friendsBasesA[i].battledOwnerToday = 0;
+ if (!ClearDuplicateOwnedSecretBase(&friendsBasesA[i], friendsBasesB, i))
{
- ClearDuplicateOwnedSecretBases(&basesB[i], basesD, i);
+ ClearDuplicateOwnedSecretBase(&friendsBasesA[i], friendsBasesC, i);
}
}
}
for (i = 0; i < SECRET_BASES_COUNT; i++)
{
- if (basesC[i].secretBaseId)
+ if (friendsBasesB[i].secretBaseId)
{
- basesC[i].battledOwnerToday = 0;
- ClearDuplicateOwnedSecretBases(&basesC[i], basesD, i);
+ friendsBasesB[i].battledOwnerToday = 0;
+ ClearDuplicateOwnedSecretBase(&friendsBasesB[i], friendsBasesC, i);
}
- if (basesD[i].secretBaseId)
+ if (friendsBasesC[i].secretBaseId)
{
- basesD[i].battledOwnerToday = 0;
+ friendsBasesC[i].battledOwnerToday = 0;
}
}
}
-void sub_80EAE90(struct SecretBase *base, u32 version, u32 language)
+static void TrySaveRegisteredDuplicate(struct SecretBase *base, u32 version, u32 language)
{
- if (base->sbr_field_1_0 == 1)
+ if (base->toRegister == TRUE)
{
- sub_80EAA64(base, version, language);
+ TrySaveFriendsSecretBase(base, version, language);
ClearSecretBase(base);
}
}
-void sub_80EAEB4(struct SecretBaseRecordMixer *mixers)
+static void TrySaveRegisteredDuplicates(struct SecretBaseRecordMixer *mixers)
{
u16 i;
for (i = 0; i < SECRET_BASES_COUNT; i++)
{
- sub_80EAE90(&mixers[0].secretBases[i], mixers[0].version, mixers[0].language);
- sub_80EAE90(&mixers[1].secretBases[i], mixers[1].version, mixers[1].language);
- sub_80EAE90(&mixers[2].secretBases[i], mixers[2].version, mixers[2].language);
+ TrySaveRegisteredDuplicate(&mixers[0].secretBases[i], mixers[0].version, mixers[0].language);
+ TrySaveRegisteredDuplicate(&mixers[1].secretBases[i], mixers[1].version, mixers[1].language);
+ TrySaveRegisteredDuplicate(&mixers[2].secretBases[i], mixers[2].version, mixers[2].language);
}
}
-void sub_80EAEF4(struct SecretBaseRecordMixer *mixers)
+static void SaveRecordMixBases(struct SecretBaseRecordMixer *mixers)
{
DeleteFirstOldBaseFromPlayerInRecordMixingFriendsRecords(mixers[0].secretBases, mixers[1].secretBases, mixers[2].secretBases);
- sub_80EAD94(gSaveBlock1Ptr->secretBases, mixers[0].secretBases, mixers[1].secretBases, mixers[2].secretBases);
- sub_80EAEB4(mixers);
- sub_80EAA64(mixers[0].secretBases, mixers[0].version, mixers[0].language);
- sub_80EAA64(mixers[1].secretBases, mixers[1].version, mixers[1].language);
- sub_80EAA64(mixers[2].secretBases, mixers[2].version, mixers[2].language);
- sub_80EABA4(&mixers[0], 1);
- sub_80EABA4(&mixers[1], 1);
- sub_80EABA4(&mixers[2], 1);
- sub_80EABA4(&mixers[0], 0);
- sub_80EABA4(&mixers[1], 0);
- sub_80EABA4(&mixers[2], 0);
+ ClearDuplicateOwnedSecretBases(gSaveBlock1Ptr->secretBases, mixers[0].secretBases, mixers[1].secretBases, mixers[2].secretBases);
+
+ // First, save any registered secret bases that were deleted as duplicates
+ TrySaveRegisteredDuplicates(mixers);
+
+ // Then try to save the record mixing friends' own bases
+ TrySaveFriendsSecretBase(mixers[0].secretBases, mixers[0].version, mixers[0].language);
+ TrySaveFriendsSecretBase(mixers[1].secretBases, mixers[1].version, mixers[1].language);
+ TrySaveFriendsSecretBase(mixers[2].secretBases, mixers[2].version, mixers[2].language);
+
+ // Then try to save as many of their registered bases as possible
+ TrySaveFriendsSecretBases(&mixers[0], REGISTERED);
+ TrySaveFriendsSecretBases(&mixers[1], REGISTERED);
+ TrySaveFriendsSecretBases(&mixers[2], REGISTERED);
+
+ // Lastly save as many of their unregistered bases as possible
+ TrySaveFriendsSecretBases(&mixers[0], UNREGISTERED);
+ TrySaveFriendsSecretBases(&mixers[1], UNREGISTERED);
+ TrySaveFriendsSecretBases(&mixers[2], UNREGISTERED);
}
#define INIT_SECRET_BASE_RECORD_MIXER(linkId1, linkId2, linkId3) \
@@ -1684,23 +1759,25 @@ void ReceiveSecretBasesData(void *secretBases, size_t recordSize, u8 linkIdx)
break;
}
- sub_80EAEF4(mixers);
+ SaveRecordMixBases(mixers);
+
for (i = 1; i < SECRET_BASES_COUNT; i++)
{
- if (gSaveBlock1Ptr->secretBases[i].sbr_field_1_0 == 1)
+ // In the process of deleting duplicate bases, if a base the player has registered is deleted it is
+ // flagged with the temporary toRegister flag, so it can be re-registered after it has been newly saved
+ if (gSaveBlock1Ptr->secretBases[i].toRegister == TRUE)
{
- gSaveBlock1Ptr->secretBases[i].registryStatus = 1;
- gSaveBlock1Ptr->secretBases[i].sbr_field_1_0 = 0;
+ gSaveBlock1Ptr->secretBases[i].registryStatus = REGISTERED;
+ gSaveBlock1Ptr->secretBases[i].toRegister = FALSE;
}
}
SortSecretBasesByRegistryStatus();
for (i = 1; i < SECRET_BASES_COUNT; i++)
{
- if (gSaveBlock1Ptr->secretBases[i].registryStatus == 2)
- {
- gSaveBlock1Ptr->secretBases[i].registryStatus = 0;
- }
+ // Unmark "new" bases, they've been saved now and are no longer important
+ if (gSaveBlock1Ptr->secretBases[i].registryStatus == NEW)
+ gSaveBlock1Ptr->secretBases[i].registryStatus = UNREGISTERED;
}
if (gSaveBlock1Ptr->secretBases[0].secretBaseId != 0
diff --git a/src/trade.c b/src/trade.c
index 96099cb74..afefce93c 100644
--- a/src/trade.c
+++ b/src/trade.c
@@ -1489,7 +1489,7 @@ static u8 CheckValidityOfTradeMons(u8 *aliveMons, u8 playerPartyCount, u8 player
// Partner cant trade illegitimate Deoxys or Mew
if (partnerSpecies == SPECIES_DEOXYS || partnerSpecies == SPECIES_MEW)
{
- if (!GetMonData(&gEnemyParty[partnerMonIdx], MON_DATA_OBEDIENCE))
+ if (!GetMonData(&gEnemyParty[partnerMonIdx], MON_DATA_EVENT_LEGAL))
return PARTNER_MON_INVALID;
}
@@ -2329,7 +2329,7 @@ static u32 CanTradeSelectedMon(struct Pokemon *playerParty, int partyCount, int
if (species[monIdx] == SPECIES_DEOXYS || species[monIdx] == SPECIES_MEW)
{
- if (!GetMonData(&playerParty[monIdx], MON_DATA_OBEDIENCE))
+ if (!GetMonData(&playerParty[monIdx], MON_DATA_EVENT_LEGAL))
return CANT_TRADE_INVALID_MON;
}
@@ -2394,17 +2394,17 @@ s32 GetGameProgressForLinkTrade(void)
return TRADE_BOTH_PLAYERS_READY;
}
-static bool32 IsDeoxysOrMewUntradable(u16 species, bool8 isObedientBitSet)
+static bool32 IsDeoxysOrMewUntradable(u16 species, bool8 isEventLegal)
{
if (species == SPECIES_DEOXYS || species == SPECIES_MEW)
{
- if (!isObedientBitSet)
+ if (!isEventLegal)
return TRUE;
}
return FALSE;
}
-int GetUnionRoomTradeMessageId(struct GFtgtGnameSub rfuPlayer, struct GFtgtGnameSub rfuPartner, u16 playerSpecies2, u16 partnerSpecies, u8 requestedType, u16 playerSpecies, u8 isObedientBitSet)
+int GetUnionRoomTradeMessageId(struct GFtgtGnameSub rfuPlayer, struct GFtgtGnameSub rfuPartner, u16 playerSpecies2, u16 partnerSpecies, u8 requestedType, u16 playerSpecies, u8 isEventLegal)
{
bool8 playerHasNationalDex = rfuPlayer.hasNationalDex;
bool8 playerIsChampion = rfuPlayer.isChampion;
@@ -2424,7 +2424,7 @@ int GetUnionRoomTradeMessageId(struct GFtgtGnameSub rfuPlayer, struct GFtgtGname
}
}
- if (IsDeoxysOrMewUntradable(playerSpecies, isObedientBitSet))
+ if (IsDeoxysOrMewUntradable(playerSpecies, isEventLegal))
{
return UR_TRADE_MSG_MON_CANT_BE_TRADED_2;
}
@@ -2475,11 +2475,11 @@ int GetUnionRoomTradeMessageId(struct GFtgtGnameSub rfuPlayer, struct GFtgtGname
return UR_TRADE_MSG_NONE;
}
-int CanRegisterMonForTradingBoard(struct GFtgtGnameSub rfuPlayer, u16 species2, u16 species, u8 isObedientBitSet)
+int CanRegisterMonForTradingBoard(struct GFtgtGnameSub rfuPlayer, u16 species2, u16 species, u8 isEventLegal)
{
bool8 hasNationalDex = rfuPlayer.hasNationalDex;
- if (IsDeoxysOrMewUntradable(species, isObedientBitSet))
+ if (IsDeoxysOrMewUntradable(species, isEventLegal))
return CANT_REGISTER_MON;
if (hasNationalDex)
@@ -2920,7 +2920,7 @@ static void CB2_InGameTrade(void)
StringCopy(gLinkPlayers[0].name, gSaveBlock2Ptr->playerName);
GetMonData(&gEnemyParty[0], MON_DATA_OT_NAME, otName);
StringCopy(gLinkPlayers[1].name, otName);
- gLinkPlayers[0].language = LANGUAGE_ENGLISH;
+ gLinkPlayers[0].language = GAME_LANGUAGE;
gLinkPlayers[1].language = GetMonData(&gEnemyParty[0], MON_DATA_LANGUAGE);
sTradeData = AllocZeroed(sizeof(*sTradeData));
AllocateMonSpritesGfx();
diff --git a/src/trainer_see.c b/src/trainer_see.c
index 8a7d2a5f9..9833f14bd 100644
--- a/src/trainer_see.c
+++ b/src/trainer_see.c
@@ -41,10 +41,10 @@ static bool8 PlayerFaceApproachingTrainer(u8 taskId, struct Task *task, struct O
static bool8 WaitPlayerFaceApproachingTrainer(u8 taskId, struct Task *task, struct ObjectEvent *trainerObj);
static bool8 RevealDisguisedTrainer(u8 taskId, struct Task *task, struct ObjectEvent *trainerObj);
static bool8 WaitRevealDisguisedTrainer(u8 taskId, struct Task *task, struct ObjectEvent *trainerObj);
-static bool8 RevealHiddenTrainer(u8 taskId, struct Task *task, struct ObjectEvent *trainerObj);
-static bool8 PopOutOfAshHiddenTrainer(u8 taskId, struct Task *task, struct ObjectEvent *trainerObj);
-static bool8 JumpInPlaceHiddenTrainer(u8 taskId, struct Task *task, struct ObjectEvent *trainerObj);
-static bool8 WaitRevealHiddenTrainer(u8 taskId, struct Task *task, struct ObjectEvent *trainerObj);
+static bool8 RevealBuriedTrainer(u8 taskId, struct Task *task, struct ObjectEvent *trainerObj);
+static bool8 PopOutOfAshBuriedTrainer(u8 taskId, struct Task *task, struct ObjectEvent *trainerObj);
+static bool8 JumpInPlaceBuriedTrainer(u8 taskId, struct Task *task, struct ObjectEvent *trainerObj);
+static bool8 WaitRevealBuriedTrainer(u8 taskId, struct Task *task, struct ObjectEvent *trainerObj);
static void SpriteCB_TrainerIcons(struct Sprite *sprite);
@@ -80,10 +80,10 @@ enum {
TRSEE_PLAYER_FACE_WAIT,
TRSEE_REVEAL_DISGUISE,
TRSEE_REVEAL_DISGUISE_WAIT,
- TRSEE_REVEAL_HIDDEN,
- TRSEE_HIDDEN_POP_OUT,
- TRSEE_HIDDEN_JUMP,
- TRSEE_REVEAL_HIDDEN_WAIT,
+ TRSEE_REVEAL_BURIED,
+ TRSEE_BURIED_POP_OUT,
+ TRSEE_BURIED_JUMP,
+ TRSEE_REVEAL_BURIED_WAIT,
};
static bool8 (*const sTrainerSeeFuncList[])(u8 taskId, struct Task *task, struct ObjectEvent *trainerObj) =
@@ -96,18 +96,18 @@ static bool8 (*const sTrainerSeeFuncList[])(u8 taskId, struct Task *task, struct
[TRSEE_PLAYER_FACE_WAIT] = WaitPlayerFaceApproachingTrainer,
[TRSEE_REVEAL_DISGUISE] = RevealDisguisedTrainer,
[TRSEE_REVEAL_DISGUISE_WAIT] = WaitRevealDisguisedTrainer,
- [TRSEE_REVEAL_HIDDEN] = RevealHiddenTrainer,
- [TRSEE_HIDDEN_POP_OUT] = PopOutOfAshHiddenTrainer,
- [TRSEE_HIDDEN_JUMP] = JumpInPlaceHiddenTrainer,
- [TRSEE_REVEAL_HIDDEN_WAIT] = WaitRevealHiddenTrainer,
+ [TRSEE_REVEAL_BURIED] = RevealBuriedTrainer,
+ [TRSEE_BURIED_POP_OUT] = PopOutOfAshBuriedTrainer,
+ [TRSEE_BURIED_JUMP] = JumpInPlaceBuriedTrainer,
+ [TRSEE_REVEAL_BURIED_WAIT] = WaitRevealBuriedTrainer,
};
static bool8 (*const sTrainerSeeFuncList2[])(u8 taskId, struct Task *task, struct ObjectEvent *trainerObj) =
{
- RevealHiddenTrainer,
- PopOutOfAshHiddenTrainer,
- JumpInPlaceHiddenTrainer,
- WaitRevealHiddenTrainer,
+ RevealBuriedTrainer,
+ PopOutOfAshBuriedTrainer,
+ JumpInPlaceBuriedTrainer,
+ WaitRevealBuriedTrainer,
};
static const struct OamData sOamData_Icons =
@@ -481,8 +481,8 @@ static bool8 WaitTrainerExclamationMark(u8 taskId, struct Task *task, struct Obj
task->tFuncId++; // TRSEE_MOVE_TO_PLAYER
if (trainerObj->movementType == MOVEMENT_TYPE_TREE_DISGUISE || trainerObj->movementType == MOVEMENT_TYPE_MOUNTAIN_DISGUISE)
task->tFuncId = TRSEE_REVEAL_DISGUISE;
- if (trainerObj->movementType == MOVEMENT_TYPE_HIDDEN)
- task->tFuncId = TRSEE_REVEAL_HIDDEN;
+ if (trainerObj->movementType == MOVEMENT_TYPE_BURIED)
+ task->tFuncId = TRSEE_REVEAL_BURIED;
return TRUE;
}
}
@@ -561,8 +561,8 @@ static bool8 WaitRevealDisguisedTrainer(u8 taskId, struct Task *task, struct Obj
return FALSE;
}
-// TRSEE_REVEAL_HIDDEN
-static bool8 RevealHiddenTrainer(u8 taskId, struct Task *task, struct ObjectEvent *trainerObj)
+// TRSEE_REVEAL_BURIED
+static bool8 RevealBuriedTrainer(u8 taskId, struct Task *task, struct ObjectEvent *trainerObj)
{
if (!ObjectEventIsMovementOverridden(trainerObj)
|| ObjectEventClearHeldMovementIfFinished(trainerObj))
@@ -573,8 +573,8 @@ static bool8 RevealHiddenTrainer(u8 taskId, struct Task *task, struct ObjectEven
return FALSE;
}
-// TRSEE_HIDDEN_POP_OUT
-static bool8 PopOutOfAshHiddenTrainer(u8 taskId, struct Task *task, struct ObjectEvent *trainerObj)
+// TRSEE_BURIED_POP_OUT
+static bool8 PopOutOfAshBuriedTrainer(u8 taskId, struct Task *task, struct ObjectEvent *trainerObj)
{
if (ObjectEventCheckHeldMovementStatus(trainerObj))
{
@@ -588,8 +588,8 @@ static bool8 PopOutOfAshHiddenTrainer(u8 taskId, struct Task *task, struct Objec
return FALSE;
}
-// TRSEE_HIDDEN_JUMP
-static bool8 JumpInPlaceHiddenTrainer(u8 taskId, struct Task *task, struct ObjectEvent *trainerObj)
+// TRSEE_BURIED_JUMP
+static bool8 JumpInPlaceBuriedTrainer(u8 taskId, struct Task *task, struct ObjectEvent *trainerObj)
{
struct Sprite *sprite;
@@ -608,8 +608,8 @@ static bool8 JumpInPlaceHiddenTrainer(u8 taskId, struct Task *task, struct Objec
return FALSE;
}
-// TRSEE_REVEAL_HIDDEN_WAIT
-static bool8 WaitRevealHiddenTrainer(u8 taskId, struct Task *task, struct ObjectEvent *trainerObj)
+// TRSEE_REVEAL_BURIED_WAIT
+static bool8 WaitRevealBuriedTrainer(u8 taskId, struct Task *task, struct ObjectEvent *trainerObj)
{
if (!FieldEffectActiveListContains(FLDEFF_ASH_PUFF))
task->tFuncId = TRSEE_MOVE_TO_PLAYER;
@@ -623,7 +623,7 @@ static bool8 WaitRevealHiddenTrainer(u8 taskId, struct Task *task, struct Object
#define tObjEvent data[1]
-static void Task_SetHiddenTrainerMovement(u8 taskId)
+static void Task_SetBuriedTrainerMovement(u8 taskId)
{
struct Task *task = &gTasks[taskId];
struct ObjectEvent *objEvent;
@@ -647,10 +647,10 @@ static void Task_SetHiddenTrainerMovement(u8 taskId)
}
}
-// Called when a "buried" trainer has the reveal_trainer movement applied, from direct interaction
-void SetHiddenTrainerMovement(struct ObjectEvent *objEvent)
+// Called when a buried Trainer has the reveal_trainer movement applied, from direct interaction
+void SetBuriedTrainerMovement(struct ObjectEvent *objEvent)
{
- StoreWordInTwoHalfwords(&gTasks[CreateTask(Task_SetHiddenTrainerMovement, 0)].tObjEvent, (u32)objEvent);
+ StoreWordInTwoHalfwords(&gTasks[CreateTask(Task_SetBuriedTrainerMovement, 0)].tObjEvent, (u32)objEvent);
}
void DoTrainerApproach(void)
diff --git a/src/tv.c b/src/tv.c
index effd3e4b2..99bd609e4 100644
--- a/src/tv.c
+++ b/src/tv.c
@@ -1665,7 +1665,7 @@ void PutLilycoveContestLadyShowOnTheAir(void)
{
show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
BufferContestLadyLanguage(&show->contestLiveUpdates2.language);
- show->contestLiveUpdates2.pokemonNameLanguage = LANGUAGE_ENGLISH;
+ show->contestLiveUpdates2.pokemonNameLanguage = GAME_LANGUAGE;
show->contestLiveUpdates2.kind = TVSHOW_CONTEST_LIVE_UPDATES_2;
show->contestLiveUpdates2.active = TRUE;
BufferContestLadyPlayerName(show->contestLiveUpdates2.playerName);
@@ -2398,13 +2398,13 @@ u8 GetRibbonCount(struct Pokemon *pokemon)
nRibbons += GetMonData(pokemon, MON_DATA_VICTORY_RIBBON);
nRibbons += GetMonData(pokemon, MON_DATA_ARTIST_RIBBON);
nRibbons += GetMonData(pokemon, MON_DATA_EFFORT_RIBBON);
- nRibbons += GetMonData(pokemon, MON_DATA_GIFT_RIBBON_1);
- nRibbons += GetMonData(pokemon, MON_DATA_GIFT_RIBBON_2);
- nRibbons += GetMonData(pokemon, MON_DATA_GIFT_RIBBON_3);
- nRibbons += GetMonData(pokemon, MON_DATA_GIFT_RIBBON_4);
- nRibbons += GetMonData(pokemon, MON_DATA_GIFT_RIBBON_5);
- nRibbons += GetMonData(pokemon, MON_DATA_GIFT_RIBBON_6);
- nRibbons += GetMonData(pokemon, MON_DATA_GIFT_RIBBON_7);
+ nRibbons += GetMonData(pokemon, MON_DATA_MARINE_RIBBON);
+ nRibbons += GetMonData(pokemon, MON_DATA_LAND_RIBBON);
+ nRibbons += GetMonData(pokemon, MON_DATA_SKY_RIBBON);
+ nRibbons += GetMonData(pokemon, MON_DATA_COUNTRY_RIBBON);
+ nRibbons += GetMonData(pokemon, MON_DATA_NATIONAL_RIBBON);
+ nRibbons += GetMonData(pokemon, MON_DATA_EARTH_RIBBON);
+ nRibbons += GetMonData(pokemon, MON_DATA_WORLD_RIBBON);
return nRibbons;
}
@@ -2420,13 +2420,13 @@ u8 TV_MonDataIdxToRibbon(u8 monDataIdx)
if (monDataIdx == MON_DATA_VICTORY_RIBBON) return 22;
if (monDataIdx == MON_DATA_ARTIST_RIBBON) return 23;
if (monDataIdx == MON_DATA_EFFORT_RIBBON) return 24;
- if (monDataIdx == MON_DATA_GIFT_RIBBON_1) return 25;
- if (monDataIdx == MON_DATA_GIFT_RIBBON_2) return 26;
- if (monDataIdx == MON_DATA_GIFT_RIBBON_3) return 27;
- if (monDataIdx == MON_DATA_GIFT_RIBBON_4) return 28;
- if (monDataIdx == MON_DATA_GIFT_RIBBON_5) return 29;
- if (monDataIdx == MON_DATA_GIFT_RIBBON_6) return 30;
- if (monDataIdx == MON_DATA_GIFT_RIBBON_7) return 31;
+ if (monDataIdx == MON_DATA_MARINE_RIBBON) return 25;
+ if (monDataIdx == MON_DATA_LAND_RIBBON) return 26;
+ if (monDataIdx == MON_DATA_SKY_RIBBON) return 27;
+ if (monDataIdx == MON_DATA_COUNTRY_RIBBON) return 28;
+ if (monDataIdx == MON_DATA_NATIONAL_RIBBON) return 29;
+ if (monDataIdx == MON_DATA_EARTH_RIBBON) return 30;
+ if (monDataIdx == MON_DATA_WORLD_RIBBON) return 31;
return 0;
}
@@ -3144,7 +3144,7 @@ static bool8 IsPartyMonNicknamedOrNotEnglish(u8 monIdx)
pokemon = &gPlayerParty[monIdx];
GetMonData(pokemon, MON_DATA_NICKNAME, gStringVar1);
language = GetMonData(pokemon, MON_DATA_LANGUAGE, &language);
- if (language == LANGUAGE_ENGLISH && !StringCompare(gSpeciesNames[GetMonData(pokemon, MON_DATA_SPECIES, NULL)], gStringVar1))
+ if (language == GAME_LANGUAGE && !StringCompare(gSpeciesNames[GetMonData(pokemon, MON_DATA_SPECIES, NULL)], gStringVar1))
{
return FALSE;
}
@@ -4254,7 +4254,7 @@ static void sub_80F1254(TVShow *shows)
}
else
{
- curShow->bravoTrainerTower.pokemonNameLanguage = LANGUAGE_ENGLISH;
+ curShow->bravoTrainerTower.pokemonNameLanguage = GAME_LANGUAGE;
}
}
}
@@ -4262,7 +4262,7 @@ static void sub_80F1254(TVShow *shows)
u8 TV_GetStringLanguage(u8 *str)
{
- return IsStringJapanese(str) ? LANGUAGE_JAPANESE : LANGUAGE_ENGLISH;
+ return IsStringJapanese(str) ? LANGUAGE_JAPANESE : GAME_LANGUAGE;
}
static void sub_80F12A4(TVShow *shows)
diff --git a/src/util.c b/src/util.c
index 8aa54857a..a4e3fa4cf 100644
--- a/src/util.c
+++ b/src/util.c
@@ -2,6 +2,7 @@
#include "util.h"
#include "sprite.h"
#include "palette.h"
+#include "constants/rgb.h"
const u32 gBitTable[] =
{
@@ -271,8 +272,8 @@ void BlendPalette(u16 palOffset, u16 numEntries, u8 coeff, u16 blendColor)
s8 g = data1->g;
s8 b = data1->b;
struct PlttData *data2 = (struct PlttData *)&blendColor;
- gPlttBufferFaded[index] = ((r + (((data2->r - r) * coeff) >> 4)) << 0)
- | ((g + (((data2->g - g) * coeff) >> 4)) << 5)
- | ((b + (((data2->b - b) * coeff) >> 4)) << 10);
+ gPlttBufferFaded[index] = RGB(r + (((data2->r - r) * coeff) >> 4),
+ g + (((data2->g - g) * coeff) >> 4),
+ b + (((data2->b - b) * coeff) >> 4));
}
}