diff --git a/apps/openmw/mwgui/waitdialog.cpp b/apps/openmw/mwgui/waitdialog.cpp index 18c4eec87..58d8a3e05 100644 --- a/apps/openmw/mwgui/waitdialog.cpp +++ b/apps/openmw/mwgui/waitdialog.cpp @@ -161,7 +161,8 @@ namespace MWGui MWBase::Environment::get().getWindowManager()->messageBox("You are not allowed to rest in the wilderness."); MWBase::Environment::get().getWindowManager()->popGuiMode(); } - else if (canRest == MWBase::World::Rest_OnlyWaiting && !mwmp::Main::get().getLocalPlayer()->waitAllowed) + else if (canRest == MWBase::World::Rest_OnlyWaiting && !mwmp::Main::get().getLocalPlayer()->waitAllowed && + !mwmp::Main::get().getLocalPlayer()->isUsingBed) { MWBase::Environment::get().getWindowManager()->messageBox("You are not allowed to wait."); MWBase::Environment::get().getWindowManager()->popGuiMode(); diff --git a/apps/openmw/mwinput/inputmanagerimp.cpp b/apps/openmw/mwinput/inputmanagerimp.cpp index 25a7d4af0..b31dc4c2a 100644 --- a/apps/openmw/mwinput/inputmanagerimp.cpp +++ b/apps/openmw/mwinput/inputmanagerimp.cpp @@ -1300,9 +1300,14 @@ namespace MWInput Start of tes3mp addition Ignore attempts to rest if the player has not logged in on the server yet + + Set LocalPlayer's isUsingBed to be able to distinguish bed use from regular rest + menu use */ if (!mwmp::Main::get().getLocalPlayer()->isLoggedIn()) return; + + mwmp::Main::get().getLocalPlayer()->isUsingBed = false; /* End of tes3mp addition */ diff --git a/apps/openmw/mwmp/LocalPlayer.cpp b/apps/openmw/mwmp/LocalPlayer.cpp index 9f3412186..ba5d2c38f 100644 --- a/apps/openmw/mwmp/LocalPlayer.cpp +++ b/apps/openmw/mwmp/LocalPlayer.cpp @@ -74,6 +74,7 @@ LocalPlayer::LocalPlayer() jailProgressText = ""; jailEndText = ""; + isUsingBed = false; isReceivingInventory = false; isReceivingQuickKeys = false; isPlayingAnimation = false; diff --git a/apps/openmw/mwmp/LocalPlayer.hpp b/apps/openmw/mwmp/LocalPlayer.hpp index 2168a8d6f..92dff83a4 100644 --- a/apps/openmw/mwmp/LocalPlayer.hpp +++ b/apps/openmw/mwmp/LocalPlayer.hpp @@ -18,6 +18,7 @@ namespace mwmp time_t deathTime; bool receivedCharacter; + bool isUsingBed; bool isReceivingInventory; bool isReceivingQuickKeys; bool isPlayingAnimation; diff --git a/apps/openmw/mwmp/processors/player/ProcessorGameSettings.hpp b/apps/openmw/mwmp/processors/player/ProcessorGameSettings.hpp index c79898b79..28ac3a962 100644 --- a/apps/openmw/mwmp/processors/player/ProcessorGameSettings.hpp +++ b/apps/openmw/mwmp/processors/player/ProcessorGameSettings.hpp @@ -24,6 +24,9 @@ namespace mwmp if (isLocal()) { LOG_MESSAGE_SIMPLE(TimedLog::LOG_INFO, "Received ID_GAME_SETTINGS"); + LOG_APPEND(TimedLog::LOG_INFO, "- player %s rest in beds, %s rest in the wilderness, %s wait", + player->bedRestAllowed ? "can" : "cannot", player->wildernessRestAllowed ? "can" : "cannot", + player->waitAllowed ? "can" : "cannot"); if (MWBase::Environment::get().getWindowManager()->isGuiMode()) { diff --git a/apps/openmw/mwscript/guiextensions.cpp b/apps/openmw/mwscript/guiextensions.cpp index bbf259cf6..c5a849eb4 100644 --- a/apps/openmw/mwscript/guiextensions.cpp +++ b/apps/openmw/mwscript/guiextensions.cpp @@ -76,7 +76,10 @@ namespace MWScript if (!mwmp::Main::get().getLocalPlayer()->bedRestAllowed) MWBase::Environment::get().getWindowManager()->messageBox("You are not allowed to rest in beds."); else + { + mwmp::Main::get().getLocalPlayer()->isUsingBed = true; MWBase::Environment::get().getWindowManager()->pushGuiMode(MWGui::GM_Rest, bed); + } } /* End of tes3mp change (minor)