diff --git a/Assets/Scenes/Main.unity b/Assets/Scenes/Main.unity
index 3022fc35b17267f70c8ac57652fa885c039346a9..00c182f4729f498a09e03b2b18334b708b08253f 100644
--- a/Assets/Scenes/Main.unity
+++ b/Assets/Scenes/Main.unity
@@ -123,6 +123,188 @@ NavMeshSettings:
     debug:
       m_Flags: 0
   m_NavMeshData: {fileID: 0}
+--- !u!1 &7602485
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 7602486}
+  - component: {fileID: 7602489}
+  - component: {fileID: 7602488}
+  - component: {fileID: 7602487}
+  m_Layer: 5
+  m_Name: TextInput
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &7602486
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7602485}
+  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_ConstrainProportionsScale: 0
+  m_Children:
+  - {fileID: 932231929}
+  - {fileID: 1752927289}
+  m_Father: {fileID: 1139190134}
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 160, y: 30}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &7602487
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7602485}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Navigation:
+    m_Mode: 3
+    m_WrapAround: 0
+    m_SelectOnUp: {fileID: 0}
+    m_SelectOnDown: {fileID: 0}
+    m_SelectOnLeft: {fileID: 0}
+    m_SelectOnRight: {fileID: 0}
+  m_Transition: 1
+  m_Colors:
+    m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+    m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+    m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+    m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+    m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+    m_ColorMultiplier: 1
+    m_FadeDuration: 0.1
+  m_SpriteState:
+    m_HighlightedSprite: {fileID: 0}
+    m_PressedSprite: {fileID: 0}
+    m_SelectedSprite: {fileID: 0}
+    m_DisabledSprite: {fileID: 0}
+  m_AnimationTriggers:
+    m_NormalTrigger: Normal
+    m_HighlightedTrigger: Highlighted
+    m_PressedTrigger: Pressed
+    m_SelectedTrigger: Selected
+    m_DisabledTrigger: Disabled
+  m_Interactable: 1
+  m_TargetGraphic: {fileID: 7602488}
+  m_TextComponent: {fileID: 1752927290}
+  m_Placeholder: {fileID: 932231930}
+  m_ContentType: 0
+  m_InputType: 0
+  m_AsteriskChar: 42
+  m_KeyboardType: 0
+  m_LineType: 0
+  m_HideMobileInput: 0
+  m_CharacterValidation: 0
+  m_CharacterLimit: 0
+  m_OnSubmit:
+    m_PersistentCalls:
+      m_Calls:
+      - m_Target: {fileID: 125324178}
+        m_TargetAssemblyTypeName: CheatManager, Assembly-CSharp
+        m_MethodName: ReadStringInput
+        m_Mode: 0
+        m_Arguments:
+          m_ObjectArgument: {fileID: 0}
+          m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+          m_IntArgument: 0
+          m_FloatArgument: 0
+          m_StringArgument: 
+          m_BoolArgument: 0
+        m_CallState: 2
+  m_OnDidEndEdit:
+    m_PersistentCalls:
+      m_Calls:
+      - m_Target: {fileID: 125324178}
+        m_TargetAssemblyTypeName: CheatManager, Assembly-CSharp
+        m_MethodName: ReadStringInput
+        m_Mode: 0
+        m_Arguments:
+          m_ObjectArgument: {fileID: 0}
+          m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+          m_IntArgument: 0
+          m_FloatArgument: 0
+          m_StringArgument: 
+          m_BoolArgument: 0
+        m_CallState: 2
+  m_OnValueChanged:
+    m_PersistentCalls:
+      m_Calls:
+      - m_Target: {fileID: 125324178}
+        m_TargetAssemblyTypeName: CheatManager, Assembly-CSharp
+        m_MethodName: ReadStringInput
+        m_Mode: 0
+        m_Arguments:
+          m_ObjectArgument: {fileID: 0}
+          m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+          m_IntArgument: 0
+          m_FloatArgument: 0
+          m_StringArgument: 
+          m_BoolArgument: 0
+        m_CallState: 0
+  m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
+  m_CustomCaretColor: 0
+  m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412}
+  m_Text: 
+  m_CaretBlinkRate: 0.85
+  m_CaretWidth: 1
+  m_ReadOnly: 0
+  m_ShouldActivateOnSelect: 1
+--- !u!114 &7602488
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7602485}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0}
+  m_Type: 1
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+--- !u!222 &7602489
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7602485}
+  m_CullTransparentMesh: 1
 --- !u!1 &28357257
 GameObject:
   m_ObjectHideFlags: 0
@@ -383,6 +565,51 @@ CanvasRenderer:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 93410271}
   m_CullTransparentMesh: 1
+--- !u!1 &125324176
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 125324177}
+  - component: {fileID: 125324178}
+  m_Layer: 0
+  m_Name: CheatManager
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &125324177
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 125324176}
+  serializedVersion: 2
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 4.426556, y: 4.562791, z: -14.934216}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 1796129603}
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &125324178
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 125324176}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 4ff677c124d78674988964b59f11fec4, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  inputField: {fileID: 7602487}
 --- !u!1 &177326011
 GameObject:
   m_ObjectHideFlags: 0
@@ -1877,6 +2104,82 @@ CanvasRenderer:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 692873477}
   m_CullTransparentMesh: 1
+--- !u!1 &735558819
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 735558820}
+  - component: {fileID: 735558822}
+  - component: {fileID: 735558821}
+  m_Layer: 5
+  m_Name: MessagePanel
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &735558820
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 735558819}
+  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_ConstrainProportionsScale: 0
+  m_Children:
+  - {fileID: 1201817372}
+  m_Father: {fileID: 1139190134}
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 1, y: 1}
+  m_AnchoredPosition: {x: 0, y: 12.5}
+  m_SizeDelta: {x: 0, y: -375}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &735558821
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 735558819}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 0}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}
+  m_Type: 1
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+--- !u!222 &735558822
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 735558819}
+  m_CullTransparentMesh: 1
 --- !u!1 &784101618
 GameObject:
   m_ObjectHideFlags: 0
@@ -2288,6 +2591,85 @@ CanvasRenderer:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 909128894}
   m_CullTransparentMesh: 1
+--- !u!1 &932231928
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 932231929}
+  - component: {fileID: 932231931}
+  - component: {fileID: 932231930}
+  m_Layer: 5
+  m_Name: Placeholder
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &932231929
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 932231928}
+  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_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 7602486}
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 1, y: 1}
+  m_AnchoredPosition: {x: 0, y: -0.5}
+  m_SizeDelta: {x: -20, y: -13}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &932231930
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 932231928}
+  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: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_FontData:
+    m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+    m_FontSize: 14
+    m_FontStyle: 2
+    m_BestFit: 0
+    m_MinSize: 10
+    m_MaxSize: 40
+    m_Alignment: 0
+    m_AlignByGeometry: 0
+    m_RichText: 1
+    m_HorizontalOverflow: 0
+    m_VerticalOverflow: 0
+    m_LineSpacing: 1
+  m_Text: Enter text...
+--- !u!222 &932231931
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 932231928}
+  m_CullTransparentMesh: 1
 --- !u!1 &1038376789
 GameObject:
   m_ObjectHideFlags: 0
@@ -2406,13 +2788,18 @@ MonoBehaviour:
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1074333544}
+  m_GameObject: {fileID: 1124016427}
   m_Enabled: 1
   m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: f885ef90267c9e34886fc0ff0361d2da, type: 3}
+  m_Script: {fileID: 11500000, guid: aa10cc87aff30c04dbe0aa648f5b6adc, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
---- !u!4 &1074333546
+  startingHealth: 100
+  sinkSpeed: 2.5
+  scoreValue: 10
+  deathClip: {fileID: 0}
+  isCheatOneHitKill: 0
+--- !u!4 &1124016429
 Transform:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
@@ -2678,9 +3065,11 @@ MonoBehaviour:
   m_GameObject: {fileID: 1139190131}
   m_Enabled: 1
   m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: f885ef90267c9e34886fc0ff0361d2da, type: 3}
+  m_Script: {fileID: 11500000, guid: eac3a012263105c48916d88caefde15d, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
+  messagePanel: {fileID: 735558819}
+  textInput: {fileID: 7602485}
 --- !u!1 &1187485193
 GameObject:
   m_ObjectHideFlags: 0
@@ -2717,6 +3106,85 @@ RectTransform:
   m_AnchoredPosition: {x: 0, y: 0}
   m_SizeDelta: {x: -20, y: -20}
   m_Pivot: {x: 0.5, y: 0.5}
+--- !u!1 &1201817371
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1201817372}
+  - component: {fileID: 1201817374}
+  - component: {fileID: 1201817373}
+  m_Layer: 5
+  m_Name: Text
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &1201817372
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1201817371}
+  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_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 735558820}
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 0, y: 25}
+  m_SizeDelta: {x: 300, y: 50}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1201817373
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1201817371}
+  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: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_FontData:
+    m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+    m_FontSize: 14
+    m_FontStyle: 0
+    m_BestFit: 0
+    m_MinSize: 10
+    m_MaxSize: 40
+    m_Alignment: 4
+    m_AlignByGeometry: 0
+    m_RichText: 1
+    m_HorizontalOverflow: 0
+    m_VerticalOverflow: 0
+    m_LineSpacing: 1
+  m_Text: New Text
+--- !u!222 &1201817374
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1201817371}
+  m_CullTransparentMesh: 1
 --- !u!1 &1222083998
 GameObject:
   m_ObjectHideFlags: 0
@@ -3883,6 +4351,85 @@ CanvasRenderer:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 1712414649}
   m_CullTransparentMesh: 1
+--- !u!1 &1752927288
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1752927289}
+  - component: {fileID: 1752927291}
+  - component: {fileID: 1752927290}
+  m_Layer: 5
+  m_Name: Text (Legacy)
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &1752927289
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1752927288}
+  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_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 7602486}
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 1, y: 1}
+  m_AnchoredPosition: {x: 0, y: -0.5}
+  m_SizeDelta: {x: -20, y: -13}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1752927290
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1752927288}
+  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: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_FontData:
+    m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+    m_FontSize: 14
+    m_FontStyle: 0
+    m_BestFit: 0
+    m_MinSize: 10
+    m_MaxSize: 40
+    m_Alignment: 0
+    m_AlignByGeometry: 0
+    m_RichText: 0
+    m_HorizontalOverflow: 1
+    m_VerticalOverflow: 0
+    m_LineSpacing: 1
+  m_Text: 
+--- !u!222 &1752927291
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1752927288}
+  m_CullTransparentMesh: 1
 --- !u!1 &1776511254
 GameObject:
   m_ObjectHideFlags: 0
@@ -4009,6 +4556,7 @@ Transform:
   m_Children:
   - {fileID: 461218465}
   - {fileID: 1222083999}
+  - {fileID: 125324177}
   m_Father: {fileID: 0}
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!114 &1796129604
@@ -4050,9 +4598,10 @@ MonoBehaviour:
   m_GameObject: {fileID: 1796129601}
   m_Enabled: 1
   m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: f885ef90267c9e34886fc0ff0361d2da, type: 3}
+  m_Script: {fileID: 11500000, guid: 4ff677c124d78674988964b59f11fec4, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
+  inputField: {fileID: 0}
 --- !u!1 &1837071935
 GameObject:
   m_ObjectHideFlags: 0
@@ -4796,6 +5345,7 @@ SceneRoots:
   m_ObjectHideFlags: 0
   m_Roots:
   - {fileID: 1851598982}
+  - {fileID: 1124016429}
   - {fileID: 1641232233}
   - {fileID: 1139190134}
   - {fileID: 244922607}
diff --git a/Assets/Scripts/Enemy/EnemyHealth.cs b/Assets/Scripts/Enemy/EnemyHealth.cs
index 947fe84c2378e7935375a2aba8251babe992f3c6..4be00f9aa69918788253ccf1e45bc279e129f59b 100644
--- a/Assets/Scripts/Enemy/EnemyHealth.cs
+++ b/Assets/Scripts/Enemy/EnemyHealth.cs
@@ -16,6 +16,10 @@ namespace Nightmare
         CapsuleCollider capsuleCollider;
         EnemyMovement enemyMovement;
 
+        // Cheat One Hit Kill
+        public bool isCheatOneHitKill = false;
+        public static bool IsActiveCheatOneHitKill = false; // For indicator to change isCheatOneHitKill
+
         void Awake ()
         {
             anim = GetComponent <Animator> ();
@@ -39,6 +43,8 @@ namespace Nightmare
 
         void Update ()
         {
+            SetCheatOneHitKill(IsActiveCheatOneHitKill);
+
             if (IsDead())
             {
                 transform.Translate (-Vector3.up * sinkSpeed * Time.deltaTime);
@@ -54,14 +60,36 @@ namespace Nightmare
             return (currentHealth <= 0f);
         }
 
+        // Activate or deactivate cheat one hit kill
+        public void SetCheatOneHitKill(bool isActive)
+        {
+            // Get an array of all EnemyHealth scripts
+            EnemyHealth[] allEnemies = FindObjectsOfType<EnemyHealth>();
+
+            // Loop and set isCheatOneHitKill to true on each enemy
+            foreach (EnemyHealth eHealth in allEnemies)
+            {
+                eHealth.isCheatOneHitKill = isActive;
+            }
+
+            // Change indicator
+            IsActiveCheatOneHitKill = isActive;
+        }
+
         public void TakeDamage (int amount, Vector3 hitPoint)
         {
             if (!IsDead())
-            {
+            {  
+                // Cheat one hit kill
+                if (isCheatOneHitKill)
+                {
+                    currentHealth = 0;
+                }
+
                 enemyAudio.Play();
                 currentHealth -= amount;
 
-                if (IsDead())
+                if (currentHealth <= 0)
                 {
                     Death();
                 }
diff --git a/Assets/Scripts/Managers/CheatManager.cs b/Assets/Scripts/Managers/CheatManager.cs
new file mode 100644
index 0000000000000000000000000000000000000000..62eb488421e6de3b7b95b084483e8fcb4b01e57a
--- /dev/null
+++ b/Assets/Scripts/Managers/CheatManager.cs
@@ -0,0 +1,148 @@
+using Nightmare;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UI;
+using UnityEngine.Windows;
+
+public enum CheatsType
+{
+    NODAMAGE,
+    ONEHITKILL,
+    MOTHERLODE,
+    XTWOSPEED,
+    FULLHPPET,
+    KILLPET,
+    GETORB,
+    SKIPLEVEL
+}
+
+public class CheatManager : MonoBehaviour
+{
+    HUDisplay hud;
+    PlayerHealth playerHealth;
+    PlayerMovement playerMovement;
+    EnemyHealth enemyHealth;
+    string textInput;
+    public InputField inputField;
+
+    // Cheats
+    bool[] cheats = new bool[4];
+
+    private void Start()
+    {
+        hud = GameObject.Find("HUDCanvas").GetComponent<HUDisplay>();
+        playerHealth = GameObject.Find("Player").GetComponent<PlayerHealth>();
+        playerMovement = GameObject.Find("Player").GetComponent<PlayerMovement>();
+        enemyHealth = GameObject.Find("Enemy").GetComponent<EnemyHealth>();
+    }
+
+    private void Update()
+    {
+        // Reason: the read string conditionals do not contain Y or Z character
+        // Open input field by pressing Y key
+        if (UnityEngine.Input.GetKeyDown(KeyCode.Y)) 
+        {
+            hud.OpenInput();
+        }
+
+        // Close input field by pressing Z key
+        if (UnityEngine.Input.GetKeyDown(KeyCode.Z)) 
+        {
+            hud.CloseInput();
+        }
+    }
+
+    public void ReadStringInput(string text)
+    {
+        textInput = text;
+
+        // Activate cheats based on text input
+        if (textInput == "NODAMAGE")
+        {
+            ActivateNoDamage();
+            // Reset the input field text
+            inputField.text = "";
+
+            // Close the input field
+            hud.CloseInput();
+            return;
+        }
+        if (textInput == "ONEHITKILL")
+        {
+            ActivateOneHitKill();
+            // Reset the input field text
+            inputField.text = "";
+
+            // Close the input field
+            hud.CloseInput();
+            return;
+        }
+        if (textInput == "XTWOSPEED")
+        {
+            ActivateXTwoSpeed();
+            // Reset the input field text
+            inputField.text = "";
+
+            // Close the input field
+            hud.CloseInput();
+            return;
+        }
+        if (textInput == "RESETCHEATS")
+        {
+            ActivateReset();
+            // Reset the input field text
+            inputField.text = "";
+
+            // Close the input field
+            hud.CloseInput();
+            return;
+        }
+    }
+
+    private void ActivateNoDamage()
+    {
+        playerHealth.SetCheatNoDamage(true);
+        hud.OpenPanel("No Damage Cheat Activated!");
+        cheats[(int)CheatsType.NODAMAGE] = true;
+    }
+
+    private void ActivateOneHitKill()
+    {
+        enemyHealth.SetCheatOneHitKill(true);
+        hud.OpenPanel("One Hit Kill Cheat Activated!");
+        cheats[(int)CheatsType.ONEHITKILL] = true;
+    }
+
+    private void ActivateXTwoSpeed()
+    {
+        playerMovement.ActivateCheatXTwoSpeed();
+        hud.OpenPanel("Two Times Speed Cheat Activated!");
+        cheats[(int)CheatsType.XTWOSPEED] = true;
+    }
+
+    private void ActivateReset()
+    {
+        playerHealth.SetCheatNoDamage(false);
+        playerMovement.ResetSpeed();
+        enemyHealth.SetCheatOneHitKill(false);
+        hud.OpenPanel("Successfully Reset Cheat(s)!");
+    }
+
+    public void LoadCheat(bool[] gatheredCheats)
+    {
+        if (gatheredCheats[(int) CheatsType.NODAMAGE])
+        {
+            ActivateNoDamage();
+        }
+        if (gatheredCheats[(int) CheatsType.ONEHITKILL])
+        {
+            ActivateOneHitKill();
+        }
+        if (gatheredCheats[(int) CheatsType.XTWOSPEED])
+        {
+            ActivateXTwoSpeed();
+        }
+    }
+
+}
diff --git a/Assets/Scripts/Managers/CheatManager.cs.meta b/Assets/Scripts/Managers/CheatManager.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..4d68d2bcf45f1efd49c197f7c3fa887f538922ce
--- /dev/null
+++ b/Assets/Scripts/Managers/CheatManager.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 4ff677c124d78674988964b59f11fec4
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Scripts/Managers/HUDisplay.cs b/Assets/Scripts/Managers/HUDisplay.cs
new file mode 100644
index 0000000000000000000000000000000000000000..237644352bdcb7c4891b891cb32a6f90fb3777f8
--- /dev/null
+++ b/Assets/Scripts/Managers/HUDisplay.cs
@@ -0,0 +1,51 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Diagnostics;
+using UnityEngine;
+using UnityEngine.UI; // For Text
+
+public class HUDisplay : MonoBehaviour
+{
+    public GameObject messagePanel;
+    private Text textComponent;
+    [SerializeField] GameObject textInput;
+
+    private void Start()
+    {
+        // Find Text element on screen
+        textComponent = messagePanel.transform.Find("Text").GetComponent<Text>();
+
+        // False as default
+        messagePanel.SetActive(false);
+        textInput.SetActive(false);
+    }
+
+    public void OpenPanel(string text)
+    {
+        textComponent.text = text;
+        messagePanel.SetActive(true);
+        StartCoroutine(delayExec(2));
+    }
+
+    public void ClosePanel()
+    {
+        messagePanel.SetActive(false);
+    }
+
+    public void OpenInput()
+    {
+        textInput.SetActive(true);
+    }
+
+    public void CloseInput()
+    {
+        textInput.SetActive(false);
+    }
+
+    private IEnumerator delayExec(int sec)
+    {
+        yield return new WaitForSeconds(sec);
+        ClosePanel();
+    }
+}
diff --git a/Assets/Scripts/Managers/HUDisplay.cs.meta b/Assets/Scripts/Managers/HUDisplay.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..2064bc1d873149a7ecc95e6a7710ed29a56743a4
--- /dev/null
+++ b/Assets/Scripts/Managers/HUDisplay.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: eac3a012263105c48916d88caefde15d
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Scripts/Player/PlayerHealth.cs b/Assets/Scripts/Player/PlayerHealth.cs
index 497dbddf1cbaef488a185f36942225b4bd3187d8..0c603cfd9f147e79593cb59a337da5c6307a2ed9 100644
--- a/Assets/Scripts/Player/PlayerHealth.cs
+++ b/Assets/Scripts/Player/PlayerHealth.cs
@@ -14,7 +14,6 @@ namespace Nightmare
         public AudioClip deathClip;
         public float flashSpeed = 5f;
         public Color flashColour = new Color(1f, 0f, 0f, 0.1f);
-        public bool godMode = false;
 
         Animator anim;
         AudioSource playerAudio;
@@ -23,6 +22,9 @@ namespace Nightmare
         bool isDead;
         bool damaged;
 
+        // Cheat No Damage
+        public bool isCheatNoDamage = false;
+
         void Awake()
         {
             // Setting up the references.
@@ -68,7 +70,7 @@ namespace Nightmare
 
         public void TakeDamage(int amount)
         {
-            if (godMode)
+            if (isCheatNoDamage)
                 return;
 
             // Set the damaged flag so the screen will flash.
@@ -115,5 +117,11 @@ namespace Nightmare
         {
             EventManager.TriggerEvent("GameOver");
         }
+
+        // Activate or deactivate cheat no damage
+        public void SetCheatNoDamage(bool isActive)
+        {
+            isCheatNoDamage = isActive;
+        }
     }
 }
\ No newline at end of file
diff --git a/Assets/Scripts/Player/PlayerMovement.cs b/Assets/Scripts/Player/PlayerMovement.cs
index 36201d28c73b52876629632167c8316b9c02568a..c33ccfce3247c31777603764a8ff4a083d066a74 100644
--- a/Assets/Scripts/Player/PlayerMovement.cs
+++ b/Assets/Scripts/Player/PlayerMovement.cs
@@ -7,6 +7,7 @@ namespace Nightmare
     public class PlayerMovement : PausibleObject
     {
         public float speed = 6f;            // The speed that the player will move at.
+        public float prevSpeed;             // For twice speed cheat purpose
 
 
         Vector3 movement;                   // The vector to store the direction of the player's movement.
@@ -28,6 +29,9 @@ namespace Nightmare
             anim = GetComponent <Animator> ();
             playerRigidbody = GetComponent <Rigidbody> ();
 
+            // Set prev speed to speed
+            prevSpeed = speed;
+
             StartPausible();
         }
 
@@ -123,5 +127,20 @@ namespace Nightmare
             // Tell the animator whether or not the player is walking.
             anim.SetBool ("IsWalking", walking);
         }
+
+        // Reset speed to default
+        public void ResetSpeed()
+        {
+            this.speed = 6f; // Back to default
+        }
+
+        // Activate twice speed cheat
+        public void ActivateCheatXTwoSpeed()
+        {
+            if (this.speed * 2 > prevSpeed * 2)
+                return;
+            this.speed *= 2;
+        }
+
     }
 }
\ No newline at end of file
diff --git a/Assets/Scripts/States/GlobalStateManager.cs b/Assets/Scripts/States/GlobalStateManager.cs
new file mode 100644
index 0000000000000000000000000000000000000000..a0d815dc9d068c978584e8aead6d70d30d1c391e
--- /dev/null
+++ b/Assets/Scripts/States/GlobalStateManager.cs
@@ -0,0 +1,40 @@
+using Nightmare;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class GlobalStateManager : MonoBehaviour
+{
+    // Create Singleton
+    public static GlobalStateManager Instance { get; private set; }
+
+    private CheatManager cheatManager;
+
+    private void Awake()
+    {
+        if (Instance != null)
+        {
+            if (Instance != this)
+            {
+                Destroy(this);
+            }
+        }
+        else
+        {
+            Instance = this;
+            Refresh();
+        }
+    }
+
+    private void Refresh()
+    {
+        cheatManager = FindObjectOfType<CheatManager>();
+    }
+
+    public void SetState(SaveState state)
+    {
+        Refresh();
+
+        cheatManager.LoadCheat(state.globalSaveState.cheats);
+    }
+}
diff --git a/Assets/Scripts/States/GlobalStateManager.cs.meta b/Assets/Scripts/States/GlobalStateManager.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..5b855cc07dfe04bb16508c18a0bec865c021258f
--- /dev/null
+++ b/Assets/Scripts/States/GlobalStateManager.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 40f7e905f1aa63741b02b9146e251f76
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Scripts/States/SaveState.cs b/Assets/Scripts/States/SaveState.cs
new file mode 100644
index 0000000000000000000000000000000000000000..da0b873c5755471c4b62b090a78d431c76926084
--- /dev/null
+++ b/Assets/Scripts/States/SaveState.cs
@@ -0,0 +1,37 @@
+using System;
+using Newtonsoft.Json;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+[Serializable]
+public class GlobalSaveState
+{
+    public bool[] cheats;
+
+    public GlobalSaveState(bool[] cheats)
+    {
+        this.cheats = cheats;
+    }
+
+    public override string ToString()
+    {
+        return JsonConvert.SerializeObject(this);
+    }
+}
+
+[Serializable]
+public class SaveState
+{
+    public GlobalSaveState globalSaveState;
+
+    public SaveState(GlobalSaveState globalSaveState)
+    {
+        this.globalSaveState = globalSaveState;
+    }
+
+    public override string ToString()
+    {
+        return JsonConvert.SerializeObject(this);
+    }
+}
diff --git a/Assets/Scripts/States/SaveState.cs.meta b/Assets/Scripts/States/SaveState.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..a0c00a35f05aaf0458ec3906981de547b54f4e62
--- /dev/null
+++ b/Assets/Scripts/States/SaveState.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: e0c4e2ce428b7c044baefcfca6687111
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Packages/manifest.json b/Packages/manifest.json
index 27be6025ab3e16967e359e506380cafc40867297..731c40e02883f9f87a99958a334acef8d2554d6b 100644
--- a/Packages/manifest.json
+++ b/Packages/manifest.json
@@ -2,6 +2,7 @@
   "dependencies": {
     "com.unity.collab-proxy": "2.3.1",
     "com.unity.feature.development": "1.0.1",
+    "com.unity.nuget.newtonsoft-json": "3.2.1",
     "com.unity.textmeshpro": "3.0.6",
     "com.unity.timeline": "1.7.6",
     "com.unity.ugui": "1.0.0",
diff --git a/Packages/packages-lock.json b/Packages/packages-lock.json
index 6cdad5f6aa31e0654818e5b0d96e39cd6ad98093..6ad5838dcbb0ff3ff0c2096a82be22200c5025de 100644
--- a/Packages/packages-lock.json
+++ b/Packages/packages-lock.json
@@ -60,6 +60,13 @@
       "dependencies": {},
       "url": "https://packages.unity.com"
     },
+    "com.unity.nuget.newtonsoft-json": {
+      "version": "3.2.1",
+      "depth": 0,
+      "source": "registry",
+      "dependencies": {},
+      "url": "https://packages.unity.com"
+    },
     "com.unity.performance.profile-analyzer": {
       "version": "1.2.2",
       "depth": 1,