diff options
| author | Garrett Cox <garrettjcox@gmail.com> | 2024-08-17 10:05:45 -0500 |
|---|---|---|
| committer | Garrett Cox <garrettjcox@gmail.com> | 2024-09-14 08:55:15 -0500 |
| commit | b24fe23ccd877a628056b9eb0dbe083a532ee32b (patch) | |
| tree | c6b5285db773e64913ad025e4751f4ce068185cd /mm/src/code | |
| parent | b430d68235c28ddafb37202e071da5d8c449b2c8 (diff) | |
Implement event queue for handling various events like giving custom items or transitions
Diffstat (limited to 'mm/src/code')
| -rw-r--r-- | mm/src/code/z_draw.c | 4 | ||||
| -rw-r--r-- | mm/src/code/z_en_item00.c | 5 | ||||
| -rw-r--r-- | mm/src/code/z_parameter.c | 6 |
3 files changed, 14 insertions, 1 deletions
diff --git a/mm/src/code/z_draw.c b/mm/src/code/z_draw.c index 1d5b967d7..bc5da705d 100644 --- a/mm/src/code/z_draw.c +++ b/mm/src/code/z_draw.c @@ -90,6 +90,8 @@ #include "assets/objects/object_bsmask/object_bsmask.h" #include "assets/objects/object_st/object_st.h" +#include "2s2h/Enhancements/GameInteractor/GameInteractor.h" + void GetItem_DrawBombchu(PlayState* play, s16 drawId); void GetItem_DrawPoes(PlayState* play, s16 drawId); void GetItem_DrawFairyBottle(PlayState* play, s16 drawId); @@ -371,6 +373,8 @@ static DrawItemTableEntry sDrawItemTable[] = { { GetItem_DrawOpa0Xlu1, { gGiPictoBoxFrameDL, gGiPictoBoxBodyAndLensDL } }, // GID_MASK_FIERCE_DEITY, OBJECT_GI_MASK03 { GetItem_DrawOpa01, { gGiFierceDeityMaskFaceDL, gGiFierceDeityMaskHairAndHatDL } }, + // GID_SHIP + { GameInteractor_GetItemDraw, {} }, }; /** diff --git a/mm/src/code/z_en_item00.c b/mm/src/code/z_en_item00.c index d22576ad7..934387253 100644 --- a/mm/src/code/z_en_item00.c +++ b/mm/src/code/z_en_item00.c @@ -4,6 +4,7 @@ #include "objects/object_gi_hearts/object_gi_hearts.h" #include "overlays/actors/ovl_En_Elf/z_en_elf.h" #include "overlays/actors/ovl_En_Elforg/z_en_elforg.h" +#include "2s2h/Enhancements/GameInteractor/GameInteractor.h" #define FLAGS 0x00000000 @@ -542,6 +543,10 @@ void EnItem00_Update(Actor* thisx, PlayState* play) { } } + if (!GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_ITEM00, true, this)) { + return; + } + if (play->gameOverCtx.state != GAMEOVER_INACTIVE) { return; } diff --git a/mm/src/code/z_parameter.c b/mm/src/code/z_parameter.c index 464d0e2ed..848661ff1 100644 --- a/mm/src/code/z_parameter.c +++ b/mm/src/code/z_parameter.c @@ -4005,7 +4005,7 @@ u8 Item_GiveImpl(PlayState* play, u8 item) { // #region 2S2H [Enhancements] This is our wrapper around the original Item_Give function for hooking purposes u8 Item_Give(PlayState* play, u8 item) { - if (!GameInteractor_ShouldItemGive(item)) { + if (!GameInteractor_ShouldItemGive(item) || item == ITEM_SHIP) { return ITEM_NONE; } @@ -4021,6 +4021,10 @@ u8 Item_CheckObtainabilityImpl(u8 item) { u8 slot; u8 bottleSlot; + if (item == ITEM_SHIP) { + return ITEM_NONE; + } + slot = SLOT(item); if (item >= ITEM_DEKU_STICKS_5) { slot = SLOT(sExtraItemBases[item - ITEM_DEKU_STICKS_5]); |
