diff options
| author | aMannus <mannusmenting@gmail.com> | 2025-07-01 19:54:26 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-07-01 10:54:26 -0700 |
| commit | 48d2193fec455a2105708b5cd692ee0c14cd31ac (patch) | |
| tree | d33adbd750311dec82031bbd2142b7d493de86c4 /soh/src/code | |
| parent | 05a7f728e736836b3b6d799487c4c922ff789581 (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.c | 12 |
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) { |
