diff --git a/Assets/Scripts/Quest/Temple/Temple.cs b/Assets/Scripts/Quest/Temple/Temple.cs
index 51d4d0c859e0d6111b6c00466af02e7806589f2f..4272a6e503bfb5982f596fec3c263b1cf95def53 100644
--- a/Assets/Scripts/Quest/Temple/Temple.cs
+++ b/Assets/Scripts/Quest/Temple/Temple.cs
@@ -40,6 +40,20 @@ public class Temple : MonoBehaviour
 
     public bool OnQuest { get => onQuest; }
 
+    private SaveDialogHandler _saveDialog;
+    public SaveDialogHandler saveDialog
+    {
+        get
+        {
+            if (_saveDialog == null)
+            {
+                _saveDialog = GameObject.Find("HUDCanvas").GetComponentInChildren<SaveDialogHandler>();
+            }
+
+            return _saveDialog;
+        }
+    }
+
     // Start is called before the first frame update
     void Start()
     {
@@ -69,7 +83,8 @@ public class Temple : MonoBehaviour
 
     private void ExitingQuest()
     {
-        GameControl.control.addCurrency(questNumberEnemy.Reward);
+        var reward = questNumberEnemy.Reward;
+        GameControl.control.addCurrency(reward);
         timer.StopTimer();
         onQuest = false;
         questNumberEnemy = null;
@@ -83,7 +98,7 @@ public class Temple : MonoBehaviour
         }
 
         idxCurrentQuest++;
-        ToastManager.Instance.ShowToast("Quest " + idxCurrentQuest + " is Completed! You got additional coins: " + questNumberEnemy.Reward, 1);
+        ToastManager.Instance.ShowToast("Quest " + idxCurrentQuest + " is Completed! You got additional coins: " + reward, 1);
 
         // retrieve the time
         // add it to the global time
@@ -94,6 +109,8 @@ public class Temple : MonoBehaviour
             + " + " + System.TimeSpan.FromSeconds(questTime).ToString("mm':'ss"), 1);
         GlobalManager.Instance.TotalTime += questTime;
         ToastManager.Instance.ShowToast(System.TimeSpan.FromSeconds(GlobalManager.Instance.TotalTime).ToString("mm':'ss"), 1);
+
+        this.saveDialog.Show();
     }
 
     private void OnTriggerEnter(Collider other)
diff --git a/Assets/Scripts/SaveLoad/SaveDialogHandler.cs b/Assets/Scripts/SaveLoad/SaveDialogHandler.cs
index dd892a8ccbbf796e209ecd5d19aad3c315ac0482..7f860da44ef847df9b40da4df99cf88ec5d1fa4c 100644
--- a/Assets/Scripts/SaveLoad/SaveDialogHandler.cs
+++ b/Assets/Scripts/SaveLoad/SaveDialogHandler.cs
@@ -99,7 +99,16 @@ public class SaveDialogHandler : MonoBehaviour
     // Update is called once per frame
     void Update()
     {
-        
+        var onquest = GlobalStateManager.Instance.OnQuest;
+        if (onquest)
+        {
+            Close();
+        }
+
+        if (Input.GetKeyDown(KeyCode.Escape))
+        {
+            Close();
+        }
     }
 
     public void Show()
diff --git a/Assets/Scripts/SaveLoad/SavePlace.cs b/Assets/Scripts/SaveLoad/SavePlace.cs
index 20f06d03370629d7c49a511c281486ef961dc7fb..05e35ec24d56825249d36dc7a89e62649a4a1b5e 100644
--- a/Assets/Scripts/SaveLoad/SavePlace.cs
+++ b/Assets/Scripts/SaveLoad/SavePlace.cs
@@ -33,7 +33,8 @@ public class SavePlace : MonoBehaviour
 
     private void OnTriggerEnter(Collider other)
     {
-        if (other.CompareTag("Player"))
+        var onquest = GlobalStateManager.Instance.OnQuest;
+        if (other.CompareTag("Player") && !onquest)
         {
             ToastManager.Instance.ShowToast("Press B to save", 1);
             onArea = true;
diff --git a/Assets/Scripts/States/GlobalStateManager.cs b/Assets/Scripts/States/GlobalStateManager.cs
index 2b7df1658a3e6254f54972d2930fcc96810a3c21..1d0cf6a5798bed9d50ac7e213f0a38e3c461a39d 100644
--- a/Assets/Scripts/States/GlobalStateManager.cs
+++ b/Assets/Scripts/States/GlobalStateManager.cs
@@ -9,7 +9,19 @@ public class GlobalStateManager : MonoBehaviour
     public static GlobalStateManager Instance { get; private set; }
     private PlayerWeapons playerWeapons;
     private PlayerHealth playerHealth;
-    private Temple temple;
+    private Temple _temple;
+    private Temple temple
+    {
+        get
+        {
+            if (_temple == null)
+            {
+                _temple = FindObjectOfType<Temple>();
+            }
+
+            return _temple;
+        }
+    }
     private PetHealth petHealth;
     private CheatManager cheatManager;
 
@@ -30,7 +42,7 @@ public class GlobalStateManager : MonoBehaviour
     {
         playerWeapons = FindObjectOfType<PlayerWeapons>();
         playerHealth = FindObjectOfType<PlayerHealth>();
-        temple = FindObjectOfType<Temple>();
+        _temple = FindObjectOfType<Temple>();
         petHealth = FindObjectOfType<PetHealth>();
         cheatManager = FindObjectOfType<CheatManager>();
     }
@@ -90,6 +102,14 @@ public class GlobalStateManager : MonoBehaviour
     }
 
 
+    public bool OnQuest
+    {
+        get
+        {
+            return temple.OnQuest;
+        }
+    }
+
     public string Stats()
     {
         var str = "";