summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbriaguya <70942617+briaguya-ai@users.noreply.github.com>2025-02-08 10:12:13 -0800
committerGitHub <noreply@github.com>2025-02-08 19:12:13 +0100
commit6abf30aa2f9fa5dee9710eda6479a592aeceed57 (patch)
tree95b00b8c62d29140e959af11ba373eb674f828ed
parent14a14bb7efa3538231b5128812beab0d3c289c36 (diff)
document vb shoulds (#5004)
-rw-r--r--soh/soh/Enhancements/game-interactor/GameInteractor.h477
-rw-r--r--soh/soh/Enhancements/game-interactor/vanilla-behavior/GIVanillaBehavior.h1851
2 files changed, 1852 insertions, 476 deletions
diff --git a/soh/soh/Enhancements/game-interactor/GameInteractor.h b/soh/soh/Enhancements/game-interactor/GameInteractor.h
index 889ba7f1c..8c6be086f 100644
--- a/soh/soh/Enhancements/game-interactor/GameInteractor.h
+++ b/soh/soh/Enhancements/game-interactor/GameInteractor.h
@@ -5,6 +5,7 @@
#include "libultraship/libultraship.h"
#include "GameInteractionEffect.h"
+#include "vanilla-behavior/GIVanillaBehavior.h"
#include "soh/Enhancements/item-tables/ItemTableTypes.h"
#include <z64.h>
@@ -63,482 +64,6 @@ typedef enum {
/* */ GI_TP_DEST_PRELUDE = ENTR_TEMPLE_OF_TIME_WARP_PAD,
} GITeleportDestinations;
-typedef enum {
- // Vanilla condition: gSaveContext.showTitleCard
- VB_SHOW_TITLE_CARD,
- // Opt: *EnWonderTalk2
- VB_WONDER_TALK,
- // Opt: *ElfMsg
- VB_NAVI_TALK,
- // Vanilla condition: INFTABLE_GREETED_BY_SARIA
- VB_NOT_BE_GREETED_BY_SARIA,
- // Opt: *EnMd
- VB_MIDO_SPAWN,
- // Opt: *EnMd
- // Vanilla condition: EnMd->interactInfo.talkState == NPC_TALK_STATE_ACTION
- // Note: When overriding this, ensure you're not in the intro cutscene as Mido's path has not been loaded
- VB_MOVE_MIDO_IN_KOKIRI_FOREST,
- // Opt: *EnMd
- // Vanilla condition: CHECK_QUEST_ITEM(QUEST_KOKIRI_EMERALD)
- VB_MIDO_CONSIDER_DEKU_TREE_DEAD,
- // Opt: *ObjDekujr
- // Vanilla condition: CHECK_QUEST_ITEM(QUEST_MEDALLION_FOREST)
- VB_DEKU_JR_CONSIDER_FOREST_TEMPLE_FINISHED,
- // Opt: *EnKo
- // Vanilla condition: CHECK_QUEST_ITEM(QUEST_KOKIRI_EMERALD)
- VB_OPEN_KOKIRI_FOREST,
- // Opt: *EnOwl
- // Vanilla condition: EnOwl->actor.xzDistToPlayer < targetDist
- VB_OWL_INTERACTION,
- // Vanilla condition: EVENTCHKINF_TALON_RETURNED_FROM_CASTLE
- VB_MALON_RETURN_FROM_CASTLE,
- // Vanilla condition: CUR_UPG_VALUE(UPG_STRENGTH) <= 0
- VB_BE_ELIGIBLE_FOR_DARUNIAS_JOY_REWARD,
- /* Vanilla condition:
- ```
- LINK_IS_ADULT &&
- (gEntranceTable[((void)0, gSaveContext.entranceIndex)].scene == SCENE_TEMPLE_OF_TIME) &&
- CHECK_QUEST_ITEM(QUEST_MEDALLION_SPIRIT) &&
- CHECK_QUEST_ITEM(QUEST_MEDALLION_SHADOW) &&
- !Flags_GetEventChkInf(EVENTCHKINF_RETURNED_TO_TEMPLE_OF_TIME_WITH_ALL_MEDALLIONS);
- ```
- */
- VB_BE_ELIGIBLE_FOR_LIGHT_ARROWS,
- // Vanilla condition: !CHECK_QUEST_ITEM(QUEST_SONG_SARIA)
- VB_BE_ELIGIBLE_FOR_SARIAS_SONG,
- // Vanilla condition: CHECK_QUEST_ITEM(QUEST_SONG_EPONA)
- VB_MALON_ALREADY_TAUGHT_EPONAS_SONG,
- // Vanilla condition: CHECK_OWNED_EQUIP(EQUIP_TYPE_BOOTS, EQUIP_INV_BOOTS_IRON) && !Flags_GetEventChkInf(EVENTCHKINF_LEARNED_SERENADE_OF_WATER)
- VB_BE_ELIGIBLE_FOR_SERENADE_OF_WATER,
- // Vanilla condition: (!CHECK_OWNED_EQUIP(EQUIP_TYPE_BOOTS, EQUIP_INV_BOOTS_IRON) && !Flags_GetEventChkInf(EVENTCHKINF_LEARNED_SERENADE_OF_WATER)) && LINK_IS_ADULT
- VB_SHIEK_PREPARE_TO_GIVE_SERENADE_OF_WATER,
- // Vanilla condition: !EVENTCHKINF_LEARNED_PRELUDE_OF_LIGHT and EVENTCHKINF_USED_FOREST_TEMPLE_BLUE_WARP
- VB_BE_ELIGIBLE_FOR_PRELUDE_OF_LIGHT,
- VB_BE_ELIGIBLE_FOR_RAINBOW_BRIDGE,
- /* Vanilla Condition:
- ```
- LINK_IS_ADULT &&
- gSaveContext.entranceIndex == ENTR_KAKARIKO_VILLAGE_FRONT_GATE &&
- Flags_GetEventChkInf(EVENTCHKINF_USED_FOREST_TEMPLE_BLUE_WARP) &&
- Flags_GetEventChkInf(EVENTCHKINF_USED_FIRE_TEMPLE_BLUE_WARP) &&
- Flags_GetEventChkInf(EVENTCHKINF_USED_WATER_TEMPLE_BLUE_WARP) &&
- !Flags_GetEventChkInf(EVENTCHKINF_BONGO_BONGO_ESCAPED_FROM_WELL);
- ```
- */
- VB_BE_ELIGIBLE_FOR_NOCTURNE_OF_SHADOW,
- // Opt: *EnGo2
- VB_GORON_LINK_BE_SCARED,
- // Vanilla condition: CUR_CAPACITY(UPG_BOMB_BAG) >= 20 && this->waypoint > 7 && this->waypoint < 12
- VB_BE_ELIGIBLE_FOR_CHILD_ROLLING_GORON_REWARD,
- // Vanilla condition: !CHECK_OWNED_EQUIP_ALT(EQUIP_TYPE_SWORD, EQUIP_INV_SWORD_BIGGORON)
- VB_BE_ELIGIBLE_FOR_GIANTS_KNIFE_PURCHASE,
- // Opt: *EnMs
- // Vanilla condition: gSaveContext.rupees >= sPrices[BEANS_BOUGHT]
- VB_BE_ELIGIBLE_FOR_MAGIC_BEANS_PURCHASE,
- // Opt: *EnItem00
- // Vanilla condition: Flags_GetCollectible(play, this->collectibleFlag)
- VB_ITEM00_DESPAWN,
- // Opt: *ItemBHeart
- // Vanilla condition: Flags_GetCollectible(play, 0x1F)
- VB_ITEM_B_HEART_DESPAWN,
- // Opt: *EnTk
- // Vanilla condition: gSaveContext.dayTime <= 0xC000 || gSaveContext.dayTime >= 0xE000 || LINK_IS_ADULT || play->sceneNum != SCENE_GRAVEYARD
- VB_DAMPE_IN_GRAVEYARD_DESPAWN,
- // Opt: *EnTk
- // Vanilla condition: this->validDigHere == 1
- VB_BE_VALID_GRAVEDIGGING_SPOT,
- // Opt: *EnTk
- // Vanilla condition: this->currentReward == 3
- VB_BE_DAMPE_GRAVEDIGGING_GRAND_PRIZE,
- // Opt: *EnTk
- // Vanilla condition: !Flags_GetItemGetInf(ITEMGETINF_1C)
- VB_DAMPE_GRAVEDIGGING_GRAND_PRIZE_BE_HEART_PIECE,
- // Opt: *EnShopnuts
- /* Vanilla Condition:
- ```
- ((this->actor.params == 0x0002) && (Flags_GetItemGetInf(ITEMGETINF_DEKU_SCRUB_HEART_PIECE))) ||
- ((this->actor.params == 0x0009) && (Flags_GetInfTable(INFTABLE_BOUGHT_STICK_UPGRADE))) ||
- ((this->actor.params == 0x000A) && (Flags_GetInfTable(INFTABLE_BOUGHT_NUT_UPGRADE)))
- ```
- */
- VB_BUSINESS_SCRUB_DESPAWN,
- // Opt: *EnCow
- // Vanilla condition: play->sceneNum == SCENE_LINKS_HOUSE && (!LINK_IS_ADULT || !Flags_GetEventChkInf(EVENTCHKINF_WON_COW_IN_MALONS_RACE))
- VB_DESPAWN_HORSE_RACE_COW,
- // Opt: *EnHs
- // Vanilla condition: Flags_GetItemGetInf(ITEMGETINF_30)
- VB_DESPAWN_GROG,
- // Opt: *EnKo
- // Vanilla condition: (INV_CONTENT(ITEM_TRADE_ADULT) == ITEM_ODD_POTION) ? true : false;
- VB_SPAWN_LW_FADO,
- // Opt: *EnMk
- VB_PLAY_EYEDROP_CREATION_ANIM,
- // Opt: *EnDs
- VB_PLAY_ODD_POTION_ANIM,
- // Opt: *EnMk
- // Vanilla condition: INV_CONTENT(ITEM_ODD_MUSHROOM) == ITEM_EYEDROPS
- VB_USE_EYEDROP_DIALOGUE,
- // Opt: *EnMk
- // Vanilla condition: Flags_GetItemGetInf(ITEMGETINF_30)
- VB_OFFER_BLUE_POTION,
- VB_GRANNY_SAY_INSUFFICIENT_RUPEES,
- VB_GRANNY_TAKE_MONEY,
- // Vanilla condition: Inventory_HasEmptyBottle() == 0
- VB_NEED_BOTTLE_FOR_GRANNYS_ITEM,
- // Opt: *EnNiwLady
- VB_SET_CUCCO_COUNT,
- // Opt: *EnKz
- // Vanilla condition: CHECK_QUEST_ITEM(QUEST_ZORA_SAPPHIRE)
- VB_KING_ZORA_THANK_CHILD,
- // Opt: *EnKz
- // Vanilla condition: this->actor.textId == 0x401A
- VB_BE_ABLE_TO_EXCHANGE_RUTOS_LETTER,
- // Opt: *EnKz
- // Vanilla condition: Flags_GetEventChkInf(EVENTCHKINF_KING_ZORA_MOVED)
- VB_KING_ZORA_BE_MOVED,
- // Opt: *EnKz,
- // Vanilla condition: CHECK_OWNED_EQUIP(EQUIP_TYPE_TUNIC, EQUIP_INV_TUNIC_ZORA)
- VB_KING_ZORA_TUNIC_CHECK,
- // Vanilla condition: gSaveState.bgsFlag
- VB_BIGGORON_CONSIDER_TRADE_COMPLETE,
- // Vanilla condition: gSaveState.bgsFlag
- VB_BIGGORON_CONSIDER_SWORD_COLLECTED,
- // Vanilla condition: Environment_GetBgsDayCount() >= 3
- VB_BIGGORON_CONSIDER_SWORD_FORGED,
- // Vanilla condition: CHECK_QUEST_ITEM(QUEST_MEDALLION_FIRE)
- VB_GORONS_CONSIDER_FIRE_TEMPLE_FINISHED,
- // Vanilla condition: CHECK_QUEST_ITEM(QUEST_GORON_RUBY)
- VB_GORONS_CONSIDER_DODONGOS_CAVERN_FINISHED,
- // Opt: *uint16_t
- // Vanilla condition: false
- VB_OVERRIDE_LINK_THE_GORON_DIALOGUE,
- // Vanilla condition: CHECK_OWNED_EQUIP(EQUIP_TYPE_TUNIC, EQUIP_INV_TUNIC_GORON)
- VB_GORONS_CONSIDER_TUNIC_COLLECTED,
- // Opt: *EnSyatekiMan
- // Vanilla condition: (this->getItemId == GI_QUIVER_40) || (this->getItemId == GI_QUIVER_50)
- VB_BE_ELIGIBLE_FOR_ADULT_SHOOTING_GAME_REWARD,
- // Opt: *EnOkarinaTag
- // Vanilla condition: !Flags_GetEventChkInf(EVENTCHKINF_OPENED_THE_DOOR_OF_TIME)
- VB_BE_ELIGIBLE_TO_OPEN_DOT,
- // Opt: *BgDyYoseizo
- // Vanilla condition: see soh/src/overlays/actors/ovl_Bg_Dy_Yoseizo/z_bg_dy_yoseizo.c
- VB_BE_ELIGIBLE_FOR_GREAT_FAIRY_REWARD,
- // Vanilla condition: see CheckCarpentersFreed in z_en_ge1 and z_en_ge2
- VB_GERUDOS_BE_FRIENDLY,
- // Vanilla condition: switch
- VB_GTG_GATE_BE_OPEN,
- // Opt: *s16 (item id)
- /* Vanilla condition:
- In one case:
- ```
- true
- ```
- In the other case:
- ```
- (i == ITEM_STICK) ||
- (i == ITEM_NUT) ||
- (i == ITEM_BOMB) ||
- (i == ITEM_BOW) ||
- (
- (i >= ITEM_BOW_ARROW_FIRE) &&
- (i <= ITEM_BOW_ARROW_LIGHT)
- ) ||
- (i == ITEM_SLINGSHOT) ||
- (i == ITEM_BOMBCHU) ||
- (i == ITEM_BEAN)
- ```
- */
- VB_DRAW_AMMO_COUNT,
- // Opt: *ObjTsubo
- VB_POT_SETUP_DRAW,
- VB_POT_DROP_ITEM,
- // Opt: *ActorDoorShutter
- VB_LOCK_BOSS_DOOR,
- // Vanilla condition: true
- VB_HAVE_OCARINA_NOTE_D4,
- // Vanilla condition: true
- VB_HAVE_OCARINA_NOTE_D5,
- // Vanilla condition: true
- VB_HAVE_OCARINA_NOTE_F4,
- // Vanilla condition: true
- VB_HAVE_OCARINA_NOTE_B4,
- // Vanilla condition: true
- VB_HAVE_OCARINA_NOTE_A4,
- // Vanilla condition: false
- VB_SKIP_SCARECROWS_SONG,
- // Vanilla condition: true
- VB_RENDER_RUPEE_COUNTER,
- // Vanilla condition: true
- VB_RENDER_KEY_COUNTER,
- // Vanilla condition: true
- VB_SPAWN_HEART_CONTAINER,
- // Vanilla condition: true
- VB_BE_ABLE_TO_OPEN_DOORS,
- // Vanilla condition: true
- VB_REVERT_SPOILING_ITEMS,
- // Vanilla condition: Flags_GetEventChkInf(EVENTCHKINF_USED_DODONGOS_CAVERN_BLUE_WARP) || BREG(2)
- VB_BE_ABLE_TO_PLAY_BOMBCHU_BOWLING,
- // Vanilla condition: true
- VB_BE_ABLE_TO_SAVE,
- // Vanilla condition: true
- VB_TRANSITION_TO_SAVE_SCREEN_ON_DEATH,
- // Vanilla condition: true
- VB_RENDER_YES_ON_CONTINUE_PROMPT,
- // Vanilla condition: CHECK_BTN_ALL(input->press.button, BTN_START)
- VB_CLOSE_PAUSE_MENU,
- VB_KALEIDO_UNPAUSE_CLOSE,
- // Vanilla condition: true
- VB_SPAWN_BLUE_WARP,
- // Vanilla condition: this->warpTimer > sWarpTimerTarget && gSaveContext.nextCutsceneIndex == 0xFFEF
- VB_BLUE_WARP_APPLY_ENTRANCE_AND_CUTSCENE,
- // Vanilla condition: SurfaceType_GetSlope(&play->colCtx, poly, bgId) == 2
- // Opt: int (original next entrance index)
- VB_SET_VOIDOUT_FROM_SURFACE,
- // Vanilla condition: this->collider.base.acFlags & 2
- VB_BG_BREAKWALL_BREAK,
- // Vanilla condition: true
- VB_GANON_HEAL_BEFORE_FIGHT,
- VB_FREEZE_LINK_FOR_BLOCK_THROW,
- VB_MOVE_THROWN_ACTOR,
- // Opt: *EnFr
- // Vanilla condition: this->reward == GI_NONE
- VB_FROGS_GO_TO_IDLE,
- // Vanilla condition: var >= gSaveContext.health) && (gSaveContext.health > 0
- VB_HEALTH_METER_BE_CRITICAL,
- VB_CONSUME_SMALL_KEY,
- // Vanilla condition: gSaveContext.inventory.dungeonKeys[gSaveContext.mapIndex] <= 0
- VB_NOT_HAVE_SMALL_KEY,
- // Vanilla condition: !Flags_GetSwitch(play, this->actor.params & 0x3F)
- VB_DOOR_BE_LOCKED,
- // Vanilla condition: ((doorActor->params >> 7) & 7) == 3
- VB_DOOR_PLAY_SCENE_TRANSITION,
-
- /*** Play Cutscenes ***/
-
- VB_PLAY_TRANSITION_CS,
- VB_PLAY_GORON_FREE_CS,
- VB_PLAY_FIRE_ARROW_CS,
- // Vanilla condition: INV_CONTENT(ITEM_ARROW_FIRE) == ITEM_NONE
- VB_SPAWN_FIRE_ARROW,
- // Opt: s32 entranceIndex
- VB_ALLOW_ENTRANCE_CS_FOR_EITHER_AGE,
- // Opt: s32 flag/EventChkInf, s32 entranceIndex
- VB_PLAY_ENTRANCE_CS,
- // Opt: *cutsceneId
- VB_PLAY_ONEPOINT_CS,
- // Opt: *actor
- VB_PLAY_ONEPOINT_ACTOR_CS,
- // Opt: *BgTreemouth
- VB_PLAY_DEKU_TREE_INTRO_CS,
- // Vanilla condition: !EventChkInf except for spirit & shadow temple which are !medallion, and Jabu which always is true
- VB_PLAY_BLUE_WARP_CS,
- VB_PLAY_DARUNIAS_JOY_CS,
- VB_PLAY_SHIEK_BLOCK_MASTER_SWORD_CS,
- // Vanilla condition: !EVENTCHKINF_PULLED_MASTER_SWORD_FROM_PEDESTAL
- VB_PLAY_PULL_MASTER_SWORD_CS,
- VB_PLAY_DROP_FISH_FOR_JABU_CS,
- // Opt: *EnKz
- VB_PLAY_MWEEP_CS,
- // Vanilla condition: player->getItemId == GI_GAUNTLETS_SILVER
- VB_PLAY_NABOORU_CAPTURED_CS,
- VB_PLAY_ZELDAS_LULLABY_CS,
- // Opt: *EnSa
- VB_PLAY_SARIAS_SONG_CS,
- VB_PLAY_PRELUDE_OF_LIGHT_CS,
- VB_PLAY_MINUET_OF_FOREST_CS,
- VB_PLAY_BOLERO_OF_FIRE_CS,
- VB_PLAY_SERENADE_OF_WATER_CS,
- VB_PLAY_EYEDROPS_CS,
- // Opt: *EnOkarinaTag
- VB_PLAY_DRAIN_WELL_CS,
- // Opt: *EnOkarinaTag
- // Vanilla condition: !CHECK_QUEST_ITEM(QUEST_SONG_SUN)
- VB_PLAY_SUNS_SONG_CS,
- // Opt: *EnOkarinaTag
- VB_PLAY_ROYAL_FAMILY_TOMB_CS,
- VB_PLAY_ROYAL_FAMILY_TOMB_EXPLODE,
- // Opt: *EnOkarinaTag
- VB_PLAY_DOOR_OF_TIME_CS,
- VB_PLAY_RAINBOW_BRIDGE_CS,
- // Opt: *EnBox
- VB_PLAY_SLOW_CHEST_CS,
- //*Opt f32 sFishOnHandLength
- // Vanilla condition: (s16)sFishingRecordLength < (s16)sFishOnHandLength
- VB_SHOULD_CHECK_FOR_FISHING_RECORD,
- //*Opt f32 sFishOnHandLength
- // Vanilla condition is implied from previous code that could be bypassed by above hook
- VB_SHOULD_SET_FISHING_RECORD,
- //*Opt *s32 getItemId
- VB_SHOULD_GIVE_VANILLA_FISHING_PRIZE,
- VB_GIVE_RANDO_FISHING_PRIZE,
- VB_PLAY_THROW_ANIMATION,
- VB_INFLICT_VOID_DAMAGE,
- // Vanilla condition: Close enough & various cutscene checks
- // Opt: *EnRu1
- VB_PLAY_CHILD_RUTO_INTRO,
- // Vanilla condition: !INFTABLE_RUTO_IN_JJ_WANTS_TO_BE_TOSSED_TO_SAPPHIRE && in the big okto room
- // Opt: *EnRu1
- VB_RUTO_WANT_TO_BE_TOSSED_TO_SAPPHIRE,
- // Vanilla condition: Landed on the platform in the big okto room
- // Opt: *EnRu1
- VB_RUTO_RUN_TO_SAPPHIRE,
- // Vanilla condition: !Flags_GetInfTable(INFTABLE_145)
- // Opt: *EnRu1
- VB_RUTO_BE_CONSIDERED_NOT_KIDNAPPED,
-
-
- /*** Give Items ***/
-
- VB_SHORT_CIRCUIT_GIVE_ITEM_PROCESS,
- VB_FREEZE_ON_SKULL_TOKEN,
- // Opt: *EnBox
- VB_GIVE_ITEM_FROM_CHEST,
- // Opt: ItemID
- VB_GIVE_ITEM_FROM_BLUE_WARP,
- // Opt: *EnItem00
- VB_GIVE_ITEM_FROM_ITEM_00,
- // Opt: *EnSi
- VB_GIVE_ITEM_SKULL_TOKEN,
- // Opt: *EnCow
- VB_GIVE_ITEM_FROM_COW,
- // Opt: *EnDns
- VB_GIVE_ITEM_FROM_BUSINESS_SCRUB,
- // Opt: *EnMk
- VB_GIVE_ITEM_FROM_LAB_DIVE,
- // Opt: *EnDs
- VB_GIVE_ITEM_FROM_GRANNYS_SHOP,
- // Opt: *EnNiwLady
- VB_GIVE_ITEM_FROM_ANJU_AS_CHILD,
- // Opt: *EnNiwLady
- VB_GIVE_ITEM_FROM_ANJU_AS_ADULT,
- // Opt: *EnGo2
- VB_GIVE_ITEM_FROM_GORON,
- // Opt: *EnGb
- VB_GIVE_ITEM_FROM_POE_COLLECTOR,
- // Opt: *EnJs
- VB_CHECK_RANDO_PRICE_OF_CARPET_SALESMAN,
- VB_GIVE_ITEM_FROM_CARPET_SALESMAN,
- VB_GIVE_BOMBCHUS_FROM_CARPET_SALESMAN,
- // Opt: *EnGm
- VB_CHECK_RANDO_PRICE_OF_MEDIGORON,
- VB_GIVE_ITEM_FROM_MEDIGORON,
- // Opt: *EnMs
- VB_GIVE_ITEM_FROM_MAGIC_BEAN_SALESMAN,
- // Opt: *EnSkj
- VB_GIVE_ITEM_FROM_OCARINA_MEMORY_GAME,
- // Opt: *EnSkj
- VB_GIVE_ITEM_FROM_SKULL_KID_SARIAS_SONG,
- VB_GIVE_ITEM_FROM_MAN_ON_ROOF,
- // Opt: *EnSyatekiMan
- VB_GIVE_ITEM_FROM_SHOOTING_GALLERY,
- // Opt: *EnExItem
- VB_GIVE_ITEM_FROM_TARGET_IN_WOODS,
- // Opt: *EnTa
- VB_GIVE_ITEM_FROM_TALONS_CHICKENS,
- // Opt: *EnDivingGame
- VB_GIVE_ITEM_FROM_DIVING_MINIGAME,
- // Opt: *EnGe1
- VB_GIVE_ITEM_FROM_HORSEBACK_ARCHERY,
- // Opt: *EnSth
- VB_GIVE_ITEM_FROM_SKULLTULA_REWARD,
- // Opt: *EnHy
- VB_GIVE_ITEM_FROM_LOST_DOG,
- // Opt: *EnBomBowlPit
- VB_GIVE_ITEM_FROM_BOMBCHU_BOWLING,
-
- VB_GIVE_ITEM_GERUDO_MEMBERSHIP_CARD,
-
- VB_GIVE_ITEM_FAIRY_OCARINA,
- VB_GIVE_ITEM_WEIRD_EGG,
- VB_GIVE_ITEM_LIGHT_ARROW,
- VB_GIVE_ITEM_STRENGTH_1,
- VB_GIVE_ITEM_ZELDAS_LETTER,
- VB_GIVE_ITEM_MASTER_SWORD,
- VB_GIVE_ITEM_OCARINA_OF_TIME,
- VB_GIVE_ITEM_KOKIRI_EMERALD,
- VB_GIVE_ITEM_GORON_RUBY,
- VB_GIVE_ITEM_ZORA_SAPPHIRE,
- VB_GIVE_ITEM_LIGHT_MEDALLION,
- VB_GIVE_ITEM_FOREST_MEDALLION,
- VB_GIVE_ITEM_FIRE_MEDALLION,
- VB_GIVE_ITEM_WATER_MEDALLION,
- VB_GIVE_ITEM_SPIRIT_MEDALLION,
- VB_GIVE_ITEM_SHADOW_MEDALLION,
-
- /*** Give Songs ***/
-
- VB_GIVE_ITEM_ZELDAS_LULLABY,
- VB_GIVE_ITEM_SARIAS_SONG,
- VB_GIVE_ITEM_EPONAS_SONG,
- VB_GIVE_ITEM_SUNS_SONG,
- VB_GIVE_ITEM_SONG_OF_TIME,
- VB_GIVE_ITEM_SONG_OF_STORMS,
- VB_GIVE_ITEM_MINUET_OF_FOREST,
- VB_GIVE_ITEM_BOLERO_OF_FIRE,
- VB_GIVE_ITEM_SERENADE_OF_WATER,
- VB_GIVE_ITEM_REQUIEM_OF_SPIRIT,
- VB_GIVE_ITEM_NOCTURNE_OF_SHADOW,
- VB_GIVE_ITEM_PRELUDE_OF_LIGHT,
-
- /*** Adult Trade ***/
- // Opt: *EnNiwLady
- VB_TRADE_POCKET_CUCCO,
- // Opt: *EnHs
- VB_TRADE_COJIRO,
- // Opt: *EnDs
- VB_TRADE_ODD_MUSHROOM,
- // Opt: *EnKo
- VB_TRADE_ODD_POTION,
- // Opt: *EnToryo
- VB_TRADE_SAW,
- // Opt: *EnKz,
- VB_ADULT_KING_ZORA_ITEM_GIVE,
- // Opt: *EnMk
- VB_TRADE_FROG,
-
- VB_TRADE_TIMER_ODD_MUSHROOM,
- VB_TRADE_TIMER_FROG,
- VB_TRADE_TIMER_EYEDROPS,
-
- /*** Fixes ***/
- // Vanilla condition: false
- VB_FIX_SAW_SOFTLOCK,
-
- /*** Cheats? ***/
- VB_DEKU_STICK_BE_ON_FIRE,
- VB_DEKU_STICK_BREAK,
- VB_DEKU_STICK_BURN_DOWN,
- VB_DEKU_STICK_BURN_OUT,
- VB_DEKU_UPDATE_BURNING_DEKU_STICK,
-
- /*** Quick Boss Deaths ***/
- // Vanilla condition: true; Opt: *BossGanondrof
- VB_PHANTOM_GANON_DEATH_SCENE,
- // Opt: *EnIk
- VB_NABOORU_KNUCKLE_DEATH_SCENE,
-
- /*** Fishsanity ***/
- // Vanilla condition: Actor is ACTOR_EN_ELF, ACTOR_EN_FISH, ACTOR_EN_ICE_HONO, or ACTOR_EN_INSECT
- // Opt: *Actor
- VB_BOTTLE_ACTOR,
-
- /*** Shuffle Fairies ***/
- // Opt: *EnElf
- VB_SPAWN_FOUNTAIN_FAIRIES,
- VB_FAIRY_HEAL,
- // Opt: *ObjBean
- VB_SPAWN_BEAN_STALK_FAIRIES,
- // Opt: *ShotSun
- VB_SPAWN_SONG_FAIRY,
- // Opt: *EnGs
- VB_SPAWN_GOSSIP_STONE_FAIRY,
-
- /*** Equippable tunics and boots ***/
- VB_CHANGE_HELD_ITEM_AND_USE_ITEM,
- VB_ITEM_ACTION_BE_NONE,
- VB_EXECUTE_PLAYER_ACTION_FUNC,
-} GIVanillaBehavior;
-
#ifdef __cplusplus
extern "C" {
#endif
diff --git a/soh/soh/Enhancements/game-interactor/vanilla-behavior/GIVanillaBehavior.h b/soh/soh/Enhancements/game-interactor/vanilla-behavior/GIVanillaBehavior.h
new file mode 100644
index 000000000..4974baf5b
--- /dev/null
+++ b/soh/soh/Enhancements/game-interactor/vanilla-behavior/GIVanillaBehavior.h
@@ -0,0 +1,1851 @@
+typedef enum {
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*EnKz`
+ VB_ADULT_KING_ZORA_ITEM_GIVE,
+
+ // #### `result`
+ // ```c
+ // requiredAge == 2
+ // ```
+ // #### `args`
+ // - `int32_t` (entrance index) (promoted from `uint16_t` by va_arg)
+ VB_ALLOW_ENTRANCE_CS_FOR_EITHER_AGE,
+
+ // #### `result`
+ // ```c
+ // this->actor.textId == 0x401A
+ // ```
+ // #### `args`
+ // - `*EnKz`
+ VB_BE_ABLE_TO_EXCHANGE_RUTOS_LETTER,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_BE_ABLE_TO_OPEN_DOORS,
+
+ // #### `result`
+ // ```c
+ // (Flags_GetEventChkInf(EVENTCHKINF_USED_DODONGOS_CAVERN_BLUE_WARP)) || BREG(2)
+ // ```
+ // #### `args`
+ // - None
+ VB_BE_ABLE_TO_PLAY_BOMBCHU_BOWLING,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_BE_ABLE_TO_SAVE,
+
+ // #### `result`
+ // ```c
+ // this->currentReward == 3
+ // ```
+ // #### `args`
+ // - `*EnTk`
+ VB_BE_DAMPE_GRAVEDIGGING_GRAND_PRIZE,
+
+ // #### `result`
+ // ```c
+ // (this->getItemId == GI_QUIVER_40) || (this->getItemId == GI_QUIVER_50)
+ // ```
+ // #### `args`
+ // - `*EnSyatekiMan`
+ VB_BE_ELIGIBLE_FOR_ADULT_SHOOTING_GAME_REWARD,
+
+ // #### `result`
+ // ```c
+ // CUR_CAPACITY(UPG_BOMB_BAG) >= 20
+ // ```
+ // #### `args`
+ // - `*EnGo2`
+ VB_BE_ELIGIBLE_FOR_CHILD_ROLLING_GORON_REWARD,
+
+ // #### `result`
+ // ```c
+ // CUR_UPG_VALUE(UPG_STRENGTH) <= 0
+ // ```
+ // #### `args`
+ // - None
+ VB_BE_ELIGIBLE_FOR_DARUNIAS_JOY_REWARD,
+
+ // #### `result`
+ // ```c
+ // !CHECK_OWNED_EQUIP_ALT(EQUIP_TYPE_SWORD, EQUIP_INV_SWORD_BIGGORON)
+ // ```
+ // #### `args`
+ // - None
+ VB_BE_ELIGIBLE_FOR_GIANTS_KNIFE_PURCHASE,
+
+ // #### `result`
+ // See `isEligible` logic in
+ // ```c
+ // BgDyYoseizo_CheckMagicAcquired()
+ // ```
+ // #### `args`
+ // - `*BgDyYoseizo`
+ VB_BE_ELIGIBLE_FOR_GREAT_FAIRY_REWARD,
+
+ // #### `result`
+ // ```c
+ // CHECK_QUEST_ITEM(QUEST_MEDALLION_SPIRIT) &&
+ // CHECK_QUEST_ITEM(QUEST_MEDALLION_SHADOW) &&
+ // LINK_IS_ADULT &&
+ // !Flags_GetEventChkInf(EVENTCHKINF_RETURNED_TO_TEMPLE_OF_TIME_WITH_ALL_MEDALLIONS) &&
+ // (gEntranceTable[((void)0, gSaveContext.entranceIndex)].scene == SCENE_TEMPLE_OF_TIME)
+ // ```
+ // #### `args`
+ // - None
+ VB_BE_ELIGIBLE_FOR_LIGHT_ARROWS,
+
+ // #### `result`
+ // ```c
+ // gSaveContext.rupees >= sPrices[BEANS_BOUGHT]
+ // ```
+ // #### `args`
+ // - `*EnMs`
+ VB_BE_ELIGIBLE_FOR_MAGIC_BEANS_PURCHASE,
+
+ // #### `result`
+ // ```c
+ // (gSaveContext.entranceIndex == ENTR_KAKARIKO_VILLAGE_FRONT_GATE) &&
+ // LINK_IS_ADULT &&
+ // Flags_GetEventChkInf(EVENTCHKINF_USED_FOREST_TEMPLE_BLUE_WARP) &&
+ // Flags_GetEventChkInf(EVENTCHKINF_USED_FIRE_TEMPLE_BLUE_WARP) &&
+ // Flags_GetEventChkInf(EVENTCHKINF_USED_WATER_TEMPLE_BLUE_WARP) &&
+ // !Flags_GetEventChkInf(EVENTCHKINF_BONGO_BONGO_ESCAPED_FROM_WELL)
+ // ```
+ // #### `args`
+ // - None
+ VB_BE_ELIGIBLE_FOR_NOCTURNE_OF_SHADOW,
+
+ // #### `result`
+ // ```c
+ // !Flags_GetEventChkInf(EVENTCHKINF_LEARNED_PRELUDE_OF_LIGHT) && Flags_GetEventChkInf(EVENTCHKINF_USED_FOREST_TEMPLE_BLUE_WARP)
+ // ```
+ // #### `args`
+ // - None
+ VB_BE_ELIGIBLE_FOR_PRELUDE_OF_LIGHT,
+
+ // #### `result`
+ // ```c
+ // CHECK_QUEST_ITEM(QUEST_MEDALLION_SPIRIT) &&
+ // CHECK_QUEST_ITEM(QUEST_MEDALLION_SHADOW) &&
+ // (INV_CONTENT(ITEM_ARROW_LIGHT) == ITEM_ARROW_LIGHT) &&
+ // CheckPlayerPosition(player, play)
+ // ```
+ // #### `args`
+ // - None
+ VB_BE_ELIGIBLE_FOR_RAINBOW_BRIDGE,
+
+ // #### `result`
+ // ```c
+ // !CHECK_QUEST_ITEM(QUEST_SONG_SARIA)
+ // ```
+ // #### `args`
+ // - None
+ VB_BE_ELIGIBLE_FOR_SARIAS_SONG,
+
+ // #### `result`
+ // ```c
+ // CHECK_OWNED_EQUIP(EQUIP_TYPE_BOOTS, EQUIP_INV_BOOTS_IRON) && !Flags_GetEventChkInf(EVENTCHKINF_LEARNED_SERENADE_OF_WATER)
+ // ```
+ // #### `args`
+ // - None
+ VB_BE_ELIGIBLE_FOR_SERENADE_OF_WATER,
+
+ // #### `result`
+ // ```c
+ // !Flags_GetEventChkInf(EVENTCHKINF_OPENED_THE_DOOR_OF_TIME)
+ // ```
+ // #### `args`
+ // - `*EnOkarinaTag`
+ VB_BE_ELIGIBLE_TO_OPEN_DOT,
+
+ // #### `result`
+ // ```c
+ // this->validDigHere == 1
+ // ```
+ // #### `args`
+ // - `*EnTk`
+ VB_BE_VALID_GRAVEDIGGING_SPOT,
+
+ // #### `result`
+ // ```c
+ // this->collider.base.acFlags & 2 || blueFireArrowHit
+ // ```
+ // #### `args`
+ // - None
+ VB_BG_BREAKWALL_BREAK,
+
+ // #### `result`
+ // ```c
+ // gSaveContext.bgsFlag
+ // ```
+ // #### `args`
+ // - None
+ VB_BIGGORON_CONSIDER_SWORD_COLLECTED,
+
+ // #### `result`
+ // ```c
+ // Environment_GetBgsDayCount() >= 3
+ // ```
+ // #### `args`
+ // - None
+ VB_BIGGORON_CONSIDER_SWORD_FORGED,
+
+ // #### `result`
+ // ```c
+ // gSaveContext.bgsFlag
+ // ```
+ // #### `args`
+ // - None
+ VB_BIGGORON_CONSIDER_TRADE_COMPLETE,
+
+ // # UNUSED
+ VB_BLUE_WARP_APPLY_ENTRANCE_AND_CUTSCENE,
+
+ // #### `result`
+ // Actor is ACTOR_EN_ELF, ACTOR_EN_FISH, ACTOR_EN_ICE_HONO, or ACTOR_EN_INSECT
+ // ```c
+ // i < ARRAY_COUNT(sBottleCatchInfo)
+ // ```
+ // #### `args`
+ // - `*Actor` (interactRangeActor)
+ VB_BOTTLE_ACTOR,
+
+ // #### `result`
+ // ```c
+ // ((this->actor.params == DNS_TYPE_HEART_PIECE) && (Flags_GetItemGetInf(ITEMGETINF_DEKU_SCRUB_HEART_PIECE))) ||
+ // ((this->actor.params == DNS_TYPE_DEKU_STICK_UPGRADE) && (Flags_GetInfTable(INFTABLE_BOUGHT_STICK_UPGRADE))) ||
+ // ((this->actor.params == DNS_TYPE_DEKU_NUT_UPGRADE) && (Flags_GetInfTable(INFTABLE_BOUGHT_NUT_UPGRADE)))
+ // ```
+ // #### `args`
+ // - `*EnShopnuts`
+ VB_BUSINESS_SCRUB_DESPAWN,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `int32_t` (item)
+ VB_CHANGE_HELD_ITEM_AND_USE_ITEM,
+
+ // #### `result`
+ // ```c
+ // gSaveContext.rupees < 200
+ // ```
+ // #### `args`
+ // - `*EnJs`
+ VB_CHECK_RANDO_PRICE_OF_CARPET_SALESMAN,
+
+ // #### `result`
+ // ```c
+ // gSaveContext.rupees < 200
+ // ```
+ // #### `args`
+ // - `*EnGm`
+ VB_CHECK_RANDO_PRICE_OF_MEDIGORON,
+
+ // #### `result`
+ // ```c
+ // CHECK_BTN_ALL(input->press.button, BTN_START)
+ // ```
+ // #### `args`
+ // - None
+ VB_CLOSE_PAUSE_MENU,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*EnDoor`
+ VB_CONSUME_SMALL_KEY,
+
+ // #### `result`
+ // ```c
+ // !Flags_GetItemGetInf(ITEMGETINF_1C)
+ // ```
+ // #### `args`
+ // - `*EnTk`
+ VB_DAMPE_GRAVEDIGGING_GRAND_PRIZE_BE_HEART_PIECE,
+
+ // #### `result`
+ // ```c
+ // gSaveContext.dayTime <= 0xC000 || gSaveContext.dayTime >= 0xE000 || LINK_IS_ADULT || play->sceneNum != SCENE_GRAVEYARD
+ // ```
+ // #### `args`
+ // - `*EnTk`
+ VB_DAMPE_IN_GRAVEYARD_DESPAWN,
+
+ // #### `result`
+ // ```c
+ // CHECK_QUEST_ITEM(QUEST_MEDALLION_FOREST)
+ // ```
+ // #### `args`
+ // - `*ObjDekujr`
+ VB_DEKU_JR_CONSIDER_FOREST_TEMPLE_FINISHED,
+
+ // #### `result`
+ // ```c
+ // this->unk_860 != 0
+ // ```
+ // #### `args`
+ // - None
+ VB_DEKU_STICK_BE_ON_FIRE,
+
+ // #### `result`
+ // ```c
+ // AMMO(ITEM_STICK) != 0
+ // ```
+ // #### `args`
+ // - None
+ VB_DEKU_STICK_BREAK,
+
+ // #### `result`
+ // ```c
+ // this->unk_860 < 20
+ // ```
+ // #### `args`
+ // - None
+ VB_DEKU_STICK_BURN_DOWN,
+
+ // #### `result`
+ // ##### In `Player_UpdateBurningDekuStick`
+ // ```c
+ // this->unk_85C == 0.0f
+ // ```
+ // ##### Also in `Player_UpdateBurningDekuStick`
+ // ```c
+ // DECR(this->unk_860) == 0;
+ // ```
+ // #### `args`
+ // - None
+ VB_DEKU_STICK_BURN_OUT,
+
+ // # UNUSED
+ VB_DEKU_UPDATE_BURNING_DEKU_STICK,
+
+ // #### `result`
+ // ```c
+ // Flags_GetItemGetInf(ITEMGETINF_30)
+ // ```
+ // #### `args`
+ // - `*EnHs`
+ VB_DESPAWN_GROG,
+
+ // #### `result`
+ // ```c
+ // play->sceneNum == SCENE_LINKS_HOUSE && (!LINK_IS_ADULT || !Flags_GetEventChkInf(EVENTCHKINF_WON_COW_IN_MALONS_RACE)
+ // ```
+ // #### `args`
+ // - `*EnCow`
+ VB_DESPAWN_HORSE_RACE_COW,
+
+ // #### `result`
+ // ```c
+ // !Flags_GetSwitch(play, this->actor.params & 0x3F)
+ // ```
+ // #### `args`
+ // - `*EnDoor`
+ VB_DOOR_BE_LOCKED,
+
+ // #### `result`
+ // ```c
+ // ((doorActor->params >> 7) & 7) == 3
+ // ```
+ // #### `args`
+ // - `*Actor`
+ VB_DOOR_PLAY_SCENE_TRANSITION,
+
+ // #### `result`
+ // In `Interface_DrawAmmoCount`:
+ // ```c
+ // (i == ITEM_STICK) ||
+ // (i == ITEM_NUT) ||
+ // (i == ITEM_BOMB) ||
+ // (i == ITEM_BOW) ||
+ // (
+ // (i >= ITEM_BOW_ARROW_FIRE) &&
+ // (i <= ITEM_BOW_ARROW_LIGHT)
+ // ) ||
+ // (i == ITEM_SLINGSHOT) ||
+ // (i == ITEM_BOMBCHU) ||
+ // (i == ITEM_BEAN)
+ // ```
+ // In `KaleidoScope_DrawAmmoCount`:
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*int16_t` (item id)
+ VB_DRAW_AMMO_COUNT,
+
+ // #### `result`
+ // ```c
+ // !(this->stateFlags3 & PLAYER_STATE3_PAUSE_ACTION_FUNC)
+ // ```
+ // #### `args`
+ // - `*Input`
+ VB_EXECUTE_PLAYER_ACTION_FUNC,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*EnElf`
+ VB_FAIRY_HEAL,
+
+ // #### `result`
+ // ```c
+ // false
+ // ```
+ // #### `args`
+ // - None
+ VB_FIX_SAW_SOFTLOCK,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*BgHeavyBlock`
+ VB_FREEZE_LINK_FOR_BLOCK_THROW,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_FREEZE_ON_SKULL_TOKEN,
+
+ // #### `result`
+ // ```c
+ // this->reward == GI_NONE
+ // ```
+ // #### `args`
+ // - `*EnFr`
+ VB_FROGS_GO_TO_IDLE,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_GANON_HEAL_BEFORE_FIGHT,
+
+ // #### `result`
+ // See logic in
+ // ```c
+ // EnGe1_CheckCarpentersFreed()
+ // ```
+ // and
+ // ```c
+ // EnGe2_CheckCarpentersFreed()
+ // ```
+ // #### `args`
+ // - None
+ VB_GERUDOS_BE_FRIENDLY,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*EnJs`
+ VB_GIVE_BOMBCHUS_FROM_CARPET_SALESMAN,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_GIVE_ITEM_BOLERO_OF_FIRE,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_GIVE_ITEM_EPONAS_SONG,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_GIVE_ITEM_FAIRY_OCARINA,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_GIVE_ITEM_FIRE_MEDALLION,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_GIVE_ITEM_FOREST_MEDALLION,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*EnNiwLady`
+ VB_GIVE_ITEM_FROM_ANJU_AS_ADULT,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*EnNiwLady`
+ VB_GIVE_ITEM_FROM_ANJU_AS_CHILD,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `int32_t` (ItemID)
+ VB_GIVE_ITEM_FROM_BLUE_WARP,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*EnBomBowlPit`
+ VB_GIVE_ITEM_FROM_BOMBCHU_BOWLING,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*EnDns`
+ VB_GIVE_ITEM_FROM_BUSINESS_SCRUB,
+
+ // #### `result`
+ // ```c
+ // false
+ // ```
+ // #### `args`
+ // - `*EnJs`
+ VB_GIVE_ITEM_FROM_CARPET_SALESMAN,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*EnBox`
+ VB_GIVE_ITEM_FROM_CHEST,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*EnCow`
+ VB_GIVE_ITEM_FROM_COW,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*Actor` (EnDivingGame - &this->actor)
+ VB_GIVE_ITEM_FROM_DIVING_MINIGAME,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // ##### In `EnGo2_GetItem`
+ // - `*EnGo2`
+ // ##### Everywhere else
+ // - None
+ VB_GIVE_ITEM_FROM_GORON,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*EnDs`
+ VB_GIVE_ITEM_FROM_GRANNYS_SHOP,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*EnGe1`
+ VB_GIVE_ITEM_FROM_HORSEBACK_ARCHERY,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*EnItem00`
+ VB_GIVE_ITEM_FROM_ITEM_00,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*EnMk`
+ VB_GIVE_ITEM_FROM_LAB_DIVE,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*EnHy`
+ VB_GIVE_ITEM_FROM_LOST_DOG,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*EnMs`
+ VB_GIVE_ITEM_FROM_MAGIC_BEAN_SALESMAN,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_GIVE_ITEM_FROM_MAN_ON_ROOF,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*EnGm`
+ VB_GIVE_ITEM_FROM_MEDIGORON,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*EnSkj`
+ VB_GIVE_ITEM_FROM_OCARINA_MEMORY_GAME,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*EnGb`
+ VB_GIVE_ITEM_FROM_POE_COLLECTOR,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*EnSyatekiMan`
+ VB_GIVE_ITEM_FROM_SHOOTING_GALLERY,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*EnSkj`
+ VB_GIVE_ITEM_FROM_SKULL_KID_SARIAS_SONG,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*EnSth`
+ VB_GIVE_ITEM_FROM_SKULLTULA_REWARD,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*Actor` (EnTa - &this->actor)
+ VB_GIVE_ITEM_FROM_TALONS_CHICKENS,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*Actor` (EnExItem - &this->actor)
+ VB_GIVE_ITEM_FROM_TARGET_IN_WOODS,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_GIVE_ITEM_GERUDO_MEMBERSHIP_CARD,
+
+ // # UNUSED
+ VB_GIVE_ITEM_GORON_RUBY,
+
+ // # UNUSED
+ VB_GIVE_ITEM_KOKIRI_EMERALD,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_GIVE_ITEM_LIGHT_ARROW,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_GIVE_ITEM_LIGHT_MEDALLION,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_GIVE_ITEM_MASTER_SWORD,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_GIVE_ITEM_MINUET_OF_FOREST,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_GIVE_ITEM_NOCTURNE_OF_SHADOW,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_GIVE_ITEM_OCARINA_OF_TIME,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_GIVE_ITEM_PRELUDE_OF_LIGHT,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_GIVE_ITEM_REQUIEM_OF_SPIRIT,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_GIVE_ITEM_SARIAS_SONG,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_GIVE_ITEM_SERENADE_OF_WATER,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_GIVE_ITEM_SHADOW_MEDALLION,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*EnSi`
+ VB_GIVE_ITEM_SKULL_TOKEN,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_GIVE_ITEM_SONG_OF_STORMS,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_GIVE_ITEM_SONG_OF_TIME,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_GIVE_ITEM_SPIRIT_MEDALLION,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_GIVE_ITEM_STRENGTH_1,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_GIVE_ITEM_SUNS_SONG,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_GIVE_ITEM_WATER_MEDALLION,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_GIVE_ITEM_WEIRD_EGG,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_GIVE_ITEM_ZELDAS_LETTER,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_GIVE_ITEM_ZELDAS_LULLABY,
+
+ // # UNUSED
+ VB_GIVE_ITEM_ZORA_SAPPHIRE,
+
+ // #### `result`
+ // ```c
+ // false
+ // ```
+ // #### `args`
+ // - `*VBFishingData`
+ VB_GIVE_RANDO_FISHING_PRIZE,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*EnGo2`
+ VB_GORON_LINK_BE_SCARED,
+
+ // #### `result`
+ // ```c
+ // CHECK_QUEST_ITEM(QUEST_GORON_RUBY)
+ // ```
+ // #### `args`
+ // - None
+ VB_GORONS_CONSIDER_DODONGOS_CAVERN_FINISHED,
+
+ // #### `result`
+ // ```c
+ // CHECK_QUEST_ITEM(QUEST_MEDALLION_FIRE)
+ // ```
+ // #### `args`
+ // - None
+ VB_GORONS_CONSIDER_FIRE_TEMPLE_FINISHED,
+
+ // #### `result`
+ // ```c
+ // CHECK_OWNED_EQUIP(EQUIP_TYPE_TUNIC, EQUIP_INV_TUNIC_GORON)
+ // ```
+ // #### `args`
+ // - None
+ VB_GORONS_CONSIDER_TUNIC_COLLECTED,
+
+ // #### `result`
+ // ```c
+ // gSaveContext.rupees < 100
+ // ```
+ // #### `args`
+ // - `NULL`
+ VB_GRANNY_SAY_INSUFFICIENT_RUPEES,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*EnDs`
+ VB_GRANNY_TAKE_MONEY,
+
+ // #### `result`
+ // ```c
+ // Flags_GetSwitch(play, this->dyna.actor.params & 0x3F)
+ // ```
+ // #### `args`
+ // - None
+ VB_GTG_GATE_BE_OPEN,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_HAVE_OCARINA_NOTE_A4,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_HAVE_OCARINA_NOTE_B4,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_HAVE_OCARINA_NOTE_D4,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_HAVE_OCARINA_NOTE_D5,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_HAVE_OCARINA_NOTE_F4,
+
+ // #### `result`
+ // ```c
+ // var >= gSaveContext.health && gSaveContext.health > 0
+ // ```
+ // #### `args`
+ // - None
+ VB_HEALTH_METER_BE_CRITICAL,
+
+ // #### `result`
+ // ```c
+ // (respawnFlag == 1) || (respawnFlag == -1)
+ // ```
+ // #### `args`
+ // - `int32_t` (respawnFlag)
+ VB_INFLICT_VOID_DAMAGE,
+
+ // #### `result`
+ // ```c
+ // item >= ITEM_NONE_FE
+ // ```
+ // #### `args`
+ // - `int32_t` (item)
+ VB_ITEM_ACTION_BE_NONE,
+
+ // #### `result`
+ // ```c
+ // Flags_GetCollectible(play, 0x1F)
+ // ```
+ // #### `args`
+ // - `*ItemBHeart`
+ VB_ITEM_B_HEART_DESPAWN,
+
+ // #### `result`
+ // ```c
+ // Flags_GetCollectible(play, this->collectibleFlag)
+ // ```
+ // #### `args`
+ // - `*EnItem00`
+ VB_ITEM00_DESPAWN,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_KALEIDO_UNPAUSE_CLOSE,
+
+ // #### `result`
+ // ```c
+ // Flags_GetEventChkInf(EVENTCHKINF_KING_ZORA_MOVED)
+ // ```
+ // #### `args`
+ // - `*EnKz`
+ VB_KING_ZORA_BE_MOVED,
+
+ // #### `result`
+ // ```c
+ // CHECK_QUEST_ITEM(QUEST_ZORA_SAPPHIRE)
+ // ```
+ // #### `args`
+ // - `*EnKz`
+ VB_KING_ZORA_THANK_CHILD,
+
+ // #### `result`
+ // ```c
+ // CHECK_OWNED_EQUIP(EQUIP_TYPE_TUNIC, EQUIP_INV_TUNIC_ZORA)
+ // ```
+ // #### `args`
+ // - `*EnKz`
+ VB_KING_ZORA_TUNIC_CHECK,
+
+ // #### `result`
+ // ```c
+ // !Flags_GetSwitch(play, this->dyna.actor.params & 0x3F)
+ // ```
+ // #### `args`
+ // - `*DoorShutter`
+ VB_LOCK_BOSS_DOOR,
+
+ // #### `result`
+ // ```c
+ // CHECK_QUEST_ITEM(QUEST_SONG_EPONA)
+ // ```
+ // #### `args`
+ // - None
+ VB_MALON_ALREADY_TAUGHT_EPONAS_SONG,
+
+ // #### `result`
+ // ```c
+ // Flags_GetEventChkInf(EVENTCHKINF_TALON_RETURNED_FROM_CASTLE)
+ // ```
+ // #### `args`
+ // - None
+ VB_MALON_RETURN_FROM_CASTLE,
+
+ // #### `result`
+ // ```c
+ // CHECK_QUEST_ITEM(QUEST_KOKIRI_EMERALD)
+ // ```
+ // #### `args`
+ // - `*EnMd`
+ VB_MIDO_CONSIDER_DEKU_TREE_DEAD,
+
+ // #### `result`
+ // ```c
+ // EnMd_ShouldSpawn(this, play)
+ // ```
+ // #### `args`
+ // - `*EnMd`
+ VB_MIDO_SPAWN,
+
+ // #### `result`
+ // ```c
+ // this->interactInfo.talkState == NPC_TALK_STATE_ACTION
+ // ```
+ // #### `args`
+ // - `*EnMd`
+ //
+ // ### Note:
+ // When overriding this, ensure you're not in the intro cutscene as Mido's path has not been loaded
+ VB_MOVE_MIDO_IN_KOKIRI_FOREST,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*Actor`
+ VB_MOVE_THROWN_ACTOR,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*EnIk`
+ VB_NABOORU_KNUCKLE_DEATH_SCENE,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*ElfMsg`
+ VB_NAVI_TALK,
+
+ // #### `result`
+ // ```c
+ // Inventory_HasEmptyBottle() == 0
+ // ```
+ // #### `args`
+ // - None
+ VB_NEED_BOTTLE_FOR_GRANNYS_ITEM,
+
+ // #### `result`
+ // ```c
+ // Flags_GetInfTable(INFTABLE_GREETED_BY_SARIA)
+ // ```
+ // #### `args`
+ // - None
+ VB_NOT_BE_GREETED_BY_SARIA,
+
+ // #### `result`
+ // ```c
+ // gSaveContext.inventory.dungeonKeys[gSaveContext.mapIndex] <= 0
+ // ```
+ // #### `args`
+ // - `*EnDoor`
+ VB_NOT_HAVE_SMALL_KEY,
+
+ // #### `result`
+ // ```c
+ // Flags_GetItemGetInf(ITEMGETINF_30)
+ // ```
+ // #### `args`
+ // - `*EnDs`
+ VB_OFFER_BLUE_POTION,
+
+ // #### `result`
+ // ```c
+ // CHECK_QUEST_ITEM(QUEST_KOKIRI_EMERALD)
+ // ```
+ // #### `args`
+ // - `*EnKo`
+ VB_OPEN_KOKIRI_FOREST,
+
+ // #### `result`
+ // ```c
+ // false
+ // ```
+ // #### `args`
+ // - `*uint16_t` (overrideTextId)
+ VB_OVERRIDE_LINK_THE_GORON_DIALOGUE,
+
+ // #### `result`
+ // ```c
+ // this->actor.xzDistToPlayer < targetDist
+ // ```
+ // #### `args`
+ // - `*EnOwl`
+ VB_OWL_INTERACTION,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*BossGanondrof`
+ VB_PHANTOM_GANON_DEATH_SCENE,
+
+ // #### `result`
+ // ##### In `DoorWarp1_ChildWarpOut` - `SCENE_DODONGOS_CAVERN_BOSS`
+ // ```c
+ // !Flags_GetEventChkInf(EVENTCHKINF_USED_DODONGOS_CAVERN_BLUE_WARP)
+ // ```
+ // ##### In `DoorWarp1_ChildWarpOut` - `SCENE_DEKU_TREE_BOSS`
+ // ```c
+ // !Flags_GetEventChkInf(EVENTCHKINF_OBTAINED_KOKIRI_EMERALD_DEKU_TREE_DEAD)
+ // ```
+ // ##### In `DoorWarp1_RutoWarpOut`
+ // ```c
+ // true
+ // ```
+ // ##### In `DoorWarp1_AdultWarpOut` - `SCENE_FOREST_TEMPLE_BOSS`
+ // ```c
+ // !Flags_GetEventChkInf(EVENTCHKINF_USED_FOREST_TEMPLE_BLUE_WARP)
+ // ```
+ // ##### In `DoorWarp1_AdultWarpOut` - `SCENE_FIRE_TEMPLE_BOSS`
+ // ```c
+ // !Flags_GetEventChkInf(EVENTCHKINF_USED_FIRE_TEMPLE_BLUE_WARP)
+ // ```
+ // ##### In `DoorWarp1_AdultWarpOut` - `SCENE_WATER_TEMPLE_BOSS`
+ // ```c
+ // !Flags_GetEventChkInf(EVENTCHKINF_USED_WATER_TEMPLE_BLUE_WARP)
+ // ```
+ // ##### In `DoorWarp1_AdultWarpOut` - `SCENE_SPIRIT_TEMPLE_BOSS`
+ // ```c
+ // !CHECK_QUEST_ITEM(QUEST_MEDALLION_SPIRIT)
+ // ```
+ // ##### In `DoorWarp1_AdultWarpOut` - `SCENE_SHADOW_TEMPLE_BOSS`
+ // ```c
+ // !CHECK_QUEST_ITEM(QUEST_MEDALLION_SHADOW)
+ // ```
+ // #### `args`
+ // - `int32_t` (EVENTCHKINF / RAND_INF_DUNGEONS_DONE)
+ VB_PLAY_BLUE_WARP_CS,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_PLAY_BOLERO_OF_FIRE_CS,
+
+ // #### `result`
+ // Close enough & various cutscene checks
+ // ```c
+ // (func_80AEC5FC(this, play)) && (!Play_InCsMode(play)) &&
+ // (!(player->stateFlags1 & (PLAYER_STATE1_HANGING_OFF_LEDGE | PLAYER_STATE1_CLIMBING_LEDGE | PLAYER_STATE1_CLIMBING_LADDER))) &&
+ // (player->actor.bgCheckFlags & 1)
+ // ```
+ // #### `args`
+ // - `*EnRu1`
+ VB_PLAY_CHILD_RUTO_INTRO,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_PLAY_DARUNIAS_JOY_CS,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*BgTreemouth`
+ VB_PLAY_DEKU_TREE_INTRO_CS,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*EnOkarinaTag`
+ VB_PLAY_DOOR_OF_TIME_CS,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*EnOkarinaTag`
+ VB_PLAY_DRAIN_WELL_CS,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_PLAY_DROP_FISH_FOR_JABU_CS,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // ##### In `z_demo.c`:
+ // - `int32_t` (entranceCutscene->flag) (promoted from `uint8_t` by va_arg)
+ // - `int32_t` (entranceCutscene->entrance) (promoted from `uint16_t` by va_arg)
+ // ##### In `z_bg_breakwall.c` and `z_bg_toki_swd.c`:
+ // - `int32_t` (EVENTCHKINF)
+ // - `int32_t` (gSaveContext.entranceIndex)
+ VB_PLAY_ENTRANCE_CS,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // ##### When called from `z_en_ds.c`
+ // - `*EnDs`
+ // ##### When called from `z_en_mk.c`
+ // - `*EnMk`
+ VB_PLAY_EYEDROP_CREATION_ANIM,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_PLAY_EYEDROPS_CS,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_PLAY_FIRE_ARROW_CS,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_PLAY_GORON_FREE_CS,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_PLAY_MINUET_OF_FOREST_CS,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_PLAY_MWEEP_CS,
+
+ // #### `result`
+ // ```c
+ // this->getItemId == GI_GAUNTLETS_SILVER
+ // ```
+ // #### `args`
+ // - None
+ VB_PLAY_NABOORU_CAPTURED_CS,
+
+ // # UNUSED
+ VB_PLAY_ODD_POTION_ANIM,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*Actor`
+ VB_PLAY_ONEPOINT_ACTOR_CS,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*int16_t` (cutscene id)
+ VB_PLAY_ONEPOINT_CS,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_PLAY_PRELUDE_OF_LIGHT_CS,
+
+ // #### `result`
+ // ##### In `z_demo.c` - `Cutscene_Command_Terminator` (setting `shouldSkipCommand`)
+ // ```c
+ // true
+ // ```
+ // ##### In `z_demo.c` - `Cutscene_Command_Terminator` (inside if block and switch)
+ // ```c
+ // !Flags_GetEventChkInf(EVENTCHKINF_PULLED_MASTER_SWORD_FROM_PEDESTAL)
+ // ```
+ // #### `args`
+ // - None
+ VB_PLAY_PULL_MASTER_SWORD_CS,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_PLAY_RAINBOW_BRIDGE_CS,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*EnOkarinaTag`
+ VB_PLAY_ROYAL_FAMILY_TOMB_CS,
+
+ // #### `result`
+ // ```c
+ // play->csCtx.state != 0 && play->csCtx.npcActions[3] != NULL && play->csCtx.npcActions[3]->action == 2
+ // ```
+ // #### `args`
+ // - `*BgSpot02Objects`
+ VB_PLAY_ROYAL_FAMILY_TOMB_EXPLODE,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*EnSa`
+ VB_PLAY_SARIAS_SONG_CS,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_PLAY_SERENADE_OF_WATER_CS,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_PLAY_SHIEK_BLOCK_MASTER_SWORD_CS,
+
+ // #### `result`
+ // ```c
+ // (giEntry.itemId != ITEM_NONE) && (giEntry.gi >= 0) && (Item_CheckObtainability(giEntry.itemId) == ITEM_NONE)
+ // ```
+ // #### `args`
+ // - `*EnBox`
+ VB_PLAY_SLOW_CHEST_CS,
+
+ // #### `result`
+ // ```c
+ // !CHECK_QUEST_ITEM(QUEST_SONG_SUN)
+ // ```
+ // #### `args`
+ // - `*EnOkarinaTag`
+ VB_PLAY_SUNS_SONG_CS,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*LinkAnimationHeader`
+ VB_PLAY_THROW_ANIMATION,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_PLAY_TRANSITION_CS,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*DemoIm`
+ VB_PLAY_ZELDAS_LULLABY_CS,
+
+ // #### `result`
+ // ```c
+ // (dropParams >= ITEM00_RUPEE_GREEN) && (dropParams <= ITEM00_BOMBS_SPECIAL)
+ // ```
+ // #### `args`
+ // - `*ObjTsubo`
+ VB_POT_DROP_ITEM,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*ObjTsubo`
+ VB_POT_SETUP_DRAW,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_RENDER_KEY_COUNTER,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_RENDER_RUPEE_COUNTER,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `**Gfx` (`&POLY_KAL_DISP`)
+ VB_RENDER_YES_ON_CONTINUE_PROMPT,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_REVERT_SPOILING_ITEMS,
+
+ // #### `result`
+ // ```c
+ // !Flags_GetInfTable(INFTABLE_145)
+ // ```
+ // #### `args`
+ // - `*EnRu1`
+ VB_RUTO_BE_CONSIDERED_NOT_KIDNAPPED,
+
+ // #### `result`
+ // Landed on the platform in the big okto room
+ // ```c
+ // dynaPolyActor != NULL && dynaPolyActor->actor.id == ACTOR_BG_BDAN_OBJECTS &&
+ // dynaPolyActor->actor.params == 0 && !Player_InCsMode(play) && play->msgCtx.msgLength == 0
+ // ```
+ // #### `args`
+ // - `*EnRu1`
+ // - `*DynaPolyActor`
+ VB_RUTO_RUN_TO_SAPPHIRE,
+
+ // #### `result`
+ // in the big okto room and flag
+ // ```c
+ // !Flags_GetInfTable(INFTABLE_RUTO_IN_JJ_WANTS_TO_BE_TOSSED_TO_SAPPHIRE) && (func_80AEB124(play) != 0)
+ // ```
+ // #### `args`
+ // - `*EnRu1`
+ VB_RUTO_WANT_TO_BE_TOSSED_TO_SAPPHIRE,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*EnNiwLady`
+ VB_SET_CUCCO_COUNT,
+
+ // #### `result`
+ // ```c
+ // SurfaceType_GetSlope(&play->colCtx, poly, bgId) == 2
+ // ```
+ // #### `args`
+ // - `*int16_t` - original next entrance index (`play->setupExitList[exitIndex - 1]`)
+ VB_SET_VOIDOUT_FROM_SURFACE,
+
+ // #### `result`
+ // ```c
+ // (!CHECK_OWNED_EQUIP(EQUIP_TYPE_BOOTS, EQUIP_INV_BOOTS_IRON) && !Flags_GetEventChkInf(EVENTCHKINF_LEARNED_SERENADE_OF_WATER)) && LINK_IS_ADULT
+ // ```
+ // #### `args`
+ // - None
+ VB_SHIEK_PREPARE_TO_GIVE_SERENADE_OF_WATER,
+
+ // #### `result`
+ // ```c
+ // false
+ // ```
+ // #### `args`
+ // - None
+ VB_SHORT_CIRCUIT_GIVE_ITEM_PROCESS,
+
+ // #### `result`
+ // ```c
+ // (s16)sFishingRecordLength < (s16)sFishOnHandLength
+ // ```
+ // #### `args`
+ // - `*f32` (sFishOnHandLength)
+ VB_SHOULD_CHECK_FOR_FISHING_RECORD,
+
+ // #### `result`
+ // ##### In `Fishing_HandleOwnerDialog` - `LINK_AGE_CHILD`
+ // ```c
+ // (sFishingRecordLength >= 50.0f) && !(HIGH_SCORE(HS_FISHING) & HS_FISH_PRIZE_CHILD)
+ // ```
+ // ##### In `Fishing_HandleOwnerDialog` - `!LINK_AGE_CHILD`
+ // ```c
+ // (sFishingRecordLength >= 60.0f) && !(HIGH_SCORE(HS_FISHING) & HS_FISH_PRIZE_ADULT)
+ // ```
+ // #### `args`
+ // - `*VBFishingData`
+ VB_SHOULD_GIVE_VANILLA_FISHING_PRIZE,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*VBFishingData`
+ VB_SHOULD_SET_FISHING_RECORD,
+
+ // #### `result`
+ // ```c
+ // gSaveContext.showTitleCard
+ // ```
+ // #### `args`
+ // - None
+ VB_SHOW_TITLE_CARD,
+
+ // #### `result`
+ // ```c
+ // false
+ // ```
+ // #### `args`
+ // - None
+ VB_SKIP_SCARECROWS_SONG,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*ObjBean`
+ VB_SPAWN_BEAN_STALK_FAIRIES,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // ##### In `z_boss_dodongo.c`:
+ // - `*BossDodongo`
+ //
+ // ##### In `z_boss_fd2.c`
+ // - `*BossFd2`
+ //
+ // ##### In `z_boss_ganondrof.c`:
+ // - `*BossGanondrof`
+ //
+ // ##### In `z_boss_goma.c`:
+ // - `*BossGoma`
+ //
+ // ##### In `z_boss_mo.c`:
+ // - `*BossMo`
+ //
+ // ##### In `z_boss_sst.c`:
+ // - `*BossSst`
+ //
+ // ##### In `z_boss_tw.c`:
+ // - `*BossTw`
+ //
+ // ##### In `z_boss_va.c`:
+ // - `*BossVa`
+ VB_SPAWN_BLUE_WARP,
+
+ // #### `result`
+ // ```c
+ // INV_CONTENT(ITEM_ARROW_FIRE) == ITEM_NONE
+ // ```
+ // #### `args`
+ // - None
+ VB_SPAWN_FIRE_ARROW,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*EnElf`
+ VB_SPAWN_FOUNTAIN_FAIRIES,
+
+ // #### `result`
+ // ```c
+ // this->unk_19D & 1
+ // ```
+ // #### `args`
+ // - `*EnGs`
+ VB_SPAWN_GOSSIP_STONE_FAIRY,
+
+ // #### `result`
+ // ##### In `BossFd_Fly` (`case BOSSFD_SKULL_BURN`)
+ // ```c
+ // this->timers[0] == 7
+ // ```
+ // ##### Everywhere else
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_SPAWN_HEART_CONTAINER,
+
+ // #### `result`
+ // ```c
+ // (INV_CONTENT(ITEM_TRADE_ADULT) == ITEM_ODD_POTION) ? true : false
+ // ```
+ // #### `args`
+ // - `*EnKo`
+ VB_SPAWN_LW_FADO,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*ShotSun`
+ VB_SPAWN_SONG_FAIRY,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*EnHs`
+ VB_TRADE_COJIRO,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*EnMk`
+ VB_TRADE_FROG,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*EnDs`
+ VB_TRADE_ODD_MUSHROOM,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*EnKo`
+ VB_TRADE_ODD_POTION,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*EnNiwLady`
+ VB_TRADE_POCKET_CUCCO,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*EnToryo`
+ VB_TRADE_SAW,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*EnMk`
+ VB_TRADE_TIMER_EYEDROPS,
+
+ // #### `result`
+ // ```c
+ // INV_CONTENT(ITEM_TRADE_ADULT) == ITEM_FROG)
+ // ```
+ // #### `args`
+ // - None
+ VB_TRADE_TIMER_FROG,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - None
+ VB_TRADE_TIMER_ODD_MUSHROOM,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*PauseContext`
+ VB_TRANSITION_TO_SAVE_SCREEN_ON_DEATH,
+
+ // #### `result`
+ // ```c
+ // INV_CONTENT(ITEM_ODD_MUSHROOM) == ITEM_EYEDROPS
+ // ```
+ // #### `args`
+ // - `*EnMk`
+ VB_USE_EYEDROP_DIALOGUE,
+
+ // #### `result`
+ // ```c
+ // true
+ // ```
+ // #### `args`
+ // - `*EnWonderTalk2`
+ VB_WONDER_TALK,
+} GIVanillaBehavior;