fix amy painting cue, add hookshot aim assist to chests/torches

This commit is contained in:
Demur Rumed 2025-07-01 15:01:57 +00:00
commit 3ed36372e4
2 changed files with 28 additions and 44 deletions

View file

@ -47,24 +47,12 @@ void accessible_torches(AccessibleActor* actor) {
// temporary torches // temporary torches
if ((actor->actor->params) == 4230 || (actor->actor->params) == 4220 || (actor->actor->params) == 4227 || if ((actor->actor->params) == 4230 || (actor->actor->params) == 4220 || (actor->actor->params) == 4227 ||
(actor->actor->params) == 4380 || actor->actor->params == 4321) { (actor->actor->params) == 4380 || actor->actor->params == 4321) {
if (torch->litTimer != 0) { actor->policy.volume = torch->litTimer != 0 ? 0.1 : 1.0;
actor->policy.volume = 0.1; if ((actor->frameCount & 31) == 0) {
if ((actor->frameCount & 31) != 0) {
return;
}
ActorAccessibility_PlaySoundForActor(actor, 0, NA_SE_IT_BOMB_IGNIT);
} else if (actor->policy.volume != 1.0) {
actor->policy.volume = 1.0;
}
if ((actor->frameCount & 31) != 0) {
return;
}
ActorAccessibility_PlaySoundForActor(actor, 0, NA_SE_IT_BOMB_IGNIT); ActorAccessibility_PlaySoundForActor(actor, 0, NA_SE_IT_BOMB_IGNIT);
} }
if ((actor->frameCount & 31) != 0) {
return; return;
} } else if ((actor->frameCount & 31) == 0) {
// unlit permanent torches // unlit permanent torches
if ((actor->actor->params) == 8192) { if ((actor->actor->params) == 8192) {
if (torch->litTimer == 0) { if (torch->litTimer == 0) {
@ -81,6 +69,7 @@ void accessible_torches(AccessibleActor* actor) {
ActorAccessibility_PlaySoundForActor(actor, 0, NA_SE_EN_ANUBIS_FIRE); ActorAccessibility_PlaySoundForActor(actor, 0, NA_SE_EN_ANUBIS_FIRE);
} }
} }
}
void accessible_switch(AccessibleActor* actor) { void accessible_switch(AccessibleActor* actor) {
Player* player = GET_PLAYER(actor->play); Player* player = GET_PLAYER(actor->play);
@ -524,6 +513,7 @@ void ActorAccessibility_InitActors() {
}); });
policy.pitch = 1.1; policy.pitch = 1.1;
policy.distance = 1000; policy.distance = 1000;
policy.aimAssist.isProvider = AIM_HOOK;
ActorAccessibility_AddSupportedActor(ACTOR_EN_BOX, policy); ActorAccessibility_AddSupportedActor(ACTOR_EN_BOX, policy);
ActorAccessibility_InitPolicy(&policy, "Sign", NA_SE_IT_REFLECTION_WOOD); ActorAccessibility_InitPolicy(&policy, "Sign", NA_SE_IT_REFLECTION_WOOD);
policy.n = 40; policy.n = 40;
@ -585,14 +575,11 @@ void ActorAccessibility_InitActors() {
policy.ydist = 1000; policy.ydist = 1000;
ActorAccessibility_AddSupportedActor(ACTOR_EN_PO_DESERT, policy); ActorAccessibility_AddSupportedActor(ACTOR_EN_PO_DESERT, policy);
ActorAccessibility_InitPolicy(&policy, "flag pole", [](AccessibleActor* actor) { ActorAccessibility_InitPolicy(&policy, "flag pole", [](AccessibleActor* actor) {
if ((actor->frameCount & 31) == 0) {
ActorAccessibility_PlaySoundForActor(actor, 0, NA_SE_EV_FLUTTER_FLAG); ActorAccessibility_PlaySoundForActor(actor, 0, NA_SE_EV_FLUTTER_FLAG);
}
}); });
policy.aimAssist.isProvider = AIM_HOOK; policy.aimAssist.isProvider = AIM_HOOK;
policy.distance = 1000; policy.distance = 1000;
policy.volume = 1.5; policy.volume = 1.5;
policy.n = 1;
ActorAccessibility_AddSupportedActor(ACTOR_EN_HATA, policy); ActorAccessibility_AddSupportedActor(ACTOR_EN_HATA, policy);
ActorAccessibility_InitPolicy(&policy, "oasis", NA_SE_EV_SCOOPUP_WATER); ActorAccessibility_InitPolicy(&policy, "oasis", NA_SE_EV_SCOOPUP_WATER);
policy.distance = 2000; policy.distance = 2000;
@ -661,11 +648,8 @@ void ActorAccessibility_InitActors() {
if (type == YELLOW_TALL_1 || type == YELLOW_TALL_2) { if (type == YELLOW_TALL_1 || type == YELLOW_TALL_2) {
actor->policy.aimAssist.isProvider = AIM_ALL; actor->policy.aimAssist.isProvider = AIM_ALL;
} }
if ((actor->frameCount & 31) == 0) {
ActorAccessibility_PlaySoundForActor(actor, 0, NA_SE_EV_DIAMOND_SWITCH); ActorAccessibility_PlaySoundForActor(actor, 0, NA_SE_EV_DIAMOND_SWITCH);
}
}); });
policy.n = 1;
policy.volume = 0.6; policy.volume = 0.6;
policy.distance = 1000; policy.distance = 1000;
policy.ydist = 300; policy.ydist = 300;
@ -702,6 +686,7 @@ void ActorAccessibility_InitActors() {
ActorAccessibility_AddSupportedActor(ACTOR_BG_HIDAN_ROCK, policy); ActorAccessibility_AddSupportedActor(ACTOR_BG_HIDAN_ROCK, policy);
ActorAccessibility_AddSupportedActor(ACTOR_BG_JYA_BLOCK, policy); ActorAccessibility_AddSupportedActor(ACTOR_BG_JYA_BLOCK, policy);
ActorAccessibility_InitPolicy(&policy, "Torch", accessible_torches); ActorAccessibility_InitPolicy(&policy, "Torch", accessible_torches);
policy.aimAssist.isProvider = AIM_HOOK;
policy.n = 1; policy.n = 1;
policy.pitch = 1.1; policy.pitch = 1.1;
policy.distance = 800; policy.distance = 800;
@ -736,7 +721,7 @@ void ActorAccessibility_InitActors() {
if ((actor->frameCount & 63) == 0) { if ((actor->frameCount & 63) == 0) {
ActorAccessibility_PlaySoundForActor(actor, 0, NA_SE_EN_PO_CRY); ActorAccessibility_PlaySoundForActor(actor, 0, NA_SE_EN_PO_CRY);
} }
} else { } else if (po->type != 4) {
actor->policy.aimAssist.isProvider = 0; actor->policy.aimAssist.isProvider = 0;
} }
}); });
@ -744,7 +729,7 @@ void ActorAccessibility_InitActors() {
policy.aimAssist.tolerance = 40.0f; policy.aimAssist.tolerance = 40.0f;
policy.n = 1; policy.n = 1;
policy.ydist = 1000; policy.ydist = 1000;
policy.distance = 1000; policy.distance = 1500;
ActorAccessibility_AddSupportedActor(ACTOR_BG_PO_EVENT, policy); ActorAccessibility_AddSupportedActor(ACTOR_BG_PO_EVENT, policy);
ActorAccessibility_InitPolicy(&policy, "Poe Sister", [](AccessibleActor* actor) { ActorAccessibility_InitPolicy(&policy, "Poe Sister", [](AccessibleActor* actor) {
if (actor->actor->category == ACTORCAT_PROP) { if (actor->actor->category == ACTORCAT_PROP) {
@ -833,7 +818,6 @@ void ActorAccessibility_InitActors() {
ActorAccessibility_AddSupportedActor(ACTOR_EN_SI, policy); ActorAccessibility_AddSupportedActor(ACTOR_EN_SI, policy);
ActorAccessibility_InitPolicy(&policy, "Gold and Wall skulltulas", nullptr); ActorAccessibility_InitPolicy(&policy, "Gold and Wall skulltulas", nullptr);
policy.aimAssist.isProvider = AIM_ALL | AIM_CUP; policy.aimAssist.isProvider = AIM_ALL | AIM_CUP;
policy.n = 1;
policy.ydist = 500; policy.ydist = 500;
policy.distance = 750; policy.distance = 750;
ActorAccessibility_AddSupportedActor(ACTOR_EN_SW, policy); ActorAccessibility_AddSupportedActor(ACTOR_EN_SW, policy);

View file

@ -365,9 +365,7 @@ void ActorAccessibility_RunAccessibilityForActor(PlayState* play, AccessibleActo
if (aa->glossary->GlossaryStarted) { if (aa->glossary->GlossaryStarted) {
aa->glossary->frameCount++; aa->glossary->frameCount++;
} }
if (actor->frameCount % actor->policy.n) { if (!actor->policy.runsAlways && actor->xyzDistToPlayer > actor->policy.distance) {
return;
} else if (!actor->policy.runsAlways && actor->xyzDistToPlayer > actor->policy.distance) {
return; return;
} else if (actor->isDrawn == 0 && actor->actor->id != ACTOR_EN_IT && actor->actor->id != ACTOR_EN_OKARINA_TAG && } else if (actor->isDrawn == 0 && actor->actor->id != ACTOR_EN_IT && actor->actor->id != ACTOR_EN_OKARINA_TAG &&
!aa->glossary->GlossaryStarted) { !aa->glossary->GlossaryStarted) {
@ -420,12 +418,14 @@ void ActorAccessibility_RunAccessibilityForActor(PlayState* play, AccessibleActo
} }
} }
if (actor->frameCount % actor->policy.n == 0) {
if (actor->policy.callback != nullptr) { if (actor->policy.callback != nullptr) {
actor->policy.callback(actor); actor->policy.callback(actor);
} else if (actor->policy.sound != 0) { } else if (actor->policy.sound != 0) {
ActorAccessibility_PlaySoundForActor(actor, 0, actor->policy.sound); ActorAccessibility_PlaySoundForActor(actor, 0, actor->policy.sound);
} }
} }
}
void ActorAccessibility_RunAccessibilityForAllActors(PlayState* play) { void ActorAccessibility_RunAccessibilityForAllActors(PlayState* play) {
Player* player = GET_PLAYER(play); Player* player = GET_PLAYER(play);