diff --git a/Assets/Scripts/Player/PlayerShooting.cs b/Assets/Scripts/Player/PlayerShooting.cs
index d59be9d377b05b4f7455db9756a1f415a361c4ae..67b570267857d8cdc6bec560a661b21e11ec3b0f 100644
--- a/Assets/Scripts/Player/PlayerShooting.cs
+++ b/Assets/Scripts/Player/PlayerShooting.cs
@@ -45,6 +45,13 @@ public class PlayerShooting : MonoBehaviour
         gunLight = GetComponent<Light>();
     }
 
+    static public void upgrade()
+    {
+        int multiplier = damagePerShot / baseDamagePerShot;
+        baseDamagePerShot += 10;
+        damagePerShot = baseDamagePerShot * multiplier;
+    }
+
     public void buffDamage(float damageMultiplier)
     {
         damagePerShot = (int) (damageMultiplier * baseDamagePerShot);
diff --git a/Assets/Scripts/Player/PlayerShotgun.cs b/Assets/Scripts/Player/PlayerShotgun.cs
index 63d22c4fb108ff3644ae5a25e0c33f6eaed3eb02..76e8d6c7573a865868844bd8ad9c39347887cc0e 100644
--- a/Assets/Scripts/Player/PlayerShotgun.cs
+++ b/Assets/Scripts/Player/PlayerShotgun.cs
@@ -50,9 +50,16 @@ public class PlayerShotgun : MonoBehaviour
 
         shootRays = new Ray[5];
         shootHits = new RaycastHit[5];
-    }
-
-    public void buffDamage(float damageMultiplier)
+    }
+
+	static public void upgrade()
+	{
+		int multiplier = damagePerShot / baseDamagePerShot;
+        baseDamagePerShot += 10;
+		damagePerShot = baseDamagePerShot * multiplier;
+	}
+
+	public void buffDamage(float damageMultiplier)
     {
         damagePerShot = (int) (damageMultiplier * baseDamagePerShot);
     }
@@ -88,9 +95,16 @@ public class PlayerShotgun : MonoBehaviour
             }
         }
         
-    }
-
-    public void onShoot(Component sender, object data)
+    }
+
+	static public void addDamage(int damage)
+	{
+		int multiplier = damagePerShot / baseDamagePerShot;
+		baseDamagePerShot += damage;
+		damagePerShot = baseDamagePerShot * multiplier;
+	}
+
+	public void onShoot(Component sender, object data)
     {
         float time = (float)data;
         StartCoroutine(AutoShooting(time));
diff --git a/Assets/Scripts/Player/PlayerTransaction.cs b/Assets/Scripts/Player/PlayerTransaction.cs
index d87dc1e861ef53785e7bd450ce95fe8c12ba647c..08d200712478807a229db515a62e4aaec1c463f1 100644
--- a/Assets/Scripts/Player/PlayerTransaction.cs
+++ b/Assets/Scripts/Player/PlayerTransaction.cs
@@ -43,6 +43,16 @@ public class PlayerTransaction : MonoBehaviour
 
     void UpgradeWeapon(string weaponType)
     {
+        switch(weaponType)
+        {
+            case "default":
+                PlayerShooting.upgrade();
+                break;
+            case "shotgun":
+                PlayerShotgun.upgrade();
+                break;
+        }
+
         Debug.Log($"Berhasil upgrade senjata {weaponType}");
     }
 }