cue for gates in water temple & aim assist for moving platforms

This commit is contained in:
Demur Rumed 2025-08-08 01:19:58 +00:00
commit 6230c19ac4

View file

@ -13,6 +13,7 @@
extern "C" { extern "C" {
#include "z64collision_check.h" #include "z64collision_check.h"
#include "overlays/actors/ovl_Bg_Bdan_Switch/z_bg_bdan_switch.h" #include "overlays/actors/ovl_Bg_Bdan_Switch/z_bg_bdan_switch.h"
#include "overlays/actors/ovl_Bg_Mizu_Movebg/z_bg_mizu_movebg.h"
#include "overlays/actors/ovl_Bg_Po_Event/z_bg_po_event.h" #include "overlays/actors/ovl_Bg_Po_Event/z_bg_po_event.h"
#include "overlays/actors/ovl_Boss_Goma/z_boss_goma.h" #include "overlays/actors/ovl_Boss_Goma/z_boss_goma.h"
#include "overlays/actors/ovl_En_Karebaba/z_en_karebaba.h" #include "overlays/actors/ovl_En_Karebaba/z_en_karebaba.h"
@ -44,6 +45,8 @@ void EnGSwitch_SilverRupeeIdle(EnGSwitch*, PlayState*);
extern u8 sBgPoEventPuzzleState; extern u8 sBgPoEventPuzzleState;
} }
#define MOVEBG_TYPE(params) (((u16)(params) >> 0xC) & 0xF)
void accessible_switch(AccessibleActor* actor) { void accessible_switch(AccessibleActor* actor) {
Player* player = GET_PLAYER(actor->play); Player* player = GET_PLAYER(actor->play);
ObjSwitch* sw = (ObjSwitch*)actor->actor; ObjSwitch* sw = (ObjSwitch*)actor->actor;
@ -450,6 +453,24 @@ void ActorAccessibility_InitActors() {
policy.ydist = 1000; policy.ydist = 1000;
policy.aimAssist.isProvider = AIM_HOOK; policy.aimAssist.isProvider = AIM_HOOK;
ActorAccessibility_AddSupportedActor(ACTOR_OBJ_HSBLOCK, policy); ActorAccessibility_AddSupportedActor(ACTOR_OBJ_HSBLOCK, policy);
ActorAccessibility_InitPolicy(&policy, "Water Temple Hookshot Platform", [](AccessibleActor *actor) {
if ((actor->frameCount & 31) == 0) {
BgMizuMovebg* movebg = (BgMizuMovebg*)actor->actor;
if (MOVEBG_TYPE(actor->actor->params) < 4) {
actor->policy.aimAssist.isProvider = 0;
}
if (movebg->sfxFlags & 1) {
ActorAccessibility_PlaySoundForActor(actor, 0, NA_SE_EV_ROLL_STAND_2);
}
if (movebg->sfxFlags & 2) {
ActorAccessibility_PlaySoundForActor(actor, 1, NA_SE_EV_ELEVATOR_MOVE);
}
}
});
policy.distance = 1000;
policy.ydist = 1000;
policy.aimAssist.isProvider = AIM_HOOK;
ActorAccessibility_AddSupportedActor(ACTOR_BG_MIZU_MOVEBG, policy);
ActorAccessibility_InitPolicy(&policy, "Scarecrow", NA_SE_IT_KAKASHI_JUMP); ActorAccessibility_InitPolicy(&policy, "Scarecrow", NA_SE_IT_KAKASHI_JUMP);
policy.volume = 2; policy.volume = 2;
policy.distance = 1000; policy.distance = 1000;
@ -885,8 +906,9 @@ void ActorAccessibility_InitActors() {
policy.distance = 900; policy.distance = 900;
policy.volume = 2; policy.volume = 2;
ActorAccessibility_AddSupportedActor(ACTOR_EN_ICE_HONO, policy); ActorAccessibility_AddSupportedActor(ACTOR_EN_ICE_HONO, policy);
ActorAccessibility_InitPolicy(&policy, "Ice Barred", NA_SE_EV_CHAIN_KEY_UNLOCK); ActorAccessibility_InitPolicy(&policy, "Barred", NA_SE_EV_CHAIN_KEY_UNLOCK);
ActorAccessibility_AddSupportedActor(ACTOR_BG_ICE_SHUTTER, policy); ActorAccessibility_AddSupportedActor(ACTOR_BG_ICE_SHUTTER, policy);
ActorAccessibility_AddSupportedActor(ACTOR_BG_MIZU_SHUTTER, policy);
ActorAccessibility_InitPolicy(&policy, "Ice Block", NA_SE_PL_SLIP_ICE_LELEL); ActorAccessibility_InitPolicy(&policy, "Ice Block", NA_SE_PL_SLIP_ICE_LELEL);
policy.distance = 750; policy.distance = 750;
policy.volume = 2; policy.volume = 2;