diff --git a/engines/neverhood/modules/module1400.cpp b/engines/neverhood/modules/module1400.cpp index 551b6874ff8e..465ad5909aca 100644 --- a/engines/neverhood/modules/module1400.cpp +++ b/engines/neverhood/modules/module1400.cpp @@ -709,13 +709,14 @@ Scene1405::Scene1405(NeverhoodEngine *vm, Module *parentModule) void Scene1405::update() { Scene::update(); + // Check if the player chose a wrong tile, in which case the whole grid gets reset if (_countdown != 0 && (--_countdown == 0)) { _tilesLeft = 48; - _tiles[_firstTileIndex]->hide(); - _tiles[_secondTileIndex]->hide(); + _tiles[_firstTileIndex]->hide(true); + _tiles[_secondTileIndex]->hide(false); for (uint32 i = 0; i < 48; i++) { if (getSubVar(VA_IS_TILE_MATCH, i)) { - _tiles[i]->hide(); + _tiles[i]->hide(false); setSubVar(VA_IS_TILE_MATCH, i, 0); } } diff --git a/engines/neverhood/modules/module1400_sprites.cpp b/engines/neverhood/modules/module1400_sprites.cpp index 30a5c340c936..99a2a314a77c 100644 --- a/engines/neverhood/modules/module1400_sprites.cpp +++ b/engines/neverhood/modules/module1400_sprites.cpp @@ -873,10 +873,11 @@ void AsScene1405Tile::show() { } } -void AsScene1405Tile::hide() { +void AsScene1405Tile::hide(bool playClickSound) { if (_isShowing) { _isShowing = false; - playSound(0); + if (playClickSound) + playSound(0); setVisible(false); } } diff --git a/engines/neverhood/modules/module1400_sprites.h b/engines/neverhood/modules/module1400_sprites.h index fe0db66d273a..e709193aab8e 100644 --- a/engines/neverhood/modules/module1400_sprites.h +++ b/engines/neverhood/modules/module1400_sprites.h @@ -155,7 +155,7 @@ class AsScene1405Tile : public AnimatedSprite { public: AsScene1405Tile(NeverhoodEngine *vm, Scene1405 *parentScene, uint32 tileIndex); void show(); - void hide(); + void hide(bool playClickSound); protected: Scene1405 *_parentScene; bool _isShowing;