added box link functionality

This commit is contained in:
cawtds
2024-06-04 21:06:27 +02:00
parent 688c13a165
commit cb64e6f676
7 changed files with 43 additions and 2 deletions

View File

@@ -140,6 +140,7 @@ ViridianCity_Mart_Items::
.2byte ITEM_N_SOLARIZER
.2byte ITEM_N_LUNARIZER
.2byte ITEM_HONEY
.2byte ITEM_POKEMON_BOX_LINK
.2byte ITEM_NONE
release
end

View File

@@ -99,3 +99,11 @@ EventScript_ExitOaksPC::
msgbox Text_ClosedLinkToProfOaksPC
goto EventScript_PCMainMenu
end
EventScript_AccessPokemonBoxLink::
playse SE_PC_LOGIN
msgbox Text_OpenedPkmnStorage, MSGBOX_DEFAULT
special ShowPokemonStorageSystemPC
waitstate
goto EventScript_TurnOffPC
end

View File

@@ -1169,6 +1169,7 @@ extern const u8 CableClub_Text_YouMayTradeHere[];
extern const u8 CableClub_Text_YouMayBattleHere[];
extern const u8 CableClub_Text_CanMakeBerryPowder[];
extern const u8 EventScript_PC[];
extern const u8 EventScript_AccessPokemonBoxLink[];
extern const u8 EventScript_RepelWoreOff[];

View File

@@ -21,6 +21,7 @@ void ItemUseOutOfBattle_Mail(u8 taskId);
void ItemUseOutOfBattle_Medicine(u8 taskId);
void ItemUseOutOfBattle_Mint(u8 taskId);
void ItemUseOutOfBattle_PokeFlute(u8 taskId);
void ItemUseOutOfBattle_PokemonBoxLink(u8 taskId);
void ItemUseOutOfBattle_PowderJar(u8 taskId);
void ItemUseOutOfBattle_PPRecovery(u8 taskId);
void ItemUseOutOfBattle_PPUp(u8 taskId);

View File

@@ -11114,7 +11114,7 @@ const struct Item gItemsInfo[] =
.importance = 1,
.pocket = POCKET_KEY_ITEMS,
.type = ITEM_TYPE_FIELD,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
.fieldUseFunc = ItemUseOutOfBattle_PokemonBoxLink,
},
[ITEM_COIN_CASE] =

View File

@@ -226,6 +226,20 @@ bool8 PlayerHasGrassPokemonInParty(void)
return FALSE;
}
static bool8 IsPlayerInFrontOfPC(void)
{
s16 x, y;
u32 tileInFront;
GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
tileInFront = MapGridGetMetatileIdAt(x, y);
return (tileInFront == METATILE_Building_PCOff
|| tileInFront == METATILE_Building_PCOn
|| tileInFront == METATILE_GenericBuilding1_PlayersPCOff
|| tileInFront == METATILE_GenericBuilding1_PlayersPCOn);
}
#define tState data[0]
#define tTimer data[1]
@@ -233,7 +247,7 @@ void AnimatePcTurnOn(void)
{
u8 taskId;
if (FuncIsActiveTask(Task_AnimatePcTurnOn) != TRUE)
if (FuncIsActiveTask(Task_AnimatePcTurnOn) != TRUE && IsPlayerInFrontOfPC() == TRUE)
{
taskId = CreateTask(Task_AnimatePcTurnOn, 8);
gTasks[taskId].tState = 0;
@@ -310,6 +324,8 @@ void AnimatePcTurnOff()
s8 deltaY = 0;
u8 direction = GetPlayerFacingDirection();
if (IsPlayerInFrontOfPC() == FALSE)
return;
switch (direction)
{
case DIR_NORTH:

View File

@@ -10,6 +10,7 @@
#include "field_effect.h"
#include "field_fadetransition.h"
#include "event_object_movement.h"
#include "event_scripts.h"
#include "field_player_avatar.h"
#include "field_specials.h"
#include "field_weather.h"
@@ -49,6 +50,7 @@ static void Task_ItemUse_CloseMessageBoxAndReturnToField(u8 taskId);
static void Task_ItemUseWaitForFade(u8 taskId);
static bool8 FieldCB2_UseItemFromField(void);
static void CB2_CheckMail(void);
static void Task_AccessPokemonBoxLink(u8);
static void ItemUseOnFieldCB_Bicycle(u8 taskId);
static bool8 CanFish(void);
static void ItemUseOnFieldCB_Rod(u8 taskId);
@@ -361,6 +363,18 @@ void ItemUseOutOfBattle_Itemfinder(u8 taskId)
SetUpItemUseOnFieldCallback(taskId);
}
void ItemUseOutOfBattle_PokemonBoxLink(u8 taskId)
{
sItemUseOnFieldCB = Task_AccessPokemonBoxLink;
SetUpItemUseOnFieldCallback(taskId);
}
static void Task_AccessPokemonBoxLink(u8 taskId)
{
ScriptContext_SetupScript(EventScript_AccessPokemonBoxLink);
DestroyTask(taskId);
}
#define tIsFieldUse data[3]
void ItemUseOutOfBattle_CoinCase(u8 taskId)