diff --git a/src/game/interaction.c b/src/game/interaction.c index 472fa4d80..d81651099 100644 --- a/src/game/interaction.c +++ b/src/game/interaction.c @@ -456,6 +456,7 @@ void mario_retrieve_cap(struct MarioState* m) { if (!m) { return; } mario_drop_held_object(m); save_file_clear_flags(SAVE_FLAG_CAP_ON_KLEPTO | SAVE_FLAG_CAP_ON_UKIKI); + m->cap &= ~(SAVE_FLAG_CAP_ON_KLEPTO | SAVE_FLAG_CAP_ON_UKIKI); m->flags &= ~MARIO_CAP_ON_HEAD; m->flags |= MARIO_NORMAL_CAP | MARIO_CAP_IN_HAND; } @@ -2156,6 +2157,10 @@ u32 interact_cap(struct MarioState *m, UNUSED u32 interactType, struct Object *o capTime = gLevelValues.wingCapDuration; capMusic = SEQUENCE_ARGS(4, gLevelValues.wingCapSequence); break; + + case MARIO_NORMAL_CAP: + m->cap = 0; + break; } if (capTime > m->capTimer) { diff --git a/src/game/mario_actions_cutscene.c b/src/game/mario_actions_cutscene.c index a06f5705f..51026b681 100644 --- a/src/game/mario_actions_cutscene.c +++ b/src/game/mario_actions_cutscene.c @@ -370,7 +370,6 @@ void cutscene_put_cap_on(struct MarioState *m) { m->flags &= ~MARIO_CAP_IN_HAND; m->flags |= MARIO_CAP_ON_HEAD; play_sound(SOUND_ACTION_UNKNOWN43E, m->marioObj->header.gfx.cameraToObject); - m->cap = 0; } /**