diff --git a/Assets/Scenes/Wave.unity b/Assets/Scenes/Wave.unity
index 0231fdb41e0d0ec6791b6b85abc5047969fbbbad..19b28e4f6f38eccef9bedd62cd5eba176883dffa 100644
--- a/Assets/Scenes/Wave.unity
+++ b/Assets/Scenes/Wave.unity
@@ -38,7 +38,7 @@ RenderSettings:
   m_ReflectionIntensity: 1
   m_CustomReflection: {fileID: 0}
   m_Sun: {fileID: 0}
-  m_IndirectSpecularColor: {r: 0.45061505, g: 0.498609, b: 0.56437516, a: 1}
+  m_IndirectSpecularColor: {r: 0.45061475, g: 0.4986083, b: 0.56437457, a: 1}
   m_UseRadianceAmbientProbe: 0
 --- !u!157 &3
 LightmapSettings:
@@ -151,7 +151,7 @@ Transform:
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_Children: []
   m_Father: {fileID: 0}
-  m_RootOrder: 14
+  m_RootOrder: 15
   m_LocalEulerAnglesHint: {x: 0, y: 130, z: 0}
 --- !u!1001 &33458243
 PrefabInstance:
@@ -168,6 +168,10 @@ PrefabInstance:
       propertyPath: m_Layer
       value: 10
       objectReference: {fileID: 0}
+    - target: {fileID: 100006, guid: f1d84cc28597f5641a3d9cbc4df7e306, type: 3}
+      propertyPath: m_TagString
+      value: Weapon
+      objectReference: {fileID: 0}
     - target: {fileID: 100078, guid: f1d84cc28597f5641a3d9cbc4df7e306, type: 3}
       propertyPath: m_Name
       value: Player
@@ -570,7 +574,7 @@ Transform:
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_Children: []
   m_Father: {fileID: 0}
-  m_RootOrder: 17
+  m_RootOrder: 18
   m_LocalEulerAnglesHint: {x: 0, y: 230, z: 0}
 --- !u!1 &38786124
 GameObject:
@@ -677,6 +681,7 @@ RectTransform:
   - {fileID: 1404279543}
   - {fileID: 1200747992}
   - {fileID: 1761945545}
+  - {fileID: 391241054}
   m_Father: {fileID: 0}
   m_RootOrder: 6
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -822,8 +827,92 @@ MonoBehaviour:
   - {fileID: 1065103271}
   - {fileID: 2045825619}
   - {fileID: 1610549460}
+  waveCount: 1
   enemyAlive: 5
   factory: {fileID: 180263585}
+--- !u!1 &391241053
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 391241054}
+  - component: {fileID: 391241056}
+  - component: {fileID: 391241055}
+  m_Layer: 5
+  m_Name: UpgradeStatus
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &391241054
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 391241053}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 38786128}
+  m_RootOrder: 12
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 1, y: 0}
+  m_AnchorMax: {x: 1, y: 0}
+  m_AnchoredPosition: {x: -113.6629, y: 36.03}
+  m_SizeDelta: {x: 227.3346, y: 70.7798}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &391241055
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 391241053}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 0
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_FontData:
+    m_Font: {fileID: 12800000, guid: 46238fb1ad7a7a84ba8954c1c860994c, type: 3}
+    m_FontSize: 18
+    m_FontStyle: 0
+    m_BestFit: 0
+    m_MinSize: 0
+    m_MaxSize: 44
+    m_Alignment: 0
+    m_AlignByGeometry: 0
+    m_RichText: 1
+    m_HorizontalOverflow: 0
+    m_VerticalOverflow: 0
+    m_LineSpacing: 1
+  m_Text: 'Upgrade Weapon:
+
+    Press "1" : Shoot Count
+
+    Press "2" : Shoot Speed'
+--- !u!222 &391241056
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 391241053}
+  m_CullTransparentMesh: 0
 --- !u!1 &428024866
 GameObject:
   m_ObjectHideFlags: 0
@@ -852,7 +941,7 @@ Transform:
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_Children: []
   m_Father: {fileID: 0}
-  m_RootOrder: 15
+  m_RootOrder: 16
   m_LocalEulerAnglesHint: {x: 0, y: 240, z: 0}
 --- !u!1 &581701014 stripped
 GameObject:
@@ -1019,104 +1108,6 @@ Light:
   m_UseViewFrustumForShadowCasterCull: 1
   m_ShadowRadius: 0
   m_ShadowAngle: 0
---- !u!120 &581701018
-LineRenderer:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 581701014}
-  m_Enabled: 0
-  m_CastShadows: 1
-  m_ReceiveShadows: 1
-  m_DynamicOccludee: 1
-  m_MotionVectors: 0
-  m_LightProbeUsage: 0
-  m_ReflectionProbeUsage: 0
-  m_RayTracingMode: 0
-  m_RayTraceProcedural: 0
-  m_RenderingLayerMask: 1
-  m_RendererPriority: 0
-  m_Materials:
-  - {fileID: 2100000, guid: 007cd3dce0e6539409edcc484011c877, type: 2}
-  m_StaticBatchInfo:
-    firstSubMesh: 0
-    subMeshCount: 0
-  m_StaticBatchRoot: {fileID: 0}
-  m_ProbeAnchor: {fileID: 0}
-  m_LightProbeVolumeOverride: {fileID: 0}
-  m_ScaleInLightmap: 1
-  m_ReceiveGI: 1
-  m_PreserveUVs: 0
-  m_IgnoreNormalsForChartDetection: 0
-  m_ImportantGI: 0
-  m_StitchLightmapSeams: 0
-  m_SelectedEditorRenderState: 3
-  m_MinimumChartSize: 4
-  m_AutoUVMaxDistance: 0.5
-  m_AutoUVMaxAngle: 89
-  m_LightmapParameters: {fileID: 0}
-  m_SortingLayerID: 0
-  m_SortingLayer: 0
-  m_SortingOrder: 0
-  m_Positions:
-  - {x: 0, y: 0, z: 0}
-  - {x: 0, y: 0, z: 1}
-  m_Parameters:
-    serializedVersion: 3
-    widthMultiplier: 1
-    widthCurve:
-      serializedVersion: 2
-      m_Curve:
-      - serializedVersion: 3
-        time: 0
-        value: 0.05
-        inSlope: 0
-        outSlope: 0
-        tangentMode: 0
-        weightedMode: 0
-        inWeight: 0.33333334
-        outWeight: 0.33333334
-      m_PreInfinity: 2
-      m_PostInfinity: 2
-      m_RotationOrder: 4
-    colorGradient:
-      serializedVersion: 2
-      key0: {r: 1, g: 1, b: 1, a: 1}
-      key1: {r: 1, g: 1, b: 1, a: 1}
-      key2: {r: 0, g: 0, b: 0, a: 0}
-      key3: {r: 0, g: 0, b: 0, a: 0}
-      key4: {r: 0, g: 0, b: 0, a: 0}
-      key5: {r: 0, g: 0, b: 0, a: 0}
-      key6: {r: 0, g: 0, b: 0, a: 0}
-      key7: {r: 0, g: 0, b: 0, a: 0}
-      ctime0: 0
-      ctime1: 65535
-      ctime2: 0
-      ctime3: 0
-      ctime4: 0
-      ctime5: 0
-      ctime6: 0
-      ctime7: 0
-      atime0: 0
-      atime1: 65535
-      atime2: 0
-      atime3: 0
-      atime4: 0
-      atime5: 0
-      atime6: 0
-      atime7: 0
-      m_Mode: 0
-      m_NumColorKeys: 2
-      m_NumAlphaKeys: 2
-    numCornerVertices: 0
-    numCapVertices: 0
-    alignment: 0
-    textureMode: 0
-    shadowBias: 0.5
-    generateLightingData: 0
-  m_UseWorldSpace: 1
-  m_Loop: 0
 --- !u!198 &581701019
 ParticleSystem:
   m_ObjectHideFlags: 0
@@ -5983,6 +5974,10 @@ MonoBehaviour:
   damagePerShot: 20
   timeBetweenBullets: 0.15
   range: 100
+  linePrefab: {fileID: 756113303200918365, guid: a9c5ba8bf0e584043bde610bffb1985c,
+    type: 3}
+  maxUpgrade: 3
+  upgradeCount: 0
 --- !u!1 &732164003
 GameObject:
   m_ObjectHideFlags: 0
@@ -6433,7 +6428,7 @@ Transform:
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_Children: []
   m_Father: {fileID: 0}
-  m_RootOrder: 18
+  m_RootOrder: 19
   m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0}
 --- !u!1 &1109176447
 GameObject:
@@ -6510,6 +6505,50 @@ CanvasRenderer:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 1109176447}
   m_CullTransparentMesh: 0
+--- !u!1 &1138642145
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1138642147}
+  - component: {fileID: 1138642146}
+  m_Layer: 0
+  m_Name: WeaponManager
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!114 &1138642146
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1138642145}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 618d1e3448c72e14c925af365c4d1989, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  upgradeStatus: {fileID: 391241055}
+--- !u!4 &1138642147
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1138642145}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 321.55707, y: 255.97177, z: -8.101}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_RootOrder: 13
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!1 &1190881233
 GameObject:
   m_ObjectHideFlags: 0
@@ -6538,7 +6577,7 @@ Transform:
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_Children: []
   m_Father: {fileID: 0}
-  m_RootOrder: 16
+  m_RootOrder: 17
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!1 &1200747991
 GameObject:
@@ -6916,7 +6955,7 @@ Transform:
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_Children: []
   m_Father: {fileID: 0}
-  m_RootOrder: 21
+  m_RootOrder: 22
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!1 &1401845282
 GameObject:
@@ -7104,7 +7143,7 @@ Transform:
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_Children: []
   m_Father: {fileID: 0}
-  m_RootOrder: 23
+  m_RootOrder: 24
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!1 &1500595053
 GameObject:
@@ -7313,7 +7352,7 @@ Transform:
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_Children: []
   m_Father: {fileID: 0}
-  m_RootOrder: 20
+  m_RootOrder: 21
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!1001 &1687477066
 PrefabInstance:
@@ -7702,7 +7741,7 @@ Transform:
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_Children: []
   m_Father: {fileID: 0}
-  m_RootOrder: 13
+  m_RootOrder: 14
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!1 &1851137271
 GameObject:
@@ -7780,7 +7819,7 @@ Transform:
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_Children: []
   m_Father: {fileID: 0}
-  m_RootOrder: 22
+  m_RootOrder: 23
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!1 &2045825618
 GameObject:
@@ -7810,7 +7849,7 @@ Transform:
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_Children: []
   m_Father: {fileID: 0}
-  m_RootOrder: 19
+  m_RootOrder: 20
   m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0}
 --- !u!1 &2077147800
 GameObject:
diff --git a/Assets/Scenes/Zen.unity b/Assets/Scenes/Zen.unity
index 33e353fca07d3bd07a3acfb08d3fb5eda1a08047..d35e08b2303ad9c8fc5fb214e18a412b62013979 100644
--- a/Assets/Scenes/Zen.unity
+++ b/Assets/Scenes/Zen.unity
@@ -38,7 +38,7 @@ RenderSettings:
   m_ReflectionIntensity: 1
   m_CustomReflection: {fileID: 0}
   m_Sun: {fileID: 0}
-  m_IndirectSpecularColor: {r: 0.45061505, g: 0.498609, b: 0.56437516, a: 1}
+  m_IndirectSpecularColor: {r: 0.45061475, g: 0.4986083, b: 0.56437457, a: 1}
   m_UseRadianceAmbientProbe: 0
 --- !u!157 &3
 LightmapSettings:
@@ -151,7 +151,7 @@ Transform:
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_Children: []
   m_Father: {fileID: 0}
-  m_RootOrder: 14
+  m_RootOrder: 16
   m_LocalEulerAnglesHint: {x: 0, y: 130, z: 0}
 --- !u!1001 &33458243
 PrefabInstance:
@@ -168,6 +168,10 @@ PrefabInstance:
       propertyPath: m_Layer
       value: 10
       objectReference: {fileID: 0}
+    - target: {fileID: 100006, guid: f1d84cc28597f5641a3d9cbc4df7e306, type: 3}
+      propertyPath: m_TagString
+      value: Weapon
+      objectReference: {fileID: 0}
     - target: {fileID: 100078, guid: f1d84cc28597f5641a3d9cbc4df7e306, type: 3}
       propertyPath: m_Name
       value: Player
@@ -570,7 +574,7 @@ Transform:
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_Children: []
   m_Father: {fileID: 0}
-  m_RootOrder: 17
+  m_RootOrder: 19
   m_LocalEulerAnglesHint: {x: 0, y: 230, z: 0}
 --- !u!1 &38786124
 GameObject:
@@ -676,6 +680,7 @@ RectTransform:
   - {fileID: 1404279543}
   - {fileID: 1200747992}
   - {fileID: 1761945545}
+  - {fileID: 1622693263}
   m_Father: {fileID: 0}
   m_RootOrder: 6
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -729,7 +734,6 @@ GameObject:
   - component: {fileID: 44980970}
   - component: {fileID: 44980973}
   - component: {fileID: 44980972}
-  - component: {fileID: 44980971}
   m_Layer: 5
   m_Name: Timer
   m_TagString: Untagged
@@ -756,18 +760,6 @@ RectTransform:
   m_AnchoredPosition: {x: 0, y: -66.1}
   m_SizeDelta: {x: 315.6931, y: 89.9303}
   m_Pivot: {x: 0.5, y: 0.5}
---- !u!114 &44980971
-MonoBehaviour:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 44980969}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 73e55c192c1d7544ba5eefe9c1427e0d, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
 --- !u!114 &44980972
 MonoBehaviour:
   m_ObjectHideFlags: 0
@@ -943,7 +935,7 @@ Transform:
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_Children: []
   m_Father: {fileID: 0}
-  m_RootOrder: 15
+  m_RootOrder: 17
   m_LocalEulerAnglesHint: {x: 0, y: 240, z: 0}
 --- !u!1 &581701014 stripped
 GameObject:
@@ -1110,104 +1102,6 @@ Light:
   m_UseViewFrustumForShadowCasterCull: 1
   m_ShadowRadius: 0
   m_ShadowAngle: 0
---- !u!120 &581701018
-LineRenderer:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 581701014}
-  m_Enabled: 0
-  m_CastShadows: 1
-  m_ReceiveShadows: 1
-  m_DynamicOccludee: 1
-  m_MotionVectors: 0
-  m_LightProbeUsage: 0
-  m_ReflectionProbeUsage: 0
-  m_RayTracingMode: 0
-  m_RayTraceProcedural: 0
-  m_RenderingLayerMask: 1
-  m_RendererPriority: 0
-  m_Materials:
-  - {fileID: 2100000, guid: 007cd3dce0e6539409edcc484011c877, type: 2}
-  m_StaticBatchInfo:
-    firstSubMesh: 0
-    subMeshCount: 0
-  m_StaticBatchRoot: {fileID: 0}
-  m_ProbeAnchor: {fileID: 0}
-  m_LightProbeVolumeOverride: {fileID: 0}
-  m_ScaleInLightmap: 1
-  m_ReceiveGI: 1
-  m_PreserveUVs: 0
-  m_IgnoreNormalsForChartDetection: 0
-  m_ImportantGI: 0
-  m_StitchLightmapSeams: 0
-  m_SelectedEditorRenderState: 3
-  m_MinimumChartSize: 4
-  m_AutoUVMaxDistance: 0.5
-  m_AutoUVMaxAngle: 89
-  m_LightmapParameters: {fileID: 0}
-  m_SortingLayerID: 0
-  m_SortingLayer: 0
-  m_SortingOrder: 0
-  m_Positions:
-  - {x: 0, y: 0, z: 0}
-  - {x: 0, y: 0, z: 1}
-  m_Parameters:
-    serializedVersion: 3
-    widthMultiplier: 1
-    widthCurve:
-      serializedVersion: 2
-      m_Curve:
-      - serializedVersion: 3
-        time: 0
-        value: 0.05
-        inSlope: 0
-        outSlope: 0
-        tangentMode: 0
-        weightedMode: 0
-        inWeight: 0.33333334
-        outWeight: 0.33333334
-      m_PreInfinity: 2
-      m_PostInfinity: 2
-      m_RotationOrder: 4
-    colorGradient:
-      serializedVersion: 2
-      key0: {r: 1, g: 1, b: 1, a: 1}
-      key1: {r: 1, g: 1, b: 1, a: 1}
-      key2: {r: 0, g: 0, b: 0, a: 0}
-      key3: {r: 0, g: 0, b: 0, a: 0}
-      key4: {r: 0, g: 0, b: 0, a: 0}
-      key5: {r: 0, g: 0, b: 0, a: 0}
-      key6: {r: 0, g: 0, b: 0, a: 0}
-      key7: {r: 0, g: 0, b: 0, a: 0}
-      ctime0: 0
-      ctime1: 65535
-      ctime2: 0
-      ctime3: 0
-      ctime4: 0
-      ctime5: 0
-      ctime6: 0
-      ctime7: 0
-      atime0: 0
-      atime1: 65535
-      atime2: 0
-      atime3: 0
-      atime4: 0
-      atime5: 0
-      atime6: 0
-      atime7: 0
-      m_Mode: 0
-      m_NumColorKeys: 2
-      m_NumAlphaKeys: 2
-    numCornerVertices: 0
-    numCapVertices: 0
-    alignment: 0
-    textureMode: 0
-    shadowBias: 0.5
-    generateLightingData: 0
-  m_UseWorldSpace: 1
-  m_Loop: 0
 --- !u!198 &581701019
 ParticleSystem:
   m_ObjectHideFlags: 0
@@ -6074,6 +5968,10 @@ MonoBehaviour:
   damagePerShot: 20
   timeBetweenBullets: 0.15
   range: 100
+  linePrefab: {fileID: 756113303200918365, guid: a9c5ba8bf0e584043bde610bffb1985c,
+    type: 3}
+  maxUpgrade: 3
+  upgradeCount: 0
 --- !u!1 &732164003
 GameObject:
   m_ObjectHideFlags: 0
@@ -6169,6 +6067,50 @@ Animator:
   m_HasTransformHierarchy: 1
   m_AllowConstantClipSamplingOptimization: 1
   m_KeepAnimatorControllerStateOnDisable: 0
+--- !u!1 &739344420
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 739344422}
+  - component: {fileID: 739344421}
+  m_Layer: 0
+  m_Name: Timer
+  m_TagString: Timer
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!114 &739344421
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 739344420}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 73e55c192c1d7544ba5eefe9c1427e0d, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  timeCounter: {fileID: 44980972}
+--- !u!4 &739344422
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 739344420}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 321.55707, y: 255.97177, z: -8.101}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_RootOrder: 13
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!1 &839222782
 GameObject:
   m_ObjectHideFlags: 0
@@ -6567,7 +6509,7 @@ Transform:
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_Children: []
   m_Father: {fileID: 0}
-  m_RootOrder: 18
+  m_RootOrder: 20
   m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0}
 --- !u!1 &1109176447
 GameObject:
@@ -6672,7 +6614,7 @@ Transform:
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_Children: []
   m_Father: {fileID: 0}
-  m_RootOrder: 16
+  m_RootOrder: 18
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!1 &1200747991
 GameObject:
@@ -6958,7 +6900,7 @@ Transform:
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_Children: []
   m_Father: {fileID: 0}
-  m_RootOrder: 21
+  m_RootOrder: 23
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!1 &1401845282
 GameObject:
@@ -7118,6 +7060,50 @@ CanvasRenderer:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 1404279542}
   m_CullTransparentMesh: 0
+--- !u!1 &1406439024
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1406439025}
+  - component: {fileID: 1406439026}
+  m_Layer: 0
+  m_Name: WeaponManager
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &1406439025
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1406439024}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 321.55707, y: 255.97177, z: -8.101}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_RootOrder: 14
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &1406439026
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1406439024}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 3681b82dc48817a4ba78e722071bcfd4, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  upgradeStatus: {fileID: 1622693261}
 --- !u!1 &1446626173
 GameObject:
   m_ObjectHideFlags: 0
@@ -7146,7 +7132,7 @@ Transform:
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_Children: []
   m_Father: {fileID: 0}
-  m_RootOrder: 23
+  m_RootOrder: 25
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!1 &1500595053
 GameObject:
@@ -7312,8 +7298,91 @@ Transform:
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_Children: []
   m_Father: {fileID: 0}
-  m_RootOrder: 20
+  m_RootOrder: 22
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1622693260
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1622693263}
+  - component: {fileID: 1622693262}
+  - component: {fileID: 1622693261}
+  m_Layer: 5
+  m_Name: UpgradeStatus
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!114 &1622693261
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1622693260}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 0
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_FontData:
+    m_Font: {fileID: 12800000, guid: 46238fb1ad7a7a84ba8954c1c860994c, type: 3}
+    m_FontSize: 18
+    m_FontStyle: 0
+    m_BestFit: 0
+    m_MinSize: 0
+    m_MaxSize: 44
+    m_Alignment: 0
+    m_AlignByGeometry: 0
+    m_RichText: 1
+    m_HorizontalOverflow: 0
+    m_VerticalOverflow: 0
+    m_LineSpacing: 1
+  m_Text: 'Upgrade Weapon:
+
+    Press "1" : Shoot Count
+
+    Press "2" : Shoot Speed'
+--- !u!222 &1622693262
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1622693260}
+  m_CullTransparentMesh: 0
+--- !u!224 &1622693263
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1622693260}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 38786128}
+  m_RootOrder: 11
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 1, y: 0}
+  m_AnchorMax: {x: 1, y: 0}
+  m_AnchoredPosition: {x: -113.662964, y: 36.03001}
+  m_SizeDelta: {x: 227.3346, y: 70.7798}
+  m_Pivot: {x: 0.5, y: 0.5}
 --- !u!1001 &1687477066
 PrefabInstance:
   m_ObjectHideFlags: 0
@@ -7609,7 +7678,7 @@ Transform:
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_Children: []
   m_Father: {fileID: 0}
-  m_RootOrder: 13
+  m_RootOrder: 15
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!1 &1851137271
 GameObject:
@@ -7687,7 +7756,7 @@ Transform:
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_Children: []
   m_Father: {fileID: 0}
-  m_RootOrder: 22
+  m_RootOrder: 24
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!1 &2045825618
 GameObject:
@@ -7717,7 +7786,7 @@ Transform:
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_Children: []
   m_Father: {fileID: 0}
-  m_RootOrder: 19
+  m_RootOrder: 21
   m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0}
 --- !u!1 &2077147800
 GameObject:
diff --git a/Assets/Scripts/Managers/TimerController.cs b/Assets/Scripts/Managers/TimerController.cs
index 0e9d02d197369fdb5b23033091c0aa6a71dd5099..908abeecc6f978403211481a1be756cff4ec9b60 100644
--- a/Assets/Scripts/Managers/TimerController.cs
+++ b/Assets/Scripts/Managers/TimerController.cs
@@ -8,7 +8,7 @@ public class TimerController : MonoBehaviour
 {
     public static TimerController instance;
 
-    Text timeCounter;
+    public Text timeCounter;
 
     private TimeSpan timePlaying;
     private bool timerGoing;
@@ -17,7 +17,6 @@ public class TimerController : MonoBehaviour
 
     private void Awake()
     {
-        timeCounter = GetComponent<Text>();
         instance = this;
     }
 
diff --git a/Assets/Scripts/Managers/WeaponManagerWave.cs b/Assets/Scripts/Managers/WeaponManagerWave.cs
new file mode 100644
index 0000000000000000000000000000000000000000..6f83ceb3d439f113d38ba67562c44c980bcfe83a
--- /dev/null
+++ b/Assets/Scripts/Managers/WeaponManagerWave.cs
@@ -0,0 +1,53 @@
+using UnityEngine;
+using UnityEngine.UI;
+using System.Collections;
+using UnityEngine.SceneManagement;
+
+public class WeaponManagerWave : MonoBehaviour
+{
+    public Text upgradeStatus;
+    public bool enabledUpgradeWeapon = false;
+
+    GameObject enemyManager;
+    EnemySpawnerWave spawner;
+
+    GameObject weapon;
+    PlayerShooting playerShooting;
+
+    void Awake()
+    {
+        upgradeStatus.enabled = false;
+
+        enemyManager = GameObject.FindGameObjectWithTag("EnemyManager");
+        spawner = enemyManager.GetComponent<EnemySpawnerWave>();
+
+        weapon = GameObject.FindGameObjectWithTag("Weapon");
+        playerShooting = weapon.GetComponent<PlayerShooting>();
+    }
+
+    void Update()
+    {
+        if (playerShooting.upgradeCount >= playerShooting.maxUpgrade)
+        {
+            return;
+        }
+
+        if (spawner.enabledUpgradeWeapon)
+        {
+            upgradeStatus.enabled = true;
+            if (Input.GetKeyDown(KeyCode.Alpha1))
+            {
+                playerShooting.UpgradeWeapon(0);
+                upgradeStatus.enabled = false;
+                spawner.enabledUpgradeWeapon = false;
+            }
+            else if (Input.GetKeyDown(KeyCode.Alpha2))
+            {
+                playerShooting.UpgradeWeapon(1);
+                upgradeStatus.enabled = false;
+                spawner.enabledUpgradeWeapon = false;
+            }
+        }
+
+    }
+}
\ No newline at end of file
diff --git a/Assets/Scripts/Managers/WeaponManagerWave.cs.meta b/Assets/Scripts/Managers/WeaponManagerWave.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..8cb515c01b0ced1211e5bd9d6e327874c65d1ac7
--- /dev/null
+++ b/Assets/Scripts/Managers/WeaponManagerWave.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 618d1e3448c72e14c925af365c4d1989
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Scripts/Managers/WeaponManagerZen.cs b/Assets/Scripts/Managers/WeaponManagerZen.cs
new file mode 100644
index 0000000000000000000000000000000000000000..3ee0a477f75f73899c00eb7a4eb26998ea868df7
--- /dev/null
+++ b/Assets/Scripts/Managers/WeaponManagerZen.cs
@@ -0,0 +1,59 @@
+
+using UnityEngine;
+using UnityEngine.UI;
+using System.Collections;
+using UnityEngine.SceneManagement;
+
+public class WeaponManagerZen : MonoBehaviour
+{
+    public Text upgradeStatus;
+    private bool enabledUpgrade = false;
+
+    GameObject timer;
+    TimerController timerController;
+
+    GameObject weapon;
+    PlayerShooting playerShooting;
+
+    void Awake()
+    {
+        upgradeStatus.enabled = false;
+
+        weapon = GameObject.FindGameObjectWithTag("Weapon");
+        playerShooting = weapon.GetComponent<PlayerShooting>();
+    }
+
+    void Update()
+    {
+        if (playerShooting.upgradeCount >= playerShooting.maxUpgrade)
+        {
+            return;
+        }
+        CheckUpgrade();
+
+        if (enabledUpgrade)
+        {
+            upgradeStatus.enabled = true;
+            if (Input.GetKeyDown(KeyCode.Alpha1))
+            {
+                playerShooting.UpgradeWeapon(0);
+                upgradeStatus.enabled = false;
+                enabledUpgrade = false;
+            }
+            else if (Input.GetKeyDown(KeyCode.Alpha2))
+            {
+                playerShooting.UpgradeWeapon(1);
+                upgradeStatus.enabled = false;
+                enabledUpgrade = false;
+            }
+        }
+    }
+
+    void CheckUpgrade()
+    {
+        if ((int)(TimerController.elapsedTime / 60) == 1)
+        {
+            enabledUpgrade = true;
+        }
+    }
+}
diff --git a/Assets/Scripts/Managers/WeaponManagerZen.cs.meta b/Assets/Scripts/Managers/WeaponManagerZen.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..8eb9f41f6281b9dd794ef2582057bac9871b7756
--- /dev/null
+++ b/Assets/Scripts/Managers/WeaponManagerZen.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 3681b82dc48817a4ba78e722071bcfd4
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Scripts/Player/PlayerShooting.cs b/Assets/Scripts/Player/PlayerShooting.cs
index 96538465a14a3045a50e87d43ab28070afaffb38..f8ca2e4ca05e92bc0436f8899a4f3f1e7b699265 100644
--- a/Assets/Scripts/Player/PlayerShooting.cs
+++ b/Assets/Scripts/Player/PlayerShooting.cs
@@ -7,7 +7,9 @@ public class PlayerShooting : MonoBehaviour
     public int damagePerShot = 20;
     public float timeBetweenBullets = 0.15f;
     public float range = 100f;
-    public LineRenderer linePrefab;
+    public LineRenderer linePrefab;
+    public int maxUpgrade = 3;
+    public int upgradeCount = 0;
 
     float timer;
     Ray shootRay = new Ray();
@@ -16,10 +18,7 @@ public class PlayerShooting : MonoBehaviour
     ParticleSystem gunParticles;
     List<LineRenderer> gunLines = new List<LineRenderer>();
     List<int> angles = new List<int>();
-    int shootCount = 1;
     int angle = 0;
-    const int maxUpgrade = 3;
-    int upgradeCount = 0;
     AudioSource gunAudio;
     Light gunLight;
     float effectsDisplayTime = 0.2f;
@@ -37,10 +36,6 @@ public class PlayerShooting : MonoBehaviour
         angles.Add(angle);
 
         player = GameObject.FindWithTag("Player");
-        UpgradeWeapon(0);
-        UpgradeWeapon(0);
-        UpgradeWeapon(1);
-        UpgradeWeapon(0);
     }
 
     void Update()
@@ -69,11 +64,6 @@ public class PlayerShooting : MonoBehaviour
 
     public void UpgradeWeapon(int option)
     {
-        if (upgradeCount >= maxUpgrade)
-        {
-            return;
-        }
-
         upgradeCount++;
         if (option == 0)
         {
diff --git a/Assets/Scripts/Spawner/EnemySpawnerWave.cs b/Assets/Scripts/Spawner/EnemySpawnerWave.cs
index 0c6367dee2b3d2d36f837f24f93f57103035405d..2912f261b3d0158e8b003628aac0805a32b9c473 100644
--- a/Assets/Scripts/Spawner/EnemySpawnerWave.cs
+++ b/Assets/Scripts/Spawner/EnemySpawnerWave.cs
@@ -6,8 +6,10 @@ public class EnemySpawnerWave : MonoBehaviour
 {
     public PlayerHealth playerHealth;
     public Transform[] spawnPoints;
+    public bool enabledUpgradeWeapon = false;
 
-    private int waveCount = 0;
+    public int maxWave = 12;
+    public int waveCount = 1;
     private int zombunnyCount = 5;
     private int zombearCount = 0;
     private int hellephantCount = 0;
@@ -27,7 +29,7 @@ public class EnemySpawnerWave : MonoBehaviour
 
     void Update()
     {
-        if (enemyAlive == 0)
+        if (enemyAlive == 0 && waveCount <= maxWave)
         {
             NextWave();
         }
@@ -58,11 +60,15 @@ public class EnemySpawnerWave : MonoBehaviour
             hellephantCount++;
             bomberCount += 2;
         }
-        else if (waveCount % 5 == 0)
+        if (waveCount % 6 == 0)
         {
             shooterCount++;
             devilCount++;
         }
+        if (waveCount % 3 == 1 && waveCount != 1)
+        {
+            enabledUpgradeWeapon = true;
+        }
 
         Spawn();
     }
diff --git a/ProjectSettings/TagManager.asset b/ProjectSettings/TagManager.asset
index 86fdddf6f872ca62331f42b71737a9a03e2d11a2..a5a62aee2e96c5b822eb837f750be57be3a872f3 100644
--- a/ProjectSettings/TagManager.asset
+++ b/ProjectSettings/TagManager.asset
@@ -7,6 +7,8 @@ TagManager:
   - EnemyManager
   - Enemy
   - OrbFactory
+  - Weapon
+  - Timer
   layers:
   - Default
   - TransparentFX
diff --git a/UserSettings/EditorUserSettings.asset b/UserSettings/EditorUserSettings.asset
index d0298544476e3001b20e7395cf1d4a694939ce2f..ac2fe6246af5ef808a34dbe026383d6b709ecba7 100644
--- a/UserSettings/EditorUserSettings.asset
+++ b/UserSettings/EditorUserSettings.asset
@@ -18,13 +18,13 @@ EditorUserSettings:
       value: 22424703114646680e0b0227036c6c111b07142f1f2b233e2867083debf42d
       flags: 0
     RecentlyUsedScenePath-4:
-      value: 22424703114646680e0b0227036c72111f19352f223d68252320092a
+      value: 22424703114646680e0b0227036c68110012563f22213229
       flags: 0
     RecentlyUsedScenePath-5:
       value: 22424703114646680e0b0227036c651518590d24253c3f
       flags: 0
     RecentlyUsedScenePath-6:
-      value: 22424703114646680e0b0227036c68110012563f22213229
+      value: 22424703114646680e0b0227036c72111f19352f223d68252320092a
       flags: 0
     vcSharedLogLevel:
       value: 0d5e400f0650