summaryrefslogtreecommitdiff
path: root/soh/src/code
diff options
context:
space:
mode:
authoraMannus <mannusmenting@gmail.com>2025-07-01 19:54:26 +0200
committerGitHub <noreply@github.com>2025-07-01 10:54:26 -0700
commit48d2193fec455a2105708b5cd692ee0c14cd31ac (patch)
treed33adbd750311dec82031bbd2142b7d493de86c4 /soh/src/code
parent05a7f728e736836b3b6d799487c4c922ff789581 (diff)
CrowdControl additions & improvements (#5104)
* CrowdControl additions & improvements * Update after dev merge * clang format * Revert "clang format" This reverts commit 1be5ad18f5995792971fa0a1772109b0157817b4. * clang format
Diffstat (limited to 'soh/src/code')
-rw-r--r--soh/src/code/z_actor.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/soh/src/code/z_actor.c b/soh/src/code/z_actor.c
index 3933f263d..620cb4959 100644
--- a/soh/src/code/z_actor.c
+++ b/soh/src/code/z_actor.c
@@ -1284,8 +1284,16 @@ void Actor_UpdatePos(Actor* actor) {
}
void Actor_UpdateVelocityXZGravity(Actor* actor) {
- actor->velocity.x = Math_SinS(actor->world.rot.y) * actor->speedXZ;
- actor->velocity.z = Math_CosS(actor->world.rot.y) * actor->speedXZ;
+ Player* player = GET_PLAYER(gPlayState);
+ uint8_t inCutscene = player->stateFlags1 & PLAYER_STATE1_CLIMBING_LADDER ||
+ player->stateFlags1 & PLAYER_STATE1_IN_CUTSCENE ||
+ player->stateFlags2 & PLAYER_STATE2_CRAWLING;
+ f32 speedModifier = 1.0f;
+ if (actor->id == ACTOR_PLAYER && !inCutscene) {
+ speedModifier = GameInteractor_MovementSpeedMultiplier();
+ }
+ actor->velocity.x = Math_SinS(actor->world.rot.y) * actor->speedXZ * speedModifier;
+ actor->velocity.z = Math_CosS(actor->world.rot.y) * actor->speedXZ * speedModifier;
actor->velocity.y += actor->gravity;
if (actor->velocity.y < actor->minVelocityY) {