diff --git a/desktop_version/src/Game.cpp b/desktop_version/src/Game.cpp index 475ccce7..771a1a14 100644 --- a/desktop_version/src/Game.cpp +++ b/desktop_version/src/Game.cpp @@ -6888,8 +6888,15 @@ void Game::unlockAchievement(const char *name) { #endif } -void Game::mapmenuchange(const int newgamestate) +void Game::mapmenuchange(const int newgamestate, const bool user_initiated) { + if (user_initiated + && graphics.menuoffset > 0 + && graphics.menuoffset < (map.extrarow ? 230 : 240)) + { + return; + } + prevgamestate = gamestate; gamestate = newgamestate; graphics.resumegamemode = false; diff --git a/desktop_version/src/Game.h b/desktop_version/src/Game.h index c52cd954..4f517e69 100644 --- a/desktop_version/src/Game.h +++ b/desktop_version/src/Game.h @@ -245,7 +245,7 @@ public: int tapleft, tapright; //Menu interaction stuff - void mapmenuchange(const int newgamestate); + void mapmenuchange(const int newgamestate, const bool user_initiated); bool mapheld; int menupage; int lastsaved; diff --git a/desktop_version/src/Input.cpp b/desktop_version/src/Input.cpp index bb86e810..a9db78d1 100644 --- a/desktop_version/src/Input.cpp +++ b/desktop_version/src/Input.cpp @@ -2124,7 +2124,7 @@ void gameinput(void) else if (game.companion == 0) { //Alright, normal teleporting - game.mapmenuchange(TELEPORTERMODE); + game.mapmenuchange(TELEPORTERMODE, true); game.useteleporter = true; game.initteleportermode(); @@ -2279,7 +2279,7 @@ void gameinput(void) //quitting the super gravitron game.mapheld = true; //Quit menu, same conditions as in game menu - game.mapmenuchange(MAPMODE); + game.mapmenuchange(MAPMODE, true); game.gamesaved = false; game.gamesavefailed = false; game.menupage = 20; // The Map Page @@ -2299,7 +2299,7 @@ void gameinput(void) else { //Normal map screen, do transition later - game.mapmenuchange(MAPMODE); + game.mapmenuchange(MAPMODE, true); map.cursordelay = 0; map.cursorstate = 0; game.gamesaved = false; @@ -2320,7 +2320,7 @@ void gameinput(void) { game.mapheld = true; //Quit menu, same conditions as in game menu - game.mapmenuchange(MAPMODE); + game.mapmenuchange(MAPMODE, true); game.gamesaved = false; game.gamesavefailed = false; game.menupage = 30; // Pause screen diff --git a/desktop_version/src/Script.cpp b/desktop_version/src/Script.cpp index 678e39f1..79007fc7 100644 --- a/desktop_version/src/Script.cpp +++ b/desktop_version/src/Script.cpp @@ -1349,7 +1349,7 @@ void scriptclass::run(void) { if (words[1] == "teleporter") { - game.mapmenuchange(TELEPORTERMODE); + game.mapmenuchange(TELEPORTERMODE, false); game.useteleporter = false; //good heavens don't actually use it }