mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2024-11-01 08:05:07 -04:00
Change GI_VB_ to VB_ (#4116)
This commit is contained in:
parent
04f9ec1b78
commit
b4a30f708f
@ -14,13 +14,13 @@ extern PlayState* gPlayState;
|
||||
|
||||
void CheatsOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void* opt) {
|
||||
switch (id) {
|
||||
case GI_VB_DEKU_STICK_BREAK: {
|
||||
case VB_DEKU_STICK_BREAK: {
|
||||
if (CVarGetInteger("gDekuStickCheat", DEKU_STICK_NORMAL) != DEKU_STICK_NORMAL) {
|
||||
*should = false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GI_VB_DEKU_STICK_BE_ON_FIRE: {
|
||||
case VB_DEKU_STICK_BE_ON_FIRE: {
|
||||
if (CVarGetInteger("gDekuStickCheat", DEKU_STICK_NORMAL) == DEKU_STICK_UNBREAKABLE_AND_ALWAYS_ON_FIRE) {
|
||||
Player* player = GET_PLAYER(gPlayState);
|
||||
player->unk_860 = 200; // Keeps the stick's flame lit
|
||||
@ -29,13 +29,13 @@ void CheatsOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void* op
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GI_VB_DEKU_STICK_BURN_OUT: {
|
||||
case VB_DEKU_STICK_BURN_OUT: {
|
||||
if (CVarGetInteger("gDekuStickCheat", DEKU_STICK_NORMAL) != DEKU_STICK_NORMAL) {
|
||||
*should = false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GI_VB_DEKU_STICK_BURN_DOWN: {
|
||||
case VB_DEKU_STICK_BURN_DOWN: {
|
||||
if (CVarGetInteger("gDekuStickCheat", DEKU_STICK_NORMAL) != DEKU_STICK_NORMAL) {
|
||||
*should = false;
|
||||
}
|
||||
|
@ -70,32 +70,32 @@ typedef enum {
|
||||
|
||||
typedef enum {
|
||||
// Vanilla condition: gSaveContext.showTitleCard
|
||||
GI_VB_SHOW_TITLE_CARD,
|
||||
VB_SHOW_TITLE_CARD,
|
||||
// Opt: *EnWonderTalk2
|
||||
GI_VB_WONDER_TALK,
|
||||
VB_WONDER_TALK,
|
||||
// Opt: *ElfMsg
|
||||
GI_VB_NAVI_TALK,
|
||||
VB_NAVI_TALK,
|
||||
// Vanilla condition: INFTABLE_GREETED_BY_SARIA
|
||||
GI_VB_NOT_BE_GREETED_BY_SARIA,
|
||||
VB_NOT_BE_GREETED_BY_SARIA,
|
||||
// Opt: *EnMd
|
||||
// Vanilla condition: EnMd->interactInfo.talkState == NPC_TALK_STATE_ACTION
|
||||
GI_VB_MOVE_MIDO_IN_KOKIRI_FOREST,
|
||||
VB_MOVE_MIDO_IN_KOKIRI_FOREST,
|
||||
// Opt: *EnMd
|
||||
// Vanilla condition: CHECK_QUEST_ITEM(QUEST_KOKIRI_EMERALD)
|
||||
GI_VB_MIDO_CONSIDER_DEKU_TREE_DEAD,
|
||||
VB_MIDO_CONSIDER_DEKU_TREE_DEAD,
|
||||
// Opt: *ObjDekujr
|
||||
// Vanilla condition: CHECK_QUEST_ITEM(QUEST_MEDALLION_FOREST)
|
||||
GI_VB_DEKU_JR_CONSIDER_FOREST_TEMPLE_FINISHED,
|
||||
VB_DEKU_JR_CONSIDER_FOREST_TEMPLE_FINISHED,
|
||||
// Opt: *EnKo
|
||||
// Vanilla condition: CHECK_QUEST_ITEM(QUEST_KOKIRI_EMERALD)
|
||||
GI_VB_OPEN_KOKIRI_FOREST,
|
||||
VB_OPEN_KOKIRI_FOREST,
|
||||
// Opt: *EnOwl
|
||||
// Vanilla condition: EnOwl->actor.xzDistToPlayer < targetDist
|
||||
GI_VB_OWL_INTERACTION,
|
||||
VB_OWL_INTERACTION,
|
||||
// Vanilla condition: EVENTCHKINF_TALON_RETURNED_FROM_CASTLE
|
||||
GI_VB_MALON_RETURN_FROM_CASTLE,
|
||||
VB_MALON_RETURN_FROM_CASTLE,
|
||||
// Vanilla condition: CUR_UPG_VALUE(UPG_STRENGTH) <= 0
|
||||
GI_VB_BE_ELIGIBLE_FOR_DARUNIAS_JOY_REWARD,
|
||||
VB_BE_ELIGIBLE_FOR_DARUNIAS_JOY_REWARD,
|
||||
/* Vanilla condition:
|
||||
```
|
||||
LINK_IS_ADULT &&
|
||||
@ -105,18 +105,18 @@ typedef enum {
|
||||
!Flags_GetEventChkInf(EVENTCHKINF_RETURNED_TO_TEMPLE_OF_TIME_WITH_ALL_MEDALLIONS);
|
||||
```
|
||||
*/
|
||||
GI_VB_BE_ELIGIBLE_FOR_LIGHT_ARROWS,
|
||||
VB_BE_ELIGIBLE_FOR_LIGHT_ARROWS,
|
||||
// Vanilla condition: !CHECK_QUEST_ITEM(QUEST_SONG_SARIA)
|
||||
GI_VB_BE_ELIGIBLE_FOR_SARIAS_SONG,
|
||||
VB_BE_ELIGIBLE_FOR_SARIAS_SONG,
|
||||
// Vanilla condition: CHECK_QUEST_ITEM(QUEST_SONG_EPONA)
|
||||
GI_VB_MALON_ALREADY_TAUGHT_EPONAS_SONG,
|
||||
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)
|
||||
GI_VB_BE_ELIGIBLE_FOR_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
|
||||
GI_VB_SHIEK_PREPARE_TO_GIVE_SERENADE_OF_WATER,
|
||||
VB_SHIEK_PREPARE_TO_GIVE_SERENADE_OF_WATER,
|
||||
// Vanilla condition: !EVENTCHKINF_LEARNED_PRELUDE_OF_LIGHT and EVENTCHKINF_USED_FOREST_TEMPLE_BLUE_WARP
|
||||
GI_VB_BE_ELIGIBLE_FOR_PRELUDE_OF_LIGHT,
|
||||
GI_VB_BE_ELIGIBLE_FOR_RAINBOW_BRIDGE,
|
||||
VB_BE_ELIGIBLE_FOR_PRELUDE_OF_LIGHT,
|
||||
VB_BE_ELIGIBLE_FOR_RAINBOW_BRIDGE,
|
||||
/* Vanilla Condition:
|
||||
```
|
||||
LINK_IS_ADULT &&
|
||||
@ -127,30 +127,30 @@ typedef enum {
|
||||
!Flags_GetEventChkInf(EVENTCHKINF_BONGO_BONGO_ESCAPED_FROM_WELL);
|
||||
```
|
||||
*/
|
||||
GI_VB_BE_ELIGIBLE_FOR_NOCTURNE_OF_SHADOW,
|
||||
VB_BE_ELIGIBLE_FOR_NOCTURNE_OF_SHADOW,
|
||||
// Opt: *EnGo2
|
||||
// Vanilla condition: CUR_CAPACITY(UPG_BOMB_BAG) >= 20 && this->waypoint > 7 && this->waypoint < 12
|
||||
GI_VB_BE_ELIGIBLE_FOR_CHILD_ROLLING_GORON_REWARD,
|
||||
VB_BE_ELIGIBLE_FOR_CHILD_ROLLING_GORON_REWARD,
|
||||
// Vanilla condition: !CHECK_OWNED_EQUIP_ALT(EQUIP_TYPE_SWORD, EQUIP_INV_SWORD_BIGGORON)
|
||||
GI_VB_BE_ELIGIBLE_FOR_GIANTS_KNIFE_PURCHASE,
|
||||
VB_BE_ELIGIBLE_FOR_GIANTS_KNIFE_PURCHASE,
|
||||
// Opt: *EnMs
|
||||
// Vanilla condition: gSaveContext.rupees >= sPrices[BEANS_BOUGHT]
|
||||
GI_VB_BE_ELIGIBLE_FOR_MAGIC_BEANS_PURCHASE,
|
||||
VB_BE_ELIGIBLE_FOR_MAGIC_BEANS_PURCHASE,
|
||||
// Opt: *EnItem00
|
||||
// Vanilla condition: Flags_GetCollectible(play, this->collectibleFlag)
|
||||
GI_VB_ITEM00_DESPAWN,
|
||||
VB_ITEM00_DESPAWN,
|
||||
// Opt: *EnTk
|
||||
// Vanilla condition: gSaveContext.dayTime <= 0xC000 || gSaveContext.dayTime >= 0xE000 || LINK_IS_ADULT || play->sceneNum != SCENE_GRAVEYARD
|
||||
GI_VB_DAMPE_IN_GRAVEYARD_DESPAWN,
|
||||
VB_DAMPE_IN_GRAVEYARD_DESPAWN,
|
||||
// Opt: *EnTk
|
||||
// Vanilla condition: this->validDigHere == 1
|
||||
GI_VB_BE_VALID_GRAVEDIGGING_SPOT,
|
||||
VB_BE_VALID_GRAVEDIGGING_SPOT,
|
||||
// Opt: *EnTk
|
||||
// Vanilla condition: this->currentReward == 3
|
||||
GI_VB_BE_DAMPE_GRAVEDIGGING_GRAND_PRIZE,
|
||||
VB_BE_DAMPE_GRAVEDIGGING_GRAND_PRIZE,
|
||||
// Opt: *EnTk
|
||||
// Vanilla condition: !Flags_GetItemGetInf(ITEMGETINF_1C)
|
||||
GI_VB_DAMPE_GRAVEDIGGING_GRAND_PRIZE_BE_HEART_PIECE,
|
||||
VB_DAMPE_GRAVEDIGGING_GRAND_PRIZE_BE_HEART_PIECE,
|
||||
// Opt: *EnShopnuts
|
||||
/* Vanilla Condition:
|
||||
```
|
||||
@ -159,235 +159,235 @@ typedef enum {
|
||||
((this->actor.params == 0x000A) && (Flags_GetInfTable(INFTABLE_193)))
|
||||
```
|
||||
*/
|
||||
GI_VB_BUSINESS_SCRUB_DESPAWN,
|
||||
VB_BUSINESS_SCRUB_DESPAWN,
|
||||
// Opt: *EnCow
|
||||
// Vanilla condition: play->sceneNum == SCENE_LINKS_HOUSE && (!LINK_IS_ADULT || !Flags_GetEventChkInf(EVENTCHKINF_WON_COW_IN_MALONS_RACE))
|
||||
GI_VB_DESPAWN_HORSE_RACE_COW,
|
||||
VB_DESPAWN_HORSE_RACE_COW,
|
||||
// Opt: *EnHs
|
||||
// Vanilla condition: Flags_GetItemGetInf(ITEMGETINF_30)
|
||||
GI_VB_DESPAWN_GROG,
|
||||
VB_DESPAWN_GROG,
|
||||
// Opt: *EnKo
|
||||
// Vanilla condition: (INV_CONTENT(ITEM_TRADE_ADULT) == ITEM_ODD_POTION) ? true : false;
|
||||
GI_VB_SPAWN_LW_FADO,
|
||||
VB_SPAWN_LW_FADO,
|
||||
// Opt: *EnMk
|
||||
GI_VB_PLAY_EYEDROP_CREATION_ANIM,
|
||||
VB_PLAY_EYEDROP_CREATION_ANIM,
|
||||
// Opt: *EnDs
|
||||
GI_VB_PLAY_ODD_POTION_ANIM,
|
||||
VB_PLAY_ODD_POTION_ANIM,
|
||||
// Opt: *EnMk
|
||||
// Vanilla condition: INV_CONTENT(ITEM_ODD_MUSHROOM) == ITEM_EYEDROPS
|
||||
GI_VB_USE_EYEDROP_DIALOGUE,
|
||||
VB_USE_EYEDROP_DIALOGUE,
|
||||
// Opt: *EnMk
|
||||
// Vanilla condition: Flags_GetItemGetInf(ITEMGETINF_30)
|
||||
GI_VB_OFFER_BLUE_POTION,
|
||||
VB_OFFER_BLUE_POTION,
|
||||
// Vanilla condition: Inventory_HasEmptyBottle() == 0
|
||||
GI_VB_NEED_BOTTLE_FOR_GRANNYS_ITEM,
|
||||
VB_NEED_BOTTLE_FOR_GRANNYS_ITEM,
|
||||
// Opt: *EnNiwLady
|
||||
GI_VB_SET_CUCCO_COUNT,
|
||||
VB_SET_CUCCO_COUNT,
|
||||
// Opt: *EnKz
|
||||
// Vanilla condition: CHECK_QUEST_ITEM(QUEST_ZORA_SAPPHIRE)
|
||||
GI_VB_KING_ZORA_THANK_CHILD,
|
||||
VB_KING_ZORA_THANK_CHILD,
|
||||
// Opt: *EnKz
|
||||
// Vanilla condition: this->actor.textId == 0x401A
|
||||
GI_VB_BE_ABLE_TO_EXCHANGE_RUTOS_LETTER,
|
||||
VB_BE_ABLE_TO_EXCHANGE_RUTOS_LETTER,
|
||||
// Opt: *EnKz
|
||||
// Vanilla condition: Flags_GetEventChkInf(EVENTCHKINF_KING_ZORA_MOVED)
|
||||
GI_VB_KING_ZORA_BE_MOVED,
|
||||
VB_KING_ZORA_BE_MOVED,
|
||||
// Vanilla condition: gSaveState.bgsFlag
|
||||
GI_VB_BIGGORON_CONSIDER_TRADE_COMPLETE,
|
||||
VB_BIGGORON_CONSIDER_TRADE_COMPLETE,
|
||||
// Vanilla condition: gSaveState.bgsFlag
|
||||
GI_VB_BIGGORON_CONSIDER_SWORD_COLLECTED,
|
||||
VB_BIGGORON_CONSIDER_SWORD_COLLECTED,
|
||||
// Vanilla condition: Environment_GetBgsDayCount() >= 3
|
||||
GI_VB_BIGGORON_CONSIDER_SWORD_FORGED,
|
||||
VB_BIGGORON_CONSIDER_SWORD_FORGED,
|
||||
// Vanilla condition: CHECK_QUEST_ITEM(QUEST_MEDALLION_FIRE)
|
||||
GI_VB_GORONS_CONSIDER_FIRE_TEMPLE_FINISHED,
|
||||
VB_GORONS_CONSIDER_FIRE_TEMPLE_FINISHED,
|
||||
// Vanilla condition: CHECK_QUEST_ITEM(QUEST_GORON_RUBY)
|
||||
GI_VB_GORONS_CONSIDER_DODONGOS_CAVERN_FINISHED,
|
||||
VB_GORONS_CONSIDER_DODONGOS_CAVERN_FINISHED,
|
||||
// Opt: *uint16_t
|
||||
// Vanilla condition: false
|
||||
GI_VB_OVERRIDE_LINK_THE_GORON_DIALOGUE,
|
||||
VB_OVERRIDE_LINK_THE_GORON_DIALOGUE,
|
||||
// Vanilla condition: CHECK_OWNED_EQUIP(EQUIP_TYPE_TUNIC, EQUIP_INV_TUNIC_GORON)
|
||||
GI_VB_GORONS_CONSIDER_TUNIC_COLLECTED,
|
||||
VB_GORONS_CONSIDER_TUNIC_COLLECTED,
|
||||
// Opt: *EnSyatekiMan
|
||||
// Vanilla condition: (this->getItemId == GI_QUIVER_40) || (this->getItemId == GI_QUIVER_50)
|
||||
GI_VB_BE_ELIGIBLE_FOR_ADULT_SHOOTING_GAME_REWARD,
|
||||
VB_BE_ELIGIBLE_FOR_ADULT_SHOOTING_GAME_REWARD,
|
||||
// Opt: *EnOkarinaTag
|
||||
// Vanilla condition: !Flags_GetEventChkInf(EVENTCHKINF_OPENED_THE_DOOR_OF_TIME)
|
||||
GI_VB_BE_ELIGIBLE_TO_OPEN_DOT,
|
||||
VB_BE_ELIGIBLE_TO_OPEN_DOT,
|
||||
// Opt: *BgDyYoseizo
|
||||
// Vanilla condition: see soh/src/overlays/actors/ovl_Bg_Dy_Yoseizo/z_bg_dy_yoseizo.c
|
||||
GI_VB_BE_ELIGIBLE_FOR_GREAT_FAIRY_REWARD,
|
||||
VB_BE_ELIGIBLE_FOR_GREAT_FAIRY_REWARD,
|
||||
// Vanilla condition: see CheckCarpentersFreed in z_en_ge1 and z_en_ge2
|
||||
GI_VB_GERUDOS_BE_FRIENDLY,
|
||||
VB_GERUDOS_BE_FRIENDLY,
|
||||
// Vanilla condition: switch
|
||||
GI_VB_GTG_GATE_BE_OPEN,
|
||||
VB_GTG_GATE_BE_OPEN,
|
||||
|
||||
/*** Play Cutscenes ***/
|
||||
|
||||
GI_VB_PLAY_TRANSITION_CS,
|
||||
VB_PLAY_TRANSITION_CS,
|
||||
// Opt: *EventChkInf flag
|
||||
GI_VB_PLAY_ENTRANCE_CS,
|
||||
VB_PLAY_ENTRANCE_CS,
|
||||
// Opt: *cutsceneId
|
||||
GI_VB_PLAY_ONEPOINT_CS,
|
||||
VB_PLAY_ONEPOINT_CS,
|
||||
// Opt: *actor
|
||||
GI_VB_PLAY_ONEPOINT_ACTOR_CS,
|
||||
VB_PLAY_ONEPOINT_ACTOR_CS,
|
||||
// Opt: *BgTreemouth
|
||||
GI_VB_PLAY_DEKU_TREE_INTRO_CS,
|
||||
VB_PLAY_DEKU_TREE_INTRO_CS,
|
||||
// Vanilla condition: !EventChkInf except for spirit & shadow temple which are !medallion, and Jabu which always is true
|
||||
GI_VB_PLAY_BLUE_WARP_CS,
|
||||
GI_VB_PLAY_DARUNIAS_JOY_CS,
|
||||
GI_VB_PLAY_SHIEK_BLOCK_MASTER_SWORD_CS,
|
||||
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
|
||||
GI_VB_PLAY_PULL_MASTER_SWORD_CS,
|
||||
GI_VB_PLAY_DROP_FISH_FOR_JABU_CS,
|
||||
VB_PLAY_PULL_MASTER_SWORD_CS,
|
||||
VB_PLAY_DROP_FISH_FOR_JABU_CS,
|
||||
// Vanilla condition: player->getItemId == GI_GAUNTLETS_SILVER
|
||||
GI_VB_PLAY_NABOORU_CAPTURED_CS,
|
||||
GI_VB_PLAY_ZELDAS_LULLABY_CS,
|
||||
VB_PLAY_NABOORU_CAPTURED_CS,
|
||||
VB_PLAY_ZELDAS_LULLABY_CS,
|
||||
// Opt: *EnSa
|
||||
GI_VB_PLAY_SARIAS_SONG_CS,
|
||||
GI_VB_PLAY_PRELUDE_OF_LIGHT_CS,
|
||||
GI_VB_PLAY_MINUET_OF_FOREST_CS,
|
||||
GI_VB_PLAY_BOLERO_OF_FIRE_CS,
|
||||
GI_VB_PLAY_SERENADE_OF_WATER_CS,
|
||||
GI_VB_PLAY_EYEDROPS_CS,
|
||||
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
|
||||
GI_VB_PLAY_DRAIN_WELL_CS,
|
||||
VB_PLAY_DRAIN_WELL_CS,
|
||||
// Opt: *EnOkarinaTag
|
||||
// Vanilla condition: !CHECK_QUEST_ITEM(QUEST_SONG_SUN)
|
||||
GI_VB_PLAY_SUNS_SONG_CS,
|
||||
VB_PLAY_SUNS_SONG_CS,
|
||||
// Opt: *EnOkarinaTag
|
||||
GI_VB_PLAY_ROYAL_FAMILY_TOMB_CS,
|
||||
GI_VB_PLAY_ROYAL_FAMILY_TOMB_EXPLODE,
|
||||
VB_PLAY_ROYAL_FAMILY_TOMB_CS,
|
||||
VB_PLAY_ROYAL_FAMILY_TOMB_EXPLODE,
|
||||
// Opt: *EnOkarinaTag
|
||||
GI_VB_PLAY_DOOR_OF_TIME_CS,
|
||||
GI_VB_PLAY_RAINBOW_BRIDGE_CS,
|
||||
VB_PLAY_DOOR_OF_TIME_CS,
|
||||
VB_PLAY_RAINBOW_BRIDGE_CS,
|
||||
|
||||
/*** Give Items ***/
|
||||
|
||||
// Opt: *EnBox
|
||||
GI_VB_GIVE_ITEM_FROM_CHEST,
|
||||
GI_VB_GIVE_ITEM_FROM_BLUE_WARP,
|
||||
VB_GIVE_ITEM_FROM_CHEST,
|
||||
VB_GIVE_ITEM_FROM_BLUE_WARP,
|
||||
// Opt: *EnItem00
|
||||
GI_VB_GIVE_ITEM_FROM_ITEM_00,
|
||||
VB_GIVE_ITEM_FROM_ITEM_00,
|
||||
// Opt: *EnSi
|
||||
GI_VB_GIVE_ITEM_SKULL_TOKEN,
|
||||
VB_GIVE_ITEM_SKULL_TOKEN,
|
||||
// Opt: *EnCow
|
||||
GI_VB_GIVE_ITEM_FROM_COW,
|
||||
VB_GIVE_ITEM_FROM_COW,
|
||||
// Opt: *EnDns
|
||||
GI_VB_GIVE_ITEM_FROM_BUSINESS_SCRUB,
|
||||
VB_GIVE_ITEM_FROM_BUSINESS_SCRUB,
|
||||
// Opt: *EnMk
|
||||
GI_VB_GIVE_ITEM_FROM_LAB_DIVE,
|
||||
VB_GIVE_ITEM_FROM_LAB_DIVE,
|
||||
// Opt: *EnDs
|
||||
GI_VB_GIVE_ITEM_FROM_GRANNYS_SHOP,
|
||||
VB_GIVE_ITEM_FROM_GRANNYS_SHOP,
|
||||
// Opt: *EnNiwLady
|
||||
GI_VB_GIVE_ITEM_FROM_ANJU_AS_CHILD,
|
||||
VB_GIVE_ITEM_FROM_ANJU_AS_CHILD,
|
||||
// Opt: *EnNiwLady
|
||||
GI_VB_GIVE_ITEM_FROM_ANJU_AS_ADULT,
|
||||
VB_GIVE_ITEM_FROM_ANJU_AS_ADULT,
|
||||
// Opt: *EnKz
|
||||
// Vanilla condition: !CHECK_OWNED_EQUIP(EQUIP_TYPE_TUNIC, EQUIP_INV_TUNIC_ZORA)
|
||||
GI_VB_GIVE_ITEM_FROM_THAWING_KING_ZORA,
|
||||
VB_GIVE_ITEM_FROM_THAWING_KING_ZORA,
|
||||
// Opt: *EnGo2
|
||||
GI_VB_GIVE_ITEM_FROM_GORON,
|
||||
VB_GIVE_ITEM_FROM_GORON,
|
||||
// Opt: *EnJs
|
||||
GI_VB_GIVE_ITEM_FROM_CARPET_SALESMAN,
|
||||
VB_GIVE_ITEM_FROM_CARPET_SALESMAN,
|
||||
// Opt: *EnGm
|
||||
GI_VB_GIVE_ITEM_FROM_MEDIGORON,
|
||||
VB_GIVE_ITEM_FROM_MEDIGORON,
|
||||
// Opt: *EnMs
|
||||
GI_VB_GIVE_ITEM_FROM_MAGIC_BEAN_SALESMAN,
|
||||
VB_GIVE_ITEM_FROM_MAGIC_BEAN_SALESMAN,
|
||||
// Opt: *EnFr
|
||||
GI_VB_GIVE_ITEM_FROM_FROGS,
|
||||
VB_GIVE_ITEM_FROM_FROGS,
|
||||
// Opt: *EnSkj
|
||||
GI_VB_GIVE_ITEM_FROM_OCARINA_MEMORY_GAME,
|
||||
VB_GIVE_ITEM_FROM_OCARINA_MEMORY_GAME,
|
||||
// Opt: *EnSkj
|
||||
GI_VB_GIVE_ITEM_FROM_SKULL_KID_SARIAS_SONG,
|
||||
GI_VB_GIVE_ITEM_FROM_MAN_ON_ROOF,
|
||||
VB_GIVE_ITEM_FROM_SKULL_KID_SARIAS_SONG,
|
||||
VB_GIVE_ITEM_FROM_MAN_ON_ROOF,
|
||||
// Opt: *EnSyatekiMan
|
||||
GI_VB_GIVE_ITEM_FROM_SHOOTING_GALLERY,
|
||||
VB_GIVE_ITEM_FROM_SHOOTING_GALLERY,
|
||||
// Opt: *EnExItem
|
||||
GI_VB_GIVE_ITEM_FROM_TARGET_IN_WOODS,
|
||||
VB_GIVE_ITEM_FROM_TARGET_IN_WOODS,
|
||||
// Opt: *EnTa
|
||||
GI_VB_GIVE_ITEM_FROM_TALONS_CHICKENS,
|
||||
VB_GIVE_ITEM_FROM_TALONS_CHICKENS,
|
||||
// Opt: *EnDivingGame
|
||||
GI_VB_GIVE_ITEM_FROM_DIVING_MINIGAME,
|
||||
VB_GIVE_ITEM_FROM_DIVING_MINIGAME,
|
||||
// Opt: *EnGe1
|
||||
GI_VB_GIVE_ITEM_FROM_HORSEBACK_ARCHERY,
|
||||
VB_GIVE_ITEM_FROM_HORSEBACK_ARCHERY,
|
||||
// Opt: *EnSth
|
||||
GI_VB_GIVE_ITEM_FROM_SKULLTULA_REWARD,
|
||||
VB_GIVE_ITEM_FROM_SKULLTULA_REWARD,
|
||||
// Opt: *EnHy
|
||||
GI_VB_GIVE_ITEM_FROM_LOST_DOG,
|
||||
VB_GIVE_ITEM_FROM_LOST_DOG,
|
||||
// Opt: *EnBomBowlPit
|
||||
GI_VB_GIVE_ITEM_FROM_BOMBCHU_BOWLING,
|
||||
VB_GIVE_ITEM_FROM_BOMBCHU_BOWLING,
|
||||
|
||||
GI_VB_GIVE_ITEM_GERUDO_MEMBERSHIP_CARD,
|
||||
VB_GIVE_ITEM_GERUDO_MEMBERSHIP_CARD,
|
||||
|
||||
GI_VB_GIVE_ITEM_FAIRY_OCARINA,
|
||||
GI_VB_GIVE_ITEM_WEIRD_EGG,
|
||||
GI_VB_GIVE_ITEM_LIGHT_ARROW,
|
||||
GI_VB_GIVE_ITEM_STRENGTH_1,
|
||||
GI_VB_GIVE_ITEM_ZELDAS_LETTER,
|
||||
GI_VB_GIVE_ITEM_MASTER_SWORD,
|
||||
GI_VB_GIVE_ITEM_OCARINA_OF_TIME,
|
||||
GI_VB_GIVE_ITEM_KOKIRI_EMERALD,
|
||||
GI_VB_GIVE_ITEM_GORON_RUBY,
|
||||
GI_VB_GIVE_ITEM_ZORA_SAPPHIRE,
|
||||
GI_VB_GIVE_ITEM_LIGHT_MEDALLION,
|
||||
GI_VB_GIVE_ITEM_FOREST_MEDALLION,
|
||||
GI_VB_GIVE_ITEM_FIRE_MEDALLION,
|
||||
GI_VB_GIVE_ITEM_WATER_MEDALLION,
|
||||
GI_VB_GIVE_ITEM_SPIRIT_MEDALLION,
|
||||
GI_VB_GIVE_ITEM_SHADOW_MEDALLION,
|
||||
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 ***/
|
||||
|
||||
GI_VB_GIVE_ITEM_ZELDAS_LULLABY,
|
||||
GI_VB_GIVE_ITEM_SARIAS_SONG,
|
||||
GI_VB_GIVE_ITEM_EPONAS_SONG,
|
||||
GI_VB_GIVE_ITEM_SUNS_SONG,
|
||||
GI_VB_GIVE_ITEM_SONG_OF_TIME,
|
||||
GI_VB_GIVE_ITEM_SONG_OF_STORMS,
|
||||
GI_VB_GIVE_ITEM_MINUET_OF_FOREST,
|
||||
GI_VB_GIVE_ITEM_BOLERO_OF_FIRE,
|
||||
GI_VB_GIVE_ITEM_SERENADE_OF_WATER,
|
||||
GI_VB_GIVE_ITEM_REQUIEM_OF_SPIRIT,
|
||||
GI_VB_GIVE_ITEM_NOCTURNE_OF_SHADOW,
|
||||
GI_VB_GIVE_ITEM_PRELUDE_OF_LIGHT,
|
||||
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
|
||||
GI_VB_TRADE_POCKET_CUCCO,
|
||||
VB_TRADE_POCKET_CUCCO,
|
||||
// Opt: *EnHs
|
||||
GI_VB_TRADE_COJIRO,
|
||||
VB_TRADE_COJIRO,
|
||||
// Opt: *EnDs
|
||||
GI_VB_TRADE_ODD_MUSHROOM,
|
||||
VB_TRADE_ODD_MUSHROOM,
|
||||
// Opt: *EnKo
|
||||
GI_VB_TRADE_ODD_POTION,
|
||||
VB_TRADE_ODD_POTION,
|
||||
// Opt: *EnToryo
|
||||
GI_VB_TRADE_SAW,
|
||||
VB_TRADE_SAW,
|
||||
// Opt: *EnKz,
|
||||
GI_VB_TRADE_PRESCRIPTION,
|
||||
VB_TRADE_PRESCRIPTION,
|
||||
// Opt: *EnMk
|
||||
GI_VB_TRADE_FROG,
|
||||
VB_TRADE_FROG,
|
||||
|
||||
GI_VB_TRADE_TIMER_ODD_MUSHROOM,
|
||||
GI_VB_TRADE_TIMER_EYEDROPS,
|
||||
GI_VB_TRADE_TIMER_FROG,
|
||||
VB_TRADE_TIMER_ODD_MUSHROOM,
|
||||
VB_TRADE_TIMER_EYEDROPS,
|
||||
VB_TRADE_TIMER_FROG,
|
||||
// Opt: *EnNiwLady
|
||||
GI_VB_ANJU_SET_OBTAINED_TRADE_ITEM,
|
||||
VB_ANJU_SET_OBTAINED_TRADE_ITEM,
|
||||
|
||||
/*** Fixes ***/
|
||||
// Vanilla condition: false
|
||||
GI_VB_FIX_SAW_SOFTLOCK,
|
||||
VB_FIX_SAW_SOFTLOCK,
|
||||
|
||||
/*** Cheats? ***/
|
||||
GI_VB_DEKU_STICK_BE_ON_FIRE,
|
||||
GI_VB_DEKU_STICK_BREAK,
|
||||
GI_VB_DEKU_STICK_BURN_DOWN,
|
||||
GI_VB_DEKU_STICK_BURN_OUT,
|
||||
GI_VB_DEKU_UPDATE_BURNING_DEKU_STICK,
|
||||
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
|
||||
GI_VB_PHANTOM_GANON_DEATH_SCENE,
|
||||
GI_VB_NABOORU_KNUCKLE_DEATH_SCENE,
|
||||
VB_PHANTOM_GANON_DEATH_SCENE,
|
||||
VB_NABOORU_KNUCKLE_DEATH_SCENE,
|
||||
} GIVanillaBehavior;
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
@ -539,7 +539,7 @@ void RandomizerSetChestGameRandomizerInf(RandomizerCheck rc) {
|
||||
|
||||
void RandomizerOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void* optionalArg) {
|
||||
switch (id) {
|
||||
case GI_VB_GIVE_ITEM_FROM_CHEST: {
|
||||
case VB_GIVE_ITEM_FROM_CHEST: {
|
||||
EnBox* chest = static_cast<EnBox*>(optionalArg);
|
||||
RandomizerCheck rc = OTRGlobals::Instance->gRandomizer->GetCheckFromActor(chest->dyna.actor.id, gPlayState->sceneNum, chest->dyna.actor.params);
|
||||
|
||||
@ -553,38 +553,38 @@ void RandomizerOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void
|
||||
*should = false;
|
||||
break;
|
||||
}
|
||||
case GI_VB_PLAY_NABOORU_CAPTURED_CS:
|
||||
case VB_PLAY_NABOORU_CAPTURED_CS:
|
||||
// This behavior is replicated for randomizer in RandomizerOnItemReceiveHandler
|
||||
*should = false;
|
||||
break;
|
||||
case GI_VB_SHIEK_PREPARE_TO_GIVE_SERENADE_OF_WATER: {
|
||||
case VB_SHIEK_PREPARE_TO_GIVE_SERENADE_OF_WATER: {
|
||||
*should = !Flags_GetEventChkInf(EVENTCHKINF_LEARNED_SERENADE_OF_WATER) && !Flags_GetTreasure(gPlayState, 0x2);
|
||||
break;
|
||||
}
|
||||
case GI_VB_BE_ELIGIBLE_FOR_SERENADE_OF_WATER:
|
||||
case VB_BE_ELIGIBLE_FOR_SERENADE_OF_WATER:
|
||||
*should = !Flags_GetEventChkInf(EVENTCHKINF_LEARNED_SERENADE_OF_WATER) && Flags_GetTreasure(gPlayState, 0x2);
|
||||
break;
|
||||
case GI_VB_BE_ELIGIBLE_FOR_PRELUDE_OF_LIGHT:
|
||||
case VB_BE_ELIGIBLE_FOR_PRELUDE_OF_LIGHT:
|
||||
*should = !Flags_GetEventChkInf(EVENTCHKINF_LEARNED_PRELUDE_OF_LIGHT) && CHECK_QUEST_ITEM(QUEST_MEDALLION_FOREST);
|
||||
break;
|
||||
case GI_VB_MOVE_MIDO_IN_KOKIRI_FOREST:
|
||||
case VB_MOVE_MIDO_IN_KOKIRI_FOREST:
|
||||
if (RAND_GET_OPTION(RSK_FOREST) == RO_FOREST_OPEN) {
|
||||
*should = true;
|
||||
}
|
||||
break;
|
||||
case GI_VB_MIDO_CONSIDER_DEKU_TREE_DEAD:
|
||||
case VB_MIDO_CONSIDER_DEKU_TREE_DEAD:
|
||||
*should = Flags_GetEventChkInf(EVENTCHKINF_OBTAINED_KOKIRI_EMERALD_DEKU_TREE_DEAD);
|
||||
break;
|
||||
case GI_VB_OPEN_KOKIRI_FOREST:
|
||||
case VB_OPEN_KOKIRI_FOREST:
|
||||
*should = Flags_GetEventChkInf(EVENTCHKINF_OBTAINED_KOKIRI_EMERALD_DEKU_TREE_DEAD) || RAND_GET_OPTION(RSK_FOREST) != RO_FOREST_CLOSED;
|
||||
break;
|
||||
case GI_VB_BE_ELIGIBLE_FOR_DARUNIAS_JOY_REWARD:
|
||||
case VB_BE_ELIGIBLE_FOR_DARUNIAS_JOY_REWARD:
|
||||
*should = !Flags_GetRandomizerInf(RAND_INF_DARUNIAS_JOY);
|
||||
break;
|
||||
case GI_VB_BE_ELIGIBLE_FOR_LIGHT_ARROWS:
|
||||
case VB_BE_ELIGIBLE_FOR_LIGHT_ARROWS:
|
||||
*should = !Flags_GetEventChkInf(EVENTCHKINF_RETURNED_TO_TEMPLE_OF_TIME_WITH_ALL_MEDALLIONS) && MeetsLACSRequirements();
|
||||
break;
|
||||
case GI_VB_BE_ELIGIBLE_FOR_NOCTURNE_OF_SHADOW:
|
||||
case VB_BE_ELIGIBLE_FOR_NOCTURNE_OF_SHADOW:
|
||||
*should =
|
||||
!Flags_GetEventChkInf(EVENTCHKINF_BONGO_BONGO_ESCAPED_FROM_WELL) &&
|
||||
LINK_IS_ADULT &&
|
||||
@ -593,18 +593,18 @@ void RandomizerOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void
|
||||
CHECK_QUEST_ITEM(QUEST_MEDALLION_FIRE) &&
|
||||
CHECK_QUEST_ITEM(QUEST_MEDALLION_WATER);
|
||||
break;
|
||||
case GI_VB_BE_ELIGIBLE_FOR_CHILD_ROLLING_GORON_REWARD: {
|
||||
case VB_BE_ELIGIBLE_FOR_CHILD_ROLLING_GORON_REWARD: {
|
||||
// Don't require a bomb bag to get prize in rando
|
||||
*should = true;
|
||||
break;
|
||||
}
|
||||
case GI_VB_BE_ELIGIBLE_FOR_MAGIC_BEANS_PURCHASE: {
|
||||
case VB_BE_ELIGIBLE_FOR_MAGIC_BEANS_PURCHASE: {
|
||||
if (RAND_GET_OPTION(RSK_SHUFFLE_MAGIC_BEANS)) {
|
||||
*should = gSaveContext.rupees >= 60;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GI_VB_GIVE_ITEM_MASTER_SWORD:
|
||||
case VB_GIVE_ITEM_MASTER_SWORD:
|
||||
if (RAND_GET_OPTION(RSK_SHUFFLE_MASTER_SWORD)) {
|
||||
*should = false;
|
||||
} else {
|
||||
@ -612,7 +612,7 @@ void RandomizerOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void
|
||||
Rando::Context::GetInstance()->GetItemLocation(RC_TOT_MASTER_SWORD)->MarkAsObtained();
|
||||
}
|
||||
break;
|
||||
case GI_VB_ITEM00_DESPAWN: {
|
||||
case VB_ITEM00_DESPAWN: {
|
||||
EnItem00* item00 = static_cast<EnItem00*>(optionalArg);
|
||||
if (item00->actor.params == ITEM00_HEART_PIECE || item00->actor.params == ITEM00_SMALL_KEY) {
|
||||
RandomizerCheck rc = OTRGlobals::Instance->gRandomizer->GetCheckFromActor(item00->actor.id, gPlayState->sceneNum, item00->ogParams);
|
||||
@ -629,18 +629,18 @@ void RandomizerOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GI_VB_MALON_ALREADY_TAUGHT_EPONAS_SONG: {
|
||||
case VB_MALON_ALREADY_TAUGHT_EPONAS_SONG: {
|
||||
*should = Flags_GetRandomizerInf(RAND_INF_LEARNED_EPONA_SONG);
|
||||
break;
|
||||
}
|
||||
case GI_VB_SET_CUCCO_COUNT: {
|
||||
case VB_SET_CUCCO_COUNT: {
|
||||
EnNiwLady* enNiwLady = static_cast<EnNiwLady*>(optionalArg);
|
||||
// Override starting Cucco count using setting value
|
||||
enNiwLady->cuccosInPen = 7 - RAND_GET_OPTION(RSK_CUCCO_COUNT);
|
||||
*should = false;
|
||||
break;
|
||||
}
|
||||
case GI_VB_KING_ZORA_THANK_CHILD: {
|
||||
case VB_KING_ZORA_THANK_CHILD: {
|
||||
// Allow turning in Ruto's letter even if you have already rescued her
|
||||
if (!Flags_GetEventChkInf(EVENTCHKINF_KING_ZORA_MOVED)) {
|
||||
GET_PLAYER(gPlayState)->exchangeItemId = EXCH_ITEM_LETTER_RUTO;
|
||||
@ -648,11 +648,11 @@ void RandomizerOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void
|
||||
*should = Flags_GetEventChkInf(EVENTCHKINF_USED_JABU_JABUS_BELLY_BLUE_WARP);
|
||||
break;
|
||||
}
|
||||
case GI_VB_BE_ABLE_TO_EXCHANGE_RUTOS_LETTER: {
|
||||
case VB_BE_ABLE_TO_EXCHANGE_RUTOS_LETTER: {
|
||||
*should = LINK_IS_CHILD;
|
||||
break;
|
||||
}
|
||||
case GI_VB_KING_ZORA_BE_MOVED: {
|
||||
case VB_KING_ZORA_BE_MOVED: {
|
||||
*should = false;
|
||||
switch (RAND_GET_OPTION(RSK_ZORAS_FOUNTAIN)) {
|
||||
case RO_ZF_CLOSED:
|
||||
@ -673,29 +673,29 @@ void RandomizerOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GI_VB_BIGGORON_CONSIDER_SWORD_COLLECTED: {
|
||||
case VB_BIGGORON_CONSIDER_SWORD_COLLECTED: {
|
||||
*should = Flags_GetRandomizerInf(RAND_INF_ADULT_TRADES_DMT_TRADE_CLAIM_CHECK);
|
||||
break;
|
||||
}
|
||||
case GI_VB_BIGGORON_CONSIDER_TRADE_COMPLETE: {
|
||||
case VB_BIGGORON_CONSIDER_TRADE_COMPLETE: {
|
||||
// This being true will prevent other biggoron trades, there are already safegaurds in place to prevent
|
||||
// claim check from being traded multiple times, so we don't really need the quest to ever be considered "complete"
|
||||
*should = false;
|
||||
break;
|
||||
}
|
||||
case GI_VB_GORONS_CONSIDER_FIRE_TEMPLE_FINISHED: {
|
||||
case VB_GORONS_CONSIDER_FIRE_TEMPLE_FINISHED: {
|
||||
*should = Flags_GetEventChkInf(EVENTCHKINF_USED_FIRE_TEMPLE_BLUE_WARP);
|
||||
break;
|
||||
}
|
||||
case GI_VB_GORONS_CONSIDER_DODONGOS_CAVERN_FINISHED: {
|
||||
case VB_GORONS_CONSIDER_DODONGOS_CAVERN_FINISHED: {
|
||||
*should = Flags_GetEventChkInf(EVENTCHKINF_USED_DODONGOS_CAVERN_BLUE_WARP);
|
||||
break;
|
||||
}
|
||||
case GI_VB_GORONS_CONSIDER_TUNIC_COLLECTED: {
|
||||
case VB_GORONS_CONSIDER_TUNIC_COLLECTED: {
|
||||
*should = Flags_GetInfTable(INFTABLE_GORON_CITY_DOORS_UNLOCKED);
|
||||
break;
|
||||
}
|
||||
case GI_VB_GIVE_ITEM_FROM_ITEM_00: {
|
||||
case VB_GIVE_ITEM_FROM_ITEM_00: {
|
||||
EnItem00* item00 = static_cast<EnItem00*>(optionalArg);
|
||||
if (item00->actor.params == ITEM00_SOH_DUMMY) {
|
||||
if (item00->randoInf != RAND_INF_MAX) {
|
||||
@ -730,11 +730,11 @@ void RandomizerOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GI_VB_BE_ELIGIBLE_FOR_SARIAS_SONG: {
|
||||
case VB_BE_ELIGIBLE_FOR_SARIAS_SONG: {
|
||||
*should = !Flags_GetEventChkInf(EVENTCHKINF_LEARNED_SARIAS_SONG);
|
||||
break;
|
||||
}
|
||||
case GI_VB_GIVE_ITEM_FROM_COW: {
|
||||
case VB_GIVE_ITEM_FROM_COW: {
|
||||
if (!RAND_GET_OPTION(RSK_SHUFFLE_COWS)) {
|
||||
break;
|
||||
}
|
||||
@ -751,7 +751,7 @@ void RandomizerOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void
|
||||
*should = false;
|
||||
break;
|
||||
}
|
||||
case GI_VB_GIVE_ITEM_FROM_GRANNYS_SHOP: {
|
||||
case VB_GIVE_ITEM_FROM_GRANNYS_SHOP: {
|
||||
if (!EnDs_RandoCanGetGrannyItem()) {
|
||||
break;
|
||||
}
|
||||
@ -760,7 +760,7 @@ void RandomizerOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void
|
||||
*should = false;
|
||||
break;
|
||||
}
|
||||
case GI_VB_GIVE_ITEM_FROM_THAWING_KING_ZORA: {
|
||||
case VB_GIVE_ITEM_FROM_THAWING_KING_ZORA: {
|
||||
EnKz* enKz = static_cast<EnKz*>(optionalArg);
|
||||
// If we aren't setting up the item offer, then we're just checking if it should be possible.
|
||||
if (enKz->actionFunc != (EnKzActionFunc)EnKz_SetupGetItem) {
|
||||
@ -771,28 +771,28 @@ void RandomizerOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void
|
||||
*should = false;
|
||||
break;
|
||||
}
|
||||
case GI_VB_GIVE_ITEM_FROM_ANJU_AS_CHILD: {
|
||||
case VB_GIVE_ITEM_FROM_ANJU_AS_CHILD: {
|
||||
Flags_SetItemGetInf(ITEMGETINF_0C);
|
||||
*should = false;
|
||||
break;
|
||||
}
|
||||
case GI_VB_GIVE_ITEM_FROM_ANJU_AS_ADULT: {
|
||||
case VB_GIVE_ITEM_FROM_ANJU_AS_ADULT: {
|
||||
Flags_SetItemGetInf(ITEMGETINF_2C);
|
||||
*should = false;
|
||||
break;
|
||||
}
|
||||
case GI_VB_GIVE_ITEM_FROM_CARPET_SALESMAN: {
|
||||
case VB_GIVE_ITEM_FROM_CARPET_SALESMAN: {
|
||||
*should = RAND_GET_OPTION(RSK_SHUFFLE_MERCHANTS) == RO_SHUFFLE_MERCHANTS_OFF ||
|
||||
// If the rando check has already been awarded, use vanilla behavior.
|
||||
Flags_GetRandomizerInf(RAND_INF_MERCHANTS_CARPET_SALESMAN);
|
||||
break;
|
||||
}
|
||||
case GI_VB_GIVE_ITEM_FROM_MEDIGORON: {
|
||||
case VB_GIVE_ITEM_FROM_MEDIGORON: {
|
||||
// fallthrough
|
||||
case GI_VB_BE_ELIGIBLE_FOR_GIANTS_KNIFE_PURCHASE:
|
||||
case VB_BE_ELIGIBLE_FOR_GIANTS_KNIFE_PURCHASE:
|
||||
if (RAND_GET_OPTION(RSK_SHUFFLE_MERCHANTS) != RO_SHUFFLE_MERCHANTS_OFF &&
|
||||
!Flags_GetRandomizerInf(RAND_INF_MERCHANTS_MEDIGORON)) {
|
||||
if (id == GI_VB_GIVE_ITEM_FROM_MEDIGORON) {
|
||||
if (id == VB_GIVE_ITEM_FROM_MEDIGORON) {
|
||||
Flags_SetInfTable(INFTABLE_B1);
|
||||
*should = false;
|
||||
} else {
|
||||
@ -803,7 +803,7 @@ void RandomizerOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GI_VB_GIVE_ITEM_FROM_MAGIC_BEAN_SALESMAN: {
|
||||
case VB_GIVE_ITEM_FROM_MAGIC_BEAN_SALESMAN: {
|
||||
EnMs* enMs = static_cast<EnMs*>(optionalArg);
|
||||
if (RAND_GET_OPTION(RSK_SHUFFLE_MAGIC_BEANS)) {
|
||||
Rupees_ChangeBy(-60);
|
||||
@ -815,7 +815,7 @@ void RandomizerOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GI_VB_GIVE_ITEM_FROM_FROGS: {
|
||||
case VB_GIVE_ITEM_FROM_FROGS: {
|
||||
EnFr* enFr = static_cast<EnFr*>(optionalArg);
|
||||
|
||||
// Skip GiveReward+SetIdle action func if the reward is an ice trap
|
||||
@ -830,26 +830,26 @@ void RandomizerOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void
|
||||
*should = false;
|
||||
break;
|
||||
}
|
||||
case GI_VB_TRADE_POCKET_CUCCO: {
|
||||
case VB_TRADE_POCKET_CUCCO: {
|
||||
Randomizer_ConsumeAdultTradeItem(gPlayState, ITEM_POCKET_CUCCO);
|
||||
// Trigger the reward now
|
||||
Flags_SetItemGetInf(ITEMGETINF_2E);
|
||||
*should = false;
|
||||
break;
|
||||
}
|
||||
case GI_VB_TRADE_COJIRO: {
|
||||
case VB_TRADE_COJIRO: {
|
||||
Randomizer_ConsumeAdultTradeItem(gPlayState, ITEM_COJIRO);
|
||||
*should = false;
|
||||
break;
|
||||
}
|
||||
case GI_VB_TRADE_ODD_MUSHROOM: {
|
||||
case VB_TRADE_ODD_MUSHROOM: {
|
||||
Randomizer_ConsumeAdultTradeItem(gPlayState, ITEM_ODD_MUSHROOM);
|
||||
// Trigger the reward now
|
||||
Flags_SetItemGetInf(ITEMGETINF_30);
|
||||
*should = false;
|
||||
break;
|
||||
}
|
||||
case GI_VB_TRADE_ODD_POTION: {
|
||||
case VB_TRADE_ODD_POTION: {
|
||||
EnKo* enKo = static_cast<EnKo*>(optionalArg);
|
||||
Randomizer_ConsumeAdultTradeItem(gPlayState, ITEM_ODD_POTION);
|
||||
// Trigger the reward now
|
||||
@ -857,12 +857,12 @@ void RandomizerOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void
|
||||
*should = false;
|
||||
break;
|
||||
}
|
||||
case GI_VB_TRADE_SAW: {
|
||||
case VB_TRADE_SAW: {
|
||||
Randomizer_ConsumeAdultTradeItem(gPlayState, ITEM_SAW);
|
||||
*should = false;
|
||||
break;
|
||||
}
|
||||
case GI_VB_TRADE_PRESCRIPTION: {
|
||||
case VB_TRADE_PRESCRIPTION: {
|
||||
EnKz* enKz = static_cast<EnKz*>(optionalArg);
|
||||
// If we aren't setting up the item offer, then we're just checking if it should be possible.
|
||||
if (enKz->actionFunc != (EnKzActionFunc)EnKz_SetupGetItem) {
|
||||
@ -873,12 +873,12 @@ void RandomizerOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void
|
||||
*should = false;
|
||||
break;
|
||||
}
|
||||
case GI_VB_TRADE_FROG: {
|
||||
case VB_TRADE_FROG: {
|
||||
Randomizer_ConsumeAdultTradeItem(gPlayState, ITEM_FROG);
|
||||
*should = false;
|
||||
break;
|
||||
}
|
||||
case GI_VB_DESPAWN_HORSE_RACE_COW: {
|
||||
case VB_DESPAWN_HORSE_RACE_COW: {
|
||||
if (!RAND_GET_OPTION(RSK_SHUFFLE_COWS)) {
|
||||
break;
|
||||
}
|
||||
@ -887,7 +887,7 @@ void RandomizerOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void
|
||||
EnCow_MoveForRandomizer(enCow, gPlayState);
|
||||
break;
|
||||
}
|
||||
case GI_VB_BUSINESS_SCRUB_DESPAWN: {
|
||||
case VB_BUSINESS_SCRUB_DESPAWN: {
|
||||
EnShopnuts* enShopnuts = static_cast<EnShopnuts*>(optionalArg);
|
||||
s16 respawnData = gSaveContext.respawn[RESPAWN_MODE_RETURN].data & ((1 << 8) - 1);
|
||||
ScrubIdentity scrubIdentity = OTRGlobals::Instance->gRandomizer->IdentifyScrub(gPlayState->sceneNum, enShopnuts->actor.params, respawnData);
|
||||
@ -897,7 +897,7 @@ void RandomizerOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GI_VB_GIVE_ITEM_FROM_BUSINESS_SCRUB: {
|
||||
case VB_GIVE_ITEM_FROM_BUSINESS_SCRUB: {
|
||||
EnDns* enDns = static_cast<EnDns*>(optionalArg);
|
||||
*should = !enDns->sohScrubIdentity.isShuffled;
|
||||
break;
|
||||
@ -907,7 +907,7 @@ void RandomizerOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void
|
||||
// - If you don't have Cojiro but do have Odd Potion, spawn Fado and not Grog.
|
||||
// - If you don't have either, spawn Grog if you haven't traded the Odd Mushroom.
|
||||
// - If you don't have either but have traded the mushroom, don't spawn either.
|
||||
case GI_VB_DESPAWN_GROG: {
|
||||
case VB_DESPAWN_GROG: {
|
||||
if (!RAND_GET_OPTION(RSK_SHUFFLE_ADULT_TRADE)) {
|
||||
break;
|
||||
}
|
||||
@ -920,7 +920,7 @@ void RandomizerOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GI_VB_SPAWN_LW_FADO: {
|
||||
case VB_SPAWN_LW_FADO: {
|
||||
if (!RAND_GET_OPTION(RSK_SHUFFLE_ADULT_TRADE)) {
|
||||
break;
|
||||
}
|
||||
@ -933,23 +933,23 @@ void RandomizerOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void
|
||||
|
||||
break;
|
||||
}
|
||||
case GI_VB_USE_EYEDROP_DIALOGUE: {
|
||||
case VB_USE_EYEDROP_DIALOGUE: {
|
||||
// Skip eye drop text on rando if Link went in the water, so you can still receive the dive check
|
||||
EnMk* enMk = static_cast<EnMk*>(optionalArg);
|
||||
*should &= enMk->swimFlag == 0;
|
||||
break;
|
||||
}
|
||||
case GI_VB_OFFER_BLUE_POTION: {
|
||||
case VB_OFFER_BLUE_POTION: {
|
||||
// Always offer blue potion when adult trade is off
|
||||
*should |= RAND_GET_OPTION(RSK_SHUFFLE_ADULT_TRADE) == RO_GENERIC_OFF;
|
||||
break;
|
||||
}
|
||||
case GI_VB_NEED_BOTTLE_FOR_GRANNYS_ITEM: {
|
||||
case VB_NEED_BOTTLE_FOR_GRANNYS_ITEM: {
|
||||
// Allow buying the rando item regardless of having a bottle
|
||||
*should &= !EnDs_RandoCanGetGrannyItem();
|
||||
break;
|
||||
}
|
||||
case GI_VB_GIVE_ITEM_FROM_SHOOTING_GALLERY: {
|
||||
case VB_GIVE_ITEM_FROM_SHOOTING_GALLERY: {
|
||||
EnSyatekiMan* enSyatekiMan = static_cast<EnSyatekiMan*>(optionalArg);
|
||||
enSyatekiMan->getItemId = GI_RUPEE_PURPLE;
|
||||
if (LINK_IS_ADULT) {
|
||||
@ -961,7 +961,7 @@ void RandomizerOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GI_VB_BE_ELIGIBLE_FOR_ADULT_SHOOTING_GAME_REWARD: {
|
||||
case VB_BE_ELIGIBLE_FOR_ADULT_SHOOTING_GAME_REWARD: {
|
||||
*should = CUR_UPG_VALUE(UPG_QUIVER) > 0;
|
||||
if (!*should) {
|
||||
// In Rando without a quiver, display a message reminding the player to come back with a bow
|
||||
@ -969,7 +969,7 @@ void RandomizerOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GI_VB_BE_ELIGIBLE_TO_OPEN_DOT: {
|
||||
case VB_BE_ELIGIBLE_TO_OPEN_DOT: {
|
||||
bool eligible = RAND_GET_OPTION(RSK_DOOR_OF_TIME) != RO_DOOROFTIME_CLOSED || (
|
||||
INV_CONTENT(ITEM_OCARINA_FAIRY) == ITEM_OCARINA_TIME &&
|
||||
CHECK_QUEST_ITEM(QUEST_KOKIRI_EMERALD) &&
|
||||
@ -979,7 +979,7 @@ void RandomizerOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void
|
||||
*should = eligible;
|
||||
break;
|
||||
}
|
||||
case GI_VB_GIVE_ITEM_FROM_HORSEBACK_ARCHERY: {
|
||||
case VB_GIVE_ITEM_FROM_HORSEBACK_ARCHERY: {
|
||||
// give both rewards at the same time
|
||||
if (gSaveContext.minigameScore >= 1500) {
|
||||
Flags_SetItemGetInf(ITEMGETINF_0F);
|
||||
@ -987,7 +987,7 @@ void RandomizerOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void
|
||||
*should = false;
|
||||
break;
|
||||
}
|
||||
case GI_VB_GIVE_ITEM_FROM_SKULLTULA_REWARD: {
|
||||
case VB_GIVE_ITEM_FROM_SKULLTULA_REWARD: {
|
||||
// In z_en_sth.c the rewards are stored in sGetItemIds, the first entry
|
||||
// in that array is GI_RUPEE_GOLD, and the reward is picked in EnSth_GivePlayerItem
|
||||
// via sGetItemIds[this->actor.params]. This means if actor.params == 0 we're looking
|
||||
@ -1014,14 +1014,14 @@ void RandomizerOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void
|
||||
*should = false;
|
||||
break;
|
||||
}
|
||||
case GI_VB_GIVE_ITEM_FROM_OCARINA_MEMORY_GAME: {
|
||||
case VB_GIVE_ITEM_FROM_OCARINA_MEMORY_GAME: {
|
||||
EnSkj* enSkj = static_cast<EnSkj*>(optionalArg);
|
||||
Flags_SetItemGetInf(ITEMGETINF_17);
|
||||
enSkj->actionFunc = (EnSkjActionFunc)EnSkj_CleanupOcarinaGame;
|
||||
*should = false;
|
||||
break;
|
||||
}
|
||||
case GI_VB_GIVE_ITEM_FROM_LOST_DOG: {
|
||||
case VB_GIVE_ITEM_FROM_LOST_DOG: {
|
||||
EnHy* enHy = static_cast<EnHy*>(optionalArg);
|
||||
Flags_SetInfTable(INFTABLE_191);
|
||||
gSaveContext.dogParams = 0;
|
||||
@ -1030,33 +1030,33 @@ void RandomizerOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void
|
||||
*should = false;
|
||||
break;
|
||||
}
|
||||
case GI_VB_GIVE_ITEM_FROM_BOMBCHU_BOWLING: {
|
||||
case VB_GIVE_ITEM_FROM_BOMBCHU_BOWLING: {
|
||||
EnBomBowlPit* enBomBowlPit = static_cast<EnBomBowlPit*>(optionalArg);
|
||||
if (enBomBowlPit->prizeIndex == EXITEM_BOMB_BAG_BOWLING || enBomBowlPit->prizeIndex == EXITEM_HEART_PIECE_BOWLING) {
|
||||
*should = false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GI_VB_GERUDOS_BE_FRIENDLY: {
|
||||
case VB_GERUDOS_BE_FRIENDLY: {
|
||||
*should = CHECK_QUEST_ITEM(QUEST_GERUDO_CARD);
|
||||
break;
|
||||
}
|
||||
case GI_VB_GTG_GATE_BE_OPEN: {
|
||||
case VB_GTG_GATE_BE_OPEN: {
|
||||
if (Flags_GetRandomizerInf(RAND_INF_GF_GTG_GATE_PERMANENTLY_OPEN)) {
|
||||
*should = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GI_VB_GIVE_ITEM_GERUDO_MEMBERSHIP_CARD: {
|
||||
case VB_GIVE_ITEM_GERUDO_MEMBERSHIP_CARD: {
|
||||
Flags_SetRandomizerInf(RAND_INF_GF_ITEM_FROM_LEADER_OF_FORTRESS);
|
||||
*should = false;
|
||||
break;
|
||||
}
|
||||
case GI_VB_BE_ELIGIBLE_FOR_RAINBOW_BRIDGE: {
|
||||
case VB_BE_ELIGIBLE_FOR_RAINBOW_BRIDGE: {
|
||||
*should = MeetsRainbowBridgeRequirements();
|
||||
break;
|
||||
}
|
||||
case GI_VB_PLAY_BLUE_WARP_CS: {
|
||||
case VB_PLAY_BLUE_WARP_CS: {
|
||||
// We need to override just these two temples because they check medallions instead of flags
|
||||
if (gPlayState->sceneNum == SCENE_SPIRIT_TEMPLE_BOSS) {
|
||||
*should = !Flags_GetRandomizerInf(RAND_INF_DUNGEONS_DONE_SPIRIT_TEMPLE);
|
||||
@ -1065,34 +1065,34 @@ void RandomizerOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GI_VB_TRADE_TIMER_ODD_MUSHROOM:
|
||||
case GI_VB_TRADE_TIMER_EYEDROPS:
|
||||
case GI_VB_TRADE_TIMER_FROG:
|
||||
case GI_VB_ANJU_SET_OBTAINED_TRADE_ITEM:
|
||||
case GI_VB_GIVE_ITEM_FROM_TARGET_IN_WOODS:
|
||||
case GI_VB_GIVE_ITEM_FROM_TALONS_CHICKENS:
|
||||
case GI_VB_GIVE_ITEM_FROM_DIVING_MINIGAME:
|
||||
case GI_VB_GIVE_ITEM_FROM_GORON:
|
||||
case GI_VB_GIVE_ITEM_FROM_LAB_DIVE:
|
||||
case GI_VB_GIVE_ITEM_FROM_SKULL_KID_SARIAS_SONG:
|
||||
case GI_VB_GIVE_ITEM_FROM_MAN_ON_ROOF:
|
||||
case GI_VB_GIVE_ITEM_SKULL_TOKEN:
|
||||
case GI_VB_GIVE_ITEM_FROM_BLUE_WARP:
|
||||
case GI_VB_GIVE_ITEM_FAIRY_OCARINA:
|
||||
case GI_VB_GIVE_ITEM_WEIRD_EGG:
|
||||
case GI_VB_GIVE_ITEM_LIGHT_ARROW:
|
||||
case GI_VB_GIVE_ITEM_STRENGTH_1:
|
||||
case GI_VB_GIVE_ITEM_ZELDAS_LETTER:
|
||||
case GI_VB_GIVE_ITEM_OCARINA_OF_TIME:
|
||||
case GI_VB_GIVE_ITEM_KOKIRI_EMERALD:
|
||||
case GI_VB_GIVE_ITEM_GORON_RUBY:
|
||||
case GI_VB_GIVE_ITEM_ZORA_SAPPHIRE:
|
||||
case GI_VB_GIVE_ITEM_LIGHT_MEDALLION:
|
||||
case GI_VB_GIVE_ITEM_FOREST_MEDALLION:
|
||||
case GI_VB_GIVE_ITEM_FIRE_MEDALLION:
|
||||
case GI_VB_GIVE_ITEM_WATER_MEDALLION:
|
||||
case GI_VB_GIVE_ITEM_SPIRIT_MEDALLION:
|
||||
case GI_VB_GIVE_ITEM_SHADOW_MEDALLION:
|
||||
case VB_TRADE_TIMER_ODD_MUSHROOM:
|
||||
case VB_TRADE_TIMER_EYEDROPS:
|
||||
case VB_TRADE_TIMER_FROG:
|
||||
case VB_ANJU_SET_OBTAINED_TRADE_ITEM:
|
||||
case VB_GIVE_ITEM_FROM_TARGET_IN_WOODS:
|
||||
case VB_GIVE_ITEM_FROM_TALONS_CHICKENS:
|
||||
case VB_GIVE_ITEM_FROM_DIVING_MINIGAME:
|
||||
case VB_GIVE_ITEM_FROM_GORON:
|
||||
case VB_GIVE_ITEM_FROM_LAB_DIVE:
|
||||
case VB_GIVE_ITEM_FROM_SKULL_KID_SARIAS_SONG:
|
||||
case VB_GIVE_ITEM_FROM_MAN_ON_ROOF:
|
||||
case VB_GIVE_ITEM_SKULL_TOKEN:
|
||||
case VB_GIVE_ITEM_FROM_BLUE_WARP:
|
||||
case VB_GIVE_ITEM_FAIRY_OCARINA:
|
||||
case VB_GIVE_ITEM_WEIRD_EGG:
|
||||
case VB_GIVE_ITEM_LIGHT_ARROW:
|
||||
case VB_GIVE_ITEM_STRENGTH_1:
|
||||
case VB_GIVE_ITEM_ZELDAS_LETTER:
|
||||
case VB_GIVE_ITEM_OCARINA_OF_TIME:
|
||||
case VB_GIVE_ITEM_KOKIRI_EMERALD:
|
||||
case VB_GIVE_ITEM_GORON_RUBY:
|
||||
case VB_GIVE_ITEM_ZORA_SAPPHIRE:
|
||||
case VB_GIVE_ITEM_LIGHT_MEDALLION:
|
||||
case VB_GIVE_ITEM_FOREST_MEDALLION:
|
||||
case VB_GIVE_ITEM_FIRE_MEDALLION:
|
||||
case VB_GIVE_ITEM_WATER_MEDALLION:
|
||||
case VB_GIVE_ITEM_SPIRIT_MEDALLION:
|
||||
case VB_GIVE_ITEM_SHADOW_MEDALLION:
|
||||
*should = false;
|
||||
break;
|
||||
}
|
||||
|
@ -40,7 +40,7 @@ void EnKo_MoveWhenReady(EnKo* enKo, PlayState* play) {
|
||||
if ((enKo->actor.params & 0xFF) == ENKO_TYPE_CHILD_3) {
|
||||
// Typically this doesn't get get live updated in vanilla, but we need to
|
||||
// live update it if we're skipping a certain cutscene or in randomizer
|
||||
if (GameInteractor_Should(GI_VB_OPEN_KOKIRI_FOREST, CHECK_QUEST_ITEM(QUEST_KOKIRI_EMERALD), NULL)) {
|
||||
if (GameInteractor_Should(VB_OPEN_KOKIRI_FOREST, CHECK_QUEST_ITEM(QUEST_KOKIRI_EMERALD), NULL)) {
|
||||
enKo->collider.dim.height -= 200;
|
||||
Path_CopyLastPoint(enKo->path, &enKo->actor.world.pos);
|
||||
enKo->actionFunc = func_80A99384;
|
||||
@ -140,7 +140,7 @@ void TimeSaverOnGameFrameUpdateHandler() {
|
||||
|
||||
void TimeSaverOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void* opt) {
|
||||
switch (id) {
|
||||
case GI_VB_PLAY_TRANSITION_CS: {
|
||||
case VB_PLAY_TRANSITION_CS: {
|
||||
if (CVarGetInteger("gTimeSavers.SkipCutscene.Intro", IS_RANDO) && gSaveContext.entranceIndex == ENTR_LINKS_HOUSE_0 && gSaveContext.cutsceneIndex == 0xFFF1) {
|
||||
gSaveContext.cutsceneIndex = 0;
|
||||
*should = false;
|
||||
@ -160,7 +160,7 @@ void TimeSaverOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void*
|
||||
Flags_SetEventChkInf(EVENTCHKINF_LEARNED_REQUIEM_OF_SPIRIT);
|
||||
// Normally happens in the cutscene
|
||||
gSaveContext.dayTime = gSaveContext.skyboxTime = 0xAC60;
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_REQUIEM_OF_SPIRIT, true, NULL)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_REQUIEM_OF_SPIRIT, true, NULL)) {
|
||||
Item_Give(gPlayState, ITEM_SONG_REQUIEM);
|
||||
}
|
||||
*should = false;
|
||||
@ -173,11 +173,11 @@ void TimeSaverOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void*
|
||||
Flags_GetEventChkInf(EVENTCHKINF_USED_FIRE_TEMPLE_BLUE_WARP) &&
|
||||
Flags_GetEventChkInf(EVENTCHKINF_USED_WATER_TEMPLE_BLUE_WARP) &&
|
||||
!Flags_GetEventChkInf(EVENTCHKINF_BONGO_BONGO_ESCAPED_FROM_WELL);
|
||||
if (GameInteractor_Should(GI_VB_BE_ELIGIBLE_FOR_NOCTURNE_OF_SHADOW, meetsBurningKakRequirements, NULL)) {
|
||||
if (GameInteractor_Should(VB_BE_ELIGIBLE_FOR_NOCTURNE_OF_SHADOW, meetsBurningKakRequirements, NULL)) {
|
||||
Flags_SetEventChkInf(EVENTCHKINF_BONGO_BONGO_ESCAPED_FROM_WELL);
|
||||
// Normally happens in the cutscene
|
||||
Flags_SetEventChkInf(EVENTCHKINF_LEARNED_NOCTURNE_OF_SHADOW);
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_NOCTURNE_OF_SHADOW, true, NULL)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_NOCTURNE_OF_SHADOW, true, NULL)) {
|
||||
Item_Give(gPlayState, ITEM_SONG_NOCTURNE);
|
||||
}
|
||||
*should = false;
|
||||
@ -255,7 +255,7 @@ void TimeSaverOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void*
|
||||
// Lost Woods Bridge
|
||||
if ((gSaveContext.entranceIndex == ENTR_LOST_WOODS_9) && !Flags_GetEventChkInf(EVENTCHKINF_SPOKE_TO_SARIA_ON_BRIDGE)) {
|
||||
Flags_SetEventChkInf(EVENTCHKINF_SPOKE_TO_SARIA_ON_BRIDGE);
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_FAIRY_OCARINA, true, NULL)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_FAIRY_OCARINA, true, NULL)) {
|
||||
Item_Give(gPlayState, ITEM_OCARINA_FAIRY);
|
||||
}
|
||||
*should = false;
|
||||
@ -268,9 +268,9 @@ void TimeSaverOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void*
|
||||
CHECK_QUEST_ITEM(QUEST_MEDALLION_SPIRIT) &&
|
||||
CHECK_QUEST_ITEM(QUEST_MEDALLION_SHADOW) &&
|
||||
!Flags_GetEventChkInf(EVENTCHKINF_RETURNED_TO_TEMPLE_OF_TIME_WITH_ALL_MEDALLIONS);
|
||||
if (GameInteractor_Should(GI_VB_BE_ELIGIBLE_FOR_LIGHT_ARROWS, meetsLACSRequirements, NULL)) {
|
||||
if (GameInteractor_Should(VB_BE_ELIGIBLE_FOR_LIGHT_ARROWS, meetsLACSRequirements, NULL)) {
|
||||
Flags_SetEventChkInf(EVENTCHKINF_RETURNED_TO_TEMPLE_OF_TIME_WITH_ALL_MEDALLIONS);
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_LIGHT_ARROW, true, NULL)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_LIGHT_ARROW, true, NULL)) {
|
||||
Item_Give(gPlayState, ITEM_ARROW_LIGHT);
|
||||
}
|
||||
*should = false;
|
||||
@ -293,14 +293,14 @@ void TimeSaverOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void*
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GI_VB_PLAY_ENTRANCE_CS: {
|
||||
case VB_PLAY_ENTRANCE_CS: {
|
||||
s32* entranceFlag = static_cast<s32*>(opt);
|
||||
if (CVarGetInteger("gTimeSavers.SkipCutscene.Entrances", IS_RANDO) && (*entranceFlag != EVENTCHKINF_EPONA_OBTAINED)) {
|
||||
*should = false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GI_VB_PLAY_ONEPOINT_CS: {
|
||||
case VB_PLAY_ONEPOINT_CS: {
|
||||
if (CVarGetInteger("gTimeSavers.SkipCutscene.OnePoint", IS_RANDO)) {
|
||||
s16* csId = static_cast<s16*>(opt);
|
||||
switch (*csId) {
|
||||
@ -310,13 +310,13 @@ void TimeSaverOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void*
|
||||
RateLimitedSuccessChime();
|
||||
break;
|
||||
default:
|
||||
SPDLOG_INFO("GI_VB_PLAY_ONEPOINT_CS {}", *csId);
|
||||
SPDLOG_INFO("VB_PLAY_ONEPOINT_CS {}", *csId);
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GI_VB_PLAY_ONEPOINT_ACTOR_CS: {
|
||||
case VB_PLAY_ONEPOINT_ACTOR_CS: {
|
||||
if (CVarGetInteger("gTimeSavers.SkipCutscene.OnePoint", IS_RANDO)) {
|
||||
Actor* actor = static_cast<Actor*>(opt);
|
||||
|
||||
@ -398,23 +398,23 @@ void TimeSaverOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void*
|
||||
break;
|
||||
}
|
||||
if (*should) {
|
||||
SPDLOG_INFO("GI_VB_PLAY_ONEPOINT_ACTOR_CS ID:{} Cat:{}", actor->id, actor->category);
|
||||
SPDLOG_INFO("VB_PLAY_ONEPOINT_ACTOR_CS ID:{} Cat:{}", actor->id, actor->category);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GI_VB_SHOW_TITLE_CARD:
|
||||
case VB_SHOW_TITLE_CARD:
|
||||
if (CVarGetInteger("gTimeSavers.DisableTitleCard", IS_RANDO)) {
|
||||
*should = false;
|
||||
}
|
||||
break;
|
||||
case GI_VB_WONDER_TALK: {
|
||||
case VB_WONDER_TALK: {
|
||||
if (CVarGetInteger("gTimeSavers.NoForcedDialog", IS_RANDO)) {
|
||||
*should = false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GI_VB_NAVI_TALK: {
|
||||
case VB_NAVI_TALK: {
|
||||
if (CVarGetInteger("gTimeSavers.NoForcedDialog", IS_RANDO)) {
|
||||
ElfMsg* naviTalk = static_cast<ElfMsg*>(opt);
|
||||
Flags_SetSwitch(gPlayState, (naviTalk->actor.params >> 8) & 0x3F);
|
||||
@ -423,13 +423,13 @@ void TimeSaverOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void*
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GI_VB_NOT_BE_GREETED_BY_SARIA:
|
||||
case VB_NOT_BE_GREETED_BY_SARIA:
|
||||
if (CVarGetInteger("gTimeSavers.SkipCutscene.Entrances", IS_RANDO) && !Flags_GetInfTable(INFTABLE_GREETED_BY_SARIA)) {
|
||||
Flags_SetInfTable(INFTABLE_GREETED_BY_SARIA);
|
||||
*should = true;
|
||||
}
|
||||
break;
|
||||
case GI_VB_MOVE_MIDO_IN_KOKIRI_FOREST:
|
||||
case VB_MOVE_MIDO_IN_KOKIRI_FOREST:
|
||||
if (
|
||||
CVarGetInteger("gTimeSavers.SkipMiscInteractions", IS_RANDO) &&
|
||||
!Flags_GetEventChkInf(EVENTCHKINF_SHOWED_MIDO_SWORD_SHIELD) &&
|
||||
@ -440,7 +440,7 @@ void TimeSaverOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void*
|
||||
*should = true;
|
||||
}
|
||||
break;
|
||||
case GI_VB_PLAY_DEKU_TREE_INTRO_CS: {
|
||||
case VB_PLAY_DEKU_TREE_INTRO_CS: {
|
||||
if (CVarGetInteger("gTimeSavers.SkipCutscene.Story", IS_RANDO)) {
|
||||
BgTreemouth* treeMouth = static_cast<BgTreemouth*>(opt);
|
||||
Flags_SetEventChkInf(EVENTCHKINF_DEKU_TREE_OPENED_MOUTH);
|
||||
@ -450,7 +450,7 @@ void TimeSaverOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void*
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GI_VB_DEKU_JR_CONSIDER_FOREST_TEMPLE_FINISHED: {
|
||||
case VB_DEKU_JR_CONSIDER_FOREST_TEMPLE_FINISHED: {
|
||||
// We're overriding this so that the Deku JR doesn't despawn after skipping the forest temple blue warp cutscene.
|
||||
// It typically relies on the forest medallion being obtained, but that isn't given yet until after scene init
|
||||
if (CVarGetInteger("gTimeSavers.SkipCutscene.Story", IS_RANDO)) {
|
||||
@ -458,21 +458,21 @@ void TimeSaverOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void*
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GI_VB_GIVE_ITEM_FROM_BLUE_WARP:
|
||||
case GI_VB_PLAY_SHIEK_BLOCK_MASTER_SWORD_CS:
|
||||
case GI_VB_GIVE_ITEM_FAIRY_OCARINA:
|
||||
case GI_VB_GIVE_ITEM_LIGHT_ARROW:
|
||||
case VB_GIVE_ITEM_FROM_BLUE_WARP:
|
||||
case VB_PLAY_SHIEK_BLOCK_MASTER_SWORD_CS:
|
||||
case VB_GIVE_ITEM_FAIRY_OCARINA:
|
||||
case VB_GIVE_ITEM_LIGHT_ARROW:
|
||||
if (CVarGetInteger("gTimeSavers.SkipCutscene.Story", IS_RANDO)) {
|
||||
*should = false;
|
||||
}
|
||||
break;
|
||||
case GI_VB_PLAY_NABOORU_CAPTURED_CS:
|
||||
case VB_PLAY_NABOORU_CAPTURED_CS:
|
||||
if (*should == true && CVarGetInteger("gTimeSavers.SkipCutscene.Story", IS_RANDO)) {
|
||||
Flags_SetEventChkInf(EVENTCHKINF_NABOORU_CAPTURED_BY_TWINROVA);
|
||||
*should = false;
|
||||
}
|
||||
break;
|
||||
case GI_VB_PLAY_PULL_MASTER_SWORD_CS:
|
||||
case VB_PLAY_PULL_MASTER_SWORD_CS:
|
||||
if (CVarGetInteger("gTimeSavers.SkipCutscene.Story", IS_RANDO)) {
|
||||
if (!Flags_GetEventChkInf(EVENTCHKINF_PULLED_MASTER_SWORD_FROM_PEDESTAL)) {
|
||||
// Normally, these would be done in the cutscene, but we're skipping it
|
||||
@ -480,14 +480,14 @@ void TimeSaverOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void*
|
||||
Flags_SetEventChkInf(EVENTCHKINF_ENTERED_MASTER_SWORD_CHAMBER);
|
||||
Flags_SetEventChkInf(EVENTCHKINF_SHEIK_SPAWNED_AT_MASTER_SWORD_PEDESTAL);
|
||||
Flags_SetEventChkInf(EVENTCHKINF_TIME_TRAVELED_TO_ADULT);
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_LIGHT_MEDALLION, true, NULL)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_LIGHT_MEDALLION, true, NULL)) {
|
||||
Item_Give(gPlayState, ITEM_MEDALLION_LIGHT);
|
||||
}
|
||||
}
|
||||
*should = false;
|
||||
}
|
||||
break;
|
||||
case GI_VB_OWL_INTERACTION: {
|
||||
case VB_OWL_INTERACTION: {
|
||||
if (CVarGetInteger("gTimeSavers.SkipOwlInteractions", IS_RANDO) && *should) {
|
||||
EnOwl* enOwl = static_cast<EnOwl*>(opt);
|
||||
s32 owlType = (enOwl->actor.params & 0xFC0) >> 6;
|
||||
@ -501,7 +501,7 @@ void TimeSaverOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void*
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GI_VB_OVERRIDE_LINK_THE_GORON_DIALOGUE: {
|
||||
case VB_OVERRIDE_LINK_THE_GORON_DIALOGUE: {
|
||||
if (CVarGetInteger("gTimeSavers.SkipMiscInteractions", IS_RANDO)) {
|
||||
u16* textId = static_cast<u16*>(opt);
|
||||
// If the doors are not open yet, prioritize opening them
|
||||
@ -512,15 +512,15 @@ void TimeSaverOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void*
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GI_VB_PLAY_EYEDROP_CREATION_ANIM:
|
||||
case GI_VB_PLAY_EYEDROPS_CS:
|
||||
case GI_VB_PLAY_DROP_FISH_FOR_JABU_CS:
|
||||
case GI_VB_PLAY_DARUNIAS_JOY_CS:
|
||||
case VB_PLAY_EYEDROP_CREATION_ANIM:
|
||||
case VB_PLAY_EYEDROPS_CS:
|
||||
case VB_PLAY_DROP_FISH_FOR_JABU_CS:
|
||||
case VB_PLAY_DARUNIAS_JOY_CS:
|
||||
if (CVarGetInteger("gTimeSavers.SkipMiscInteractions", IS_RANDO)) {
|
||||
*should = false;
|
||||
}
|
||||
break;
|
||||
case GI_VB_PLAY_ZELDAS_LULLABY_CS: {
|
||||
case VB_PLAY_ZELDAS_LULLABY_CS: {
|
||||
if (CVarGetInteger("gTimeSavers.SkipCutscene.LearnSong", IS_RANDO) || IS_RANDO) {
|
||||
DemoIm* demoIm = static_cast<DemoIm*>(opt);
|
||||
Player* player = GET_PLAYER(gPlayState);
|
||||
@ -570,7 +570,7 @@ void TimeSaverOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void*
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GI_VB_PLAY_SARIAS_SONG_CS: {
|
||||
case VB_PLAY_SARIAS_SONG_CS: {
|
||||
if (CVarGetInteger("gTimeSavers.SkipCutscene.LearnSong", IS_RANDO) || IS_RANDO) {
|
||||
EnSa* enSa = static_cast<EnSa*>(opt);
|
||||
enSa->actionFunc = func_80AF6B20;
|
||||
@ -578,13 +578,13 @@ void TimeSaverOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void*
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GI_VB_DESPAWN_HORSE_RACE_COW: {
|
||||
case VB_DESPAWN_HORSE_RACE_COW: {
|
||||
if (Flags_GetEventChkInf(EVENTCHKINF_WON_COW_IN_MALONS_RACE) && CVarGetInteger("gCowOfTime", 0)) {
|
||||
*should = false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GI_VB_PLAY_DRAIN_WELL_CS: {
|
||||
case VB_PLAY_DRAIN_WELL_CS: {
|
||||
if (CVarGetInteger("gTimeSavers.SkipCutscene.Story", IS_RANDO)) {
|
||||
*should = false;
|
||||
Flags_SetSwitch(gPlayState, 0x2);
|
||||
@ -593,7 +593,7 @@ void TimeSaverOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void*
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GI_VB_PLAY_SUNS_SONG_CS:
|
||||
case VB_PLAY_SUNS_SONG_CS:
|
||||
if (CVarGetInteger("gTimeSavers.SkipCutscene.LearnSong", IS_RANDO) || IS_RANDO) {
|
||||
*should = false;
|
||||
Flags_SetEventChkInf(EVENTCHKINF_LEARNED_SUNS_SONG);
|
||||
@ -602,19 +602,19 @@ void TimeSaverOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void*
|
||||
// When it's 0x8000, it's changed to 0xC090
|
||||
}
|
||||
break;
|
||||
case GI_VB_PLAY_ROYAL_FAMILY_TOMB_CS: {
|
||||
case VB_PLAY_ROYAL_FAMILY_TOMB_CS: {
|
||||
if (CVarGetInteger("gTimeSavers.SkipMiscInteractions", IS_RANDO)) {
|
||||
*should = false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GI_VB_PLAY_ROYAL_FAMILY_TOMB_EXPLODE: {
|
||||
case VB_PLAY_ROYAL_FAMILY_TOMB_EXPLODE: {
|
||||
if (CVarGetInteger("gTimeSavers.SkipMiscInteractions", IS_RANDO)) {
|
||||
*should = Flags_GetEventChkInf(EVENTCHKINF_DESTROYED_ROYAL_FAMILY_TOMB);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GI_VB_PLAY_DOOR_OF_TIME_CS: {
|
||||
case VB_PLAY_DOOR_OF_TIME_CS: {
|
||||
if (CVarGetInteger("gTimeSavers.SkipMiscInteractions", IS_RANDO)) {
|
||||
*should = false;
|
||||
Flags_SetEnv(gPlayState, 2);
|
||||
@ -622,59 +622,59 @@ void TimeSaverOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void*
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GI_VB_GIVE_ITEM_MINUET_OF_FOREST:
|
||||
case GI_VB_GIVE_ITEM_BOLERO_OF_FIRE:
|
||||
case GI_VB_GIVE_ITEM_SERENADE_OF_WATER:
|
||||
case GI_VB_GIVE_ITEM_REQUIEM_OF_SPIRIT:
|
||||
case GI_VB_GIVE_ITEM_NOCTURNE_OF_SHADOW:
|
||||
case GI_VB_GIVE_ITEM_PRELUDE_OF_LIGHT:
|
||||
case GI_VB_GIVE_ITEM_ZELDAS_LULLABY:
|
||||
case GI_VB_GIVE_ITEM_EPONAS_SONG:
|
||||
case GI_VB_GIVE_ITEM_SARIAS_SONG:
|
||||
case GI_VB_GIVE_ITEM_SUNS_SONG:
|
||||
case GI_VB_GIVE_ITEM_SONG_OF_TIME:
|
||||
case GI_VB_GIVE_ITEM_SONG_OF_STORMS:
|
||||
case GI_VB_PLAY_MINUET_OF_FOREST_CS:
|
||||
case GI_VB_PLAY_BOLERO_OF_FIRE_CS:
|
||||
case GI_VB_PLAY_SERENADE_OF_WATER_CS:
|
||||
case GI_VB_PLAY_PRELUDE_OF_LIGHT_CS:
|
||||
case VB_GIVE_ITEM_MINUET_OF_FOREST:
|
||||
case VB_GIVE_ITEM_BOLERO_OF_FIRE:
|
||||
case VB_GIVE_ITEM_SERENADE_OF_WATER:
|
||||
case VB_GIVE_ITEM_REQUIEM_OF_SPIRIT:
|
||||
case VB_GIVE_ITEM_NOCTURNE_OF_SHADOW:
|
||||
case VB_GIVE_ITEM_PRELUDE_OF_LIGHT:
|
||||
case VB_GIVE_ITEM_ZELDAS_LULLABY:
|
||||
case VB_GIVE_ITEM_EPONAS_SONG:
|
||||
case VB_GIVE_ITEM_SARIAS_SONG:
|
||||
case VB_GIVE_ITEM_SUNS_SONG:
|
||||
case VB_GIVE_ITEM_SONG_OF_TIME:
|
||||
case VB_GIVE_ITEM_SONG_OF_STORMS:
|
||||
case VB_PLAY_MINUET_OF_FOREST_CS:
|
||||
case VB_PLAY_BOLERO_OF_FIRE_CS:
|
||||
case VB_PLAY_SERENADE_OF_WATER_CS:
|
||||
case VB_PLAY_PRELUDE_OF_LIGHT_CS:
|
||||
if (CVarGetInteger("gTimeSavers.SkipCutscene.LearnSong", IS_RANDO) || IS_RANDO) {
|
||||
*should = false;
|
||||
}
|
||||
break;
|
||||
case GI_VB_DAMPE_IN_GRAVEYARD_DESPAWN:
|
||||
case VB_DAMPE_IN_GRAVEYARD_DESPAWN:
|
||||
if (CVarGetInteger("gDampeAllNight", 0)) {
|
||||
*should = LINK_IS_ADULT || gPlayState->sceneNum != SCENE_GRAVEYARD;
|
||||
}
|
||||
break;
|
||||
case GI_VB_BE_VALID_GRAVEDIGGING_SPOT:
|
||||
case VB_BE_VALID_GRAVEDIGGING_SPOT:
|
||||
if (CVarGetInteger("gDampeWin", 0)) {
|
||||
EnTk *enTk = static_cast<EnTk*>(opt);
|
||||
enTk->validDigHere = true;
|
||||
*should = true;
|
||||
}
|
||||
break;
|
||||
case GI_VB_BE_DAMPE_GRAVEDIGGING_GRAND_PRIZE:
|
||||
case VB_BE_DAMPE_GRAVEDIGGING_GRAND_PRIZE:
|
||||
if (CVarGetInteger("gDampeWin", 0)) {
|
||||
EnTk *enTk = static_cast<EnTk*>(opt);
|
||||
enTk->currentReward = 3;
|
||||
*should = true;
|
||||
}
|
||||
break;
|
||||
case GI_VB_DAMPE_GRAVEDIGGING_GRAND_PRIZE_BE_HEART_PIECE:
|
||||
case VB_DAMPE_GRAVEDIGGING_GRAND_PRIZE_BE_HEART_PIECE:
|
||||
if (CVarGetInteger("gGravediggingTourFix", 0) || IS_RANDO) {
|
||||
*should = !Flags_GetCollectible(gPlayState, COLLECTFLAG_GRAVEDIGGING_HEART_PIECE);
|
||||
}
|
||||
break;
|
||||
case GI_VB_FIX_SAW_SOFTLOCK:
|
||||
case VB_FIX_SAW_SOFTLOCK:
|
||||
// Animation Count should be no more than 1 to guarantee putaway is complete after giving the saw
|
||||
// As this is vanilla behavior, it only applies with the Fix toggle or Skip Text enabled.
|
||||
*should = (CVarGetInteger("gFixSawSoftlock", 0) != 0 || CVarGetInteger("gSkipText", 0) != 0) ? gPlayState->animationCtx.animationCount > 1 : *should;
|
||||
break;
|
||||
case GI_VB_BIGGORON_CONSIDER_SWORD_FORGED:
|
||||
case VB_BIGGORON_CONSIDER_SWORD_FORGED:
|
||||
*should = Environment_GetBgsDayCount() >= CVarGetInteger("gForgeTime", 3);
|
||||
break;
|
||||
case GI_VB_BE_ELIGIBLE_FOR_GREAT_FAIRY_REWARD: {
|
||||
case VB_BE_ELIGIBLE_FOR_GREAT_FAIRY_REWARD: {
|
||||
BgDyYoseizo* bgDyYoseizo = static_cast<BgDyYoseizo*>(opt);
|
||||
RandomizerInf flag = RAND_INF_MAX;
|
||||
|
||||
@ -715,14 +715,14 @@ void TimeSaverOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void*
|
||||
|
||||
break;
|
||||
}
|
||||
case GI_VB_PLAY_RAINBOW_BRIDGE_CS: {
|
||||
case VB_PLAY_RAINBOW_BRIDGE_CS: {
|
||||
if (CVarGetInteger("gTimeSavers.SkipCutscene.Story", IS_RANDO)) {
|
||||
*should = false;
|
||||
func_800F595C(NA_BGM_BRIDGE_TO_GANONS);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GI_VB_PHANTOM_GANON_DEATH_SCENE: {
|
||||
case VB_PHANTOM_GANON_DEATH_SCENE: {
|
||||
if (CVarGetInteger("gTimeSavers.SkipCutscene.QuickBossDeaths", IS_RANDO || IS_BOSS_RUSH)) {
|
||||
*should = false;
|
||||
BossGanondrof* pg = static_cast<BossGanondrof*>(opt);
|
||||
@ -747,7 +747,7 @@ void TimeSaverOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, void*
|
||||
}
|
||||
break;
|
||||
}
|
||||
case GI_VB_NABOORU_KNUCKLE_DEATH_SCENE: {
|
||||
case VB_NABOORU_KNUCKLE_DEATH_SCENE: {
|
||||
EnIk* ik = static_cast<EnIk*>(opt);
|
||||
if (CVarGetInteger("gTimeSavers.SkipCutscene.QuickBossDeaths", IS_RANDO)) {
|
||||
// Because no CS in rando, we hide the death of the knuckle by spawning flames and kill the actor
|
||||
@ -964,7 +964,7 @@ void TimeSaverOnSceneInitHandler(int16_t sceneNum) {
|
||||
}
|
||||
break;
|
||||
case SCENE_LON_LON_RANCH:
|
||||
if (CVarGetInteger("gTimeSavers.SkipMiscInteractions", IS_RANDO) && GameInteractor_Should(GI_VB_MALON_RETURN_FROM_CASTLE, Flags_GetEventChkInf(EVENTCHKINF_TALON_RETURNED_FROM_CASTLE), NULL)) {
|
||||
if (CVarGetInteger("gTimeSavers.SkipMiscInteractions", IS_RANDO) && GameInteractor_Should(VB_MALON_RETURN_FROM_CASTLE, Flags_GetEventChkInf(EVENTCHKINF_TALON_RETURNED_FROM_CASTLE), NULL)) {
|
||||
Flags_SetEventChkInf(EVENTCHKINF_SPOKE_TO_CHILD_MALON_AT_RANCH);
|
||||
Flags_SetInfTable(INFTABLE_CHILD_MALON_SAID_EPONA_WAS_AFRAID_OF_YOU);
|
||||
Flags_SetEventChkInf(EVENTCHKINF_INVITED_TO_SING_WITH_CHILD_MALON);
|
||||
|
@ -497,11 +497,11 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB
|
||||
|
||||
bool shouldSkipCommand = false;
|
||||
|
||||
if (cmd->base == 8 && !GameInteractor_Should(GI_VB_PLAY_PULL_MASTER_SWORD_CS, true, NULL)) {
|
||||
if (cmd->base == 8 && !GameInteractor_Should(VB_PLAY_PULL_MASTER_SWORD_CS, true, NULL)) {
|
||||
shouldSkipCommand = true;
|
||||
}
|
||||
|
||||
if (cmd->base == 24 && !GameInteractor_Should(GI_VB_PLAY_DROP_FISH_FOR_JABU_CS, true, NULL)) {
|
||||
if (cmd->base == 24 && !GameInteractor_Should(VB_PLAY_DROP_FISH_FOR_JABU_CS, true, NULL)) {
|
||||
shouldSkipCommand = true;
|
||||
}
|
||||
|
||||
@ -631,7 +631,7 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB
|
||||
gSaveContext.fw.set = 0;
|
||||
gSaveContext.respawn[RESPAWN_MODE_TOP].data = 0;
|
||||
}
|
||||
if (GameInteractor_Should(GI_VB_PLAY_PULL_MASTER_SWORD_CS, !Flags_GetEventChkInf(EVENTCHKINF_PULLED_MASTER_SWORD_FROM_PEDESTAL), NULL)) {
|
||||
if (GameInteractor_Should(VB_PLAY_PULL_MASTER_SWORD_CS, !Flags_GetEventChkInf(EVENTCHKINF_PULLED_MASTER_SWORD_FROM_PEDESTAL), NULL)) {
|
||||
Flags_SetEventChkInf(EVENTCHKINF_PULLED_MASTER_SWORD_FROM_PEDESTAL);
|
||||
play->nextEntranceIndex = ENTR_CUTSCENE_MAP_0;
|
||||
play->transitionTrigger = TRANS_TRIGGER_START;
|
||||
@ -723,7 +723,7 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB
|
||||
play->transitionType = TRANS_TYPE_FADE_WHITE;
|
||||
break;
|
||||
case 22:
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_REQUIEM_OF_SPIRIT, true, NULL)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_REQUIEM_OF_SPIRIT, true, NULL)) {
|
||||
Item_Give(play, ITEM_SONG_REQUIEM);
|
||||
}
|
||||
play->nextEntranceIndex = ENTR_DESERT_COLOSSUS_0;
|
||||
@ -777,7 +777,7 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB
|
||||
play->nextEntranceIndex = ENTR_CHAMBER_OF_THE_SAGES_0;
|
||||
play->transitionTrigger = TRANS_TRIGGER_START;
|
||||
play->transitionType = TRANS_TYPE_FADE_WHITE;
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_FIRE_MEDALLION, true, NULL)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_FIRE_MEDALLION, true, NULL)) {
|
||||
Item_Give(play, ITEM_MEDALLION_FIRE);
|
||||
}
|
||||
gSaveContext.chamberCutsceneNum = 1;
|
||||
@ -859,7 +859,7 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB
|
||||
play->transitionType = TRANS_TYPE_FADE_BLACK_FAST;
|
||||
break;
|
||||
case 47:
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_NOCTURNE_OF_SHADOW, true, NULL)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_NOCTURNE_OF_SHADOW, true, NULL)) {
|
||||
Item_Give(play, ITEM_SONG_NOCTURNE);
|
||||
}
|
||||
Flags_SetEventChkInf(EVENTCHKINF_LEARNED_NOCTURNE_OF_SHADOW);
|
||||
@ -2183,7 +2183,7 @@ void Cutscene_HandleEntranceTriggers(PlayState* play) {
|
||||
(gSaveContext.cutsceneIndex < 0xFFF0) && ((u8)gSaveContext.linkAge == requiredAge) &&
|
||||
(gSaveContext.respawnFlag <= 0)) {
|
||||
Flags_SetEventChkInf(entranceCutscene->flag);
|
||||
if (GameInteractor_Should(GI_VB_PLAY_ENTRANCE_CS, true, &entranceCutscene->flag)) {
|
||||
if (GameInteractor_Should(VB_PLAY_ENTRANCE_CS, true, &entranceCutscene->flag)) {
|
||||
Cutscene_SetSegment(play, entranceCutscene->segAddr);
|
||||
gSaveContext.cutsceneTrigger = 2;
|
||||
gSaveContext.showTitleCard = false;
|
||||
@ -2197,7 +2197,7 @@ void Cutscene_HandleConditionalTriggers(PlayState* play) {
|
||||
osSyncPrintf("\ngame_info.mode=[%d] restart_flag", ((void)0, gSaveContext.respawnFlag));
|
||||
LUSLOG_INFO("Cutscene_HandleConditionalTriggers - entranceIndex: %#x cutsceneIndex: %#x", gSaveContext.entranceIndex, gSaveContext.cutsceneIndex);
|
||||
|
||||
if (!GameInteractor_Should(GI_VB_PLAY_TRANSITION_CS, true, NULL)) {
|
||||
if (!GameInteractor_Should(VB_PLAY_TRANSITION_CS, true, NULL)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@ -2206,7 +2206,7 @@ void Cutscene_HandleConditionalTriggers(PlayState* play) {
|
||||
Flags_SetEventChkInf(EVENTCHKINF_LEARNED_REQUIEM_OF_SPIRIT);
|
||||
gSaveContext.entranceIndex = ENTR_DESERT_COLOSSUS_0;
|
||||
gSaveContext.cutsceneIndex = 0xFFF0;
|
||||
} else if (GameInteractor_Should(GI_VB_BE_ELIGIBLE_FOR_NOCTURNE_OF_SHADOW, (
|
||||
} else if (GameInteractor_Should(VB_BE_ELIGIBLE_FOR_NOCTURNE_OF_SHADOW, (
|
||||
(gSaveContext.entranceIndex == ENTR_KAKARIKO_VILLAGE_0) &&
|
||||
LINK_IS_ADULT &&
|
||||
Flags_GetEventChkInf(EVENTCHKINF_USED_FOREST_TEMPLE_BLUE_WARP) &&
|
||||
@ -2218,12 +2218,12 @@ void Cutscene_HandleConditionalTriggers(PlayState* play) {
|
||||
gSaveContext.cutsceneIndex = 0xFFF0;
|
||||
} else if ((gSaveContext.entranceIndex == ENTR_LOST_WOODS_9) && !Flags_GetEventChkInf(EVENTCHKINF_SPOKE_TO_SARIA_ON_BRIDGE)) {
|
||||
Flags_SetEventChkInf(EVENTCHKINF_SPOKE_TO_SARIA_ON_BRIDGE);
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_FAIRY_OCARINA, true, NULL)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_FAIRY_OCARINA, true, NULL)) {
|
||||
Item_Give(play, ITEM_OCARINA_FAIRY);
|
||||
}
|
||||
gSaveContext.entranceIndex = ENTR_LOST_WOODS_0;
|
||||
gSaveContext.cutsceneIndex = 0xFFF0;
|
||||
} else if (GameInteractor_Should(GI_VB_BE_ELIGIBLE_FOR_LIGHT_ARROWS, (
|
||||
} else if (GameInteractor_Should(VB_BE_ELIGIBLE_FOR_LIGHT_ARROWS, (
|
||||
CHECK_QUEST_ITEM(QUEST_MEDALLION_SPIRIT) &&
|
||||
CHECK_QUEST_ITEM(QUEST_MEDALLION_SHADOW) &&
|
||||
LINK_IS_ADULT &&
|
||||
|
@ -360,7 +360,7 @@ void EnItem00_Init(Actor* thisx, PlayState* play) {
|
||||
|
||||
this->actor.params &= 0xFF;
|
||||
|
||||
if (GameInteractor_Should(GI_VB_ITEM00_DESPAWN, Flags_GetCollectible(play, this->collectibleFlag), this)) {
|
||||
if (GameInteractor_Should(VB_ITEM00_DESPAWN, Flags_GetCollectible(play, this->collectibleFlag), this)) {
|
||||
Actor_Kill(&this->actor);
|
||||
return;
|
||||
}
|
||||
@ -512,7 +512,7 @@ void EnItem00_Init(Actor* thisx, PlayState* play) {
|
||||
this->actor.velocity.y = 0.0f;
|
||||
this->actor.gravity = 0.0f;
|
||||
|
||||
if (!GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_ITEM_00, true, this)) {
|
||||
if (!GameInteractor_Should(VB_GIVE_ITEM_FROM_ITEM_00, true, this)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@ -866,7 +866,7 @@ void EnItem00_Update(Actor* thisx, PlayState* play) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_ITEM_00, true, this)) {
|
||||
if (!GameInteractor_Should(VB_GIVE_ITEM_FROM_ITEM_00, true, this)) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -2610,18 +2610,18 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
u8 songItemId = ITEM_SONG_MINUET + gOcarinaSongItemMap[msgCtx->ocarinaStaff->state];
|
||||
|
||||
if (
|
||||
(songItemId == ITEM_SONG_MINUET && GameInteractor_Should(GI_VB_GIVE_ITEM_MINUET_OF_FOREST, true, NULL)) ||
|
||||
(songItemId == ITEM_SONG_BOLERO && GameInteractor_Should(GI_VB_GIVE_ITEM_BOLERO_OF_FIRE, true, NULL)) ||
|
||||
(songItemId == ITEM_SONG_SERENADE && GameInteractor_Should(GI_VB_GIVE_ITEM_SERENADE_OF_WATER, true, NULL)) ||
|
||||
(songItemId == ITEM_SONG_REQUIEM && GameInteractor_Should(GI_VB_GIVE_ITEM_REQUIEM_OF_SPIRIT, true, NULL)) ||
|
||||
(songItemId == ITEM_SONG_NOCTURNE && GameInteractor_Should(GI_VB_GIVE_ITEM_NOCTURNE_OF_SHADOW, true, NULL)) ||
|
||||
(songItemId == ITEM_SONG_PRELUDE && GameInteractor_Should(GI_VB_GIVE_ITEM_PRELUDE_OF_LIGHT, true, NULL)) ||
|
||||
(songItemId == ITEM_SONG_LULLABY && GameInteractor_Should(GI_VB_GIVE_ITEM_ZELDAS_LULLABY, true, NULL)) ||
|
||||
(songItemId == ITEM_SONG_EPONA && GameInteractor_Should(GI_VB_GIVE_ITEM_EPONAS_SONG, true, NULL)) ||
|
||||
(songItemId == ITEM_SONG_SARIA && GameInteractor_Should(GI_VB_GIVE_ITEM_SARIAS_SONG, true, NULL)) ||
|
||||
(songItemId == ITEM_SONG_SUN && GameInteractor_Should(GI_VB_GIVE_ITEM_SUNS_SONG, true, NULL)) ||
|
||||
(songItemId == ITEM_SONG_TIME && GameInteractor_Should(GI_VB_GIVE_ITEM_SONG_OF_TIME, true, NULL)) ||
|
||||
(songItemId == ITEM_SONG_STORMS && GameInteractor_Should(GI_VB_GIVE_ITEM_SONG_OF_STORMS, true, NULL))
|
||||
(songItemId == ITEM_SONG_MINUET && GameInteractor_Should(VB_GIVE_ITEM_MINUET_OF_FOREST, true, NULL)) ||
|
||||
(songItemId == ITEM_SONG_BOLERO && GameInteractor_Should(VB_GIVE_ITEM_BOLERO_OF_FIRE, true, NULL)) ||
|
||||
(songItemId == ITEM_SONG_SERENADE && GameInteractor_Should(VB_GIVE_ITEM_SERENADE_OF_WATER, true, NULL)) ||
|
||||
(songItemId == ITEM_SONG_REQUIEM && GameInteractor_Should(VB_GIVE_ITEM_REQUIEM_OF_SPIRIT, true, NULL)) ||
|
||||
(songItemId == ITEM_SONG_NOCTURNE && GameInteractor_Should(VB_GIVE_ITEM_NOCTURNE_OF_SHADOW, true, NULL)) ||
|
||||
(songItemId == ITEM_SONG_PRELUDE && GameInteractor_Should(VB_GIVE_ITEM_PRELUDE_OF_LIGHT, true, NULL)) ||
|
||||
(songItemId == ITEM_SONG_LULLABY && GameInteractor_Should(VB_GIVE_ITEM_ZELDAS_LULLABY, true, NULL)) ||
|
||||
(songItemId == ITEM_SONG_EPONA && GameInteractor_Should(VB_GIVE_ITEM_EPONAS_SONG, true, NULL)) ||
|
||||
(songItemId == ITEM_SONG_SARIA && GameInteractor_Should(VB_GIVE_ITEM_SARIAS_SONG, true, NULL)) ||
|
||||
(songItemId == ITEM_SONG_SUN && GameInteractor_Should(VB_GIVE_ITEM_SUNS_SONG, true, NULL)) ||
|
||||
(songItemId == ITEM_SONG_TIME && GameInteractor_Should(VB_GIVE_ITEM_SONG_OF_TIME, true, NULL)) ||
|
||||
(songItemId == ITEM_SONG_STORMS && GameInteractor_Should(VB_GIVE_ITEM_SONG_OF_STORMS, true, NULL))
|
||||
) {
|
||||
Item_Give(play, songItemId);
|
||||
}
|
||||
|
@ -1173,11 +1173,11 @@ s16 OnePointCutscene_Init(PlayState* play, s16 csId, s16 timer, Actor* actor, s1
|
||||
Camera* csCam;
|
||||
|
||||
if (actor != NULL && actor->id != ACTOR_PLAYER) {
|
||||
if (!GameInteractor_Should(GI_VB_PLAY_ONEPOINT_ACTOR_CS, true, actor)) {
|
||||
if (!GameInteractor_Should(VB_PLAY_ONEPOINT_ACTOR_CS, true, actor)) {
|
||||
return SUBCAM_NONE;
|
||||
}
|
||||
} else {
|
||||
if (!GameInteractor_Should(GI_VB_PLAY_ONEPOINT_CS, true, &csId)) {
|
||||
if (!GameInteractor_Should(VB_PLAY_ONEPOINT_CS, true, &csId)) {
|
||||
return SUBCAM_NONE;
|
||||
}
|
||||
}
|
||||
|
@ -225,7 +225,7 @@ void func_8086D4B4(BgBdanSwitch* this, PlayState* play) {
|
||||
if (!Flags_GetSwitch(play, (this->dyna.actor.params >> 8) & 0x3F)) {
|
||||
type = this->dyna.actor.params & 0xFF;
|
||||
Flags_SetSwitch(play, (this->dyna.actor.params >> 8) & 0x3F);
|
||||
if (GameInteractor_Should(GI_VB_PLAY_ONEPOINT_ACTOR_CS, true, this)) {
|
||||
if (GameInteractor_Should(VB_PLAY_ONEPOINT_ACTOR_CS, true, this)) {
|
||||
if (type == BLUE || type == YELLOW_TALL_2) {
|
||||
OnePointCutscene_AttentionSetSfx(play, &this->dyna.actor, NA_SE_SY_TRE_BOX_APPEAR);
|
||||
} else {
|
||||
@ -239,7 +239,7 @@ void func_8086D548(BgBdanSwitch* this, PlayState* play) {
|
||||
if (Flags_GetSwitch(play, (this->dyna.actor.params >> 8) & 0x3F)) {
|
||||
Flags_UnsetSwitch(play, (this->dyna.actor.params >> 8) & 0x3F);
|
||||
if ((this->dyna.actor.params & 0xFF) == YELLOW_TALL_2) {
|
||||
if (GameInteractor_Should(GI_VB_PLAY_ONEPOINT_ACTOR_CS, true, this)) {
|
||||
if (GameInteractor_Should(VB_PLAY_ONEPOINT_ACTOR_CS, true, this)) {
|
||||
OnePointCutscene_AttentionSetSfx(play, &this->dyna.actor, NA_SE_SY_TRE_BOX_APPEAR);
|
||||
}
|
||||
}
|
||||
|
@ -302,7 +302,7 @@ void BgBreakwall_Wait(BgBreakwall* this, PlayState* play) {
|
||||
if ((wallType == BWALL_DC_ENTRANCE) && (!Flags_GetEventChkInf(EVENTCHKINF_ENTERED_DODONGOS_CAVERN))) {
|
||||
Flags_SetEventChkInf(EVENTCHKINF_ENTERED_DODONGOS_CAVERN);
|
||||
s32 flag = EVENTCHKINF_ENTERED_DODONGOS_CAVERN;
|
||||
if (GameInteractor_Should(GI_VB_PLAY_ENTRANCE_CS, true, &flag)) {
|
||||
if (GameInteractor_Should(VB_PLAY_ENTRANCE_CS, true, &flag)) {
|
||||
Cutscene_SetSegment(play, gDcOpeningCs);
|
||||
gSaveContext.cutsceneTrigger = 1;
|
||||
Player_SetCsActionWithHaltedActors(play, NULL, 0x31);
|
||||
|
@ -198,7 +198,7 @@ void BgDyYoseizo_CheckMagicAcquired(BgDyYoseizo* this, PlayState* play) {
|
||||
}
|
||||
}
|
||||
|
||||
if (!GameInteractor_Should(GI_VB_BE_ELIGIBLE_FOR_GREAT_FAIRY_REWARD, isEligible, this)) {
|
||||
if (!GameInteractor_Should(VB_BE_ELIGIBLE_FOR_GREAT_FAIRY_REWARD, isEligible, this)) {
|
||||
Actor_Kill(&this->actor);
|
||||
return;
|
||||
}
|
||||
|
@ -70,7 +70,7 @@ void func_808787A4(BgGjyoBridge* this, PlayState* play) {
|
||||
}
|
||||
|
||||
void LaunchBridgeCutscene(BgGjyoBridge* this, PlayState* play) {
|
||||
if (GameInteractor_Should(GI_VB_PLAY_RAINBOW_BRIDGE_CS, true, NULL)) {
|
||||
if (GameInteractor_Should(VB_PLAY_RAINBOW_BRIDGE_CS, true, NULL)) {
|
||||
play->csCtx.segment = SEGMENTED_TO_VIRTUAL(gRainbowBridgeCs);
|
||||
gSaveContext.cutsceneTrigger = 1;
|
||||
}
|
||||
@ -92,7 +92,7 @@ void BgGjyoBridge_TriggerCutscene(BgGjyoBridge* this, PlayState* play) {
|
||||
(INV_CONTENT(ITEM_ARROW_LIGHT) == ITEM_ARROW_LIGHT) &&
|
||||
CheckPlayerPosition(player, play);
|
||||
|
||||
if (GameInteractor_Should(GI_VB_BE_ELIGIBLE_FOR_RAINBOW_BRIDGE, vanillaBridgeCondition, NULL)) {
|
||||
if (GameInteractor_Should(VB_BE_ELIGIBLE_FOR_RAINBOW_BRIDGE, vanillaBridgeCondition, NULL)) {
|
||||
LaunchBridgeCutscene(this, play);
|
||||
}
|
||||
}
|
||||
@ -103,7 +103,7 @@ void BgGjyoBridge_SpawnBridge(BgGjyoBridge* this, PlayState* play) {
|
||||
(play->csCtx.npcActions[2] != NULL) &&
|
||||
(play->csCtx.npcActions[2]->action == 2);
|
||||
|
||||
if (!GameInteractor_Should(GI_VB_PLAY_RAINBOW_BRIDGE_CS, true, NULL) || vanillaBridgeCondition) {
|
||||
if (!GameInteractor_Should(VB_PLAY_RAINBOW_BRIDGE_CS, true, NULL) || vanillaBridgeCondition) {
|
||||
this->dyna.actor.draw = BgGjyoBridge_Draw;
|
||||
func_8003EC50(play, &play->colCtx.dyna, this->dyna.bgId);
|
||||
Flags_SetEventChkInf(EVENTCHKINF_RAINBOW_BRIDGE_BUILT);
|
||||
|
@ -150,7 +150,7 @@ void BgMoriBigst_StalfosFight(BgMoriBigst* this, PlayState* play) {
|
||||
if ((this->dyna.actor.home.rot.z == 0) &&
|
||||
((this->dyna.actor.home.pos.y - 5.0f) <= GET_PLAYER(play)->actor.world.pos.y)) {
|
||||
BgMoriBigst_SetupFall(this, play);
|
||||
if (GameInteractor_Should(GI_VB_PLAY_ONEPOINT_ACTOR_CS, true, this)) {
|
||||
if (GameInteractor_Should(VB_PLAY_ONEPOINT_ACTOR_CS, true, this)) {
|
||||
OnePointCutscene_Init(play, 3220, 72, &this->dyna.actor, MAIN_CAM);
|
||||
}
|
||||
}
|
||||
@ -166,7 +166,7 @@ void BgMoriBigst_Fall(BgMoriBigst* this, PlayState* play) {
|
||||
this->dyna.actor.world.pos.y = this->dyna.actor.home.pos.y;
|
||||
BgMoriBigst_SetupLanding(this, play);
|
||||
Audio_PlayActorSound2(&this->dyna.actor, NA_SE_EV_STONE_BOUND);
|
||||
if (GameInteractor_Should(GI_VB_PLAY_ONEPOINT_ACTOR_CS, true, this)) {
|
||||
if (GameInteractor_Should(VB_PLAY_ONEPOINT_ACTOR_CS, true, this)) {
|
||||
OnePointCutscene_Init(play, 1020, 8, &this->dyna.actor, MAIN_CAM);
|
||||
func_8002DF38(play, NULL, 0x3C);
|
||||
}
|
||||
|
@ -130,7 +130,7 @@ void func_808AC908(BgSpot02Objects* this, PlayState* play) {
|
||||
static Vec3f zeroVec = { 0.0f, 0.0f, 0.0f };
|
||||
Vec3f pos;
|
||||
|
||||
if (GameInteractor_Should(GI_VB_PLAY_ROYAL_FAMILY_TOMB_EXPLODE, play->csCtx.state != 0 && play->csCtx.npcActions[3] != NULL && play->csCtx.npcActions[3]->action == 2, this)) {
|
||||
if (GameInteractor_Should(VB_PLAY_ROYAL_FAMILY_TOMB_EXPLODE, play->csCtx.state != 0 && play->csCtx.npcActions[3] != NULL && play->csCtx.npcActions[3]->action == 2, this)) {
|
||||
Audio_PlayActorSound2(&this->dyna.actor, NA_SE_EV_GRAVE_EXPLOSION);
|
||||
Flags_SetEventChkInf(EVENTCHKINF_DESTROYED_ROYAL_FAMILY_TOMB);
|
||||
this->timer = 25;
|
||||
|
@ -61,7 +61,7 @@ void BgSpot12Saku_Init(Actor* thisx, PlayState* play) {
|
||||
|
||||
func_808B3420(this, play, &gGerudoFortressGTGShutterCol, DPM_UNK);
|
||||
Actor_ProcessInitChain(&this->dyna.actor, sInitChain);
|
||||
if (GameInteractor_Should(GI_VB_GTG_GATE_BE_OPEN, Flags_GetSwitch(play, this->dyna.actor.params & 0x3F), NULL)) {
|
||||
if (GameInteractor_Should(VB_GTG_GATE_BE_OPEN, Flags_GetSwitch(play, this->dyna.actor.params & 0x3F), NULL)) {
|
||||
func_808B3714(this);
|
||||
} else {
|
||||
func_808B3550(this);
|
||||
@ -82,7 +82,7 @@ void func_808B3550(BgSpot12Saku* this) {
|
||||
}
|
||||
|
||||
void func_808B357C(BgSpot12Saku* this, PlayState* play) {
|
||||
if (GameInteractor_Should(GI_VB_GTG_GATE_BE_OPEN, Flags_GetSwitch(play, this->dyna.actor.params & 0x3F), NULL)) {
|
||||
if (GameInteractor_Should(VB_GTG_GATE_BE_OPEN, Flags_GetSwitch(play, this->dyna.actor.params & 0x3F), NULL)) {
|
||||
func_808B35E4(this);
|
||||
this->timer = 20;
|
||||
OnePointCutscene_Init(play, 4170, -99, &this->dyna.actor, MAIN_CAM);
|
||||
|
@ -117,7 +117,7 @@ void func_808BAF40(BgTokiSwd* this, PlayState* play) {
|
||||
Actor_IsFacingAndNearPlayer(&this->actor, 800.0f, 0x7530) && !Play_InCsMode(play)) {
|
||||
Flags_SetEventChkInf(EVENTCHKINF_ENTERED_MASTER_SWORD_CHAMBER);
|
||||
s32 flag = EVENTCHKINF_ENTERED_MASTER_SWORD_CHAMBER;
|
||||
if (GameInteractor_Should(GI_VB_PLAY_ENTRANCE_CS, true, &flag)) {
|
||||
if (GameInteractor_Should(VB_PLAY_ENTRANCE_CS, true, &flag)) {
|
||||
play->csCtx.segment = D_808BBD90;
|
||||
gSaveContext.cutsceneTrigger = 1;
|
||||
}
|
||||
@ -126,7 +126,7 @@ void func_808BAF40(BgTokiSwd* this, PlayState* play) {
|
||||
if (!LINK_IS_ADULT || (Flags_GetEventChkInf(EVENTCHKINF_LEARNED_PRELUDE_OF_LIGHT) && !IS_RANDO) || IS_RANDO) {
|
||||
if (Actor_HasParent(&this->actor, play)) {
|
||||
if (!LINK_IS_ADULT) {
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_MASTER_SWORD, true, NULL)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_MASTER_SWORD, true, NULL)) {
|
||||
Item_Give(play, ITEM_SWORD_MASTER);
|
||||
}
|
||||
play->csCtx.segment = D_808BB2F0;
|
||||
|
@ -154,7 +154,7 @@ void func_808BC8B8(BgTreemouth* this, PlayState* play) {
|
||||
}
|
||||
} else if (Actor_IsFacingAndNearPlayer(&this->dyna.actor, 1658.0f, 0x4E20)) {
|
||||
Flags_SetEventChkInf(EVENTCHKINF_MET_DEKU_TREE);
|
||||
if (GameInteractor_Should(GI_VB_PLAY_DEKU_TREE_INTRO_CS, true, this)) {
|
||||
if (GameInteractor_Should(VB_PLAY_DEKU_TREE_INTRO_CS, true, this)) {
|
||||
play->csCtx.segment = D_808BCE20;
|
||||
gSaveContext.cutsceneTrigger = 1;
|
||||
BgTreemouth_SetupAction(this, func_808BC9EC);
|
||||
|
@ -944,7 +944,7 @@ void BossGanondrof_Death(BossGanondrof* this, PlayState* play) {
|
||||
case DEATH_THROES:
|
||||
switch (this->work[GND_ACTION_STATE]) {
|
||||
case DEATH_SPASM:
|
||||
if (GameInteractor_Should(GI_VB_PHANTOM_GANON_DEATH_SCENE, true, this)) {
|
||||
if (GameInteractor_Should(VB_PHANTOM_GANON_DEATH_SCENE, true, this)) {
|
||||
if (Animation_OnFrame(&this->skelAnime, this->fwork[GND_END_FRAME])) {
|
||||
this->fwork[GND_END_FRAME] = Animation_GetLastFrame(&gPhantomGanonAirDamageAnim);
|
||||
Animation_Change(&this->skelAnime, &gPhantomGanonAirDamageAnim, 0.5f, 0.0f,
|
||||
@ -963,7 +963,7 @@ void BossGanondrof_Death(BossGanondrof* this, PlayState* play) {
|
||||
bodyDecayLevel = 1;
|
||||
break;
|
||||
}
|
||||
if (GameInteractor_Should(GI_VB_PHANTOM_GANON_DEATH_SCENE, true, NULL)) {
|
||||
if (GameInteractor_Should(VB_PHANTOM_GANON_DEATH_SCENE, true, NULL)) {
|
||||
Math_ApproachS(&this->actor.shape.rot.y, this->work[GND_VARIANCE_TIMER] * -100, 5, 0xBB8);
|
||||
Math_ApproachF(&this->cameraNextEye.z, this->targetPos.z + 60.0f, 0.02f, 0.5f);
|
||||
Math_ApproachF(&this->actor.world.pos.y, GND_BOSSROOM_CENTER_Y + 133.0f, 0.05f, 100.0f);
|
||||
|
@ -185,7 +185,7 @@ void func_80969F38(DemoDu* this, PlayState* play) {
|
||||
|
||||
Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_DEMO_EFFECT, posX, posY, posZ, 0, 0, 0,
|
||||
DEMO_EFFECT_MEDAL_FIRE);
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_FIRE_MEDALLION, true, NULL)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_FIRE_MEDALLION, true, NULL)) {
|
||||
Item_Give(play, ITEM_MEDALLION_FIRE);
|
||||
}
|
||||
}
|
||||
@ -204,7 +204,7 @@ void DemoDu_CsFireMedallion_AdvanceTo01(DemoDu* this, PlayState* play) {
|
||||
this->updateIndex = CS_FIREMEDALLION_SUBSCENE(1);
|
||||
play->csCtx.segment = D_8096C1A4;
|
||||
gSaveContext.cutsceneTrigger = 2;
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_FIRE_MEDALLION, true, NULL)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_FIRE_MEDALLION, true, NULL)) {
|
||||
Item_Give(play, ITEM_MEDALLION_FIRE);
|
||||
}
|
||||
|
||||
|
@ -319,7 +319,7 @@ void func_809853B4(DemoIm* this, PlayState* play) {
|
||||
|
||||
Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_DEMO_EFFECT, playerX, playerY, playerZ, 0,
|
||||
0, 0, 0xD);
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_SHADOW_MEDALLION, true, NULL)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_SHADOW_MEDALLION, true, NULL)) {
|
||||
Item_Give(play, ITEM_MEDALLION_SHADOW);
|
||||
}
|
||||
}
|
||||
@ -337,7 +337,7 @@ void func_8098544C(DemoIm* this, PlayState* play) {
|
||||
this->action = 1;
|
||||
play->csCtx.segment = D_8098786C;
|
||||
gSaveContext.cutsceneTrigger = 2;
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_SHADOW_MEDALLION, true, NULL)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_SHADOW_MEDALLION, true, NULL)) {
|
||||
Item_Give(play, ITEM_MEDALLION_SHADOW);
|
||||
}
|
||||
player->actor.world.rot.y = player->actor.shape.rot.y = this->actor.world.rot.y + 0x8000;
|
||||
@ -910,13 +910,13 @@ void func_80986BF8(DemoIm* this, PlayState* play) {
|
||||
|
||||
void func_80986C30(DemoIm* this, PlayState* play) {
|
||||
if (func_80986A5C(this, play)) {
|
||||
if (GameInteractor_Should(GI_VB_PLAY_ZELDAS_LULLABY_CS, true, this)) {
|
||||
if (GameInteractor_Should(VB_PLAY_ZELDAS_LULLABY_CS, true, this)) {
|
||||
play->csCtx.segment = SEGMENTED_TO_VIRTUAL(gZeldasCourtyardLullabyCs);
|
||||
gSaveContext.cutsceneTrigger = 1;
|
||||
func_80985F54(this);
|
||||
}
|
||||
Flags_SetEventChkInf(EVENTCHKINF_LEARNED_ZELDAS_LULLABY);
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_ZELDAS_LULLABY, true, NULL)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_ZELDAS_LULLABY, true, NULL)) {
|
||||
Item_Give(play, ITEM_SONG_LULLABY);
|
||||
}
|
||||
}
|
||||
|
@ -242,7 +242,7 @@ void func_8098E8C8(DemoSa* this, PlayState* play) {
|
||||
|
||||
Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_DEMO_EFFECT, posX, posY, posZ, 0, 0, 0,
|
||||
0xB);
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_FOREST_MEDALLION, true, NULL)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_FOREST_MEDALLION, true, NULL)) {
|
||||
Item_Give(play, ITEM_MEDALLION_FOREST);
|
||||
}
|
||||
}
|
||||
@ -261,7 +261,7 @@ void func_8098E960(DemoSa* this, PlayState* play) {
|
||||
this->action = 1;
|
||||
play->csCtx.segment = D_8099010C;
|
||||
gSaveContext.cutsceneTrigger = 2;
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_FOREST_MEDALLION, true, NULL)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_FOREST_MEDALLION, true, NULL)) {
|
||||
Item_Give(play, ITEM_MEDALLION_FOREST);
|
||||
}
|
||||
player->actor.world.rot.y = player->actor.shape.rot.y = this->actor.world.rot.y + 0x8000;
|
||||
|
@ -355,7 +355,7 @@ void func_80996A54(DoorShutter* this, PlayState* play) {
|
||||
if (Flags_GetClear(play, this->dyna.actor.room) || Flags_GetTempClear(play, this->dyna.actor.room)) {
|
||||
Flags_SetClear(play, this->dyna.actor.room);
|
||||
DoorShutter_SetupAction(this, func_80997150);
|
||||
if (GameInteractor_Should(GI_VB_PLAY_ONEPOINT_ACTOR_CS, true, this)) {
|
||||
if (GameInteractor_Should(VB_PLAY_ONEPOINT_ACTOR_CS, true, this)) {
|
||||
OnePointCutscene_Attention(play, &this->dyna.actor);
|
||||
OnePointCutscene_Attention(play, &GET_PLAYER(play)->actor);
|
||||
this->unk_16F = -100;
|
||||
@ -473,7 +473,7 @@ void func_80996EE8(DoorShutter* this, PlayState* play) {
|
||||
if (func_80996E08(this, play, 1.0f)) {
|
||||
if (Flags_GetSwitch(play, this->dyna.actor.params & 0x3F)) {
|
||||
DoorShutter_SetupAction(this, func_80997150);
|
||||
if (GameInteractor_Should(GI_VB_PLAY_ONEPOINT_ACTOR_CS, true, this)) {
|
||||
if (GameInteractor_Should(VB_PLAY_ONEPOINT_ACTOR_CS, true, this)) {
|
||||
OnePointCutscene_Attention(play, &this->dyna.actor);
|
||||
this->unk_16F = -100;
|
||||
}
|
||||
|
@ -528,9 +528,9 @@ void DoorWarp1_ChildWarpOut(DoorWarp1* this, PlayState* play) {
|
||||
osSyncPrintf("\n\n\nじかんがきたからおーしまい fade_direction=[%d]", play->transitionTrigger, TRANS_TRIGGER_START);
|
||||
|
||||
if (play->sceneNum == SCENE_DODONGOS_CAVERN_BOSS) {
|
||||
if (GameInteractor_Should(GI_VB_PLAY_BLUE_WARP_CS, !Flags_GetEventChkInf(EVENTCHKINF_USED_DODONGOS_CAVERN_BLUE_WARP), EVENTCHKINF_USED_DODONGOS_CAVERN_BLUE_WARP)) {
|
||||
if (GameInteractor_Should(VB_PLAY_BLUE_WARP_CS, !Flags_GetEventChkInf(EVENTCHKINF_USED_DODONGOS_CAVERN_BLUE_WARP), EVENTCHKINF_USED_DODONGOS_CAVERN_BLUE_WARP)) {
|
||||
Flags_SetEventChkInf(EVENTCHKINF_USED_DODONGOS_CAVERN_BLUE_WARP);
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_BLUE_WARP, true, ITEM_GORON_RUBY)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_FROM_BLUE_WARP, true, ITEM_GORON_RUBY)) {
|
||||
Item_Give(play, ITEM_GORON_RUBY);
|
||||
}
|
||||
play->nextEntranceIndex = ENTR_DEATH_MOUNTAIN_TRAIL_0;
|
||||
@ -540,10 +540,10 @@ void DoorWarp1_ChildWarpOut(DoorWarp1* this, PlayState* play) {
|
||||
gSaveContext.nextCutsceneIndex = 0;
|
||||
}
|
||||
} else if (play->sceneNum == SCENE_DEKU_TREE_BOSS) {
|
||||
if (GameInteractor_Should(GI_VB_PLAY_BLUE_WARP_CS, !Flags_GetEventChkInf(EVENTCHKINF_OBTAINED_KOKIRI_EMERALD_DEKU_TREE_DEAD), EVENTCHKINF_OBTAINED_KOKIRI_EMERALD_DEKU_TREE_DEAD)) {
|
||||
if (GameInteractor_Should(VB_PLAY_BLUE_WARP_CS, !Flags_GetEventChkInf(EVENTCHKINF_OBTAINED_KOKIRI_EMERALD_DEKU_TREE_DEAD), EVENTCHKINF_OBTAINED_KOKIRI_EMERALD_DEKU_TREE_DEAD)) {
|
||||
Flags_SetEventChkInf(EVENTCHKINF_OBTAINED_KOKIRI_EMERALD_DEKU_TREE_DEAD);
|
||||
Flags_SetEventChkInf(EVENTCHKINF_USED_DEKU_TREE_BLUE_WARP);
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_BLUE_WARP, true, ITEM_KOKIRI_EMERALD)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_FROM_BLUE_WARP, true, ITEM_KOKIRI_EMERALD)) {
|
||||
Item_Give(play, ITEM_KOKIRI_EMERALD);
|
||||
}
|
||||
play->nextEntranceIndex = ENTR_KOKIRI_FOREST_0;
|
||||
@ -645,9 +645,9 @@ void DoorWarp1_RutoWarpOut(DoorWarp1* this, PlayState* play) {
|
||||
this->warpTimer++;
|
||||
|
||||
if (this->warpTimer > sWarpTimerTarget && gSaveContext.nextCutsceneIndex == 0xFFEF) {
|
||||
if (GameInteractor_Should(GI_VB_PLAY_BLUE_WARP_CS, true, EVENTCHKINF_USED_JABU_JABUS_BELLY_BLUE_WARP)) {
|
||||
if (GameInteractor_Should(VB_PLAY_BLUE_WARP_CS, true, EVENTCHKINF_USED_JABU_JABUS_BELLY_BLUE_WARP)) {
|
||||
Flags_SetEventChkInf(EVENTCHKINF_USED_JABU_JABUS_BELLY_BLUE_WARP);
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_BLUE_WARP, true, ITEM_ZORA_SAPPHIRE)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_FROM_BLUE_WARP, true, ITEM_ZORA_SAPPHIRE)) {
|
||||
Item_Give(play, ITEM_ZORA_SAPPHIRE);
|
||||
}
|
||||
gSaveContext.nextCutsceneIndex = 0xFFF0;
|
||||
@ -762,9 +762,9 @@ void DoorWarp1_AdultWarpOut(DoorWarp1* this, PlayState* play) {
|
||||
if (IS_BOSS_RUSH) {
|
||||
BossRush_HandleBlueWarp(play, this->actor.world.pos.x, this->actor.world.pos.z);
|
||||
} else if (play->sceneNum == SCENE_FOREST_TEMPLE_BOSS) {
|
||||
if (GameInteractor_Should(GI_VB_PLAY_BLUE_WARP_CS, !Flags_GetEventChkInf(EVENTCHKINF_USED_FOREST_TEMPLE_BLUE_WARP), EVENTCHKINF_USED_FOREST_TEMPLE_BLUE_WARP)) {
|
||||
if (GameInteractor_Should(VB_PLAY_BLUE_WARP_CS, !Flags_GetEventChkInf(EVENTCHKINF_USED_FOREST_TEMPLE_BLUE_WARP), EVENTCHKINF_USED_FOREST_TEMPLE_BLUE_WARP)) {
|
||||
Flags_SetEventChkInf(EVENTCHKINF_USED_FOREST_TEMPLE_BLUE_WARP);
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_BLUE_WARP, true, ITEM_MEDALLION_FOREST)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_FROM_BLUE_WARP, true, ITEM_MEDALLION_FOREST)) {
|
||||
Item_Give(play, ITEM_MEDALLION_FOREST);
|
||||
}
|
||||
play->nextEntranceIndex = ENTR_CHAMBER_OF_THE_SAGES_0;
|
||||
@ -779,9 +779,9 @@ void DoorWarp1_AdultWarpOut(DoorWarp1* this, PlayState* play) {
|
||||
gSaveContext.nextCutsceneIndex = 0;
|
||||
}
|
||||
} else if (play->sceneNum == SCENE_FIRE_TEMPLE_BOSS) {
|
||||
if (GameInteractor_Should(GI_VB_PLAY_BLUE_WARP_CS, !Flags_GetEventChkInf(EVENTCHKINF_USED_FIRE_TEMPLE_BLUE_WARP), EVENTCHKINF_USED_FIRE_TEMPLE_BLUE_WARP)) {
|
||||
if (GameInteractor_Should(VB_PLAY_BLUE_WARP_CS, !Flags_GetEventChkInf(EVENTCHKINF_USED_FIRE_TEMPLE_BLUE_WARP), EVENTCHKINF_USED_FIRE_TEMPLE_BLUE_WARP)) {
|
||||
Flags_SetEventChkInf(EVENTCHKINF_USED_FIRE_TEMPLE_BLUE_WARP);
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_BLUE_WARP, true, ITEM_MEDALLION_FIRE)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_FROM_BLUE_WARP, true, ITEM_MEDALLION_FIRE)) {
|
||||
Item_Give(play, ITEM_MEDALLION_FIRE);
|
||||
}
|
||||
play->nextEntranceIndex = ENTR_KAKARIKO_VILLAGE_0;
|
||||
@ -795,9 +795,9 @@ void DoorWarp1_AdultWarpOut(DoorWarp1* this, PlayState* play) {
|
||||
gSaveContext.nextCutsceneIndex = 0;
|
||||
}
|
||||
} else if (play->sceneNum == SCENE_WATER_TEMPLE_BOSS) {
|
||||
if (GameInteractor_Should(GI_VB_PLAY_BLUE_WARP_CS, !Flags_GetEventChkInf(EVENTCHKINF_USED_WATER_TEMPLE_BLUE_WARP), EVENTCHKINF_USED_WATER_TEMPLE_BLUE_WARP)) {
|
||||
if (GameInteractor_Should(VB_PLAY_BLUE_WARP_CS, !Flags_GetEventChkInf(EVENTCHKINF_USED_WATER_TEMPLE_BLUE_WARP), EVENTCHKINF_USED_WATER_TEMPLE_BLUE_WARP)) {
|
||||
Flags_SetEventChkInf(EVENTCHKINF_USED_WATER_TEMPLE_BLUE_WARP);
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_BLUE_WARP, true, ITEM_MEDALLION_WATER)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_FROM_BLUE_WARP, true, ITEM_MEDALLION_WATER)) {
|
||||
Item_Give(play, ITEM_MEDALLION_WATER);
|
||||
}
|
||||
play->nextEntranceIndex = ENTR_CHAMBER_OF_THE_SAGES_0;
|
||||
@ -812,9 +812,9 @@ void DoorWarp1_AdultWarpOut(DoorWarp1* this, PlayState* play) {
|
||||
gSaveContext.nextCutsceneIndex = 0;
|
||||
}
|
||||
} else if (play->sceneNum == SCENE_SPIRIT_TEMPLE_BOSS) {
|
||||
if (GameInteractor_Should(GI_VB_PLAY_BLUE_WARP_CS, !CHECK_QUEST_ITEM(QUEST_MEDALLION_SPIRIT), RAND_INF_DUNGEONS_DONE_SPIRIT_TEMPLE)) {
|
||||
if (GameInteractor_Should(VB_PLAY_BLUE_WARP_CS, !CHECK_QUEST_ITEM(QUEST_MEDALLION_SPIRIT), RAND_INF_DUNGEONS_DONE_SPIRIT_TEMPLE)) {
|
||||
Flags_SetRandomizerInf(RAND_INF_DUNGEONS_DONE_SPIRIT_TEMPLE);
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_BLUE_WARP, true, ITEM_MEDALLION_SPIRIT)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_FROM_BLUE_WARP, true, ITEM_MEDALLION_SPIRIT)) {
|
||||
Item_Give(play, ITEM_MEDALLION_SPIRIT);
|
||||
}
|
||||
play->nextEntranceIndex = ENTR_CHAMBER_OF_THE_SAGES_0;
|
||||
@ -829,9 +829,9 @@ void DoorWarp1_AdultWarpOut(DoorWarp1* this, PlayState* play) {
|
||||
gSaveContext.nextCutsceneIndex = 0;
|
||||
}
|
||||
} else if (play->sceneNum == SCENE_SHADOW_TEMPLE_BOSS) {
|
||||
if (GameInteractor_Should(GI_VB_PLAY_BLUE_WARP_CS, !CHECK_QUEST_ITEM(QUEST_MEDALLION_SHADOW), RAND_INF_DUNGEONS_DONE_SHADOW_TEMPLE)) {
|
||||
if (GameInteractor_Should(VB_PLAY_BLUE_WARP_CS, !CHECK_QUEST_ITEM(QUEST_MEDALLION_SHADOW), RAND_INF_DUNGEONS_DONE_SHADOW_TEMPLE)) {
|
||||
Flags_SetRandomizerInf(RAND_INF_DUNGEONS_DONE_SHADOW_TEMPLE);
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_BLUE_WARP, true, ITEM_MEDALLION_SHADOW)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_FROM_BLUE_WARP, true, ITEM_MEDALLION_SHADOW)) {
|
||||
Item_Give(play, ITEM_MEDALLION_SHADOW);
|
||||
}
|
||||
play->nextEntranceIndex = ENTR_CHAMBER_OF_THE_SAGES_0;
|
||||
|
@ -126,7 +126,7 @@ void ElfMsg_CallNaviCuboid(ElfMsg* this, PlayState* play) {
|
||||
(this->actor.world.pos.y <= player->actor.world.pos.y) &&
|
||||
((player->actor.world.pos.y - this->actor.world.pos.y) < (100.0f * this->actor.scale.y)) &&
|
||||
(fabsf(player->actor.world.pos.z - this->actor.world.pos.z) < (100.0f * this->actor.scale.z))) {
|
||||
if (GameInteractor_Should(GI_VB_NAVI_TALK, true, this)) {
|
||||
if (GameInteractor_Should(VB_NAVI_TALK, true, this)) {
|
||||
player->naviTextId = ElfMsg_GetMessageId(this);
|
||||
navi->elfMsg = this;
|
||||
}
|
||||
@ -148,7 +148,7 @@ void ElfMsg_CallNaviCylinder(ElfMsg* this, PlayState* play) {
|
||||
if (ElfMsg_WithinXZDistance(&player->actor.world.pos, &this->actor.world.pos, this->actor.scale.x * 100.0f) &&
|
||||
(this->actor.world.pos.y <= player->actor.world.pos.y) &&
|
||||
((player->actor.world.pos.y - this->actor.world.pos.y) < (100.0f * this->actor.scale.y))) {
|
||||
if (GameInteractor_Should(GI_VB_NAVI_TALK, true, this)) {
|
||||
if (GameInteractor_Should(VB_NAVI_TALK, true, this)) {
|
||||
player->naviTextId = ElfMsg_GetMessageId(this);
|
||||
navi->elfMsg = this;
|
||||
}
|
||||
|
@ -120,7 +120,7 @@ void func_809B0524(EnAni* this, PlayState* play) {
|
||||
}
|
||||
|
||||
void func_809B0558(EnAni* this, PlayState* play) {
|
||||
if (Actor_HasParent(&this->actor, play) || !GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_MAN_ON_ROOF, true, NULL)) {
|
||||
if (Actor_HasParent(&this->actor, play) || !GameInteractor_Should(VB_GIVE_ITEM_FROM_MAN_ON_ROOF, true, NULL)) {
|
||||
this->actor.parent = NULL;
|
||||
if (!LINK_IS_ADULT) {
|
||||
EnAni_SetupAction(this, func_809B04F0);
|
||||
@ -129,7 +129,7 @@ void func_809B0558(EnAni* this, PlayState* play) {
|
||||
}
|
||||
Flags_SetItemGetInf(ITEMGETINF_15);
|
||||
} else {
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_MAN_ON_ROOF, true, NULL)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_FROM_MAN_ON_ROOF, true, NULL)) {
|
||||
Actor_OfferGetItem(&this->actor, play, GI_HEART_PIECE, 10000.0f, 200.0f);
|
||||
}
|
||||
}
|
||||
@ -140,7 +140,7 @@ void func_809B05F0(EnAni* this, PlayState* play) {
|
||||
EnAni_SetupAction(this, func_809B0558);
|
||||
}
|
||||
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_MAN_ON_ROOF, true, NULL)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_FROM_MAN_ON_ROOF, true, NULL)) {
|
||||
Actor_OfferGetItem(&this->actor, play, GI_HEART_PIECE, 10000.0f, 200.0f);
|
||||
}
|
||||
}
|
||||
|
@ -185,7 +185,7 @@ void EnBomBowlPit_GivePrize(EnBomBowlPit* this, PlayState* play) {
|
||||
|
||||
player->stateFlags1 &= ~PLAYER_STATE1_IN_CUTSCENE;
|
||||
this->actor.parent = NULL;
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_BOMBCHU_BOWLING, true, this)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_FROM_BOMBCHU_BOWLING, true, this)) {
|
||||
Actor_OfferGetItem(&this->actor, play, this->getItemId, 2000.0f, 1000.0f);
|
||||
}
|
||||
player->stateFlags1 |= PLAYER_STATE1_IN_CUTSCENE;
|
||||
@ -193,7 +193,7 @@ void EnBomBowlPit_GivePrize(EnBomBowlPit* this, PlayState* play) {
|
||||
}
|
||||
|
||||
void EnBomBowlPit_WaitTillPrizeGiven(EnBomBowlPit* this, PlayState* play) {
|
||||
if (Actor_HasParent(&this->actor, play) || !GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_BOMBCHU_BOWLING, true, this)) {
|
||||
if (Actor_HasParent(&this->actor, play) || !GameInteractor_Should(VB_GIVE_ITEM_FROM_BOMBCHU_BOWLING, true, this)) {
|
||||
this->actionFunc = EnBomBowlPit_Reset;
|
||||
} else {
|
||||
Actor_OfferGetItem(&this->actor, play, this->getItemId, 2000.0f, 1000.0f);
|
||||
|
@ -278,7 +278,7 @@ void EnBox_Fall(EnBox* this, PlayState* play) {
|
||||
this->dyna.actor.shape.rot.z = 0;
|
||||
this->dyna.actor.world.pos.y = this->dyna.actor.floorHeight;
|
||||
EnBox_SetupAction(this, EnBox_WaitOpen);
|
||||
if (GameInteractor_Should(GI_VB_PLAY_ONEPOINT_ACTOR_CS, true, this)) {
|
||||
if (GameInteractor_Should(VB_PLAY_ONEPOINT_ACTOR_CS, true, this)) {
|
||||
OnePointCutscene_EndCutscene(play, this->unk_1AC);
|
||||
}
|
||||
}
|
||||
|
@ -118,7 +118,7 @@ void EnCow_Init(Actor* thisx, PlayState* play) {
|
||||
Collider_SetCylinder(play, &this->colliders[1], &this->actor, &sCylinderInit);
|
||||
func_809DEE9C(this);
|
||||
this->actionFunc = func_809DF96C;
|
||||
if (GameInteractor_Should(GI_VB_DESPAWN_HORSE_RACE_COW, (
|
||||
if (GameInteractor_Should(VB_DESPAWN_HORSE_RACE_COW, (
|
||||
play->sceneNum == SCENE_LINKS_HOUSE && (!LINK_IS_ADULT || !Flags_GetEventChkInf(EVENTCHKINF_WON_COW_IN_MALONS_RACE))
|
||||
), this)) {
|
||||
Actor_Kill(&this->actor);
|
||||
@ -260,7 +260,7 @@ void func_809DF96C(EnCow* this, PlayState* play) {
|
||||
if ((this->actor.xzDistToPlayer < 150.0f) &&
|
||||
(ABS((s16)(this->actor.yawTowardsPlayer - this->actor.shape.rot.y)) < 0x61A8)) {
|
||||
DREG(53) = 0;
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_COW, true, this)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_FROM_COW, true, this)) {
|
||||
this->actionFunc = func_809DF8FC;
|
||||
this->actor.flags |= ACTOR_FLAG_WILL_TALK;
|
||||
func_8002F2CC(&this->actor, play, 170.0f);
|
||||
|
@ -456,7 +456,7 @@ void func_809EEA00(EnDivingGame* this, PlayState* play) {
|
||||
if ((this->unk_292 == Message_GetState(&play->msgCtx) && Message_ShouldAdvance(play))) {
|
||||
Message_CloseTextbox(play);
|
||||
this->actor.parent = NULL;
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_DIVING_MINIGAME, true, &this->actor)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_FROM_DIVING_MINIGAME, true, &this->actor)) {
|
||||
Actor_OfferGetItem(&this->actor, play, GI_SCALE_SILVER, 90.0f, 10.0f);
|
||||
}
|
||||
this->actionFunc = func_809EEA90;
|
||||
@ -465,10 +465,10 @@ void func_809EEA00(EnDivingGame* this, PlayState* play) {
|
||||
|
||||
void func_809EEA90(EnDivingGame* this, PlayState* play) {
|
||||
SkelAnime_Update(&this->skelAnime);
|
||||
if (Actor_HasParent(&this->actor, play) || !GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_DIVING_MINIGAME, true, &this->actor)) {
|
||||
if (Actor_HasParent(&this->actor, play) || !GameInteractor_Should(VB_GIVE_ITEM_FROM_DIVING_MINIGAME, true, &this->actor)) {
|
||||
this->actionFunc = func_809EEAF8;
|
||||
} else {
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_DIVING_MINIGAME, true, &this->actor)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_FROM_DIVING_MINIGAME, true, &this->actor)) {
|
||||
Actor_OfferGetItem(&this->actor, play, GI_SCALE_SILVER, 90.0f, 10.0f);
|
||||
}
|
||||
}
|
||||
@ -478,7 +478,7 @@ void func_809EEA90(EnDivingGame* this, PlayState* play) {
|
||||
void func_809EEAF8(EnDivingGame* this, PlayState* play) {
|
||||
SkelAnime_Update(&this->skelAnime);
|
||||
if ((Message_GetState(&play->msgCtx) == TEXT_STATE_DONE && Message_ShouldAdvance(play)) ||
|
||||
!GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_DIVING_MINIGAME, true, &this->actor)) {
|
||||
!GameInteractor_Should(VB_GIVE_ITEM_FROM_DIVING_MINIGAME, true, &this->actor)) {
|
||||
// "Successful completion"
|
||||
osSyncPrintf(VT_FGCOL(GREEN) "☆☆☆☆☆ 正常終了 ☆☆☆☆☆ \n" VT_RST);
|
||||
this->allRupeesThrown = this->state = this->phase = this->unk_2A2 = this->grabbedRupeesCounter = 0;
|
||||
|
@ -397,7 +397,7 @@ void func_809EFDD0(EnDns* this, PlayState* play) {
|
||||
void func_809EFEE8(EnDns* this, PlayState* play) {
|
||||
if ((Message_GetState(&play->msgCtx) == TEXT_STATE_EVENT) && Message_ShouldAdvance(play)) {
|
||||
Message_CloseTextbox(play);
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_BUSINESS_SCRUB, true, this)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_FROM_BUSINESS_SCRUB, true, this)) {
|
||||
func_809EFDD0(this, play);
|
||||
}
|
||||
this->actionFunc = func_809EFF50;
|
||||
@ -405,7 +405,7 @@ void func_809EFEE8(EnDns* this, PlayState* play) {
|
||||
}
|
||||
|
||||
void func_809EFF50(EnDns* this, PlayState* play) {
|
||||
if (Actor_HasParent(&this->actor, play) || !GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_BUSINESS_SCRUB, true, this)) {
|
||||
if (Actor_HasParent(&this->actor, play) || !GameInteractor_Should(VB_GIVE_ITEM_FROM_BUSINESS_SCRUB, true, this)) {
|
||||
this->actor.parent = NULL;
|
||||
this->actionFunc = func_809EFF98;
|
||||
} else {
|
||||
|
@ -253,7 +253,7 @@ void EnDntNomal_TargetWait(EnDntNomal* this, PlayState* play) {
|
||||
if (!LINK_IS_ADULT && !Flags_GetItemGetInf(ITEMGETINF_1D)) {
|
||||
this->hitCounter++;
|
||||
if (this->hitCounter >= 3) {
|
||||
if (!GameInteractor_Should(GI_VB_PLAY_ONEPOINT_ACTOR_CS, true, &this->actor)) {
|
||||
if (!GameInteractor_Should(VB_PLAY_ONEPOINT_ACTOR_CS, true, &this->actor)) {
|
||||
this->actionFunc = EnDntNomal_TargetGivePrize;
|
||||
} else {
|
||||
OnePointCutscene_Init(play, 4140, -99, &this->actor, MAIN_CAM);
|
||||
|
@ -90,7 +90,7 @@ void EnDs_DisplayOddPotionText(EnDs* this, PlayState* play) {
|
||||
}
|
||||
|
||||
void EnDs_GiveOddPotion(EnDs* this, PlayState* play) {
|
||||
if (Actor_HasParent(&this->actor, play) || !GameInteractor_Should(GI_VB_TRADE_ODD_MUSHROOM, true, this)) {
|
||||
if (Actor_HasParent(&this->actor, play) || !GameInteractor_Should(VB_TRADE_ODD_MUSHROOM, true, this)) {
|
||||
this->actor.parent = NULL;
|
||||
this->actionFunc = EnDs_DisplayOddPotionText;
|
||||
gSaveContext.timer2State = 0;
|
||||
@ -104,7 +104,7 @@ void EnDs_TalkAfterBrewOddPotion(EnDs* this, PlayState* play) {
|
||||
Message_CloseTextbox(play);
|
||||
this->actionFunc = EnDs_GiveOddPotion;
|
||||
u32 itemId = GI_ODD_POTION;
|
||||
if (GameInteractor_Should(GI_VB_TRADE_ODD_MUSHROOM, true, this)) {
|
||||
if (GameInteractor_Should(VB_TRADE_ODD_MUSHROOM, true, this)) {
|
||||
Actor_OfferGetItem(&this->actor, play, itemId, 10000.0f, 50.0f);
|
||||
}
|
||||
}
|
||||
@ -127,7 +127,7 @@ void EnDs_BrewOddPotion2(EnDs* this, PlayState* play) {
|
||||
this->brewTimer -= 1;
|
||||
} else {
|
||||
this->actionFunc = EnDs_BrewOddPotion3;
|
||||
this->brewTimer = GameInteractor_Should(GI_VB_PLAY_EYEDROP_CREATION_ANIM, true, this) ? 60 : 0;
|
||||
this->brewTimer = GameInteractor_Should(VB_PLAY_EYEDROP_CREATION_ANIM, true, this) ? 60 : 0;
|
||||
Flags_UnsetSwitch(play, 0x3F);
|
||||
}
|
||||
}
|
||||
@ -137,7 +137,7 @@ void EnDs_BrewOddPotion1(EnDs* this, PlayState* play) {
|
||||
this->brewTimer -= 1;
|
||||
} else {
|
||||
this->actionFunc = EnDs_BrewOddPotion2;
|
||||
this->brewTimer = GameInteractor_Should(GI_VB_PLAY_EYEDROP_CREATION_ANIM, true, this) ? 20 : 0;
|
||||
this->brewTimer = GameInteractor_Should(VB_PLAY_EYEDROP_CREATION_ANIM, true, this) ? 20 : 0;
|
||||
}
|
||||
|
||||
Math_StepToF(&this->unk_1E4, 1.0f, 0.01f);
|
||||
@ -151,7 +151,7 @@ void EnDs_OfferOddPotion(EnDs* this, PlayState* play) {
|
||||
switch (play->msgCtx.choiceIndex) {
|
||||
case 0: // yes
|
||||
this->actionFunc = EnDs_BrewOddPotion1;
|
||||
this->brewTimer = GameInteractor_Should(GI_VB_PLAY_EYEDROP_CREATION_ANIM, true, this) ? 60 : 0;
|
||||
this->brewTimer = GameInteractor_Should(VB_PLAY_EYEDROP_CREATION_ANIM, true, this) ? 60 : 0;
|
||||
Flags_SetSwitch(play, 0x3F);
|
||||
play->msgCtx.msgMode = MSGMODE_PAUSED;
|
||||
player->exchangeItemId = EXCH_ITEM_NONE;
|
||||
@ -166,7 +166,7 @@ void EnDs_OfferOddPotion(EnDs* this, PlayState* play) {
|
||||
s32 EnDs_CheckRupeesAndBottle() {
|
||||
if (gSaveContext.rupees < 100) {
|
||||
return 0;
|
||||
} else if (GameInteractor_Should(GI_VB_NEED_BOTTLE_FOR_GRANNYS_ITEM, Inventory_HasEmptyBottle() == 0, NULL)) {
|
||||
} else if (GameInteractor_Should(VB_NEED_BOTTLE_FOR_GRANNYS_ITEM, Inventory_HasEmptyBottle() == 0, NULL)) {
|
||||
return 1;
|
||||
} else {
|
||||
return 2;
|
||||
@ -174,7 +174,7 @@ s32 EnDs_CheckRupeesAndBottle() {
|
||||
}
|
||||
|
||||
void EnDs_GiveBluePotion(EnDs* this, PlayState* play) {
|
||||
if (Actor_HasParent(&this->actor, play) || !GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_GRANNYS_SHOP, true, this)) {
|
||||
if (Actor_HasParent(&this->actor, play) || !GameInteractor_Should(VB_GIVE_ITEM_FROM_GRANNYS_SHOP, true, this)) {
|
||||
this->actor.parent = NULL;
|
||||
this->actionFunc = EnDs_Talk;
|
||||
} else {
|
||||
@ -198,7 +198,7 @@ void EnDs_OfferBluePotion(EnDs* this, PlayState* play) {
|
||||
Rupees_ChangeBy(-100);
|
||||
this->actor.flags &= ~ACTOR_FLAG_WILL_TALK;
|
||||
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_GRANNYS_SHOP, true, this)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_FROM_GRANNYS_SHOP, true, this)) {
|
||||
GetItemEntry itemEntry = ItemTable_Retrieve(GI_POTION_BLUE);
|
||||
Actor_OfferGetItem(&this->actor, play, GI_POTION_BLUE, 10000.0f, 50.0f);
|
||||
gSaveContext.pendingSale = itemEntry.itemId;
|
||||
@ -225,7 +225,7 @@ void EnDs_Wait(EnDs* this, PlayState* play) {
|
||||
Audio_PlaySoundGeneral(NA_SE_SY_TRE_BOX_APPEAR, &D_801333D4, 4, &D_801333E0, &D_801333E0, &D_801333E8);
|
||||
player->actor.textId = 0x504A;
|
||||
this->actionFunc = EnDs_OfferOddPotion;
|
||||
} else if (GameInteractor_Should(GI_VB_OFFER_BLUE_POTION, Flags_GetItemGetInf(ITEMGETINF_30), this)) { // Traded odd mushroom
|
||||
} else if (GameInteractor_Should(VB_OFFER_BLUE_POTION, Flags_GetItemGetInf(ITEMGETINF_30), this)) { // Traded odd mushroom
|
||||
player->actor.textId = 0x500C;
|
||||
this->actionFunc = EnDs_OfferBluePotion;
|
||||
} else {
|
||||
|
@ -377,7 +377,7 @@ void func_809FE4A4(EnDu* this, PlayState* play) {
|
||||
play->msgCtx.ocarinaMode = OCARINA_MODE_00;
|
||||
EnDu_SetupAction(this, func_809FE3C0);
|
||||
} else if (play->msgCtx.ocarinaMode >= OCARINA_MODE_06) {
|
||||
if (GameInteractor_Should(GI_VB_PLAY_DARUNIAS_JOY_CS, true, NULL)) {
|
||||
if (GameInteractor_Should(VB_PLAY_DARUNIAS_JOY_CS, true, NULL)) {
|
||||
play->csCtx.segment = SEGMENTED_TO_VIRTUAL(gGoronCityDaruniaWrongCs);
|
||||
gSaveContext.cutsceneTrigger = 1;
|
||||
}
|
||||
@ -386,7 +386,7 @@ void func_809FE4A4(EnDu* this, PlayState* play) {
|
||||
play->msgCtx.ocarinaMode = OCARINA_MODE_04;
|
||||
} else if (play->msgCtx.ocarinaMode == OCARINA_MODE_03) {
|
||||
Audio_PlaySoundGeneral(NA_SE_SY_CORRECT_CHIME, &D_801333D4, 4, &D_801333E0, &D_801333E0, &D_801333E8);
|
||||
if (GameInteractor_Should(GI_VB_PLAY_DARUNIAS_JOY_CS, true, NULL)) {
|
||||
if (GameInteractor_Should(VB_PLAY_DARUNIAS_JOY_CS, true, NULL)) {
|
||||
play->csCtx.segment = SEGMENTED_TO_VIRTUAL(gGoronCityDaruniaCorrectCs);
|
||||
gSaveContext.cutsceneTrigger = 1;
|
||||
}
|
||||
@ -554,7 +554,7 @@ void func_809FEB08(EnDu* this, PlayState* play) {
|
||||
EnDu_SetupAction(this, func_809FE3C0);
|
||||
return;
|
||||
}
|
||||
if (GameInteractor_Should(GI_VB_BE_ELIGIBLE_FOR_DARUNIAS_JOY_REWARD, CUR_UPG_VALUE(UPG_STRENGTH) <= 0, NULL)) {
|
||||
if (GameInteractor_Should(VB_BE_ELIGIBLE_FOR_DARUNIAS_JOY_REWARD, CUR_UPG_VALUE(UPG_STRENGTH) <= 0, NULL)) {
|
||||
Flags_SetRandomizerInf(RAND_INF_DARUNIAS_JOY);
|
||||
this->actor.textId = 0x301C;
|
||||
EnDu_SetupAction(this, func_809FEC14);
|
||||
@ -576,7 +576,7 @@ void func_809FEC14(EnDu* this, PlayState* play) {
|
||||
}
|
||||
|
||||
void func_809FEC70(EnDu* this, PlayState* play) {
|
||||
if (Actor_HasParent(&this->actor, play) || !GameInteractor_Should(GI_VB_GIVE_ITEM_STRENGTH_1, true, NULL)) {
|
||||
if (Actor_HasParent(&this->actor, play) || !GameInteractor_Should(VB_GIVE_ITEM_STRENGTH_1, true, NULL)) {
|
||||
this->actor.parent = NULL;
|
||||
EnDu_SetupAction(this, func_809FECE4);
|
||||
} else {
|
||||
|
@ -362,7 +362,7 @@ void EnExItem_TargetPrizeApproach(EnExItem* this, PlayState* play) {
|
||||
Math_SmoothStepToS(&this->actor.shape.rot.y, -0x4000, 5, 0x1000, 0);
|
||||
}
|
||||
|
||||
if (GameInteractor_Should(GI_VB_PLAY_ONEPOINT_ACTOR_CS, true, &this->actor) && this->timer != 0) {
|
||||
if (GameInteractor_Should(VB_PLAY_ONEPOINT_ACTOR_CS, true, &this->actor) && this->timer != 0) {
|
||||
if (this->prizeRotateTimer != 0) {
|
||||
tmpf1 = play->view.lookAt.x - play->view.eye.x;
|
||||
tmpf2 = play->view.lookAt.y - 10.0f - play->view.eye.y;
|
||||
@ -388,7 +388,7 @@ void EnExItem_TargetPrizeApproach(EnExItem* this, PlayState* play) {
|
||||
Player_SetCsActionWithHaltedActors(play, NULL, 7);
|
||||
this->actor.parent = NULL;
|
||||
|
||||
if (!GameInteractor_Should(GI_VB_PLAY_ONEPOINT_ACTOR_CS, true, &this->actor)) {
|
||||
if (!GameInteractor_Should(VB_PLAY_ONEPOINT_ACTOR_CS, true, &this->actor)) {
|
||||
GET_PLAYER(play)->stateFlags1 &= ~(PLAYER_STATE1_GETTING_ITEM | PLAYER_STATE1_ITEM_OVER_HEAD);
|
||||
}
|
||||
|
||||
@ -398,7 +398,7 @@ void EnExItem_TargetPrizeApproach(EnExItem* this, PlayState* play) {
|
||||
getItemId = GI_BULLET_BAG_50;
|
||||
}
|
||||
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_TARGET_IN_WOODS, true, &this->actor)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_FROM_TARGET_IN_WOODS, true, &this->actor)) {
|
||||
Actor_OfferGetItem(&this->actor, play, getItemId, 2000.0f, 1000.0f);
|
||||
}
|
||||
|
||||
@ -407,7 +407,7 @@ void EnExItem_TargetPrizeApproach(EnExItem* this, PlayState* play) {
|
||||
}
|
||||
|
||||
void EnExItem_TargetPrizeGive(EnExItem* this, PlayState* play) {
|
||||
if (Actor_HasParent(&this->actor, play) || !GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_TARGET_IN_WOODS, true, &this->actor)) {
|
||||
if (Actor_HasParent(&this->actor, play) || !GameInteractor_Should(VB_GIVE_ITEM_FROM_TARGET_IN_WOODS, true, &this->actor)) {
|
||||
this->actionFunc = EnExItem_TargetPrizeFinish;
|
||||
} else {
|
||||
s32 getItemId = (CUR_UPG_VALUE(UPG_BULLET_BAG) == 2) ? GI_BULLET_BAG_50 : GI_BULLET_BAG_40;
|
||||
@ -416,7 +416,7 @@ void EnExItem_TargetPrizeGive(EnExItem* this, PlayState* play) {
|
||||
}
|
||||
|
||||
void EnExItem_TargetPrizeFinish(EnExItem* this, PlayState* play) {
|
||||
if (!GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_TARGET_IN_WOODS, true, &this->actor) || (Message_GetState(&play->msgCtx) == TEXT_STATE_DONE) && Message_ShouldAdvance(play)) {
|
||||
if (!GameInteractor_Should(VB_GIVE_ITEM_FROM_TARGET_IN_WOODS, true, &this->actor) || (Message_GetState(&play->msgCtx) == TEXT_STATE_DONE) && Message_ShouldAdvance(play)) {
|
||||
// "Successful completion"
|
||||
osSyncPrintf(VT_FGCOL(GREEN) "☆☆☆☆☆ 正常終了 ☆☆☆☆☆ \n" VT_RST);
|
||||
Flags_SetItemGetInf(ITEMGETINF_1D);
|
||||
|
@ -947,7 +947,7 @@ void EnFr_SetReward(EnFr* this, PlayState* play) {
|
||||
if (!(gSaveContext.eventChkInf[13] & sSongIndex[songIndex])) {
|
||||
gSaveContext.eventChkInf[13] |= sSongIndex[songIndex];
|
||||
GameInteractor_ExecuteOnFlagSet(FLAG_EVENT_CHECK_INF, (EVENTCHKINF_SONGS_FOR_FROGS_INDEX << 4) + sSongIndexShift[songIndex]);
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_FROGS, true, this)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_FROM_FROGS, true, this)) {
|
||||
this->reward = GI_RUPEE_PURPLE;
|
||||
}
|
||||
} else {
|
||||
@ -957,7 +957,7 @@ void EnFr_SetReward(EnFr* this, PlayState* play) {
|
||||
if (!(gSaveContext.eventChkInf[13] & sSongIndex[songIndex])) {
|
||||
gSaveContext.eventChkInf[13] |= sSongIndex[songIndex];
|
||||
GameInteractor_ExecuteOnFlagSet(FLAG_EVENT_CHECK_INF, (EVENTCHKINF_SONGS_FOR_FROGS_INDEX << 4) + sSongIndexShift[songIndex]);
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_FROGS, true, this)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_FROM_FROGS, true, this)) {
|
||||
this->reward = GI_HEART_PIECE;
|
||||
}
|
||||
} else {
|
||||
@ -967,7 +967,7 @@ void EnFr_SetReward(EnFr* this, PlayState* play) {
|
||||
if (!(gSaveContext.eventChkInf[13] & sSongIndex[songIndex])) {
|
||||
gSaveContext.eventChkInf[13] |= sSongIndex[songIndex];
|
||||
GameInteractor_ExecuteOnFlagSet(FLAG_EVENT_CHECK_INF, (EVENTCHKINF_SONGS_FOR_FROGS_INDEX << 4) + sSongIndexShift[songIndex]);
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_FROGS, true, this)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_FROM_FROGS, true, this)) {
|
||||
this->reward = GI_HEART_PIECE;
|
||||
}
|
||||
} else {
|
||||
@ -1019,14 +1019,14 @@ void EnFr_Deactivate(EnFr* this, PlayState* play) {
|
||||
this->actionFunc = EnFr_Idle;
|
||||
} else {
|
||||
this->actionFunc = EnFr_GiveReward;
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_FROGS, true, this)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_FROM_FROGS, true, this)) {
|
||||
Actor_OfferGetItem(&this->actor, play, this->reward, 30.0f, 100.0f);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void EnFr_GiveReward(EnFr* this, PlayState* play) {
|
||||
if (Actor_HasParent(&this->actor, play) || !GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_FROGS, true, this)) {
|
||||
if (Actor_HasParent(&this->actor, play) || !GameInteractor_Should(VB_GIVE_ITEM_FROM_FROGS, true, this)) {
|
||||
this->actor.parent = NULL;
|
||||
this->actionFunc = EnFr_SetIdle;
|
||||
} else {
|
||||
|
@ -134,7 +134,7 @@ void EnGe1_Init(Actor* thisx, PlayState* play) {
|
||||
case GE1_TYPE_GATE_OPERATOR:
|
||||
this->hairstyle = GE1_HAIR_STRAIGHT;
|
||||
|
||||
if (GameInteractor_Should(GI_VB_GERUDOS_BE_FRIENDLY, EnGe1_CheckCarpentersFreed(), NULL)) {
|
||||
if (GameInteractor_Should(VB_GERUDOS_BE_FRIENDLY, EnGe1_CheckCarpentersFreed(), NULL)) {
|
||||
this->actionFunc = EnGe1_CheckGate_GateOp;
|
||||
} else {
|
||||
this->actionFunc = EnGe1_WatchForPlayerFrontOnly;
|
||||
@ -144,7 +144,7 @@ void EnGe1_Init(Actor* thisx, PlayState* play) {
|
||||
case GE1_TYPE_NORMAL:
|
||||
this->hairstyle = GE1_HAIR_STRAIGHT;
|
||||
|
||||
if (GameInteractor_Should(GI_VB_GERUDOS_BE_FRIENDLY, EnGe1_CheckCarpentersFreed(), NULL)) {
|
||||
if (GameInteractor_Should(VB_GERUDOS_BE_FRIENDLY, EnGe1_CheckCarpentersFreed(), NULL)) {
|
||||
this->actionFunc = EnGe1_SetNormalText;
|
||||
} else {
|
||||
this->actionFunc = EnGe1_WatchForAndSensePlayer;
|
||||
@ -174,7 +174,7 @@ void EnGe1_Init(Actor* thisx, PlayState* play) {
|
||||
|
||||
if (gSaveContext.eventInf[0] & 0x100) {
|
||||
this->actionFunc = EnGe1_TalkAfterGame_Archery;
|
||||
} else if (GameInteractor_Should(GI_VB_GERUDOS_BE_FRIENDLY, EnGe1_CheckCarpentersFreed(), NULL)) {
|
||||
} else if (GameInteractor_Should(VB_GERUDOS_BE_FRIENDLY, EnGe1_CheckCarpentersFreed(), NULL)) {
|
||||
this->actionFunc = EnGe1_Wait_Archery;
|
||||
} else {
|
||||
this->actionFunc = EnGe1_WatchForPlayerFrontOnly;
|
||||
@ -184,7 +184,7 @@ void EnGe1_Init(Actor* thisx, PlayState* play) {
|
||||
case GE1_TYPE_TRAINING_GROUNDS_GUARD:
|
||||
this->hairstyle = GE1_HAIR_STRAIGHT;
|
||||
|
||||
if (GameInteractor_Should(GI_VB_GERUDOS_BE_FRIENDLY, EnGe1_CheckCarpentersFreed(), NULL)) {
|
||||
if (GameInteractor_Should(VB_GERUDOS_BE_FRIENDLY, EnGe1_CheckCarpentersFreed(), NULL)) {
|
||||
this->actionFunc = EnGe1_CheckForCard_GTGGuard;
|
||||
} else {
|
||||
this->actionFunc = EnGe1_WatchForPlayerFrontOnly;
|
||||
@ -519,7 +519,7 @@ void EnGe1_WaitTillItemGiven_Archery(EnGe1* this, PlayState* play) {
|
||||
GetItemEntry getItemEntry = (GetItemEntry)GET_ITEM_NONE;
|
||||
s32 getItemId;
|
||||
|
||||
if (Actor_HasParent(&this->actor, play) || !GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_HORSEBACK_ARCHERY, true, this)) {
|
||||
if (Actor_HasParent(&this->actor, play) || !GameInteractor_Should(VB_GIVE_ITEM_FROM_HORSEBACK_ARCHERY, true, this)) {
|
||||
this->actionFunc = EnGe1_SetupWait_Archery;
|
||||
|
||||
if (this->stateFlags & GE1_STATE_GIVE_QUIVER) {
|
||||
@ -542,7 +542,7 @@ void EnGe1_WaitTillItemGiven_Archery(EnGe1* this, PlayState* play) {
|
||||
getItemId = GI_HEART_PIECE;
|
||||
}
|
||||
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_HORSEBACK_ARCHERY, true, this)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_FROM_HORSEBACK_ARCHERY, true, this)) {
|
||||
Actor_OfferGetItem(&this->actor, play, getItemId, 10000.0f, 50.0f);
|
||||
}
|
||||
}
|
||||
@ -571,7 +571,7 @@ void EnGe1_BeginGiveItem_Archery(EnGe1* this, PlayState* play) {
|
||||
getItemId = GI_HEART_PIECE;
|
||||
}
|
||||
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_HORSEBACK_ARCHERY, true, this)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_FROM_HORSEBACK_ARCHERY, true, this)) {
|
||||
Actor_OfferGetItem(&this->actor, play, getItemId, 10000.0f, 50.0f);
|
||||
}
|
||||
}
|
||||
|
@ -140,14 +140,14 @@ void EnGe2_Init(Actor* thisx, PlayState* play) {
|
||||
switch (this->actor.params & 0xFF) {
|
||||
case GE2_TYPE_PATROLLING:
|
||||
EnGe2_ChangeAction(this, GE2_ACTION_WALK);
|
||||
if (GameInteractor_Should(GI_VB_GERUDOS_BE_FRIENDLY, EnGe2_CheckCarpentersFreed(), NULL)) {
|
||||
if (GameInteractor_Should(VB_GERUDOS_BE_FRIENDLY, EnGe2_CheckCarpentersFreed(), NULL)) {
|
||||
this->actor.update = EnGe2_UpdateFriendly;
|
||||
this->actor.targetMode = 6;
|
||||
}
|
||||
break;
|
||||
case GE2_TYPE_STATIONARY:
|
||||
EnGe2_ChangeAction(this, GE2_ACTION_STAND);
|
||||
if (GameInteractor_Should(GI_VB_GERUDOS_BE_FRIENDLY, EnGe2_CheckCarpentersFreed(), NULL)) {
|
||||
if (GameInteractor_Should(VB_GERUDOS_BE_FRIENDLY, EnGe2_CheckCarpentersFreed(), NULL)) {
|
||||
this->actor.update = EnGe2_UpdateFriendly;
|
||||
this->actor.targetMode = 6;
|
||||
}
|
||||
@ -460,7 +460,7 @@ void EnGe2_WaitLookAtPlayer(EnGe2* this, PlayState* play) {
|
||||
}
|
||||
|
||||
void EnGe2_WaitTillCardGiven(EnGe2* this, PlayState* play) {
|
||||
if (Actor_HasParent(&this->actor, play) || !GameInteractor_Should(GI_VB_GIVE_ITEM_GERUDO_MEMBERSHIP_CARD, true, NULL)) {
|
||||
if (Actor_HasParent(&this->actor, play) || !GameInteractor_Should(VB_GIVE_ITEM_GERUDO_MEMBERSHIP_CARD, true, NULL)) {
|
||||
this->actor.parent = NULL;
|
||||
this->actionFunc = EnGe2_SetActionAfterTalk;
|
||||
} else {
|
||||
@ -473,7 +473,7 @@ void EnGe2_GiveCard(EnGe2* this, PlayState* play) {
|
||||
Message_CloseTextbox(play);
|
||||
this->actor.flags &= ~ACTOR_FLAG_WILL_TALK;
|
||||
this->actionFunc = EnGe2_WaitTillCardGiven;
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_GERUDO_MEMBERSHIP_CARD, true, NULL)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_GERUDO_MEMBERSHIP_CARD, true, NULL)) {
|
||||
Actor_OfferGetItem(&this->actor, play, GI_GERUDO_CARD, 10000.0f, 50.0f);
|
||||
}
|
||||
}
|
||||
@ -605,7 +605,7 @@ void EnGe2_Update(Actor* thisx, PlayState* play) {
|
||||
}
|
||||
EnGe2_MoveAndBlink(this, play);
|
||||
|
||||
if (GameInteractor_Should(GI_VB_GERUDOS_BE_FRIENDLY, EnGe2_CheckCarpentersFreed(), NULL) && !(this->stateFlags & GE2_STATE_KO)) {
|
||||
if (GameInteractor_Should(VB_GERUDOS_BE_FRIENDLY, EnGe2_CheckCarpentersFreed(), NULL) && !(this->stateFlags & GE2_STATE_KO)) {
|
||||
this->actor.update = EnGe2_UpdateFriendly;
|
||||
this->actor.targetMode = 6;
|
||||
}
|
||||
@ -630,7 +630,7 @@ void EnGe2_UpdateStunned(Actor* thisx, PlayState* play2) {
|
||||
}
|
||||
CollisionCheck_SetAC(play, &play->colChkCtx, &this->collider.base);
|
||||
|
||||
if (GameInteractor_Should(GI_VB_GERUDOS_BE_FRIENDLY, EnGe2_CheckCarpentersFreed(), NULL)) {
|
||||
if (GameInteractor_Should(VB_GERUDOS_BE_FRIENDLY, EnGe2_CheckCarpentersFreed(), NULL)) {
|
||||
this->actor.update = EnGe2_UpdateFriendly;
|
||||
this->actor.targetMode = 6;
|
||||
this->actor.colorFilterTimer = 0;
|
||||
|
@ -141,7 +141,7 @@ void EnGe3_WaitLookAtPlayer(EnGe3* this, PlayState* play) {
|
||||
}
|
||||
|
||||
void EnGe3_WaitTillCardGiven(EnGe3* this, PlayState* play) {
|
||||
if (Actor_HasParent(&this->actor, play) || !GameInteractor_Should(GI_VB_GIVE_ITEM_GERUDO_MEMBERSHIP_CARD, true, NULL)) {
|
||||
if (Actor_HasParent(&this->actor, play) || !GameInteractor_Should(VB_GIVE_ITEM_GERUDO_MEMBERSHIP_CARD, true, NULL)) {
|
||||
this->actor.parent = NULL;
|
||||
this->actionFunc = EnGe3_Wait;
|
||||
} else {
|
||||
@ -154,7 +154,7 @@ void EnGe3_GiveCard(EnGe3* this, PlayState* play) {
|
||||
Message_CloseTextbox(play);
|
||||
this->actor.flags &= ~ACTOR_FLAG_WILL_TALK;
|
||||
this->actionFunc = EnGe3_WaitTillCardGiven;
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_GERUDO_MEMBERSHIP_CARD, true, NULL)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_GERUDO_MEMBERSHIP_CARD, true, NULL)) {
|
||||
Actor_OfferGetItem(&this->actor, play, GI_GERUDO_CARD, 10000.0f, 50.0f);
|
||||
}
|
||||
}
|
||||
|
@ -97,7 +97,7 @@ void EnGm_Destroy(Actor* thisx, PlayState* play) {
|
||||
s32 func_80A3D7C8(void) {
|
||||
if (LINK_AGE_IN_YEARS == YEARS_CHILD) {
|
||||
return 0;
|
||||
} else if (GameInteractor_Should(GI_VB_BE_ELIGIBLE_FOR_GIANTS_KNIFE_PURCHASE, (
|
||||
} else if (GameInteractor_Should(VB_BE_ELIGIBLE_FOR_GIANTS_KNIFE_PURCHASE, (
|
||||
!CHECK_OWNED_EQUIP_ALT(EQUIP_TYPE_SWORD, EQUIP_INV_SWORD_BIGGORON) // Don't have giant's knife
|
||||
), NULL)) {
|
||||
return 1;
|
||||
@ -249,7 +249,7 @@ void EnGm_ProcessChoiceIndex(EnGm* this, PlayState* play) {
|
||||
Message_ContinueTextbox(play, 0xC8);
|
||||
this->actionFunc = func_80A3DD7C;
|
||||
} else {
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_MEDIGORON, true, this)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_FROM_MEDIGORON, true, this)) {
|
||||
Actor_OfferGetItem(&this->actor, play, GI_SWORD_KNIFE, 415.0f, 10.0f);
|
||||
}
|
||||
|
||||
@ -265,7 +265,7 @@ void EnGm_ProcessChoiceIndex(EnGm* this, PlayState* play) {
|
||||
}
|
||||
|
||||
void func_80A3DF00(EnGm* this, PlayState* play) {
|
||||
if (Actor_HasParent(&this->actor, play) || !GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_MEDIGORON, true, this)) {
|
||||
if (Actor_HasParent(&this->actor, play) || !GameInteractor_Should(VB_GIVE_ITEM_FROM_MEDIGORON, true, this)) {
|
||||
Flags_SetRandomizerInf(RAND_INF_MERCHANTS_MEDIGORON);
|
||||
this->actor.parent = NULL;
|
||||
this->actionFunc = func_80A3DF60;
|
||||
|
@ -283,7 +283,7 @@ s32 EnGo2_SpawnDust(EnGo2* this, u8 initialTimer, f32 scale, f32 scaleStep, s32
|
||||
|
||||
void EnGo2_GetItem(EnGo2* this, PlayState* play, s32 getItemId) {
|
||||
this->getItemId = getItemId;
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_GORON, true, this)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_FROM_GORON, true, this)) {
|
||||
Actor_OfferGetItem(&this->actor, play, getItemId, this->actor.xzDistToPlayer + 1.0f,
|
||||
fabsf(this->actor.yDistToPlayer) + 1.0f);
|
||||
}
|
||||
@ -329,7 +329,7 @@ u16 EnGo2_GoronFireGenericGetTextId(EnGo2* this) {
|
||||
u16 EnGo2_GetTextIdGoronCityRollingBig(PlayState* play, EnGo2* this) {
|
||||
if (Flags_GetInfTable(INFTABLE_11E)) {
|
||||
return 0x3013;
|
||||
} else if (GameInteractor_Should(GI_VB_BE_ELIGIBLE_FOR_CHILD_ROLLING_GORON_REWARD, CUR_CAPACITY(UPG_BOMB_BAG) >= 20, this)
|
||||
} else if (GameInteractor_Should(VB_BE_ELIGIBLE_FOR_CHILD_ROLLING_GORON_REWARD, CUR_CAPACITY(UPG_BOMB_BAG) >= 20, this)
|
||||
&& this->waypoint > 7 && this->waypoint < 12) {
|
||||
return 0x3012;
|
||||
} else {
|
||||
@ -407,9 +407,9 @@ s16 EnGo2_UpdateTalkStateGoronDmtRollingSmall(PlayState* play, EnGo2* this) {
|
||||
}
|
||||
|
||||
u16 EnGo2_GetTextIdGoronDmtDcEntrance(PlayState* play, EnGo2* this) {
|
||||
if (GameInteractor_Should(GI_VB_GORONS_CONSIDER_FIRE_TEMPLE_FINISHED, CHECK_QUEST_ITEM(QUEST_MEDALLION_FIRE), NULL) && LINK_IS_ADULT) {
|
||||
if (GameInteractor_Should(VB_GORONS_CONSIDER_FIRE_TEMPLE_FINISHED, CHECK_QUEST_ITEM(QUEST_MEDALLION_FIRE), NULL) && LINK_IS_ADULT) {
|
||||
return 0x3043;
|
||||
} else if (GameInteractor_Should(GI_VB_GORONS_CONSIDER_DODONGOS_CAVERN_FINISHED, CHECK_QUEST_ITEM(QUEST_GORON_RUBY), NULL)) {
|
||||
} else if (GameInteractor_Should(VB_GORONS_CONSIDER_DODONGOS_CAVERN_FINISHED, CHECK_QUEST_ITEM(QUEST_GORON_RUBY), NULL)) {
|
||||
return 0x3027;
|
||||
} else {
|
||||
return Flags_GetEventChkInf(EVENTCHKINF_BOMBED_DODONGOS_CAVERN_ENTRANCE) ? 0x3021 : Flags_GetInfTable(INFTABLE_E0) ? 0x302A : 0x3008;
|
||||
@ -428,9 +428,9 @@ s16 EnGo2_UpdateTalkStateGoronDmtDcEntrance(PlayState* play, EnGo2* this) {
|
||||
}
|
||||
|
||||
u16 EnGo2_GetTextIdGoronCityEntrance(PlayState* play, EnGo2* this) {
|
||||
if (GameInteractor_Should(GI_VB_GORONS_CONSIDER_FIRE_TEMPLE_FINISHED, CHECK_QUEST_ITEM(QUEST_MEDALLION_FIRE), NULL) && LINK_IS_ADULT) {
|
||||
if (GameInteractor_Should(VB_GORONS_CONSIDER_FIRE_TEMPLE_FINISHED, CHECK_QUEST_ITEM(QUEST_MEDALLION_FIRE), NULL) && LINK_IS_ADULT) {
|
||||
return 0x3043;
|
||||
} else if (GameInteractor_Should(GI_VB_GORONS_CONSIDER_DODONGOS_CAVERN_FINISHED, CHECK_QUEST_ITEM(QUEST_GORON_RUBY), NULL)) {
|
||||
} else if (GameInteractor_Should(VB_GORONS_CONSIDER_DODONGOS_CAVERN_FINISHED, CHECK_QUEST_ITEM(QUEST_GORON_RUBY), NULL)) {
|
||||
return 0x3027;
|
||||
} else {
|
||||
return Flags_GetInfTable(INFTABLE_F0) ? 0x3015 : 0x3014;
|
||||
@ -449,9 +449,9 @@ s16 EnGo2_UpdateTalkStateGoronCityEntrance(PlayState* play, EnGo2* this) {
|
||||
}
|
||||
|
||||
u16 EnGo2_GetTextIdGoronCityIsland(PlayState* play, EnGo2* this) {
|
||||
if (GameInteractor_Should(GI_VB_GORONS_CONSIDER_FIRE_TEMPLE_FINISHED, CHECK_QUEST_ITEM(QUEST_MEDALLION_FIRE), NULL) && LINK_IS_ADULT) {
|
||||
if (GameInteractor_Should(VB_GORONS_CONSIDER_FIRE_TEMPLE_FINISHED, CHECK_QUEST_ITEM(QUEST_MEDALLION_FIRE), NULL) && LINK_IS_ADULT) {
|
||||
return 0x3043;
|
||||
} else if (GameInteractor_Should(GI_VB_GORONS_CONSIDER_DODONGOS_CAVERN_FINISHED, CHECK_QUEST_ITEM(QUEST_GORON_RUBY), NULL)) {
|
||||
} else if (GameInteractor_Should(VB_GORONS_CONSIDER_DODONGOS_CAVERN_FINISHED, CHECK_QUEST_ITEM(QUEST_GORON_RUBY), NULL)) {
|
||||
return 0x3027;
|
||||
} else {
|
||||
return Flags_GetInfTable(INFTABLE_F4) ? 0x3017 : 0x3016;
|
||||
@ -470,9 +470,9 @@ s16 EnGo2_UpdateTalkStateGoronCityIsland(PlayState* play, EnGo2* this) {
|
||||
}
|
||||
|
||||
u16 EnGo2_GetTextIdGoronCityLowestFloor(PlayState* play, EnGo2* this) {
|
||||
if (GameInteractor_Should(GI_VB_GORONS_CONSIDER_FIRE_TEMPLE_FINISHED, CHECK_QUEST_ITEM(QUEST_MEDALLION_FIRE), NULL) && LINK_IS_ADULT) {
|
||||
if (GameInteractor_Should(VB_GORONS_CONSIDER_FIRE_TEMPLE_FINISHED, CHECK_QUEST_ITEM(QUEST_MEDALLION_FIRE), NULL) && LINK_IS_ADULT) {
|
||||
return 0x3043;
|
||||
} else if (GameInteractor_Should(GI_VB_GORONS_CONSIDER_DODONGOS_CAVERN_FINISHED, CHECK_QUEST_ITEM(QUEST_GORON_RUBY), NULL)) {
|
||||
} else if (GameInteractor_Should(VB_GORONS_CONSIDER_DODONGOS_CAVERN_FINISHED, CHECK_QUEST_ITEM(QUEST_GORON_RUBY), NULL)) {
|
||||
return 0x3027;
|
||||
} else {
|
||||
return CUR_UPG_VALUE(UPG_STRENGTH) != 0 ? 0x302C
|
||||
@ -496,13 +496,13 @@ s16 EnGo2_UpdateTalkStateGoronCityLowestFloor(PlayState* play, EnGo2* this) {
|
||||
u16 EnGo2_GetTextIdGoronCityLink(PlayState* play, EnGo2* this) {
|
||||
// In case a hook neglects to set the override, fall back to the first dialogue
|
||||
u16 overrideTextId = 0x3030;
|
||||
if (GameInteractor_Should(GI_VB_OVERRIDE_LINK_THE_GORON_DIALOGUE, false, &overrideTextId)) {
|
||||
if (GameInteractor_Should(VB_OVERRIDE_LINK_THE_GORON_DIALOGUE, false, &overrideTextId)) {
|
||||
return overrideTextId;
|
||||
}
|
||||
|
||||
if (GameInteractor_Should(GI_VB_GORONS_CONSIDER_FIRE_TEMPLE_FINISHED, CHECK_QUEST_ITEM(QUEST_MEDALLION_FIRE), NULL)) {
|
||||
if (GameInteractor_Should(VB_GORONS_CONSIDER_FIRE_TEMPLE_FINISHED, CHECK_QUEST_ITEM(QUEST_MEDALLION_FIRE), NULL)) {
|
||||
return Flags_GetInfTable(INFTABLE_10F) ? 0x3042 : 0x3041;
|
||||
} else if (GameInteractor_Should(GI_VB_GORONS_CONSIDER_TUNIC_COLLECTED, CHECK_OWNED_EQUIP(EQUIP_TYPE_TUNIC, EQUIP_INV_TUNIC_GORON), NULL)) {
|
||||
} else if (GameInteractor_Should(VB_GORONS_CONSIDER_TUNIC_COLLECTED, CHECK_OWNED_EQUIP(EQUIP_TYPE_TUNIC, EQUIP_INV_TUNIC_GORON), NULL)) {
|
||||
return Flags_GetInfTable(INFTABLE_SPOKE_TO_GORON_LINK) ? 0x3038 : 0x3037;
|
||||
} else if (Flags_GetInfTable(INFTABLE_STOPPED_GORON_LINKS_ROLLING)) {
|
||||
this->unk_20C = 0;
|
||||
@ -568,7 +568,7 @@ s16 EnGo2_UpdateTalkStateGoronCityLink(PlayState* play, EnGo2* this) {
|
||||
u16 EnGo2_GetTextIdGoronDmtBiggoron(PlayState* play, EnGo2* this) {
|
||||
Player* player = GET_PLAYER(play);
|
||||
|
||||
if (GameInteractor_Should(GI_VB_BIGGORON_CONSIDER_TRADE_COMPLETE, gSaveContext.bgsFlag, NULL)) {
|
||||
if (GameInteractor_Should(VB_BIGGORON_CONSIDER_TRADE_COMPLETE, gSaveContext.bgsFlag, NULL)) {
|
||||
player->exchangeItemId = EXCH_ITEM_CLAIM_CHECK;
|
||||
return 0x305E;
|
||||
} else if (INV_CONTENT(ITEM_TRADE_ADULT) >= ITEM_CLAIM_CHECK) {
|
||||
@ -590,7 +590,7 @@ s16 EnGo2_UpdateTalkStateGoronDmtBiggoron(PlayState* play, EnGo2* this) {
|
||||
switch (EnGo2_GetDialogState(this, play)) {
|
||||
case TEXT_STATE_DONE:
|
||||
if (this->actor.textId == 0x305E) {
|
||||
if (!GameInteractor_Should(GI_VB_BIGGORON_CONSIDER_SWORD_COLLECTED, gSaveContext.bgsFlag, NULL)) {
|
||||
if (!GameInteractor_Should(VB_BIGGORON_CONSIDER_SWORD_COLLECTED, gSaveContext.bgsFlag, NULL)) {
|
||||
Flags_SetRandomizerInf(RAND_INF_ADULT_TRADES_DMT_TRADE_CLAIM_CHECK);
|
||||
EnGo2_GetItem(this, play, GI_SWORD_BGS);
|
||||
this->actionFunc = EnGo2_SetupGetItem;
|
||||
@ -1022,7 +1022,7 @@ void EnGo2_BiggoronSetTextId(EnGo2* this, PlayState* play, Player* player) {
|
||||
u16 textId;
|
||||
|
||||
if ((this->actor.params & 0x1F) == GORON_DMT_BIGGORON) {
|
||||
if (GameInteractor_Should(GI_VB_BIGGORON_CONSIDER_TRADE_COMPLETE, gSaveContext.bgsFlag, NULL)) {
|
||||
if (GameInteractor_Should(VB_BIGGORON_CONSIDER_TRADE_COMPLETE, gSaveContext.bgsFlag, NULL)) {
|
||||
if (func_8002F368(play) == EXCH_ITEM_CLAIM_CHECK) {
|
||||
this->actor.textId = 0x3003;
|
||||
} else {
|
||||
@ -1031,18 +1031,18 @@ void EnGo2_BiggoronSetTextId(EnGo2* this, PlayState* play, Player* player) {
|
||||
player->actor.textId = this->actor.textId;
|
||||
|
||||
} else if (
|
||||
!GameInteractor_Should(GI_VB_BIGGORON_CONSIDER_SWORD_COLLECTED, gSaveContext.bgsFlag, NULL) &&
|
||||
!GameInteractor_Should(VB_BIGGORON_CONSIDER_SWORD_COLLECTED, gSaveContext.bgsFlag, NULL) &&
|
||||
(INV_CONTENT(ITEM_TRADE_ADULT) == ITEM_CLAIM_CHECK)
|
||||
) {
|
||||
if (func_8002F368(play) == EXCH_ITEM_CLAIM_CHECK) {
|
||||
if (GameInteractor_Should(GI_VB_BIGGORON_CONSIDER_SWORD_FORGED, Environment_GetBgsDayCount() >= 3, NULL)) {
|
||||
if (GameInteractor_Should(VB_BIGGORON_CONSIDER_SWORD_FORGED, Environment_GetBgsDayCount() >= 3, NULL)) {
|
||||
textId = 0x305E;
|
||||
} else {
|
||||
textId = 0x305D;
|
||||
}
|
||||
this->actor.textId = textId;
|
||||
} else {
|
||||
if (GameInteractor_Should(GI_VB_BIGGORON_CONSIDER_SWORD_FORGED, Environment_GetBgsDayCount() >= 3, NULL)) {
|
||||
if (GameInteractor_Should(VB_BIGGORON_CONSIDER_SWORD_FORGED, Environment_GetBgsDayCount() >= 3, NULL)) {
|
||||
textId = 0x3002;
|
||||
} else {
|
||||
textId = 0x305D;
|
||||
@ -1171,8 +1171,8 @@ s32 EnGo2_IsCameraModified(EnGo2* this, PlayState* play) {
|
||||
(this->actor.params & 0x1F) == GORON_MARKET_BAZAAR) {
|
||||
return true;
|
||||
} else if (
|
||||
!GameInteractor_Should(GI_VB_GORONS_CONSIDER_FIRE_TEMPLE_FINISHED, CHECK_QUEST_ITEM(QUEST_MEDALLION_FIRE), NULL) &&
|
||||
GameInteractor_Should(GI_VB_GORONS_CONSIDER_TUNIC_COLLECTED, CHECK_OWNED_EQUIP(EQUIP_TYPE_TUNIC, EQUIP_INV_TUNIC_GORON), NULL)
|
||||
!GameInteractor_Should(VB_GORONS_CONSIDER_FIRE_TEMPLE_FINISHED, CHECK_QUEST_ITEM(QUEST_MEDALLION_FIRE), NULL) &&
|
||||
GameInteractor_Should(VB_GORONS_CONSIDER_TUNIC_COLLECTED, CHECK_OWNED_EQUIP(EQUIP_TYPE_TUNIC, EQUIP_INV_TUNIC_GORON), NULL)
|
||||
) {
|
||||
return true;
|
||||
} else {
|
||||
@ -1231,8 +1231,8 @@ void EnGo2_SelectGoronWakingUp(EnGo2* this) {
|
||||
break;
|
||||
case GORON_CITY_LINK:
|
||||
if (
|
||||
!GameInteractor_Should(GI_VB_GORONS_CONSIDER_FIRE_TEMPLE_FINISHED, CHECK_QUEST_ITEM(QUEST_MEDALLION_FIRE), NULL) &&
|
||||
GameInteractor_Should(GI_VB_GORONS_CONSIDER_TUNIC_COLLECTED, CHECK_OWNED_EQUIP(EQUIP_TYPE_TUNIC, EQUIP_INV_TUNIC_GORON), NULL)
|
||||
!GameInteractor_Should(VB_GORONS_CONSIDER_FIRE_TEMPLE_FINISHED, CHECK_QUEST_ITEM(QUEST_MEDALLION_FIRE), NULL) &&
|
||||
GameInteractor_Should(VB_GORONS_CONSIDER_TUNIC_COLLECTED, CHECK_OWNED_EQUIP(EQUIP_TYPE_TUNIC, EQUIP_INV_TUNIC_GORON), NULL)
|
||||
) {
|
||||
EnGo2_WakingUp(this);
|
||||
break;
|
||||
@ -1561,7 +1561,7 @@ void EnGo2_Init(Actor* thisx, PlayState* play) {
|
||||
case GORON_CITY_LOWEST_FLOOR:
|
||||
case GORON_CITY_STAIRWELL:
|
||||
case GORON_CITY_LOST_WOODS:
|
||||
if (!GameInteractor_Should(GI_VB_GORONS_CONSIDER_FIRE_TEMPLE_FINISHED, CHECK_QUEST_ITEM(QUEST_MEDALLION_FIRE), NULL) && LINK_IS_ADULT) {
|
||||
if (!GameInteractor_Should(VB_GORONS_CONSIDER_FIRE_TEMPLE_FINISHED, CHECK_QUEST_ITEM(QUEST_MEDALLION_FIRE), NULL) && LINK_IS_ADULT) {
|
||||
Actor_Kill(&this->actor);
|
||||
}
|
||||
this->actionFunc = EnGo2_CurledUp;
|
||||
@ -1577,8 +1577,8 @@ void EnGo2_Init(Actor* thisx, PlayState* play) {
|
||||
Path_CopyLastPoint(this->path, &this->actor.world.pos);
|
||||
this->actor.home.pos = this->actor.world.pos;
|
||||
if (
|
||||
!GameInteractor_Should(GI_VB_GORONS_CONSIDER_FIRE_TEMPLE_FINISHED, CHECK_QUEST_ITEM(QUEST_MEDALLION_FIRE), NULL) &&
|
||||
GameInteractor_Should(GI_VB_GORONS_CONSIDER_TUNIC_COLLECTED, CHECK_OWNED_EQUIP(EQUIP_TYPE_TUNIC, EQUIP_INV_TUNIC_GORON), NULL)
|
||||
!GameInteractor_Should(VB_GORONS_CONSIDER_FIRE_TEMPLE_FINISHED, CHECK_QUEST_ITEM(QUEST_MEDALLION_FIRE), NULL) &&
|
||||
GameInteractor_Should(VB_GORONS_CONSIDER_TUNIC_COLLECTED, CHECK_OWNED_EQUIP(EQUIP_TYPE_TUNIC, EQUIP_INV_TUNIC_GORON), NULL)
|
||||
) {
|
||||
EnGo2_GetItemAnimation(this, play);
|
||||
} else {
|
||||
@ -1795,7 +1795,7 @@ void EnGo2_ReverseRolling(EnGo2* this, PlayState* play) {
|
||||
}
|
||||
|
||||
void EnGo2_SetupGetItem(EnGo2* this, PlayState* play) {
|
||||
if (Actor_HasParent(&this->actor, play) || !GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_GORON, true, NULL)) {
|
||||
if (Actor_HasParent(&this->actor, play) || !GameInteractor_Should(VB_GIVE_ITEM_FROM_GORON, true, NULL)) {
|
||||
this->actor.parent = NULL;
|
||||
this->actionFunc = EnGo2_SetGetItem;
|
||||
} else {
|
||||
@ -1804,7 +1804,7 @@ void EnGo2_SetupGetItem(EnGo2* this, PlayState* play) {
|
||||
}
|
||||
|
||||
void EnGo2_SetGetItem(EnGo2* this, PlayState* play) {
|
||||
if ((Message_GetState(&play->msgCtx) == TEXT_STATE_DONE) && Message_ShouldAdvance(play) || !GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_GORON, true, NULL)) {
|
||||
if ((Message_GetState(&play->msgCtx) == TEXT_STATE_DONE) && Message_ShouldAdvance(play) || !GameInteractor_Should(VB_GIVE_ITEM_FROM_GORON, true, NULL)) {
|
||||
this->interactInfo.talkState = NPC_TALK_STATE_IDLE;
|
||||
switch (this->getItemId) {
|
||||
case GI_CLAIM_CHECK:
|
||||
@ -1816,7 +1816,7 @@ void EnGo2_SetGetItem(EnGo2* this, PlayState* play) {
|
||||
EnGo2_GetItemAnimation(this, play);
|
||||
return;
|
||||
case GI_SWORD_BGS:
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_GORON, true, NULL)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_FROM_GORON, true, NULL)) {
|
||||
gSaveContext.bgsFlag = true;
|
||||
}
|
||||
break;
|
||||
@ -1837,12 +1837,12 @@ void EnGo2_BiggoronEyedrops(EnGo2* this, PlayState* play) {
|
||||
this->actor.flags &= ~ACTOR_FLAG_TARGETABLE;
|
||||
this->actor.shape.rot.y += 0x5B0;
|
||||
this->trackingMode = NPC_TRACKING_NONE;
|
||||
this->animTimer = !GameInteractor_Should(GI_VB_PLAY_EYEDROPS_CS, true, NULL) ? 0 : (this->skelAnime.endFrame + 60.0f + 60.0f); // eyeDrops animation timer
|
||||
this->animTimer = !GameInteractor_Should(VB_PLAY_EYEDROPS_CS, true, NULL) ? 0 : (this->skelAnime.endFrame + 60.0f + 60.0f); // eyeDrops animation timer
|
||||
this->eyeMouthTexState = 2;
|
||||
this->unk_20C = 0;
|
||||
this->goronState++;
|
||||
func_800F483C(0x28, 5);
|
||||
if (GameInteractor_Should(GI_VB_PLAY_EYEDROPS_CS, true, NULL)) {
|
||||
if (GameInteractor_Should(VB_PLAY_EYEDROPS_CS, true, NULL)) {
|
||||
OnePointCutscene_Init(play, 4190, -99, &this->actor, MAIN_CAM);
|
||||
}
|
||||
break;
|
||||
|
@ -79,7 +79,7 @@ void EnHs_Init(Actor* thisx, PlayState* play) {
|
||||
// "chicken shop (adult era)"
|
||||
osSyncPrintf(VT_FGCOL(CYAN) " ヒヨコの店(大人の時) \n" VT_RST);
|
||||
func_80A6E3A0(this, func_80A6E9AC);
|
||||
if (GameInteractor_Should(GI_VB_DESPAWN_GROG, Flags_GetItemGetInf(ITEMGETINF_30), this)) {
|
||||
if (GameInteractor_Should(VB_DESPAWN_GROG, Flags_GetItemGetInf(ITEMGETINF_30), this)) {
|
||||
// "chicken shop closed"
|
||||
osSyncPrintf(VT_FGCOL(CYAN) " ヒヨコ屋閉店 \n" VT_RST);
|
||||
Actor_Kill(&this->actor);
|
||||
@ -130,7 +130,7 @@ void func_80A6E5EC(EnHs* this, PlayState* play) {
|
||||
|
||||
void func_80A6E630(EnHs* this, PlayState* play) {
|
||||
if ((Message_GetState(&play->msgCtx) == TEXT_STATE_DONE) && Message_ShouldAdvance(play)) {
|
||||
if (GameInteractor_Should(GI_VB_TRADE_TIMER_ODD_MUSHROOM, true, NULL)) {
|
||||
if (GameInteractor_Should(VB_TRADE_TIMER_ODD_MUSHROOM, true, NULL)) {
|
||||
func_80088AA0(180);
|
||||
gSaveContext.eventInf[1] &= ~1;
|
||||
}
|
||||
@ -157,7 +157,7 @@ void func_80A6E70C(EnHs* this, PlayState* play) {
|
||||
}
|
||||
|
||||
void func_80A6E740(EnHs* this, PlayState* play) {
|
||||
if (Actor_HasParent(&this->actor, play) || !GameInteractor_Should(GI_VB_TRADE_COJIRO, true, this)) {
|
||||
if (Actor_HasParent(&this->actor, play) || !GameInteractor_Should(VB_TRADE_COJIRO, true, this)) {
|
||||
this->actor.parent = NULL;
|
||||
Flags_SetRandomizerInf(RAND_INF_ADULT_TRADES_LW_TRADE_COJIRO);
|
||||
func_80A6E3A0(this, func_80A6E630);
|
||||
@ -173,7 +173,7 @@ void func_80A6E7BC(EnHs* this, PlayState* play) {
|
||||
switch (play->msgCtx.choiceIndex) {
|
||||
case 0:
|
||||
func_80A6E3A0(this, func_80A6E740);
|
||||
if (GameInteractor_Should(GI_VB_TRADE_COJIRO, true, this)) {
|
||||
if (GameInteractor_Should(VB_TRADE_COJIRO, true, this)) {
|
||||
Actor_OfferGetItem(&this->actor, play, GI_ODD_MUSHROOM, 10000.0f, 50.0f);
|
||||
}
|
||||
break;
|
||||
|
@ -660,7 +660,7 @@ s16 func_80A70058(PlayState* play, Actor* thisx) {
|
||||
gSaveContext.dogParams = 0;
|
||||
break;
|
||||
case 0x709F:
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_LOST_DOG, true, this)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_FROM_LOST_DOG, true, this)) {
|
||||
func_80A6F7CC(this, play, Flags_GetInfTable(INFTABLE_191) ? GI_RUPEE_BLUE : GI_HEART_PIECE);
|
||||
this->actionFunc = func_80A714C4;
|
||||
}
|
||||
|
@ -1439,7 +1439,7 @@ void func_80A781CC(Actor* thisx, PlayState* play) {
|
||||
if (!Play_InCsMode(play)) {
|
||||
this->actor.update = EnIk_Update;
|
||||
this->actor.draw = EnIk_Draw;
|
||||
if (GameInteractor_Should(GI_VB_NABOORU_KNUCKLE_DEATH_SCENE, true, this)) {
|
||||
if (GameInteractor_Should(VB_NABOORU_KNUCKLE_DEATH_SCENE, true, this)) {
|
||||
Cutscene_SetSegment(play, gSpiritBossNabooruKnuckleDefeatCs);
|
||||
gSaveContext.cutsceneTrigger = 1;
|
||||
Actor_SetScale(&this->actor, 0.01f);
|
||||
|
@ -128,7 +128,7 @@ void func_80A8910C(EnJs* this, PlayState* play) {
|
||||
}
|
||||
|
||||
void func_80A89160(EnJs* this, PlayState* play) {
|
||||
if (Actor_HasParent(&this->actor, play) || !GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_CARPET_SALESMAN, true, this)) {
|
||||
if (Actor_HasParent(&this->actor, play) || !GameInteractor_Should(VB_GIVE_ITEM_FROM_CARPET_SALESMAN, true, this)) {
|
||||
this->actor.parent = NULL;
|
||||
En_Js_SetupAction(this, func_80A8910C);
|
||||
Flags_SetRandomizerInf(RAND_INF_MERCHANTS_CARPET_SALESMAN);
|
||||
|
@ -1027,7 +1027,7 @@ s32 EnKo_CanSpawn(EnKo* this, PlayState* play) {
|
||||
}
|
||||
|
||||
case SCENE_LOST_WOODS:
|
||||
return GameInteractor_Should(GI_VB_SPAWN_LW_FADO, (
|
||||
return GameInteractor_Should(VB_SPAWN_LW_FADO, (
|
||||
(INV_CONTENT(ITEM_TRADE_ADULT) == ITEM_ODD_POTION) ? true : false
|
||||
), this);
|
||||
default:
|
||||
@ -1175,7 +1175,7 @@ void func_80A99048(EnKo* this, PlayState* play) {
|
||||
Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_EN_ELF, this->actor.world.pos.x,
|
||||
this->actor.world.pos.y, this->actor.world.pos.z, 0, 0, 0, 3);
|
||||
if (ENKO_TYPE == ENKO_TYPE_CHILD_3) {
|
||||
if (!GameInteractor_Should(GI_VB_OPEN_KOKIRI_FOREST, CHECK_QUEST_ITEM(QUEST_KOKIRI_EMERALD), this)) {
|
||||
if (!GameInteractor_Should(VB_OPEN_KOKIRI_FOREST, CHECK_QUEST_ITEM(QUEST_KOKIRI_EMERALD), this)) {
|
||||
this->collider.dim.height += 200;
|
||||
this->actionFunc = func_80A995CC;
|
||||
return;
|
||||
@ -1211,7 +1211,7 @@ void func_80A99438(EnKo* this, PlayState* play) {
|
||||
}
|
||||
|
||||
void func_80A99504(EnKo* this, PlayState* play) {
|
||||
if (Actor_HasParent(&this->actor, play) || !GameInteractor_Should(GI_VB_TRADE_ODD_POTION, true, this)) {
|
||||
if (Actor_HasParent(&this->actor, play) || !GameInteractor_Should(VB_TRADE_ODD_POTION, true, this)) {
|
||||
this->actor.parent = NULL;
|
||||
this->actionFunc = func_80A99560;
|
||||
} else {
|
||||
|
@ -73,7 +73,7 @@ static AnimationInfo sAnimationInfo[] = {
|
||||
u16 EnKz_GetTextNoMaskChild(PlayState* play, EnKz* this) {
|
||||
Player* player = GET_PLAYER(play);
|
||||
|
||||
if (GameInteractor_Should(GI_VB_KING_ZORA_THANK_CHILD, (
|
||||
if (GameInteractor_Should(VB_KING_ZORA_THANK_CHILD, (
|
||||
CHECK_QUEST_ITEM(QUEST_ZORA_SAPPHIRE)
|
||||
), this)) {
|
||||
return 0x402B;
|
||||
@ -91,7 +91,7 @@ u16 EnKz_GetTextNoMaskAdult(PlayState* play, EnKz* this) {
|
||||
// this works because both ITEM_NONE and later trade items are > ITEM_FROG
|
||||
if (INV_CONTENT(ITEM_TRADE_ADULT) >= ITEM_FROG) {
|
||||
if (!Flags_GetInfTable(INFTABLE_139)) {
|
||||
if (!GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_THAWING_KING_ZORA, (
|
||||
if (!GameInteractor_Should(VB_GIVE_ITEM_FROM_THAWING_KING_ZORA, (
|
||||
!CHECK_OWNED_EQUIP(EQUIP_TYPE_TUNIC, EQUIP_INV_TUNIC_ZORA)
|
||||
), this)) {
|
||||
return 0x401F;
|
||||
@ -242,7 +242,7 @@ void func_80A9CB18(EnKz* this, PlayState* play) {
|
||||
Player* player = GET_PLAYER(play);
|
||||
|
||||
if (func_80A9C95C(play, this, &this->interactInfo.talkState, 340.0f, EnKz_GetText, func_80A9C6C0)) {
|
||||
if (GameInteractor_Should(GI_VB_BE_ABLE_TO_EXCHANGE_RUTOS_LETTER, (this->actor.textId == 0x401A), this) &&
|
||||
if (GameInteractor_Should(VB_BE_ABLE_TO_EXCHANGE_RUTOS_LETTER, (this->actor.textId == 0x401A), this) &&
|
||||
!Flags_GetEventChkInf(EVENTCHKINF_KING_ZORA_MOVED))
|
||||
{
|
||||
if (func_8002F368(play) == EXCH_ITEM_LETTER_RUTO) {
|
||||
@ -258,7 +258,7 @@ void func_80A9CB18(EnKz* this, PlayState* play) {
|
||||
if (LINK_IS_ADULT) {
|
||||
if ((INV_CONTENT(ITEM_TRADE_ADULT) == ITEM_PRESCRIPTION) &&
|
||||
(func_8002F368(play) == EXCH_ITEM_PRESCRIPTION)) {
|
||||
if (GameInteractor_Should(GI_VB_TRADE_PRESCRIPTION, true, this)) {
|
||||
if (GameInteractor_Should(VB_TRADE_PRESCRIPTION, true, this)) {
|
||||
this->actor.textId = 0x4014;
|
||||
this->sfxPlayed = false;
|
||||
player->actor.textId = this->actor.textId;
|
||||
@ -273,7 +273,7 @@ void func_80A9CB18(EnKz* this, PlayState* play) {
|
||||
player->actor.textId = this->actor.textId;
|
||||
} else {
|
||||
this->actor.textId =
|
||||
!GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_THAWING_KING_ZORA,
|
||||
!GameInteractor_Should(VB_GIVE_ITEM_FROM_THAWING_KING_ZORA,
|
||||
(!CHECK_OWNED_EQUIP(EQUIP_TYPE_TUNIC, EQUIP_INV_TUNIC_ZORA)), this)
|
||||
? 0x401F
|
||||
: 0x4012;
|
||||
@ -345,7 +345,7 @@ void EnKz_Init(Actor* thisx, PlayState* play) {
|
||||
this->interactInfo.talkState = NPC_TALK_STATE_IDLE;
|
||||
Animation_ChangeByInfo(&this->skelanime, sAnimationInfo, ENKZ_ANIM_0);
|
||||
|
||||
if (GameInteractor_Should(GI_VB_KING_ZORA_BE_MOVED, (
|
||||
if (GameInteractor_Should(VB_KING_ZORA_BE_MOVED, (
|
||||
Flags_GetEventChkInf(EVENTCHKINF_KING_ZORA_MOVED)
|
||||
), this)) {
|
||||
EnKz_SetMovedPos(this, play);
|
||||
@ -448,8 +448,8 @@ void EnKz_SetupGetItem(EnKz* this, PlayState* play) {
|
||||
f32 yRange;
|
||||
|
||||
if (Actor_HasParent(&this->actor, play) || (
|
||||
(this->isTrading && !GameInteractor_Should(GI_VB_TRADE_PRESCRIPTION, true, this)) ||
|
||||
(!this->isTrading && !GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_THAWING_KING_ZORA, true, this))
|
||||
(this->isTrading && !GameInteractor_Should(VB_TRADE_PRESCRIPTION, true, this)) ||
|
||||
(!this->isTrading && !GameInteractor_Should(VB_GIVE_ITEM_FROM_THAWING_KING_ZORA, true, this))
|
||||
)) {
|
||||
this->actor.parent = NULL;
|
||||
this->interactInfo.talkState = NPC_TALK_STATE_TALKING;
|
||||
@ -469,7 +469,7 @@ void EnKz_SetupGetItem(EnKz* this, PlayState* play) {
|
||||
|
||||
void EnKz_StartTimer(EnKz* this, PlayState* play) {
|
||||
if ((Message_GetState(&play->msgCtx) == TEXT_STATE_DONE) && Message_ShouldAdvance(play)) {
|
||||
if (INV_CONTENT(ITEM_TRADE_ADULT) == ITEM_FROG && GameInteractor_Should(GI_VB_TRADE_TIMER_FROG, true, NULL)) {
|
||||
if (INV_CONTENT(ITEM_TRADE_ADULT) == ITEM_FROG && GameInteractor_Should(VB_TRADE_TIMER_FROG, true, NULL)) {
|
||||
func_80088AA0(180); // start timer2 with 3 minutes
|
||||
gSaveContext.eventInf[1] &= ~1;
|
||||
}
|
||||
|
@ -91,8 +91,8 @@ static void* sEyeTextures[] = {
|
||||
};
|
||||
|
||||
u16 EnMa1_GetText(PlayState* play, Actor* thisx) {
|
||||
bool malonReturnedFromCastle = GameInteractor_Should(GI_VB_MALON_RETURN_FROM_CASTLE, Flags_GetEventChkInf(EVENTCHKINF_TALON_RETURNED_FROM_CASTLE), NULL);
|
||||
bool malonTaughtEponasSong = GameInteractor_Should(GI_VB_MALON_ALREADY_TAUGHT_EPONAS_SONG, CHECK_QUEST_ITEM(QUEST_SONG_EPONA), NULL);
|
||||
bool malonReturnedFromCastle = GameInteractor_Should(VB_MALON_RETURN_FROM_CASTLE, Flags_GetEventChkInf(EVENTCHKINF_TALON_RETURNED_FROM_CASTLE), NULL);
|
||||
bool malonTaughtEponasSong = GameInteractor_Should(VB_MALON_ALREADY_TAUGHT_EPONAS_SONG, CHECK_QUEST_ITEM(QUEST_SONG_EPONA), NULL);
|
||||
u16 faceReaction = Text_GetFaceReaction(play, 0x17);
|
||||
|
||||
if (faceReaction != 0) {
|
||||
@ -185,7 +185,7 @@ s16 func_80AA0778(PlayState* play, Actor* thisx) {
|
||||
}
|
||||
|
||||
s32 func_80AA08C4(EnMa1* this, PlayState* play) {
|
||||
bool malonReturnedFromCastle = GameInteractor_Should(GI_VB_MALON_RETURN_FROM_CASTLE, Flags_GetEventChkInf(EVENTCHKINF_TALON_RETURNED_FROM_CASTLE), NULL);
|
||||
bool malonReturnedFromCastle = GameInteractor_Should(VB_MALON_RETURN_FROM_CASTLE, Flags_GetEventChkInf(EVENTCHKINF_TALON_RETURNED_FROM_CASTLE), NULL);
|
||||
|
||||
if ((this->actor.shape.rot.z == 3) && (gSaveContext.sceneSetupIndex == 5)) {
|
||||
return 1;
|
||||
@ -269,8 +269,8 @@ void func_80AA0B74(EnMa1* this) {
|
||||
|
||||
void EnMa1_Init(Actor* thisx, PlayState* play) {
|
||||
EnMa1* this = (EnMa1*)thisx;
|
||||
bool malonReturnedFromCastle = GameInteractor_Should(GI_VB_MALON_RETURN_FROM_CASTLE, Flags_GetEventChkInf(EVENTCHKINF_TALON_RETURNED_FROM_CASTLE), NULL);
|
||||
bool malonTaughtEponasSong = GameInteractor_Should(GI_VB_MALON_ALREADY_TAUGHT_EPONAS_SONG, CHECK_QUEST_ITEM(QUEST_SONG_EPONA), NULL);
|
||||
bool malonReturnedFromCastle = GameInteractor_Should(VB_MALON_RETURN_FROM_CASTLE, Flags_GetEventChkInf(EVENTCHKINF_TALON_RETURNED_FROM_CASTLE), NULL);
|
||||
bool malonTaughtEponasSong = GameInteractor_Should(VB_MALON_ALREADY_TAUGHT_EPONAS_SONG, CHECK_QUEST_ITEM(QUEST_SONG_EPONA), NULL);
|
||||
s32 pad;
|
||||
|
||||
ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 18.0f);
|
||||
@ -306,8 +306,8 @@ void EnMa1_Destroy(Actor* thisx, PlayState* play) {
|
||||
}
|
||||
|
||||
void func_80AA0D88(EnMa1* this, PlayState* play) {
|
||||
bool malonReturnedFromCastle = GameInteractor_Should(GI_VB_MALON_RETURN_FROM_CASTLE, Flags_GetEventChkInf(EVENTCHKINF_TALON_RETURNED_FROM_CASTLE), NULL);
|
||||
bool malonTaughtEponasSong = GameInteractor_Should(GI_VB_MALON_ALREADY_TAUGHT_EPONAS_SONG, CHECK_QUEST_ITEM(QUEST_SONG_EPONA), NULL);
|
||||
bool malonReturnedFromCastle = GameInteractor_Should(VB_MALON_RETURN_FROM_CASTLE, Flags_GetEventChkInf(EVENTCHKINF_TALON_RETURNED_FROM_CASTLE), NULL);
|
||||
bool malonTaughtEponasSong = GameInteractor_Should(VB_MALON_ALREADY_TAUGHT_EPONAS_SONG, CHECK_QUEST_ITEM(QUEST_SONG_EPONA), NULL);
|
||||
|
||||
if (this->interactInfo.talkState != NPC_TALK_STATE_IDLE) {
|
||||
if (this->skelAnime.animation != &gMalonChildIdleAnim) {
|
||||
@ -331,7 +331,7 @@ void func_80AA0D88(EnMa1* this, PlayState* play) {
|
||||
}
|
||||
|
||||
void func_80AA0EA0(EnMa1* this, PlayState* play) {
|
||||
if (Actor_HasParent(&this->actor, play) || !GameInteractor_Should(GI_VB_GIVE_ITEM_WEIRD_EGG, true, NULL)) {
|
||||
if (Actor_HasParent(&this->actor, play) || !GameInteractor_Should(VB_GIVE_ITEM_WEIRD_EGG, true, NULL)) {
|
||||
this->actor.parent = NULL;
|
||||
this->actionFunc = func_80AA0EFC;
|
||||
} else {
|
||||
@ -340,7 +340,7 @@ void func_80AA0EA0(EnMa1* this, PlayState* play) {
|
||||
}
|
||||
|
||||
void func_80AA0EFC(EnMa1* this, PlayState* play) {
|
||||
if (this->interactInfo.talkState == NPC_TALK_STATE_ITEM_GIVEN || !GameInteractor_Should(GI_VB_GIVE_ITEM_WEIRD_EGG, true, NULL)) {
|
||||
if (this->interactInfo.talkState == NPC_TALK_STATE_ITEM_GIVEN || !GameInteractor_Should(VB_GIVE_ITEM_WEIRD_EGG, true, NULL)) {
|
||||
this->interactInfo.talkState = NPC_TALK_STATE_IDLE;
|
||||
this->actionFunc = func_80AA0D88;
|
||||
Flags_SetEventChkInf(EVENTCHKINF_OBTAINED_POCKET_EGG);
|
||||
|
@ -373,7 +373,7 @@ u16 EnMd_GetTextKokiriForest(PlayState* play, EnMd* this) {
|
||||
this->unk_208 = 0;
|
||||
this->unk_209 = TEXT_STATE_NONE;
|
||||
|
||||
if (GameInteractor_Should(GI_VB_MIDO_CONSIDER_DEKU_TREE_DEAD, CHECK_QUEST_ITEM(QUEST_KOKIRI_EMERALD), this)) {
|
||||
if (GameInteractor_Should(VB_MIDO_CONSIDER_DEKU_TREE_DEAD, CHECK_QUEST_ITEM(QUEST_KOKIRI_EMERALD), this)) {
|
||||
return 0x1045;
|
||||
}
|
||||
|
||||
@ -723,7 +723,7 @@ void func_80AAB948(EnMd* this, PlayState* play) {
|
||||
}
|
||||
|
||||
if (
|
||||
(GameInteractor_Should(GI_VB_MOVE_MIDO_IN_KOKIRI_FOREST, this->interactInfo.talkState == NPC_TALK_STATE_ACTION, this) && play->sceneNum == SCENE_KOKIRI_FOREST) ||
|
||||
(GameInteractor_Should(VB_MOVE_MIDO_IN_KOKIRI_FOREST, this->interactInfo.talkState == NPC_TALK_STATE_ACTION, this) && play->sceneNum == SCENE_KOKIRI_FOREST) ||
|
||||
this->interactInfo.talkState == NPC_TALK_STATE_ACTION
|
||||
) {
|
||||
if (CHECK_QUEST_ITEM(QUEST_KOKIRI_EMERALD) && !Flags_GetEventChkInf(EVENTCHKINF_SPOKE_TO_MIDO_AFTER_DEKU_TREES_DEATH) &&
|
||||
|
@ -93,11 +93,11 @@ void func_80AACA40(EnMk* this, PlayState* play) {
|
||||
}
|
||||
|
||||
void func_80AACA94(EnMk* this, PlayState* play) {
|
||||
if (Actor_HasParent(&this->actor, play) != 0 || !GameInteractor_Should(GI_VB_TRADE_FROG, true, this)) {
|
||||
if (Actor_HasParent(&this->actor, play) != 0 || !GameInteractor_Should(VB_TRADE_FROG, true, this)) {
|
||||
this->actor.parent = NULL;
|
||||
this->actionFunc = func_80AACA40;
|
||||
Flags_SetRandomizerInf(RAND_INF_ADULT_TRADES_LH_TRADE_FROG);
|
||||
if (GameInteractor_Should(GI_VB_TRADE_TIMER_EYEDROPS, true, NULL)) {
|
||||
if (GameInteractor_Should(VB_TRADE_TIMER_EYEDROPS, true, NULL)) {
|
||||
func_80088AA0(240);
|
||||
gSaveContext.eventInf[1] &= ~1;
|
||||
}
|
||||
@ -109,7 +109,7 @@ void func_80AACA94(EnMk* this, PlayState* play) {
|
||||
void func_80AACB14(EnMk* this, PlayState* play) {
|
||||
if (Actor_TextboxIsClosing(&this->actor, play)) {
|
||||
this->actionFunc = func_80AACA94;
|
||||
if (GameInteractor_Should(GI_VB_TRADE_FROG, true, this)) {
|
||||
if (GameInteractor_Should(VB_TRADE_FROG, true, this)) {
|
||||
Actor_OfferGetItem(&this->actor, play, GI_EYEDROPS, 10000.0f, 50.0f);
|
||||
}
|
||||
}
|
||||
@ -137,7 +137,7 @@ void func_80AACC04(EnMk* this, PlayState* play) {
|
||||
if (this->timer > 0) {
|
||||
this->timer--;
|
||||
} else {
|
||||
this->timer = GameInteractor_Should(GI_VB_PLAY_EYEDROP_CREATION_ANIM, true, this) ? 16 : 0;
|
||||
this->timer = GameInteractor_Should(VB_PLAY_EYEDROP_CREATION_ANIM, true, this) ? 16 : 0;
|
||||
this->actionFunc = func_80AACBAC;
|
||||
Animation_Change(&this->skelAnime, &object_mk_Anim_000D88, 1.0f, 0.0f,
|
||||
Animation_GetLastFrame(&object_mk_Anim_000D88), ANIMMODE_LOOP, -4.0f);
|
||||
@ -150,7 +150,7 @@ void func_80AACCA0(EnMk* this, PlayState* play) {
|
||||
this->timer--;
|
||||
this->actor.shape.rot.y += 0x800;
|
||||
} else {
|
||||
this->timer = GameInteractor_Should(GI_VB_PLAY_EYEDROP_CREATION_ANIM, true, this) ? 120 : 0;
|
||||
this->timer = GameInteractor_Should(VB_PLAY_EYEDROP_CREATION_ANIM, true, this) ? 120 : 0;
|
||||
this->actionFunc = func_80AACC04;
|
||||
Animation_Change(&this->skelAnime, &object_mk_Anim_000724, 1.0f, 0.0f,
|
||||
Animation_GetLastFrame(&object_mk_Anim_000724), ANIMMODE_LOOP, -4.0f);
|
||||
@ -166,7 +166,7 @@ void func_80AACD48(EnMk* this, PlayState* play) {
|
||||
this->actionFunc = func_80AACCA0;
|
||||
play->msgCtx.msgMode = MSGMODE_PAUSED;
|
||||
player->exchangeItemId = EXCH_ITEM_NONE;
|
||||
this->timer = GameInteractor_Should(GI_VB_PLAY_EYEDROP_CREATION_ANIM, true, this) ? 16 : 0;
|
||||
this->timer = GameInteractor_Should(VB_PLAY_EYEDROP_CREATION_ANIM, true, this) ? 16 : 0;
|
||||
Animation_Change(&this->skelAnime, &object_mk_Anim_000D88, 1.0f, 0.0f,
|
||||
Animation_GetLastFrame(&object_mk_Anim_000D88), ANIMMODE_LOOP, -4.0f);
|
||||
this->flags &= ~2;
|
||||
@ -200,7 +200,7 @@ void func_80AACEE8(EnMk* this, PlayState* play) {
|
||||
}
|
||||
|
||||
void func_80AACFA0(EnMk* this, PlayState* play) {
|
||||
if (Actor_HasParent(&this->actor, play) || !GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_LAB_DIVE, true, this)) {
|
||||
if (Actor_HasParent(&this->actor, play) || !GameInteractor_Should(VB_GIVE_ITEM_FROM_LAB_DIVE, true, this)) {
|
||||
this->actor.parent = NULL;
|
||||
this->actionFunc = func_80AACA40;
|
||||
Flags_SetItemGetInf(ITEMGETINF_10);
|
||||
@ -212,7 +212,7 @@ void func_80AACFA0(EnMk* this, PlayState* play) {
|
||||
void func_80AAD014(EnMk* this, PlayState* play) {
|
||||
if (Actor_TextboxIsClosing(&this->actor, play)) {
|
||||
this->actionFunc = func_80AACFA0;
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_LAB_DIVE, true, this)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_FROM_LAB_DIVE, true, this)) {
|
||||
Actor_OfferGetItem(&this->actor, play, GI_HEART_PIECE, 10000.0f, 50.0f);
|
||||
}
|
||||
}
|
||||
@ -233,7 +233,7 @@ void EnMk_Wait(EnMk* this, PlayState* play) {
|
||||
player->actor.textId = this->actor.textId;
|
||||
this->actionFunc = func_80AACA40;
|
||||
} else {
|
||||
if (GameInteractor_Should(GI_VB_USE_EYEDROP_DIALOGUE, (
|
||||
if (GameInteractor_Should(VB_USE_EYEDROP_DIALOGUE, (
|
||||
INV_CONTENT(ITEM_ODD_MUSHROOM) == ITEM_EYEDROPS
|
||||
), this)) {
|
||||
player->actor.textId = 0x4032;
|
||||
|
@ -128,12 +128,12 @@ void EnMs_Talk(EnMs* this, PlayState* play) {
|
||||
} else if (Message_ShouldAdvance(play)) {
|
||||
switch (play->msgCtx.choiceIndex) {
|
||||
case 0: // yes
|
||||
if (!GameInteractor_Should(GI_VB_BE_ELIGIBLE_FOR_MAGIC_BEANS_PURCHASE, (gSaveContext.rupees >= sPrices[BEANS_BOUGHT]), this)) {
|
||||
if (!GameInteractor_Should(VB_BE_ELIGIBLE_FOR_MAGIC_BEANS_PURCHASE, (gSaveContext.rupees >= sPrices[BEANS_BOUGHT]), this)) {
|
||||
Message_ContinueTextbox(play, 0x4069); // not enough rupees text
|
||||
return;
|
||||
}
|
||||
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_MAGIC_BEAN_SALESMAN, true, this)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_FROM_MAGIC_BEAN_SALESMAN, true, this)) {
|
||||
Actor_OfferGetItem(&this->actor, play, GI_BEAN, 90.0f, 10.0f);
|
||||
this->actionFunc = EnMs_Sell;
|
||||
}
|
||||
|
@ -327,7 +327,7 @@ void EnNb_GiveMedallion(EnNb* this, PlayState* play) {
|
||||
|
||||
Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_DEMO_EFFECT, posX, posY, posZ, 0, 0, 0,
|
||||
0xC);
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_SPIRIT_MEDALLION, true, NULL)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_SPIRIT_MEDALLION, true, NULL)) {
|
||||
Item_Give(play, ITEM_MEDALLION_SPIRIT);
|
||||
}
|
||||
}
|
||||
@ -345,7 +345,7 @@ void EnNb_SetupChamberCsImpl(EnNb* this, PlayState* play) {
|
||||
this->action = NB_CHAMBER_UNDERGROUND;
|
||||
play->csCtx.segment = &D_80AB431C;
|
||||
gSaveContext.cutsceneTrigger = 2;
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_SPIRIT_MEDALLION, true, NULL)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_SPIRIT_MEDALLION, true, NULL)) {
|
||||
Item_Give(play, ITEM_MEDALLION_SPIRIT);
|
||||
}
|
||||
player->actor.world.rot.y = player->actor.shape.rot.y = this->actor.world.rot.y + 0x8000;
|
||||
|
@ -204,7 +204,7 @@ void func_80ABA244(EnNiwLady* this, PlayState* play) {
|
||||
EnNiw* currentCucco;
|
||||
s32 phi_s1;
|
||||
|
||||
if (GameInteractor_Should(GI_VB_SET_CUCCO_COUNT, true, this)) {
|
||||
if (GameInteractor_Should(VB_SET_CUCCO_COUNT, true, this)) {
|
||||
this->cuccosInPen = 0;
|
||||
}
|
||||
currentCucco = (EnNiw*)play->actorCtx.actorLists[ACTORCAT_PROP].head;
|
||||
@ -312,7 +312,7 @@ void func_80ABA654(EnNiwLady* this, PlayState* play) {
|
||||
if (!Flags_GetItemGetInf(ITEMGETINF_0C)) {
|
||||
this->actor.parent = NULL;
|
||||
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_ANJU_AS_CHILD, true, this)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_FROM_ANJU_AS_CHILD, true, this)) {
|
||||
this->getItemId = GI_BOTTLE;
|
||||
Actor_OfferGetItem(&this->actor, play, GI_BOTTLE, 100.0f, 50.0f);
|
||||
} else {
|
||||
@ -404,7 +404,7 @@ void func_80ABA9B8(EnNiwLady* this, PlayState* play) {
|
||||
Message_CloseTextbox(play);
|
||||
this->actor.parent = NULL;
|
||||
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_ANJU_AS_ADULT, true, this)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_FROM_ANJU_AS_ADULT, true, this)) {
|
||||
Actor_OfferGetItem(&this->actor, play, GI_POCKET_EGG, 200.0f, 100.0f);
|
||||
this->actionFunc = func_80ABAC00;
|
||||
} else {
|
||||
@ -439,7 +439,7 @@ void func_80ABAB08(EnNiwLady* this, PlayState* play) {
|
||||
case 0:
|
||||
Message_CloseTextbox(play);
|
||||
this->actor.parent = NULL;
|
||||
if (GameInteractor_Should(GI_VB_TRADE_POCKET_CUCCO, true, this)) {
|
||||
if (GameInteractor_Should(VB_TRADE_POCKET_CUCCO, true, this)) {
|
||||
Actor_OfferGetItem(&this->actor, play, GI_COJIRO, 200.0f, 100.0f);
|
||||
this->actionFunc = func_80ABAC00;
|
||||
} else {
|
||||
@ -481,7 +481,7 @@ void func_80ABAC84(EnNiwLady* this, PlayState* play) {
|
||||
}
|
||||
osSyncPrintf(VT_FGCOL(GREEN) "☆☆☆☆☆ 正常終了 ☆☆☆☆☆ \n" VT_RST);
|
||||
if (LINK_IS_ADULT) {
|
||||
if (GameInteractor_Should(GI_VB_ANJU_SET_OBTAINED_TRADE_ITEM, true, this)) {
|
||||
if (GameInteractor_Should(VB_ANJU_SET_OBTAINED_TRADE_ITEM, true, this)) {
|
||||
if (!Flags_GetItemGetInf(ITEMGETINF_2C)) {
|
||||
Flags_SetItemGetInf(ITEMGETINF_2C);
|
||||
} else {
|
||||
|
@ -193,7 +193,7 @@ void func_80ABF28C(EnOkarinaTag* this, PlayState* play) {
|
||||
if ((this->ocarinaSong != 6) || (gSaveContext.scarecrowSpawnSongSet)) {
|
||||
if ((this->switchFlag >= 0) && Flags_GetSwitch(play, this->switchFlag)) {
|
||||
this->actor.flags &= ~ACTOR_FLAG_TARGETABLE;
|
||||
} else if (((this->type != 4) || GameInteractor_Should(GI_VB_BE_ELIGIBLE_TO_OPEN_DOT, !Flags_GetEventChkInf(EVENTCHKINF_OPENED_THE_DOOR_OF_TIME), this)) &&
|
||||
} else if (((this->type != 4) || GameInteractor_Should(VB_BE_ELIGIBLE_TO_OPEN_DOT, !Flags_GetEventChkInf(EVENTCHKINF_OPENED_THE_DOOR_OF_TIME), this)) &&
|
||||
((this->type != 6) || !Flags_GetEventChkInf(EVENTCHKINF_DESTROYED_ROYAL_FAMILY_TOMB)) &&
|
||||
(this->actor.xzDistToPlayer < (90.0f + this->interactRange)) &&
|
||||
(fabsf(player->actor.world.pos.y - this->actor.world.pos.y) < 80.0f)) {
|
||||
@ -245,20 +245,20 @@ void func_80ABF4C8(EnOkarinaTag* this, PlayState* play) {
|
||||
Flags_SetEventChkInf(EVENTCHKINF_OPENED_ZORAS_DOMAIN);
|
||||
break;
|
||||
case 2: // Kakariko Windmill
|
||||
if (GameInteractor_Should(GI_VB_PLAY_DRAIN_WELL_CS, true, this)) {
|
||||
if (GameInteractor_Should(VB_PLAY_DRAIN_WELL_CS, true, this)) {
|
||||
play->csCtx.segment = D_80ABF9D0;
|
||||
gSaveContext.cutsceneTrigger = 1;
|
||||
}
|
||||
func_800F574C(1.18921f, 0x5A);
|
||||
break;
|
||||
case 4: // Door of Time
|
||||
if (GameInteractor_Should(GI_VB_PLAY_DOOR_OF_TIME_CS, true, this)) {
|
||||
if (GameInteractor_Should(VB_PLAY_DOOR_OF_TIME_CS, true, this)) {
|
||||
play->csCtx.segment = D_80ABFB40;
|
||||
gSaveContext.cutsceneTrigger = 1;
|
||||
}
|
||||
break;
|
||||
case 6: // Royal Family Tomb
|
||||
if (GameInteractor_Should(GI_VB_PLAY_ROYAL_FAMILY_TOMB_CS, true, this)) {
|
||||
if (GameInteractor_Should(VB_PLAY_ROYAL_FAMILY_TOMB_CS, true, this)) {
|
||||
play->csCtx.segment = LINK_IS_ADULT ? SEGMENTED_TO_VIRTUAL(&spot02_scene_Cs_003C80)
|
||||
: SEGMENTED_TO_VIRTUAL(&spot02_scene_Cs_005020);
|
||||
gSaveContext.cutsceneTrigger = 1;
|
||||
@ -313,7 +313,7 @@ void func_80ABF7CC(EnOkarinaTag* this, PlayState* play) {
|
||||
|
||||
if ((Message_GetState(&play->msgCtx) == TEXT_STATE_EVENT) && Message_ShouldAdvance(play)) {
|
||||
Message_CloseTextbox(play);
|
||||
if (GameInteractor_Should(GI_VB_PLAY_SUNS_SONG_CS, !CHECK_QUEST_ITEM(QUEST_SONG_SUN), this)) {
|
||||
if (GameInteractor_Should(VB_PLAY_SUNS_SONG_CS, !CHECK_QUEST_ITEM(QUEST_SONG_SUN), this)) {
|
||||
play->csCtx.segment = SEGMENTED_TO_VIRTUAL(&gSunSongGraveSunSongTeachCs);
|
||||
gSaveContext.cutsceneTrigger = 1;
|
||||
}
|
||||
|
@ -283,7 +283,7 @@ s32 EnOwl_CheckInitTalk(EnOwl* this, PlayState* play, u16 textId, f32 targetDist
|
||||
} else {
|
||||
this->actor.textId = textId;
|
||||
distCheck = (flags & 2) ? 200.0f : 1000.0f;
|
||||
if (GameInteractor_Should(GI_VB_OWL_INTERACTION, this->actor.xzDistToPlayer < targetDist, this)) {
|
||||
if (GameInteractor_Should(VB_OWL_INTERACTION, this->actor.xzDistToPlayer < targetDist, this)) {
|
||||
this->actor.flags |= ACTOR_FLAG_WILL_TALK;
|
||||
func_8002F1C4(&this->actor, play, targetDist, distCheck, 0);
|
||||
}
|
||||
|
@ -127,7 +127,7 @@ void func_80AE7590(EnRl* this, PlayState* play) {
|
||||
pos.y = player->actor.world.pos.y + 80.0f;
|
||||
pos.z = player->actor.world.pos.z;
|
||||
Actor_Spawn(&play->actorCtx, play, ACTOR_DEMO_EFFECT, pos.x, pos.y, pos.z, 0, 0, 0, 0xE, true);
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_LIGHT_MEDALLION, true, NULL)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_LIGHT_MEDALLION, true, NULL)) {
|
||||
Item_Give(play, ITEM_MEDALLION_LIGHT);
|
||||
}
|
||||
this->lightMedallionGiven = 1;
|
||||
|
@ -261,7 +261,7 @@ void func_80AF2A38(EnRu2* this, PlayState* play) {
|
||||
f32 posZ = player->actor.world.pos.z;
|
||||
|
||||
Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_DEMO_EFFECT, posX, posY, posZ, 0, 0, 0, 10);
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_WATER_MEDALLION, true, NULL)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_WATER_MEDALLION, true, NULL)) {
|
||||
Item_Give(play, ITEM_MEDALLION_WATER);
|
||||
}
|
||||
}
|
||||
@ -276,7 +276,7 @@ void func_80AF2AB4(EnRu2* this, PlayState* play) {
|
||||
this->action = 1;
|
||||
play->csCtx.segment = &D_80AF411C;
|
||||
gSaveContext.cutsceneTrigger = 2;
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_WATER_MEDALLION, true, NULL)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_WATER_MEDALLION, true, NULL)) {
|
||||
Item_Give(play, ITEM_MEDALLION_WATER);
|
||||
}
|
||||
temp = this->actor.world.rot.y + 0x8000;
|
||||
|
@ -391,10 +391,10 @@ s32 func_80AF5DFC(EnSa* this, PlayState* play) {
|
||||
return 1;
|
||||
}
|
||||
if (play->sceneNum == SCENE_SACRED_FOREST_MEADOW && (Flags_GetEventChkInf(EVENTCHKINF_OBTAINED_ZELDAS_LETTER))) {
|
||||
return GameInteractor_Should(GI_VB_BE_ELIGIBLE_FOR_SARIAS_SONG, !CHECK_QUEST_ITEM(QUEST_SONG_SARIA), NULL) ? 5 : 2;
|
||||
return GameInteractor_Should(VB_BE_ELIGIBLE_FOR_SARIAS_SONG, !CHECK_QUEST_ITEM(QUEST_SONG_SARIA), NULL) ? 5 : 2;
|
||||
}
|
||||
if (play->sceneNum == SCENE_KOKIRI_FOREST && !CHECK_QUEST_ITEM(QUEST_KOKIRI_EMERALD)) {
|
||||
if (GameInteractor_Should(GI_VB_NOT_BE_GREETED_BY_SARIA, Flags_GetInfTable(INFTABLE_GREETED_BY_SARIA), NULL)) {
|
||||
if (GameInteractor_Should(VB_NOT_BE_GREETED_BY_SARIA, Flags_GetInfTable(INFTABLE_GREETED_BY_SARIA), NULL)) {
|
||||
return 1;
|
||||
}
|
||||
return 4;
|
||||
@ -626,7 +626,7 @@ void func_80AF683C(EnSa* this, PlayState* play) {
|
||||
if (!(player->actor.world.pos.z >= -2220.0f) && !Play_InCsMode(play)) {
|
||||
// SOH [General] This flag was previously unused, but was named accordingly so we will make use of it. (Normally we should opt for soh_inf)
|
||||
Flags_SetEventChkInf(EVENTCHKINF_LEARNED_SARIAS_SONG);
|
||||
if (GameInteractor_Should(GI_VB_PLAY_SARIAS_SONG_CS, true, this)) {
|
||||
if (GameInteractor_Should(VB_PLAY_SARIAS_SONG_CS, true, this)) {
|
||||
play->csCtx.segment = SEGMENTED_TO_VIRTUAL(spot05_scene_Cs_005730);
|
||||
gSaveContext.cutsceneTrigger = 1;
|
||||
this->actionFunc = func_80AF68E4;
|
||||
@ -708,7 +708,7 @@ void func_80AF68E4(EnSa* this, PlayState* play) {
|
||||
|
||||
void func_80AF6B20(EnSa* this, PlayState* play) {
|
||||
if (play->sceneNum == SCENE_SACRED_FOREST_MEADOW) {
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_SARIAS_SONG, true, NULL)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_SARIAS_SONG, true, NULL)) {
|
||||
Item_Give(play, ITEM_SONG_SARIA);
|
||||
}
|
||||
EnSa_ChangeAnim(this, ENSA_ANIM1_6);
|
||||
|
@ -70,7 +70,7 @@ void EnShopnuts_Init(Actor* thisx, PlayState* play) {
|
||||
CollisionCheck_SetInfo(&this->actor.colChkInfo, NULL, &sColChkInfoInit);
|
||||
Collider_UpdateCylinder(&this->actor, &this->collider);
|
||||
|
||||
if (GameInteractor_Should(GI_VB_BUSINESS_SCRUB_DESPAWN,
|
||||
if (GameInteractor_Should(VB_BUSINESS_SCRUB_DESPAWN,
|
||||
((this->actor.params == 0x0002) && (Flags_GetItemGetInf(ITEMGETINF_0B))) ||
|
||||
((this->actor.params == 0x0009) && (Flags_GetInfTable(INFTABLE_192))) ||
|
||||
((this->actor.params == 0x000A) && (Flags_GetInfTable(INFTABLE_193))),
|
||||
|
@ -94,7 +94,7 @@ void func_80AFB768(EnSi* this, PlayState* play) {
|
||||
|
||||
if (this->collider.base.ocFlags2 & OC2_HIT_PLAYER) {
|
||||
this->collider.base.ocFlags2 &= ~OC2_HIT_PLAYER;
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_SKULL_TOKEN, true, this)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_SKULL_TOKEN, true, this)) {
|
||||
Item_Give(play, ITEM_SKULL_TOKEN);
|
||||
player->actor.freezeTimer = 10;
|
||||
Message_StartTextbox(play, 0xB4, NULL);
|
||||
@ -118,7 +118,7 @@ void func_80AFB89C(EnSi* this, PlayState* play) {
|
||||
this->actor.shape.rot.y += 0x400;
|
||||
|
||||
if (!CHECK_FLAG_ALL(this->actor.flags, ACTOR_FLAG_HOOKSHOT_ATTACHED)) {
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_SKULL_TOKEN, true, this)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_SKULL_TOKEN, true, this)) {
|
||||
Item_Give(play, ITEM_SKULL_TOKEN);
|
||||
player->actor.freezeTimer = 10;
|
||||
Message_StartTextbox(play, 0xB4, NULL);
|
||||
@ -131,7 +131,7 @@ void func_80AFB89C(EnSi* this, PlayState* play) {
|
||||
void func_80AFB950(EnSi* this, PlayState* play) {
|
||||
Player* player = GET_PLAYER(play);
|
||||
|
||||
if (Message_GetState(&play->msgCtx) != TEXT_STATE_CLOSING && GameInteractor_Should(GI_VB_GIVE_ITEM_SKULL_TOKEN, true, this)) {
|
||||
if (Message_GetState(&play->msgCtx) != TEXT_STATE_CLOSING && GameInteractor_Should(VB_GIVE_ITEM_SKULL_TOKEN, true, this)) {
|
||||
player->actor.freezeTimer = 10;
|
||||
} else {
|
||||
SET_GS_FLAGS((this->actor.params & 0x1F00) >> 8, this->actor.params & 0xFF);
|
||||
|
@ -1039,7 +1039,7 @@ void EnSkj_SariaSongTalk(EnSkj* this, PlayState* play) {
|
||||
EnSkj_SetupWaitInRange(this);
|
||||
} else {
|
||||
func_80AFFE24(this);
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_SKULL_KID_SARIAS_SONG, true, this)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_FROM_SKULL_KID_SARIAS_SONG, true, this)) {
|
||||
Actor_OfferGetItem(&this->actor, play, GI_HEART_PIECE, EnSkj_GetItemXzRange(this), EnSkj_GetItemYRange(this));
|
||||
}
|
||||
}
|
||||
@ -1051,11 +1051,11 @@ void func_80AFFE24(EnSkj* this) {
|
||||
}
|
||||
|
||||
void func_80AFFE44(EnSkj* this, PlayState* play) {
|
||||
if (Actor_HasParent(&this->actor, play) || !GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_SKULL_KID_SARIAS_SONG, true, this)) {
|
||||
if (Actor_HasParent(&this->actor, play) || !GameInteractor_Should(VB_GIVE_ITEM_FROM_SKULL_KID_SARIAS_SONG, true, this)) {
|
||||
this->actor.parent = NULL;
|
||||
EnSkj_SetupPostSariasSong(this);
|
||||
} else {
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_SKULL_KID_SARIAS_SONG, true, this)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_FROM_SKULL_KID_SARIAS_SONG, true, this)) {
|
||||
Actor_OfferGetItem(&this->actor, play, GI_HEART_PIECE, EnSkj_GetItemXzRange(this), EnSkj_GetItemYRange(this));
|
||||
}
|
||||
}
|
||||
@ -1066,7 +1066,7 @@ void EnSkj_SetupPostSariasSong(EnSkj* this) {
|
||||
}
|
||||
|
||||
void EnSkj_ChangeModeAfterSong(EnSkj* this, PlayState* play) {
|
||||
if ((Message_GetState(&play->msgCtx) == TEXT_STATE_DONE) && Message_ShouldAdvance(play) || !GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_SKULL_KID_SARIAS_SONG, true, this)) {
|
||||
if ((Message_GetState(&play->msgCtx) == TEXT_STATE_DONE) && Message_ShouldAdvance(play) || !GameInteractor_Should(VB_GIVE_ITEM_FROM_SKULL_KID_SARIAS_SONG, true, this)) {
|
||||
Flags_SetItemGetInf(ITEMGETINF_16);
|
||||
EnSkj_SetNaviId(this);
|
||||
EnSkj_SetupWaitInRange(this);
|
||||
@ -1541,7 +1541,7 @@ void EnSkj_WaitForOfferResponse(EnSkj* this, PlayState* play) {
|
||||
|
||||
void EnSkj_WonOcarinaMiniGame(EnSkj* this, PlayState* play) {
|
||||
if (D_80B01EA0) {
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_OCARINA_MEMORY_GAME, true, this)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_FROM_OCARINA_MEMORY_GAME, true, this)) {
|
||||
this->actionFunc = EnSkj_WaitToGiveReward;
|
||||
}
|
||||
} else {
|
||||
|
@ -277,14 +277,14 @@ void EnSth_GivePlayerItem(EnSth* this, PlayState* play) {
|
||||
}
|
||||
|
||||
void EnSth_GiveReward(EnSth* this, PlayState* play) {
|
||||
if (Actor_HasParent(&this->actor, play) || !GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_SKULLTULA_REWARD, true, this)) {
|
||||
if (Actor_HasParent(&this->actor, play) || !GameInteractor_Should(VB_GIVE_ITEM_FROM_SKULLTULA_REWARD, true, this)) {
|
||||
this->actor.parent = NULL;
|
||||
EnSth_SetupAction(this, EnSth_RewardObtainedTalk);
|
||||
gSaveContext.eventChkInf[EVENTCHKINF_SKULLTULA_REWARD_INDEX] |= this->eventFlag;
|
||||
if (this->eventFlag != 0) {
|
||||
GameInteractor_ExecuteOnFlagSet(FLAG_EVENT_CHECK_INF, (EVENTCHKINF_SKULLTULA_REWARD_INDEX << 4) + sEventFlagsShift[this->actor.params]);
|
||||
}
|
||||
} else if (GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_SKULLTULA_REWARD, true, this)) {
|
||||
} else if (GameInteractor_Should(VB_GIVE_ITEM_FROM_SKULLTULA_REWARD, true, this)) {
|
||||
EnSth_GivePlayerItem(this, play);
|
||||
}
|
||||
EnSth_FacePlayer(this, play);
|
||||
@ -294,7 +294,7 @@ void EnSth_RewardUnobtainedTalk(EnSth* this, PlayState* play) {
|
||||
if ((Message_GetState(&play->msgCtx) == TEXT_STATE_EVENT) && Message_ShouldAdvance(play)) {
|
||||
Message_CloseTextbox(play);
|
||||
EnSth_SetupAction(this, EnSth_GiveReward);
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_SKULLTULA_REWARD, true, this)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_FROM_SKULLTULA_REWARD, true, this)) {
|
||||
EnSth_GivePlayerItem(this, play);
|
||||
}
|
||||
}
|
||||
|
@ -386,7 +386,7 @@ void EnSyatekiMan_EndGame(EnSyatekiMan* this, PlayState* play) {
|
||||
this->getItemId = GI_RUPEE_PURPLE;
|
||||
}
|
||||
}
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_SHOOTING_GALLERY, true, this)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_FROM_SHOOTING_GALLERY, true, this)) {
|
||||
Actor_OfferGetItem(&this->actor, play, this->getItemId, 2000.0f, 1000.0f);
|
||||
}
|
||||
this->actionFunc = EnSyatekiMan_GivePrize;
|
||||
@ -418,7 +418,7 @@ void EnSyatekiMan_EndGame(EnSyatekiMan* this, PlayState* play) {
|
||||
|
||||
void EnSyatekiMan_GivePrize(EnSyatekiMan* this, PlayState* play) {
|
||||
SkelAnime_Update(&this->skelAnime);
|
||||
if (Actor_HasParent(&this->actor, play) || !GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_SHOOTING_GALLERY, true, this)) {
|
||||
if (Actor_HasParent(&this->actor, play) || !GameInteractor_Should(VB_GIVE_ITEM_FROM_SHOOTING_GALLERY, true, this)) {
|
||||
this->actionFunc = EnSyatekiMan_FinishPrize;
|
||||
} else {
|
||||
Actor_OfferGetItem(&this->actor, play, this->getItemId, 2000.0f, 1000.0f);
|
||||
@ -427,12 +427,12 @@ void EnSyatekiMan_GivePrize(EnSyatekiMan* this, PlayState* play) {
|
||||
|
||||
void EnSyatekiMan_FinishPrize(EnSyatekiMan* this, PlayState* play) {
|
||||
SkelAnime_Update(&this->skelAnime);
|
||||
if (((Message_GetState(&play->msgCtx) == TEXT_STATE_DONE) && Message_ShouldAdvance(play)) || !GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_SHOOTING_GALLERY, true, this)) {
|
||||
if (((Message_GetState(&play->msgCtx) == TEXT_STATE_DONE) && Message_ShouldAdvance(play)) || !GameInteractor_Should(VB_GIVE_ITEM_FROM_SHOOTING_GALLERY, true, this)) {
|
||||
// "Successful completion"
|
||||
osSyncPrintf(VT_FGCOL(GREEN) "☆☆☆☆☆ 正常終了 ☆☆☆☆☆ \n" VT_RST);
|
||||
if (!LINK_IS_ADULT) {
|
||||
Flags_SetItemGetInf(ITEMGETINF_0D);
|
||||
} else if (GameInteractor_Should(GI_VB_BE_ELIGIBLE_FOR_ADULT_SHOOTING_GAME_REWARD, (this->getItemId == GI_QUIVER_40) || (this->getItemId == GI_QUIVER_50), this)) {
|
||||
} else if (GameInteractor_Should(VB_BE_ELIGIBLE_FOR_ADULT_SHOOTING_GAME_REWARD, (this->getItemId == GI_QUIVER_40) || (this->getItemId == GI_QUIVER_50), this)) {
|
||||
Flags_SetItemGetInf(ITEMGETINF_0E);
|
||||
}
|
||||
this->gameResult = SYATEKI_RESULT_NONE;
|
||||
|
@ -467,7 +467,7 @@ void func_80B14B6C(EnTa* this, PlayState* play) {
|
||||
EnTa_SetupAction(this, func_80B14AF4, EnTa_AnimRepeatCurrent);
|
||||
this->unk_2CC = 5;
|
||||
Flags_SetEventChkInf(EVENTCHKINF_TALON_RETURNED_FROM_CASTLE);
|
||||
if (GameInteractor_Should(GI_VB_PLAY_ONEPOINT_ACTOR_CS, true, this)) {
|
||||
if (GameInteractor_Should(VB_PLAY_ONEPOINT_ACTOR_CS, true, this)) {
|
||||
OnePointCutscene_EndCutscene(play, csCamIdx);
|
||||
}
|
||||
Animation_PlayOnce(&this->skelAnime, &gTalonRunTransitionAnim);
|
||||
@ -869,7 +869,7 @@ void EnTa_TalkGeneralInLonLonHouse(EnTa* this, PlayState* play) {
|
||||
}
|
||||
|
||||
void EnTa_GiveItemInLonLonHouse(EnTa* this, PlayState* play) {
|
||||
if (Actor_HasParent(&this->actor, play) || !GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_TALONS_CHICKENS, true, &this->actor)) {
|
||||
if (Actor_HasParent(&this->actor, play) || !GameInteractor_Should(VB_GIVE_ITEM_FROM_TALONS_CHICKENS, true, &this->actor)) {
|
||||
this->actor.parent = NULL;
|
||||
this->actionFunc = EnTa_TalkGeneralInLonLonHouse;
|
||||
if (!(this->unk_2E0 & 0x2)) {
|
||||
@ -879,7 +879,7 @@ void EnTa_GiveItemInLonLonHouse(EnTa* this, PlayState* play) {
|
||||
} else if (this->unk_2E0 & 2) {
|
||||
Actor_OfferGetItem(&this->actor, play, GI_MILK, 10000.0f, 50.0f);
|
||||
} else {
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_TALONS_CHICKENS, true, &this->actor)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_FROM_TALONS_CHICKENS, true, &this->actor)) {
|
||||
Actor_OfferGetItem(&this->actor, play, GI_MILK_BOTTLE, 10000.0f, 50.0f);
|
||||
}
|
||||
}
|
||||
@ -891,7 +891,7 @@ void EnTa_TalkAfterCuccoGameFirstWon(EnTa* this, PlayState* play) {
|
||||
Message_CloseTextbox(play);
|
||||
this->unk_2E0 &= ~0x2;
|
||||
EnTa_SetupAction(this, EnTa_GiveItemInLonLonHouse, EnTa_AnimRunToEnd);
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_TALONS_CHICKENS, true, &this->actor)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_FROM_TALONS_CHICKENS, true, &this->actor)) {
|
||||
Actor_OfferGetItem(&this->actor, play, GI_MILK_BOTTLE, 10000.0f, 50.0f);
|
||||
}
|
||||
}
|
||||
|
@ -495,7 +495,7 @@ void EnTk_Init(Actor* thisx, PlayState* play) {
|
||||
|
||||
CollisionCheck_SetInfo2(&this->actor.colChkInfo, NULL, &sColChkInfoInit);
|
||||
|
||||
if (GameInteractor_Should(GI_VB_DAMPE_IN_GRAVEYARD_DESPAWN, gSaveContext.dayTime <= 0xC000 || gSaveContext.dayTime >= 0xE000 || LINK_IS_ADULT || play->sceneNum != SCENE_GRAVEYARD, this)) {
|
||||
if (GameInteractor_Should(VB_DAMPE_IN_GRAVEYARD_DESPAWN, gSaveContext.dayTime <= 0xC000 || gSaveContext.dayTime >= 0xE000 || LINK_IS_ADULT || play->sceneNum != SCENE_GRAVEYARD, this)) {
|
||||
Actor_Kill(&this->actor);
|
||||
return;
|
||||
}
|
||||
@ -601,7 +601,7 @@ void EnTk_Dig(EnTk* this, PlayState* play) {
|
||||
|
||||
this->rewardTimer = 0;
|
||||
|
||||
if (GameInteractor_Should(GI_VB_BE_VALID_GRAVEDIGGING_SPOT, this->validDigHere == 1, this)) {
|
||||
if (GameInteractor_Should(VB_BE_VALID_GRAVEDIGGING_SPOT, this->validDigHere == 1, this)) {
|
||||
rewardOrigin.x = 0.0f;
|
||||
rewardOrigin.y = 0.0f;
|
||||
rewardOrigin.z = -40.0f;
|
||||
@ -615,12 +615,12 @@ void EnTk_Dig(EnTk* this, PlayState* play) {
|
||||
|
||||
this->currentReward = EnTk_ChooseReward(this);
|
||||
|
||||
if (GameInteractor_Should(GI_VB_BE_DAMPE_GRAVEDIGGING_GRAND_PRIZE, this->currentReward == 3, this)) {
|
||||
if (GameInteractor_Should(VB_BE_DAMPE_GRAVEDIGGING_GRAND_PRIZE, this->currentReward == 3, this)) {
|
||||
/*
|
||||
* Upgrade the purple rupee reward to the heart piece if this
|
||||
* is the first grand prize dig.
|
||||
*/
|
||||
if (GameInteractor_Should(GI_VB_DAMPE_GRAVEDIGGING_GRAND_PRIZE_BE_HEART_PIECE, !Flags_GetItemGetInf(ITEMGETINF_1C), this)) {
|
||||
if (GameInteractor_Should(VB_DAMPE_GRAVEDIGGING_GRAND_PRIZE_BE_HEART_PIECE, !Flags_GetItemGetInf(ITEMGETINF_1C), this)) {
|
||||
Flags_SetItemGetInf(ITEMGETINF_1C);
|
||||
this->currentReward = 4;
|
||||
}
|
||||
|
@ -291,7 +291,7 @@ void func_80B20768(EnToryo* this, PlayState* play) {
|
||||
s16 sp32;
|
||||
s16 sp30;
|
||||
|
||||
if (this->unk_1E4 == 3 && !GameInteractor_Should(GI_VB_FIX_SAW_SOFTLOCK, false, NULL)) {
|
||||
if (this->unk_1E4 == 3 && !GameInteractor_Should(VB_FIX_SAW_SOFTLOCK, false, NULL)) {
|
||||
Actor_ProcessTalkRequest(&this->actor, play);
|
||||
Message_ContinueTextbox(play, this->actor.textId);
|
||||
this->unk_1E4 = 1;
|
||||
@ -312,7 +312,7 @@ void func_80B20768(EnToryo* this, PlayState* play) {
|
||||
}
|
||||
|
||||
if (this->unk_1E4 == 4) {
|
||||
if (Actor_HasParent(&this->actor, play) || !GameInteractor_Should(GI_VB_TRADE_SAW, true, this)) {
|
||||
if (Actor_HasParent(&this->actor, play) || !GameInteractor_Should(VB_TRADE_SAW, true, this)) {
|
||||
this->actor.parent = NULL;
|
||||
this->unk_1E4 = 5;
|
||||
Flags_SetRandomizerInf(RAND_INF_ADULT_TRADES_GV_TRADE_SAW);
|
||||
|
@ -195,7 +195,7 @@ void func_80B3A3D4(EnWonderTalk2* this, PlayState* play) {
|
||||
this->unk_15A = true;
|
||||
}
|
||||
this->actor.flags &= ~(ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_UPDATE_WHILE_CULLED);
|
||||
if (GameInteractor_Should(GI_VB_WONDER_TALK, true, this)) {
|
||||
if (GameInteractor_Should(VB_WONDER_TALK, true, this)) {
|
||||
Player_SetCsActionWithHaltedActors(play, NULL, 7);
|
||||
}
|
||||
this->unk_156 = true;
|
||||
@ -255,7 +255,7 @@ void func_80B3A4F8(EnWonderTalk2* this, PlayState* play) {
|
||||
}
|
||||
this->unk_158 = 0;
|
||||
if (!this->unk_156) {
|
||||
if (GameInteractor_Should(GI_VB_WONDER_TALK, true, this)) {
|
||||
if (GameInteractor_Should(VB_WONDER_TALK, true, this)) {
|
||||
Message_StartTextbox(play, this->actor.textId, NULL);
|
||||
Player_SetCsActionWithHaltedActors(play, NULL, 8);
|
||||
}
|
||||
|
@ -298,15 +298,15 @@ s32 EnXc_MinuetCS(EnXc* this, PlayState* play) {
|
||||
|
||||
if (z < -2225.0f) {
|
||||
if (!Play_InCsMode(play)) {
|
||||
if (GameInteractor_Should(GI_VB_PLAY_MINUET_OF_FOREST_CS, true, NULL)) {
|
||||
if (GameInteractor_Should(VB_PLAY_MINUET_OF_FOREST_CS, true, NULL)) {
|
||||
play->csCtx.segment = SEGMENTED_TO_VIRTUAL(&gMinuetCs);
|
||||
gSaveContext.cutsceneTrigger = 1;
|
||||
}
|
||||
Flags_SetEventChkInf(EVENTCHKINF_LEARNED_MINUET_OF_FOREST);
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_MINUET_OF_FOREST, true, NULL)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_MINUET_OF_FOREST, true, NULL)) {
|
||||
Item_Give(play, ITEM_SONG_MINUET);
|
||||
}
|
||||
if (GameInteractor_Should(GI_VB_PLAY_MINUET_OF_FOREST_CS, true, NULL)) {
|
||||
if (GameInteractor_Should(VB_PLAY_MINUET_OF_FOREST_CS, true, NULL)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -335,15 +335,15 @@ s32 EnXc_BoleroCS(EnXc* this, PlayState* play) {
|
||||
if ((posRot->pos.x > -784.0f) && (posRot->pos.x < -584.0f) && (posRot->pos.y > 447.0f) &&
|
||||
(posRot->pos.y < 647.0f) && (posRot->pos.z > -446.0f) && (posRot->pos.z < -246.0f) &&
|
||||
!Play_InCsMode(play)) {
|
||||
if (GameInteractor_Should(GI_VB_PLAY_BOLERO_OF_FIRE_CS, true, NULL)) {
|
||||
if (GameInteractor_Should(VB_PLAY_BOLERO_OF_FIRE_CS, true, NULL)) {
|
||||
play->csCtx.segment = SEGMENTED_TO_VIRTUAL(&gDeathMountainCraterBoleroCs);
|
||||
gSaveContext.cutsceneTrigger = 1;
|
||||
}
|
||||
Flags_SetEventChkInf(EVENTCHKINF_LEARNED_BOLERO_OF_FIRE);
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_BOLERO_OF_FIRE, true, NULL)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_BOLERO_OF_FIRE, true, NULL)) {
|
||||
Item_Give(play, ITEM_SONG_BOLERO);
|
||||
}
|
||||
if (GameInteractor_Should(GI_VB_PLAY_BOLERO_OF_FIRE_CS, true, NULL)) {
|
||||
if (GameInteractor_Should(VB_PLAY_BOLERO_OF_FIRE_CS, true, NULL)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -354,7 +354,7 @@ s32 EnXc_BoleroCS(EnXc* this, PlayState* play) {
|
||||
|
||||
void EnXc_SetupSerenadeAction(EnXc* this, PlayState* play) {
|
||||
// Player is adult and does not have iron boots and has not learned Serenade
|
||||
if (GameInteractor_Should(GI_VB_SHIEK_PREPARE_TO_GIVE_SERENADE_OF_WATER, (!CHECK_OWNED_EQUIP(EQUIP_TYPE_BOOTS, EQUIP_INV_BOOTS_IRON) && !Flags_GetEventChkInf(EVENTCHKINF_LEARNED_SERENADE_OF_WATER)) && LINK_IS_ADULT, NULL)) {
|
||||
if (GameInteractor_Should(VB_SHIEK_PREPARE_TO_GIVE_SERENADE_OF_WATER, (!CHECK_OWNED_EQUIP(EQUIP_TYPE_BOOTS, EQUIP_INV_BOOTS_IRON) && !Flags_GetEventChkInf(EVENTCHKINF_LEARNED_SERENADE_OF_WATER)) && LINK_IS_ADULT, NULL)) {
|
||||
this->action = SHEIK_ACTION_SERENADE;
|
||||
osSyncPrintf("水のセレナーデ シーク誕生!!!!!!!!!!!!!!!!!!\n");
|
||||
} else {
|
||||
@ -367,18 +367,18 @@ s32 EnXc_SerenadeCS(EnXc* this, PlayState* play) {
|
||||
if (this->actor.params == SHEIK_TYPE_SERENADE) {
|
||||
Player* player = GET_PLAYER(play);
|
||||
s32 stateFlags = player->stateFlags1;
|
||||
if (GameInteractor_Should(GI_VB_BE_ELIGIBLE_FOR_SERENADE_OF_WATER, CHECK_OWNED_EQUIP(EQUIP_TYPE_BOOTS, EQUIP_INV_BOOTS_IRON) && !Flags_GetEventChkInf(EVENTCHKINF_LEARNED_SERENADE_OF_WATER), NULL) &&
|
||||
if (GameInteractor_Should(VB_BE_ELIGIBLE_FOR_SERENADE_OF_WATER, CHECK_OWNED_EQUIP(EQUIP_TYPE_BOOTS, EQUIP_INV_BOOTS_IRON) && !Flags_GetEventChkInf(EVENTCHKINF_LEARNED_SERENADE_OF_WATER), NULL) &&
|
||||
!(stateFlags & PLAYER_STATE1_IN_CUTSCENE) && !Play_InCsMode(play)) {
|
||||
if (GameInteractor_Should(GI_VB_PLAY_SERENADE_OF_WATER_CS, true, NULL)) {
|
||||
if (GameInteractor_Should(VB_PLAY_SERENADE_OF_WATER_CS, true, NULL)) {
|
||||
Cutscene_SetSegment(play, &gIceCavernSerenadeCs);
|
||||
gSaveContext.cutsceneTrigger = 1;
|
||||
}
|
||||
Flags_SetEventChkInf(EVENTCHKINF_LEARNED_SERENADE_OF_WATER); // Learned Serenade of Water Flag
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_SERENADE_OF_WATER, true, NULL)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_SERENADE_OF_WATER, true, NULL)) {
|
||||
Item_Give(play, ITEM_SONG_SERENADE);
|
||||
}
|
||||
osSyncPrintf("ブーツを取った!!!!!!!!!!!!!!!!!!\n");
|
||||
if (GameInteractor_Should(GI_VB_PLAY_SERENADE_OF_WATER_CS, true, NULL)) {
|
||||
if (GameInteractor_Should(VB_PLAY_SERENADE_OF_WATER_CS, true, NULL)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -2185,17 +2185,17 @@ void EnXc_InitTempleOfTime(EnXc* this, PlayState* play) {
|
||||
if (LINK_IS_ADULT) {
|
||||
if (!Flags_GetEventChkInf(EVENTCHKINF_SHEIK_SPAWNED_AT_MASTER_SWORD_PEDESTAL)) {
|
||||
Flags_SetEventChkInf(EVENTCHKINF_SHEIK_SPAWNED_AT_MASTER_SWORD_PEDESTAL);
|
||||
if (GameInteractor_Should(GI_VB_PLAY_SHIEK_BLOCK_MASTER_SWORD_CS, true, NULL)) {
|
||||
if (GameInteractor_Should(VB_PLAY_SHIEK_BLOCK_MASTER_SWORD_CS, true, NULL)) {
|
||||
play->csCtx.segment = SEGMENTED_TO_VIRTUAL(gTempleOfTimeFirstAdultCs);
|
||||
gSaveContext.cutsceneTrigger = 1;
|
||||
}
|
||||
func_80B3EBF0(this, play);
|
||||
} else if (GameInteractor_Should(GI_VB_BE_ELIGIBLE_FOR_PRELUDE_OF_LIGHT, !Flags_GetEventChkInf(EVENTCHKINF_LEARNED_PRELUDE_OF_LIGHT) && Flags_GetEventChkInf(EVENTCHKINF_USED_FOREST_TEMPLE_BLUE_WARP), NULL)) {
|
||||
} else if (GameInteractor_Should(VB_BE_ELIGIBLE_FOR_PRELUDE_OF_LIGHT, !Flags_GetEventChkInf(EVENTCHKINF_LEARNED_PRELUDE_OF_LIGHT) && Flags_GetEventChkInf(EVENTCHKINF_USED_FOREST_TEMPLE_BLUE_WARP), NULL)) {
|
||||
Flags_SetEventChkInf(EVENTCHKINF_LEARNED_PRELUDE_OF_LIGHT);
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_PRELUDE_OF_LIGHT, true, NULL)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_PRELUDE_OF_LIGHT, true, NULL)) {
|
||||
Item_Give(play, ITEM_SONG_PRELUDE);
|
||||
}
|
||||
if (GameInteractor_Should(GI_VB_PLAY_PRELUDE_OF_LIGHT_CS, true, NULL)) {
|
||||
if (GameInteractor_Should(VB_PLAY_PRELUDE_OF_LIGHT_CS, true, NULL)) {
|
||||
play->csCtx.segment = SEGMENTED_TO_VIRTUAL(gTempleOfTimePreludeCs);
|
||||
gSaveContext.cutsceneTrigger = 1;
|
||||
}
|
||||
|
@ -634,7 +634,7 @@ void EnZl2_GiveLightArrows(EnZl2* this, PlayState* play) {
|
||||
posY = player->actor.world.pos.y + 80.0f;
|
||||
posZ = player->actor.world.pos.z;
|
||||
Actor_Spawn(&play->actorCtx, play, ACTOR_DEMO_EFFECT, posX, posY, posZ, 0, 0, 0, 0x17, true);
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_LIGHT_ARROW, true, NULL)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_LIGHT_ARROW, true, NULL)) {
|
||||
Item_Give(play, ITEM_ARROW_LIGHT);
|
||||
}
|
||||
this->unk_244 = 1;
|
||||
|
@ -1108,7 +1108,7 @@ s32 EnZl4_CsMakePlan(EnZl4* this, PlayState* play) {
|
||||
Camera_ChangeSetting(GET_ACTIVE_CAM(play), 1);
|
||||
this->talkState = 7;
|
||||
play->talkWithPlayer(play, &this->actor);
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_ZELDAS_LETTER, true, NULL)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_ZELDAS_LETTER, true, NULL)) {
|
||||
Actor_OfferGetItem(&this->actor, play, GI_LETTER_ZELDA, fabsf(this->actor.xzDistToPlayer) + 1.0f,
|
||||
fabsf(this->actor.yDistToPlayer) + 1.0f);
|
||||
}
|
||||
@ -1117,7 +1117,7 @@ s32 EnZl4_CsMakePlan(EnZl4* this, PlayState* play) {
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
if (Actor_HasParent(&this->actor, play) || !GameInteractor_Should(GI_VB_GIVE_ITEM_ZELDAS_LETTER, true, NULL)) {
|
||||
if (Actor_HasParent(&this->actor, play) || !GameInteractor_Should(VB_GIVE_ITEM_ZELDAS_LETTER, true, NULL)) {
|
||||
Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, ZL4_ANIM_0);
|
||||
this->talkState++;
|
||||
} else {
|
||||
|
@ -179,7 +179,7 @@ void ItemOcarina_WaitInWater(ItemOcarina* this, PlayState* play) {
|
||||
if (
|
||||
Actor_HasParent(&this->actor, play) ||
|
||||
(
|
||||
!GameInteractor_Should(GI_VB_GIVE_ITEM_OCARINA_OF_TIME, true, NULL) &&
|
||||
!GameInteractor_Should(VB_GIVE_ITEM_OCARINA_OF_TIME, true, NULL) &&
|
||||
(this->actor.xzDistToPlayer < 20.0f) && (fabsf(this->actor.yDistToPlayer) < 10.0f) &&
|
||||
GET_PLAYER(play)->stateFlags2 & PLAYER_STATE2_DIVING
|
||||
)
|
||||
@ -189,7 +189,7 @@ void ItemOcarina_WaitInWater(ItemOcarina* this, PlayState* play) {
|
||||
this->actionFunc = ItemOcarina_StartSoTCutscene;
|
||||
this->actor.draw = NULL;
|
||||
} else {
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_OCARINA_OF_TIME, true, NULL)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_OCARINA_OF_TIME, true, NULL)) {
|
||||
Actor_OfferGetItem(&this->actor, play, GI_OCARINA_OOT, 30.0f, 50.0f);
|
||||
}
|
||||
|
||||
|
@ -57,7 +57,7 @@ void ObjDekujr_Init(Actor* thisx, PlayState* play) {
|
||||
this->unk_19C = 0;
|
||||
this->unk_19B = 1;
|
||||
}
|
||||
if (!GameInteractor_Should(GI_VB_DEKU_JR_CONSIDER_FOREST_TEMPLE_FINISHED, CHECK_QUEST_ITEM(QUEST_MEDALLION_FOREST), this)) {
|
||||
if (!GameInteractor_Should(VB_DEKU_JR_CONSIDER_FOREST_TEMPLE_FINISHED, CHECK_QUEST_ITEM(QUEST_MEDALLION_FOREST), this)) {
|
||||
Actor_Kill(thisx);
|
||||
} else {
|
||||
ActorShape_Init(&thisx->shape, 0.0f, NULL, 0.0f);
|
||||
|
@ -250,7 +250,7 @@ void ObjSwitch_SetOn(ObjSwitch* this, PlayState* play) {
|
||||
subType = (this->dyna.actor.params >> 4 & 7);
|
||||
Flags_SetSwitch(play, (this->dyna.actor.params >> 8 & 0x3F));
|
||||
|
||||
if (GameInteractor_Should(GI_VB_PLAY_ONEPOINT_ACTOR_CS, true, this)) {
|
||||
if (GameInteractor_Should(VB_PLAY_ONEPOINT_ACTOR_CS, true, this)) {
|
||||
if (subType == 0 || subType == 4) {
|
||||
OnePointCutscene_AttentionSetSfx(play, &this->dyna.actor, NA_SE_SY_CORRECT_CHIME);
|
||||
} else {
|
||||
@ -269,7 +269,7 @@ void ObjSwitch_SetOff(ObjSwitch* this, PlayState* play) {
|
||||
Flags_UnsetSwitch(play, (this->dyna.actor.params >> 8 & 0x3F));
|
||||
|
||||
if ((this->dyna.actor.params >> 4 & 7) == 1) {
|
||||
if (GameInteractor_Should(GI_VB_PLAY_ONEPOINT_ACTOR_CS, true, this)) {
|
||||
if (GameInteractor_Should(VB_PLAY_ONEPOINT_ACTOR_CS, true, this)) {
|
||||
OnePointCutscene_AttentionSetSfx(play, &this->dyna.actor, NA_SE_SY_TRE_BOX_APPEAR);
|
||||
}
|
||||
this->cooldownOn = true;
|
||||
|
@ -6866,7 +6866,7 @@ s32 Player_ActionChange_2(Player* this, PlayState* play) {
|
||||
}
|
||||
|
||||
func_80836898(play, this, func_8083A434);
|
||||
if (GameInteractor_Should(GI_VB_GIVE_ITEM_FROM_CHEST, true, chest)) {
|
||||
if (GameInteractor_Should(VB_GIVE_ITEM_FROM_CHEST, true, chest)) {
|
||||
this->stateFlags1 |= PLAYER_STATE1_GETTING_ITEM | PLAYER_STATE1_ITEM_OVER_HEAD | PLAYER_STATE1_IN_CUTSCENE;
|
||||
func_8083AE40(this, giEntry.objectId);
|
||||
}
|
||||
@ -8522,7 +8522,7 @@ void func_80842A88(PlayState* play, Player* this) {
|
||||
s32 func_80842AC4(PlayState* play, Player* this) {
|
||||
if ((this->heldItemAction == PLAYER_IA_DEKU_STICK) && (this->unk_85C > 0.5f)) {
|
||||
|
||||
if (GameInteractor_Should(GI_VB_DEKU_STICK_BREAK, AMMO(ITEM_STICK) != 0, NULL)) {
|
||||
if (GameInteractor_Should(VB_DEKU_STICK_BREAK, AMMO(ITEM_STICK) != 0, NULL)) {
|
||||
EffectSsStick_Spawn(play, &this->bodyPartsPos[PLAYER_BODYPART_R_HAND],
|
||||
this->actor.shape.rot.y + 0x8000);
|
||||
this->unk_85C = 0.5f;
|
||||
@ -10238,7 +10238,7 @@ void Player_Init(Actor* thisx, PlayState* play2) {
|
||||
|
||||
if ((sp50 == 0) || (sp50 < -1)) {
|
||||
titleFileSize = scene->titleFile.vromEnd - scene->titleFile.vromStart;
|
||||
if (GameInteractor_Should(GI_VB_SHOW_TITLE_CARD, gSaveContext.showTitleCard, NULL)) {
|
||||
if (GameInteractor_Should(VB_SHOW_TITLE_CARD, gSaveContext.showTitleCard, NULL)) {
|
||||
if ((gSaveContext.sceneSetupIndex < 4) &&
|
||||
(gEntranceTable[((void)0, gSaveContext.entranceIndex) + ((void)0, gSaveContext.sceneSetupIndex)].field &
|
||||
ENTRANCE_INFO_DISPLAY_TITLE_CARD_FLAG) &&
|
||||
@ -10944,21 +10944,21 @@ static Color_RGBA8 D_808547C0 = { 255, 50, 0, 0 };
|
||||
void Player_UpdateBurningDekuStick(PlayState* play, Player* this) {
|
||||
f32 temp;
|
||||
|
||||
if (GameInteractor_Should(GI_VB_DEKU_STICK_BURN_OUT, this->unk_85C == 0.0f, NULL)) {
|
||||
if (GameInteractor_Should(VB_DEKU_STICK_BURN_OUT, this->unk_85C == 0.0f, NULL)) {
|
||||
Player_UseItem(play, this, ITEM_NONE);
|
||||
return;
|
||||
}
|
||||
|
||||
temp = 1.0f;
|
||||
uint8_t vanillaShouldBurnOutCondition = DECR(this->unk_860) == 0;
|
||||
if (GameInteractor_Should(GI_VB_DEKU_STICK_BURN_OUT, vanillaShouldBurnOutCondition, NULL)) {
|
||||
if (GameInteractor_Should(VB_DEKU_STICK_BURN_OUT, vanillaShouldBurnOutCondition, NULL)) {
|
||||
Inventory_ChangeAmmo(ITEM_STICK, -1);
|
||||
this->unk_860 = 1;
|
||||
temp = 0.0f;
|
||||
this->unk_85C = temp;
|
||||
} else if (this->unk_860 > 200) {
|
||||
temp = (210 - this->unk_860) / 10.0f;
|
||||
} else if (GameInteractor_Should(GI_VB_DEKU_STICK_BURN_DOWN, this->unk_860 < 20, NULL)) {
|
||||
} else if (GameInteractor_Should(VB_DEKU_STICK_BURN_DOWN, this->unk_860 < 20, NULL)) {
|
||||
temp = this->unk_860 / 20.0f;
|
||||
this->unk_85C = temp;
|
||||
}
|
||||
@ -11260,7 +11260,7 @@ void Player_UpdateCommon(Player* this, PlayState* play, Input* input) {
|
||||
func_80836BEC(this, play);
|
||||
|
||||
if (this->heldItemAction == PLAYER_IA_DEKU_STICK &&
|
||||
GameInteractor_Should(GI_VB_DEKU_STICK_BE_ON_FIRE, this->unk_860 != 0, NULL)) {
|
||||
GameInteractor_Should(VB_DEKU_STICK_BE_ON_FIRE, this->unk_860 != 0, NULL)) {
|
||||
Player_UpdateBurningDekuStick(play, this);
|
||||
} else if ((this->heldItemAction == PLAYER_IA_FISHING_POLE) && (this->unk_860 < 0)) {
|
||||
this->unk_860++;
|
||||
@ -13545,7 +13545,7 @@ s32 func_8084DFF4(PlayState* play, Player* this) {
|
||||
play->msgCtx.msgMode = MSGMODE_TEXT_DONE;
|
||||
} else {
|
||||
if (Message_GetState(&play->msgCtx) == TEXT_STATE_CLOSING) {
|
||||
if (GameInteractor_Should(GI_VB_PLAY_NABOORU_CAPTURED_CS, this->getItemId == GI_GAUNTLETS_SILVER, NULL)) {
|
||||
if (GameInteractor_Should(VB_PLAY_NABOORU_CAPTURED_CS, this->getItemId == GI_GAUNTLETS_SILVER, NULL)) {
|
||||
play->nextEntranceIndex = ENTR_DESERT_COLOSSUS_0;
|
||||
play->transitionTrigger = TRANS_TRIGGER_START;
|
||||
gSaveContext.nextCutsceneIndex = 0xFFF1;
|
||||
|
Loading…
Reference in New Issue
Block a user