Merge pull request #2391 from AsparagusEduardo/RHH/pr/sugardoodoodoodoodoodooaahhoneyhoney

Implemented Honey's Sweet Scent functionality
This commit is contained in:
ghoulslash 2022-11-01 20:09:30 -04:00 committed by GitHub
commit 53061c7d62
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 32 additions and 5 deletions

View File

@ -35,6 +35,7 @@ bool8 FldEff_UseStrength(void);
// sweet scent
bool8 SetUpFieldMove_SweetScent(void);
bool8 FldEff_SweetScent(void);
void StartSweetScentFieldEffect(void);
// teleport
bool8 SetUpFieldMove_Teleport(void);

View File

@ -28,6 +28,7 @@ void ItemUseOutOfBattle_Berry(u8);
void ItemUseOutOfBattle_EnigmaBerry(u8);
void ItemUseOutOfBattle_FormChange(u8);
void ItemUseOutOfBattle_FormChange_ConsumedOnUse(u8);
void ItemUseOutOfBattle_Honey(u8);
void ItemUseOutOfBattle_CannotUse(u8);
void ItemUseInBattle_PokeBall(u8);
void ItemUseInBattle_StatIncrease(u8);

View File

@ -2035,8 +2035,8 @@ const struct Item gItems[] =
.price = 300,
.description = sHoneyDesc,
.pocket = POCKET_ITEMS,
.type = ITEM_USE_BAG_MENU,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
.type = ITEM_USE_FIELD,
.fieldUseFunc = ItemUseOutOfBattle_Honey,
.flingPower = 30,
},

View File

@ -19,7 +19,6 @@
#include "constants/songs.h"
static void FieldCallback_SweetScent(void);
static void StartSweetScentFieldEffect(void);
static void TrySweetScentEncounter(u8 taskId);
static void FailSweetScentEncounter(u8 taskId);
@ -47,14 +46,15 @@ bool8 FldEff_SweetScent(void)
return FALSE;
}
static void StartSweetScentFieldEffect(void)
void StartSweetScentFieldEffect(void)
{
u8 taskId;
u32 palettes = ~(1 << (gSprites[GetPlayerAvatarSpriteId()].oam.paletteNum + 16) | (1 << 13) | (1 << 14) | (1 << 15));
PlaySE(SE_M_SWEET_SCENT);
CpuFastSet(gPlttBufferUnfaded, gPaletteDecompressionBuffer, 0x100);
CpuFastSet(gPlttBufferFaded, gPlttBufferUnfaded, 0x100);
BeginNormalPaletteFade(~(1 << (gSprites[GetPlayerAvatarSpriteId()].oam.paletteNum + 16)), 4, 0, 8, RGB_RED);
BeginNormalPaletteFade(palettes, 4, 0, 8, RGB_RED);
taskId = CreateTask(TrySweetScentEncounter, 0);
gTasks[taskId].data[0] = 0;
FieldEffectActiveListRemove(FLDEFF_SWEET_SCENT);

View File

@ -18,6 +18,7 @@
#include "field_player_avatar.h"
#include "field_screen_effect.h"
#include "field_weather.h"
#include "fldeff.h"
#include "item.h"
#include "item_menu.h"
#include "item_use.h"
@ -73,6 +74,7 @@ static void Task_UseLure(u8 taskId);
static void Task_CloseCantUseKeyItemMessage(u8);
static void SetDistanceOfClosestHiddenItem(u8, s16, s16);
static void CB2_OpenPokeblockFromBag(void);
static void ItemUseOnFieldCB_Honey(u8 taskId);
// EWRAM variables
EWRAM_DATA static void(*sItemUseOnFieldCB)(u8 taskId) = NULL;
@ -1258,6 +1260,29 @@ void ItemUseOutOfBattle_FormChange_ConsumedOnUse(u8 taskId)
SetUpItemUseCallback(taskId);
}
void Task_UseHoneyOnField(u8 taskId)
{
//ResetInitialPlayerAvatarState();
StartSweetScentFieldEffect();
DestroyTask(taskId);
}
static void ItemUseOnFieldCB_Honey(u8 taskId)
{
Overworld_ResetStateAfterDigEscRope();
RemoveUsedItem();
gTasks[taskId].data[0] = 0;
DisplayItemMessageOnField(taskId, gStringVar4, Task_UseHoneyOnField);
}
void ItemUseOutOfBattle_Honey(u8 taskId)
{
sItemUseOnFieldCB = ItemUseOnFieldCB_Honey;
gFieldCallback = FieldCB_UseItemOnField;
gBagMenu->newScreenCallback = CB2_ReturnToField;
Task_FadeAndCloseBagMenu(taskId);
}
void ItemUseOutOfBattle_CannotUse(u8 taskId)
{
DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].tUsingRegisteredKeyItem);