diff --git a/src/audio/soundplayer.c b/src/audio/soundplayer.c index ebb97dd..e11be42 100644 --- a/src/audio/soundplayer.c +++ b/src/audio/soundplayer.c @@ -269,7 +269,7 @@ float soundClipDuration(int soundClipId, float pitch) { return soundPlayerEstimateLength(alSound, pitch); } -void soundPlayerGameVolumeUpdate(enum SoundType type) { +void soundPlayerGameVolumeUpdate() { int index = 0; while (index < gActiveSoundCount) { struct ActiveSound* sound = &gActiveSounds[index]; @@ -279,7 +279,7 @@ void soundPlayerGameVolumeUpdate(enum SoundType type) { } float newVolume = sound->originalVolume * gSaveData.audio.soundVolume/0xFFFF; - if (type == SoundTypeMusic){ + if (sound->soundType == SoundTypeMusic){ newVolume = newVolume* gSaveData.audio.musicVolume/0xFFFF; } diff --git a/src/decor/decor_object.c b/src/decor/decor_object.c index 09e8307..9eba7d9 100644 --- a/src/decor/decor_object.c +++ b/src/decor/decor_object.c @@ -149,6 +149,10 @@ enum FizzleCheckResult decorObjectUpdateFizzler(struct CollisionObject* collisio } int decorObjectUpdate(struct DecorObject* decorObject) { + if (decorObject->collisionObject.flags & COLLISION_OBJECT_PLAYER_STANDING) { + decorObject->collisionObject.flags &= ~COLLISION_OBJECT_PLAYER_STANDING; + } + if (decorObject->playingSound != SOUND_ID_NONE) { soundPlayerUpdatePosition( decorObject->playingSound, diff --git a/src/menu/audio_options.c b/src/menu/audio_options.c index 385ad18..f5a2c5b 100644 --- a/src/menu/audio_options.c +++ b/src/menu/audio_options.c @@ -143,11 +143,11 @@ enum MenuDirection audioOptionsUpdate(struct AudioOptions* audioOptions) { switch (audioOptions->selectedItem) { case AudioOptionGameVolume: audioOptionsHandleSlider(audioOptions->selectedItem, &gSaveData.audio.soundVolume, &audioOptions->gameVolume.value); - soundPlayerGameVolumeUpdate(SoundTypeAll); + soundPlayerGameVolumeUpdate(); break; case AudioOptionMusicVolume: audioOptionsHandleSlider(audioOptions->selectedItem, &gSaveData.audio.musicVolume, &audioOptions->musicVolume.value); - soundPlayerGameVolumeUpdate(SoundTypeMusic); + soundPlayerGameVolumeUpdate(); break; case AudioOptionSubtitlesEnabled: if (controllerGetButtonDown(0, A_BUTTON)) { diff --git a/src/player/player.c b/src/player/player.c index e6589c8..5709cd1 100644 --- a/src/player/player.c +++ b/src/player/player.c @@ -241,7 +241,10 @@ void playerApplyPortalGrab(struct Player* player, int portalIndex) { } void playerSetGrabbing(struct Player* player, struct CollisionObject* grabbing) { - if (grabbing && !player->grabConstraint.object) { + if (grabbing && grabbing->flags & COLLISION_OBJECT_PLAYER_STANDING){ + player->grabConstraint.object = NULL; + } + else if (grabbing && !player->grabConstraint.object) { pointConstraintInit(&player->grabConstraint, grabbing, 8.0f, 5.0f, 1.0f); contactSolverAddPointConstraint(&gContactSolver, &player->grabConstraint); hudResolvePrompt(&gScene.hud, CutscenePromptTypePickup);