diff --git a/Assets/Scripts/Managers/MainManager.cs b/Assets/Scripts/Managers/MainManager.cs
index ba9f206e18ac3098f284f94afdea8890f2722e6c..79d1b9dc56e70d11839d36fff428c8f516a87373 100644
--- a/Assets/Scripts/Managers/MainManager.cs
+++ b/Assets/Scripts/Managers/MainManager.cs
@@ -1,84 +1,88 @@
-using UnityEngine;
-using System.IO;
-using UnityEngine.SceneManagement;
-using System;
-
-public class MainManager : MonoBehaviour
-{
-    public static MainManager Instance;
-    public int time;
-    public int money;
-    public string level;
-
-    private void Awake()
-    {
-        if (Instance != null)
-        {
-            Destroy(gameObject);
-            return;
-        }
-        level = "Level 01";
-        Instance = this;
-        DontDestroyOnLoad(gameObject);
-    }
-
-    public void NewTime(Component sender, object data)
-    {
-        time = (int) data;
-        Instance.time = time;
-    }
-    public void NewMoney(Component sender, object data)
-    {
-        time = (int) data;
-        Instance.money = time;
-    }
-    private void addLevel()
-    {
-        string levelText = level.Substring(level.Length - 1);
-        int numLevel = int.Parse(levelText) + 1;
-        level = "Level 0" + numLevel.ToString();
-    }
-    public void Save(int num)
-    {
-        SaveData data = new SaveData();
-        data.time = time;
-        data.money = money;
-        data.level = level;
-        data.date = DateTime.Now.ToString("dd-MM-yyyy");
-        data.base_default_weapon_atk = PlayerShooting.baseDamagePerShot;
-        data.base_shotgun_atk = PlayerShotgun.baseDamagePerShot;
-
-        string json = JsonUtility.ToJson(data);
-        File.WriteAllText(Application.persistentDataPath + "/savefile" + num.ToString() + ".json", json);
-        ContinueGame();
-    }
-
-    public void Load(int num)
-    {
-        string path = Application.persistentDataPath + "/savefile"+ num.ToString() + ".json";
-        if (File.Exists(path))
-        {
-            string json = File.ReadAllText(path);
-            SaveData data = JsonUtility.FromJson<SaveData>(json);
-
-            time = data.time;
-            money = data.money;
-            level = next_level(data.level);
-
-            PlayerShooting.baseDamagePerShot = data.base_default_weapon_atk;
-            PlayerShooting.damagePerShot = data.base_default_weapon_atk;
-
-            PlayerShotgun.baseDamagePerShot = data.base_shotgun_atk;
-            PlayerShotgun.damagePerShot = data.base_shotgun_atk;
-
-            SceneManager.LoadScene(level);
-        }
-        else
-        {
-            print("Error No Load File");
-        }
-    }
-
+using UnityEngine;
+using System.IO;
+using UnityEngine.SceneManagement;
+using System;
+
+public class MainManager : MonoBehaviour
+{
+    public static MainManager Instance;
+    public int time;
+    public int money;
+    public string level;
+
+    private void Awake()
+    {
+        if (Instance != null)
+        {
+            Destroy(gameObject);
+            return;
+        }
+        level = "Level 01";
+        Instance = this;
+        DontDestroyOnLoad(gameObject);
+    }
+
+    public void NewTime(Component sender, object data)
+    {
+        time = (int) data;
+        Instance.time = time;
+    }
+    public void NewMoney(Component sender, object data)
+    {
+        time = (int) data;
+        Instance.money = time;
+    }
+    private void addLevel()
+    {
+        string levelText = level.Substring(level.Length - 1);
+        int numLevel = int.Parse(levelText) + 1;
+        level = "Level 0" + numLevel.ToString();
+    }
+    public void Save(int num)
+    {
+        SaveData data = new SaveData();
+        data.time = time;
+        data.money = money;
+        data.level = level;
+        data.date = DateTime.Now.ToString("dd-MM-yyyy");
+        data.base_default_weapon_atk = PlayerShooting.baseDamagePerShot;
+        data.base_shotgun_atk = PlayerShotgun.baseDamagePerShot;
+        data.base_sword_atk = PlayerSword.baseDamagePerTouch;
+
+        string json = JsonUtility.ToJson(data);
+        File.WriteAllText(Application.persistentDataPath + "/savefile" + num.ToString() + ".json", json);
+        ContinueGame();
+    }
+
+    public void Load(int num)
+    {
+        string path = Application.persistentDataPath + "/savefile"+ num.ToString() + ".json";
+        if (File.Exists(path))
+        {
+            string json = File.ReadAllText(path);
+            SaveData data = JsonUtility.FromJson<SaveData>(json);
+
+            time = data.time;
+            money = data.money;
+            level = next_level(data.level);
+
+            PlayerShooting.baseDamagePerShot = data.base_default_weapon_atk;
+            PlayerShooting.damagePerShot = data.base_default_weapon_atk;
+
+            PlayerShotgun.baseDamagePerShot = data.base_shotgun_atk;
+            PlayerShotgun.damagePerShot = data.base_shotgun_atk;
+
+            PlayerSword.baseDamagePerTouch = data.base_sword_atk;
+            PlayerSword.damagePerTouch = data.base_sword_atk;
+
+            SceneManager.LoadScene(level);
+        }
+        else
+        {
+            print("Error No Load File");
+        }
+    }
+
     private string next_level(string level)
     {
         int number_level = int.Parse(level.Substring(level.Length - 2));
@@ -89,16 +93,16 @@ public class MainManager : MonoBehaviour
         }
 
         return $"Level 0{number_level + 1}";
-    }
-
-    public void ContinueGame()
-    {
-        addLevel();
-        SceneManager.LoadScene(level);
-    }
-
-    
-
-}
-
-
+    }
+
+    public void ContinueGame()
+    {
+        addLevel();
+        SceneManager.LoadScene(level);
+    }
+
+    
+
+}
+
+
diff --git a/Assets/Scripts/Managers/MainMenuManager.cs b/Assets/Scripts/Managers/MainMenuManager.cs
index 5650786641c698fb6ddf2666dc1b032a8bbd294a..7df7eb3aa7103633ffff1d7538a9795b9bbbbe7a 100644
--- a/Assets/Scripts/Managers/MainMenuManager.cs
+++ b/Assets/Scripts/Managers/MainMenuManager.cs
@@ -1,46 +1,46 @@
-using System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-using UnityEngine.SceneManagement;
-using TMPro;
-using UnityEngine.UI;
-
-public class MainMenuManager : MonoBehaviour
-{
-    public GameObject mainMenuPage;
-    public GameObject settingsPage;
-    public TMP_InputField nameInputField;
-    public Slider musicVolumeSlider;
-    public Slider sfxVolumeSlider;
-
-    [Header("Events")]
-    public GameEvent musicVolumeChanged;
-
-    void Awake()
-    {
-        // Set default player prefs on first launch
-        if(!PlayerPrefs.HasKey("playerName")) 
-        {
-            PlayerPrefs.SetString("playerName", "Default");
-        }
-
-        if(!PlayerPrefs.HasKey("musicVolume")) 
-        {
-            PlayerPrefs.SetFloat("musicVolume", 1);
-        }
-
-        if(!PlayerPrefs.HasKey("sfxVolume")) 
-        {
-            PlayerPrefs.SetFloat("sfxVolume", 1);
-        }
-    }
-
-    public void NewGame()
-    {
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.SceneManagement;
+using TMPro;
+using UnityEngine.UI;
+
+public class MainMenuManager : MonoBehaviour
+{
+    public GameObject mainMenuPage;
+    public GameObject settingsPage;
+    public TMP_InputField nameInputField;
+    public Slider musicVolumeSlider;
+    public Slider sfxVolumeSlider;
+
+    [Header("Events")]
+    public GameEvent musicVolumeChanged;
+
+    void Awake()
+    {
+        // Set default player prefs on first launch
+        if(!PlayerPrefs.HasKey("playerName")) 
+        {
+            PlayerPrefs.SetString("playerName", "Default");
+        }
+
+        if(!PlayerPrefs.HasKey("musicVolume")) 
+        {
+            PlayerPrefs.SetFloat("musicVolume", 1);
+        }
+
+        if(!PlayerPrefs.HasKey("sfxVolume")) 
+        {
+            PlayerPrefs.SetFloat("sfxVolume", 1);
+        }
+    }
+
+    public void NewGame()
+    {
         resetGun();
-		SceneManager.LoadScene("Opening");
-    }
-
+		SceneManager.LoadScene("Opening");
+    }
+
     private void resetGun()
     {
 		PlayerShotgun.baseDamagePerShot = 30;
@@ -48,57 +48,60 @@ public class MainMenuManager : MonoBehaviour
 
         PlayerShooting.baseDamagePerShot = 20;
         PlayerShooting.damagePerShot = 20;
+
+        PlayerSword.baseDamagePerTouch = 50;
+        PlayerSword.damagePerTouch = 50;
 	}
 
-	public void LoadGame()
-    {
-        SceneManager.LoadScene("Load");
-    }
-
-    public void ShowScoreboard()
-    {
-        SceneManager.LoadScene("Highscore");
-    }
-
-    public void ShowSettings()
-    {
-        nameInputField.text = PlayerPrefs.GetString("playerName");
-        musicVolumeSlider.value = PlayerPrefs.GetFloat("musicVolume");
-        sfxVolumeSlider.value = PlayerPrefs.GetFloat("sfxVolume");
-
-        mainMenuPage.SetActive(false);
-        settingsPage.SetActive(true);
-    }
-
-    public void changeMusicVolume()
-    {
-        PlayerPrefs.SetFloat("musicVolume", musicVolumeSlider.value);
-        musicVolumeChanged.Raise(this, musicVolumeSlider.value);
-    }
-
-    public void changeSfxVolume()
-    {
-        PlayerPrefs.SetFloat("sfxVolume", sfxVolumeSlider.value);
-        AudioListener.volume = sfxVolumeSlider.value;
-    }
-
-    public void UpdateSettings()
-    {
-        if (nameInputField.text == "")
-        {
-            PlayerPrefs.SetString("playerName", "Default Player");
-        }
-        else
-        {
-            PlayerPrefs.SetString("playerName", nameInputField.text);
-        }
-
-        mainMenuPage.SetActive(true);
-        settingsPage.SetActive(false);
-    }
-
-    public void ExitGame()
-    {
-        Application.Quit();
-    }
-}
+	public void LoadGame()
+    {
+        SceneManager.LoadScene("Load");
+    }
+
+    public void ShowScoreboard()
+    {
+        SceneManager.LoadScene("Highscore");
+    }
+
+    public void ShowSettings()
+    {
+        nameInputField.text = PlayerPrefs.GetString("playerName");
+        musicVolumeSlider.value = PlayerPrefs.GetFloat("musicVolume");
+        sfxVolumeSlider.value = PlayerPrefs.GetFloat("sfxVolume");
+
+        mainMenuPage.SetActive(false);
+        settingsPage.SetActive(true);
+    }
+
+    public void changeMusicVolume()
+    {
+        PlayerPrefs.SetFloat("musicVolume", musicVolumeSlider.value);
+        musicVolumeChanged.Raise(this, musicVolumeSlider.value);
+    }
+
+    public void changeSfxVolume()
+    {
+        PlayerPrefs.SetFloat("sfxVolume", sfxVolumeSlider.value);
+        AudioListener.volume = sfxVolumeSlider.value;
+    }
+
+    public void UpdateSettings()
+    {
+        if (nameInputField.text == "")
+        {
+            PlayerPrefs.SetString("playerName", "Default Player");
+        }
+        else
+        {
+            PlayerPrefs.SetString("playerName", nameInputField.text);
+        }
+
+        mainMenuPage.SetActive(true);
+        settingsPage.SetActive(false);
+    }
+
+    public void ExitGame()
+    {
+        Application.Quit();
+    }
+}
diff --git a/Assets/Scripts/Player/PlayerSword.cs b/Assets/Scripts/Player/PlayerSword.cs
index 16676bea033635e0226fac2a808e7356bfe87757..e0296a81aa4898c861baa7a16d5f3eed35f9dd78 100644
--- a/Assets/Scripts/Player/PlayerSword.cs
+++ b/Assets/Scripts/Player/PlayerSword.cs
@@ -36,9 +36,16 @@ public class PlayerSword : MonoBehaviour
         fire.performed += Clicked;
         fire.canceled += Clicked;
 
-    }
-
-    private void OnDisable()
+    }
+
+	static public void upgrade()
+	{
+		baseDamagePerTouch = Mathf.RoundToInt(baseDamagePerTouch * 1.05f);
+		baseDamagePerTouch = Mathf.RoundToInt(baseDamagePerTouch * 1.05f);
+	}
+
+
+	private void OnDisable()
     {
         fire.Disable();
     }
diff --git a/Assets/Scripts/Player/PlayerTransaction.cs b/Assets/Scripts/Player/PlayerTransaction.cs
index 08d200712478807a229db515a62e4aaec1c463f1..50cfa03b6c98e8b0d163209fb60cfd88600f593a 100644
--- a/Assets/Scripts/Player/PlayerTransaction.cs
+++ b/Assets/Scripts/Player/PlayerTransaction.cs
@@ -1,46 +1,46 @@
-using System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-
-public class PlayerTransaction : MonoBehaviour
-{
-    public void BoughtItem(Component sender, object data)
-    {
-        if (sender is ShopItemController && data is ShopItem.ItemType)
-        {
-            switch (data)
-            {
-                default:
-                case ShopItem.ItemType.Pet_None:                                    break;
-                case ShopItem.ItemType.Pet_Attack:      BoughtPet("attack");        break;
-                case ShopItem.ItemType.Pet_Heal:        BoughtPet("heal");          break;
-                case ShopItem.ItemType.Pet_Buff:        BoughtPet("buff");          break;
-
-                case ShopItem.ItemType.Weapon_Default:                              break;
-                case ShopItem.ItemType.Weapon_Shotgun:  BoughtWeapon("shotgun");    break;
-                case ShopItem.ItemType.Weapon_Sword:    BoughtWeapon("sword");      break;
-                case ShopItem.ItemType.Weapon_Bow:      BoughtWeapon("bow");        break;
-
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class PlayerTransaction : MonoBehaviour
+{
+    public void BoughtItem(Component sender, object data)
+    {
+        if (sender is ShopItemController && data is ShopItem.ItemType)
+        {
+            switch (data)
+            {
+                default:
+                case ShopItem.ItemType.Pet_None:                                    break;
+                case ShopItem.ItemType.Pet_Attack:      BoughtPet("attack");        break;
+                case ShopItem.ItemType.Pet_Heal:        BoughtPet("heal");          break;
+                case ShopItem.ItemType.Pet_Buff:        BoughtPet("buff");          break;
+
+                case ShopItem.ItemType.Weapon_Default:                              break;
+                case ShopItem.ItemType.Weapon_Shotgun:  BoughtWeapon("shotgun");    break;
+                case ShopItem.ItemType.Weapon_Sword:    BoughtWeapon("sword");      break;
+                case ShopItem.ItemType.Weapon_Bow:      BoughtWeapon("bow");        break;
+
                 case ShopItem.ItemType.Weapon_Default_Upgrade:  UpgradeWeapon("default"); break;
 				case ShopItem.ItemType.Weapon_Bow_Upgrade:      UpgradeWeapon("bow"); break;
                 case ShopItem.ItemType.Weapon_Shotgun_Upgrade:  UpgradeWeapon("shotgun"); break;
-				case ShopItem.ItemType.Weapon_Sword_Upgrade:    UpgradeWeapon("sword"); break;
+				case ShopItem.ItemType.Weapon_Sword_Upgrade:    UpgradeWeapon("sword"); break;
 			}
-		}
-    }
-
-    void BoughtPet(string TypeOfPet)
-    {
-        Debug.Log("Berhasil beli pet bertipe " + TypeOfPet);
-        // TODO : spawn pet
-    }
-
-    void BoughtWeapon(string TypeOfWeapon)
-    {
-        Debug.Log("Berhasil beli senjata bertipe " + TypeOfWeapon);
-        // TODO : Assign weapon ke player
-    }
-
+		}
+    }
+
+    void BoughtPet(string TypeOfPet)
+    {
+        Debug.Log("Berhasil beli pet bertipe " + TypeOfPet);
+        // TODO : spawn pet
+    }
+
+    void BoughtWeapon(string TypeOfWeapon)
+    {
+        Debug.Log("Berhasil beli senjata bertipe " + TypeOfWeapon);
+        // TODO : Assign weapon ke player
+    }
+
     void UpgradeWeapon(string weaponType)
     {
         switch(weaponType)
@@ -51,8 +51,11 @@ public class PlayerTransaction : MonoBehaviour
             case "shotgun":
                 PlayerShotgun.upgrade();
                 break;
+            case "sword":
+                PlayerSword.upgrade(); 
+                break;
         }
 
         Debug.Log($"Berhasil upgrade senjata {weaponType}");
-    }
-}
+    }
+}
diff --git a/Assets/Scripts/SaveLoad/SaveData.cs b/Assets/Scripts/SaveLoad/SaveData.cs
index e317cecdd04f729702a6550d98571feef66a5f3e..f59c296deeb3e87a51d5d60eb020e5f97471283b 100644
--- a/Assets/Scripts/SaveLoad/SaveData.cs
+++ b/Assets/Scripts/SaveLoad/SaveData.cs
@@ -1,11 +1,13 @@
-[System.Serializable]
-public class SaveData
-{
-    public int time;
-    public int money;
-    public string level;
-    public string date;
-
+[System.Serializable]
+public class SaveData
+{
+    public int time;
+    public int money;
+    public string level;
+    public string date;
+
     public int base_default_weapon_atk;
-	public int base_shotgun_atk;
-}
+	public int base_shotgun_atk;
+    public int base_bow_atk;
+    public int base_sword_atk;
+}
diff --git a/Assets/Scripts/SaveLoad/SaveLoadUI.cs b/Assets/Scripts/SaveLoad/SaveLoadUI.cs
index 76f221bc63b899cfd57255870e7a2c492e95e020..b67fb6bcff85810b0ee83e7fd17f1a9efd4146d9 100644
--- a/Assets/Scripts/SaveLoad/SaveLoadUI.cs
+++ b/Assets/Scripts/SaveLoad/SaveLoadUI.cs
@@ -1,108 +1,103 @@
-using System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-using UnityEngine.UI;
-using System.IO;
-
-public class SaveLoadUI : MonoBehaviour
-{
-    public int sequence;
-    public Text levelText;
-    public Text moneyText;
-    public Text timeText;
-    public Text dateText;
-    public string type;
-    private bool isSaved;
-
-    private void Awake()
-    {
-        LoadUI();
-    }
-
-    private void LoadUI()
-    {
-        string path = Application.persistentDataPath + "/savefile" + sequence.ToString() + ".json";
-        if (File.Exists(path))
-        {
-            isSaved = true;
-            string json = File.ReadAllText(path);
-            SaveData data = JsonUtility.FromJson<SaveData>(json);
-            LoadTime(data.time);
-            LoadMoney(data.money);
-            LoadLevel(data.level);
-            LoadDate(data.date);
-            LoadDefaultWeapon(data.base_default_weapon_atk);
-        }
-        else
-        {
-            isSaved = false;
-            timeText.text = "";
-            moneyText.text = "";
-            dateText.text = "";
-            levelText.text = "No Save File";
-        }
-    }
-
-    private void LoadDefaultWeapon(int base_damage) {
-        PlayerShooting.baseDamagePerShot = base_damage;
-    }
-
-    private void LoadTime(int time)
-    {
-        int minute = time / 60000;
-        int second = (time % 60000) / 1000;
-        if (second < 10)
-        {
-            if (minute < 10)
-            {
-                timeText.text = "Time: 0" + minute + ":0" + second;
-            }
-            else
-            {
-                timeText.text = "Time: " + minute + ":0" + second;
-            }
-        }
-        else
-        {
-            if (minute < 10)
-            {
-                timeText.text = "Time: 0" + minute + ":" + second;
-            }
-            else
-            {
-                timeText.text = "Time: " + minute + ":" + second;
-            }
-        }
-    }
-
-    private void LoadMoney(int money)
-    {
-        moneyText.text = "Money: " + money;
-    }
-
-    private void LoadLevel(string level)
-    {
-        levelText.text = level;
-    }
-    private void LoadDate(string date)
-    {
-        dateText.text = date;
-    }
-
-    public void onClick()
-    {
-        if (type.Equals("save"))
-        {
-            MainManager.Instance.Save(sequence);
-        }
-        else if (type.Equals("load"))
-        {
-            if (isSaved)
-            {
-                MainManager.Instance.Load(sequence);
-            }
-        }
-         
-    }
-
-}
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UI;
+using System.IO;
+
+public class SaveLoadUI : MonoBehaviour
+{
+    public int sequence;
+    public Text levelText;
+    public Text moneyText;
+    public Text timeText;
+    public Text dateText;
+    public string type;
+    private bool isSaved;
+
+    private void Awake()
+    {
+        LoadUI();
+    }
+
+    private void LoadUI()
+    {
+        string path = Application.persistentDataPath + "/savefile" + sequence.ToString() + ".json";
+        if (File.Exists(path))
+        {
+            isSaved = true;
+            string json = File.ReadAllText(path);
+            SaveData data = JsonUtility.FromJson<SaveData>(json);
+            LoadTime(data.time);
+            LoadMoney(data.money);
+            LoadLevel(data.level);
+            LoadDate(data.date);
+        }
+        else
+        {
+            isSaved = false;
+            timeText.text = "";
+            moneyText.text = "";
+            dateText.text = "";
+            levelText.text = "No Save File";
+        }
+    }
+
+    private void LoadTime(int time)
+    {
+        int minute = time / 60000;
+        int second = (time % 60000) / 1000;
+        if (second < 10)
+        {
+            if (minute < 10)
+            {
+                timeText.text = "Time: 0" + minute + ":0" + second;
+            }
+            else
+            {
+                timeText.text = "Time: " + minute + ":0" + second;
+            }
+        }
+        else
+        {
+            if (minute < 10)
+            {
+                timeText.text = "Time: 0" + minute + ":" + second;
+            }
+            else
+            {
+                timeText.text = "Time: " + minute + ":" + second;
+            }
+        }
+    }
+
+    private void LoadMoney(int money)
+    {
+        moneyText.text = "Money: " + money;
+    }
+
+    private void LoadLevel(string level)
+    {
+        levelText.text = level;
+    }
+    private void LoadDate(string date)
+    {
+        dateText.text = date;
+    }
+
+    public void onClick()
+    {
+        if (type.Equals("save"))
+        {
+            MainManager.Instance.Save(sequence);
+        }
+        else if (type.Equals("load"))
+        {
+            if (isSaved)
+            {
+                MainManager.Instance.Load(sequence);
+            }
+        }
+         
+    }
+
+}