diff --git a/Assets/Scripts/Managers/GlobalManager.cs b/Assets/Scripts/Managers/GlobalManager.cs
index 224d446b8b75b3f0ed0df7cdbad76a418caf11dd..0a47dc4bed04a1cc449812534b2e39f76cb5f1d1 100644
--- a/Assets/Scripts/Managers/GlobalManager.cs
+++ b/Assets/Scripts/Managers/GlobalManager.cs
@@ -6,7 +6,7 @@ using System.IO;
 public class GlobalManager : MonoBehaviour
 {
     public static GlobalManager Instance;
-    private GlobalStateManager globalState;
+    private GlobalStateManager globalStateManager;
     private string playerName;
     public string PlayerName
     {
@@ -17,6 +17,24 @@ public class GlobalManager : MonoBehaviour
         }
     }
 
+    private int idxLoadSlot = -1;
+    public int IdxLoadSlot
+    {
+        get => idxLoadSlot;
+        set
+        {
+            idxLoadSlot = value;
+            stateSave = SaveLoadManager.Instance.GetStateFromFile(idxLoadSlot);
+            OnLoad();
+        }
+    }
+
+    private StateSave stateSave = null;
+    public StateSave StateSave
+    {
+        get => stateSave;
+    }
+
     private void Awake()
     {
         if (Instance != null)
@@ -26,10 +44,15 @@ public class GlobalManager : MonoBehaviour
         }
 
         Instance = this;
-        globalState = GlobalStateManager.Instance;
+        globalStateManager = GlobalStateManager.Instance;
         DontDestroyOnLoad(gameObject);
     }
 
+    private void OnLoad()
+    {
+        playerName = stateSave.playerStateSave.playerName;
+    }
+
     // Start is called before the first frame update
     void Start()
     {
diff --git a/Assets/Scripts/SaveLoad/SaveLoadManager.cs b/Assets/Scripts/SaveLoad/SaveLoadManager.cs
index a6e5312bb208343635cf5a0f0be42b3a61b94523..184b4caefd0a2cf9987d99c7acb2fa8c8f064810 100644
--- a/Assets/Scripts/SaveLoad/SaveLoadManager.cs
+++ b/Assets/Scripts/SaveLoad/SaveLoadManager.cs
@@ -61,7 +61,7 @@ public class SaveLoadManager : MonoBehaviour
 
     public void LoadState(int Id)
     {
-        var file = SaveLoadConfig.files[Id];
+/*        var file = SaveLoadConfig.files[Id];
         var path = Application.persistentDataPath + "/" + file + ".json";
         if (File.Exists(path))
         {
@@ -69,6 +69,26 @@ public class SaveLoadManager : MonoBehaviour
             Debug.Log("JSON:" + json);
             StateSave state = JsonUtility.FromJson<StateSave>(json);
             GlobalStateManager.Instance.SetState(state);
+        }*/
+        var state = GetStateFromFile(Id);
+        if (state != null)
+        {
+            GlobalStateManager.Instance.SetState(state);
+        }
+    }
+
+    public StateSave GetStateFromFile(int id)
+    {
+        var file = SaveLoadConfig.files[id];
+        var path = Application.persistentDataPath + "/" + file + ".json";
+        if (File.Exists(path))
+        {
+            string json = File.ReadAllText(path);
+            Debug.Log("JSON:" + json);
+            StateSave state = JsonUtility.FromJson<StateSave>(json);
+            return state;
         }
+
+        return null;
     }
 }
diff --git a/Assets/Scripts/SaveLoad/SavePlace.cs b/Assets/Scripts/SaveLoad/SavePlace.cs
index 68cc706bd8289d44c282f5eda5af617d913291c4..a4a46c719a471590653b0e2b1345ae3eaf1ed896 100644
--- a/Assets/Scripts/SaveLoad/SavePlace.cs
+++ b/Assets/Scripts/SaveLoad/SavePlace.cs
@@ -5,6 +5,20 @@ using UnityEngine;
 public class SavePlace : MonoBehaviour
 {
     private bool onArea = false;
+    private Temple temple;
+
+    private bool IsOnQuest
+    {
+        get
+        {
+            return temple.OnQuest;
+        }
+    }
+
+    private void Awake()
+    {
+        temple = FindObjectOfType<Temple>();
+    }
 
     // Start is called before the first frame update
     void Start()
@@ -15,7 +29,7 @@ public class SavePlace : MonoBehaviour
     // Update is called once per frame
     void Update()
     {
-        if (onArea && Input.GetKeyDown(KeyCode.B))
+        if (onArea && !IsOnQuest && Input.GetKeyDown(KeyCode.B))
         {
             Debug.Log("SAVING");
             if (SaveLoadManager.Instance == null )
@@ -35,7 +49,10 @@ public class SavePlace : MonoBehaviour
     {
         if (other.CompareTag("Player"))
         {
-            ToastManager.Instance.ShowToast("Press B to save", 3);
+            if (!IsOnQuest)
+            {
+                ToastManager.Instance.ShowToast("Press B to save", 3);
+            }
             onArea = true;
         }
     }
diff --git a/Assets/Scripts/States/GlobalStateManager.cs b/Assets/Scripts/States/GlobalStateManager.cs
index d74b7b1351640c6e253f1dfab89aea88aff33545..ac3075f7259519f5e1244dc7426576b37cf898f4 100644
--- a/Assets/Scripts/States/GlobalStateManager.cs
+++ b/Assets/Scripts/States/GlobalStateManager.cs
@@ -132,7 +132,7 @@ public class GlobalStateManager : MonoBehaviour
 
 
         // TODO: set meta player save
-        GlobalManager.Instance.PlayerName = state.playerStateSave.playerName;
+/*        GlobalManager.Instance.PlayerName = state.playerStateSave.playerName;
         playerHealth.currentHealth = state.playerStateSave.health;
         GameControl.control.currency = state.playerStateSave.money;
         temple.IdxCurrentQuest = state.playerStateSave.idxQuest;
@@ -147,7 +147,7 @@ public class GlobalStateManager : MonoBehaviour
                 playerWeapons.UnlockWeapon(type);
                 playerWeapons.SetLevel(type, level);
             }
-        }
+        }*/
 
         // TODO: set player state save