diff --git a/.vsconfig b/.vsconfig
new file mode 100644
index 0000000000000000000000000000000000000000..f019fd0ad121bf5f9c0eb35e29cd09d56ce712b3
--- /dev/null
+++ b/.vsconfig
@@ -0,0 +1,6 @@
+{
+  "version": "1.0",
+  "components": [
+    "Microsoft.VisualStudio.Workload.ManagedGame"
+  ]
+}
diff --git a/Assets/Resources/Data/WeaponData/TestWeapon/SwordData.asset b/Assets/Resources/Data/WeaponData/TestWeapon/SwordData.asset
new file mode 100644
index 0000000000000000000000000000000000000000..454b76191b03bd8361019d74c6006830f13bd292
--- /dev/null
+++ b/Assets/Resources/Data/WeaponData/TestWeapon/SwordData.asset
@@ -0,0 +1,20 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: abc4ca3f3ac6a5646addd6dfbe0b996b, type: 3}
+  m_Name: SwordData
+  m_EditorClassIdentifier: 
+  prefabPath: Prefabs/Weapons/TestWeapon/Sword
+  model: {fileID: 5240801910879785525, guid: 70a197083e3d99246b1d381922eb03bf, type: 3}
+  baseDamage: 10
+  knockbackPower: 10
+  attackInterval: 0.5
+  alternateAttackInterval: 0.5
diff --git a/Assets/Resources/Data/WeaponData/TestWeapon/SwordData.asset.meta b/Assets/Resources/Data/WeaponData/TestWeapon/SwordData.asset.meta
new file mode 100644
index 0000000000000000000000000000000000000000..f7e1ff45cbd485a122a683bfbdca01dcd7d5f387
--- /dev/null
+++ b/Assets/Resources/Data/WeaponData/TestWeapon/SwordData.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 56e830b65df7e2646bf9860251b1ea1c
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Resources/Models/Weapons/TestWeapon/Cube.prefab b/Assets/Resources/Models/Weapons/TestWeapon/Cube.prefab
new file mode 100644
index 0000000000000000000000000000000000000000..e211384d294bbb95421259c6c9ec1ec1f58ae0f5
--- /dev/null
+++ b/Assets/Resources/Models/Weapons/TestWeapon/Cube.prefab
@@ -0,0 +1,109 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &8242525621199174580
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 7442757917437711931}
+  - component: {fileID: 1313164622017952236}
+  - component: {fileID: 178752603434756337}
+  - component: {fileID: 7954633565928931116}
+  m_Layer: 0
+  m_Name: Cube
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &7442757917437711931
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8242525621199174580}
+  serializedVersion: 2
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: -2.8961656, y: 0.7208452, z: 2.962078}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &1313164622017952236
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8242525621199174580}
+  m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!23 &178752603434756337
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8242525621199174580}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_StaticShadowCaster: 0
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 2
+  m_RayTraceProcedural: 0
+  m_RayTracingAccelStructBuildFlagsOverride: 0
+  m_RayTracingAccelStructBuildFlags: 1
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
+  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: 1
+  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_AdditionalVertexStreams: {fileID: 0}
+--- !u!65 &7954633565928931116
+BoxCollider:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8242525621199174580}
+  m_Material: {fileID: 0}
+  m_IncludeLayers:
+    serializedVersion: 2
+    m_Bits: 0
+  m_ExcludeLayers:
+    serializedVersion: 2
+    m_Bits: 0
+  m_LayerOverridePriority: 0
+  m_IsTrigger: 0
+  m_ProvidesContacts: 0
+  m_Enabled: 1
+  serializedVersion: 3
+  m_Size: {x: 1, y: 1, z: 1}
+  m_Center: {x: 0, y: 0, z: 0}
diff --git a/Assets/Resources/Models/Weapons/TestWeapon/Cube.prefab.meta b/Assets/Resources/Models/Weapons/TestWeapon/Cube.prefab.meta
new file mode 100644
index 0000000000000000000000000000000000000000..2db0d704befffaf7b3b16dee7b6817dded37481c
--- /dev/null
+++ b/Assets/Resources/Models/Weapons/TestWeapon/Cube.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: a77dc00dbd765834c835860d04c45a28
+PrefabImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Resources/Prefabs/Weapons/NoWeapon/Plane.prefab b/Assets/Resources/Prefabs/Weapons/NoWeapon/Plane.prefab
new file mode 100644
index 0000000000000000000000000000000000000000..8c44c339e399a5207f2875e53ebe647008af0bf0
--- /dev/null
+++ b/Assets/Resources/Prefabs/Weapons/NoWeapon/Plane.prefab
@@ -0,0 +1,110 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &1466136508528576958
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 8184952555610640498}
+  - component: {fileID: 5010126628732414453}
+  - component: {fileID: 6727235421528898813}
+  - component: {fileID: 1588082137161352098}
+  m_Layer: 0
+  m_Name: Plane
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &8184952555610640498
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1466136508528576958}
+  serializedVersion: 2
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 10, y: 10, z: 10}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &5010126628732414453
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1466136508528576958}
+  m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!23 &6727235421528898813
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1466136508528576958}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_StaticShadowCaster: 0
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 2
+  m_RayTraceProcedural: 0
+  m_RayTracingAccelStructBuildFlagsOverride: 0
+  m_RayTracingAccelStructBuildFlags: 1
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
+  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: 1
+  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_AdditionalVertexStreams: {fileID: 0}
+--- !u!64 &1588082137161352098
+MeshCollider:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1466136508528576958}
+  m_Material: {fileID: 0}
+  m_IncludeLayers:
+    serializedVersion: 2
+    m_Bits: 0
+  m_ExcludeLayers:
+    serializedVersion: 2
+    m_Bits: 0
+  m_LayerOverridePriority: 0
+  m_IsTrigger: 0
+  m_ProvidesContacts: 0
+  m_Enabled: 1
+  serializedVersion: 5
+  m_Convex: 0
+  m_CookingOptions: 30
+  m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0}
diff --git a/Assets/Resources/Prefabs/Weapons/NoWeapon/Plane.prefab.meta b/Assets/Resources/Prefabs/Weapons/NoWeapon/Plane.prefab.meta
new file mode 100644
index 0000000000000000000000000000000000000000..d7291cae0f71a20895b02a25b61bdf516595f894
--- /dev/null
+++ b/Assets/Resources/Prefabs/Weapons/NoWeapon/Plane.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 410f96feac8209f4083aea60034fd57a
+PrefabImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Resources/Prefabs/Weapons/TestWeapon/TestInteractable.prefab b/Assets/Resources/Prefabs/Weapons/TestWeapon/TestInteractable.prefab
new file mode 100644
index 0000000000000000000000000000000000000000..6c3119db7ed8f51d039d0c9459a7b35750baf755
--- /dev/null
+++ b/Assets/Resources/Prefabs/Weapons/TestWeapon/TestInteractable.prefab
@@ -0,0 +1,131 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &6541102688641435260
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 7065619579114910469}
+  - component: {fileID: 344713511152250207}
+  - component: {fileID: 4603107572195619152}
+  m_Layer: 12
+  m_Name: TestInteractable
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &7065619579114910469
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6541102688641435260}
+  serializedVersion: 2
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 3, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children:
+  - {fileID: 6312057550851766622}
+  m_Father: {fileID: 0}
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &344713511152250207
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6541102688641435260}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: afc0fd7c16afe4a42a82353df9b3a73b, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+--- !u!65 &4603107572195619152
+BoxCollider:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6541102688641435260}
+  m_Material: {fileID: 0}
+  m_IncludeLayers:
+    serializedVersion: 2
+    m_Bits: 0
+  m_ExcludeLayers:
+    serializedVersion: 2
+    m_Bits: 0
+  m_LayerOverridePriority: 0
+  m_IsTrigger: 1
+  m_ProvidesContacts: 0
+  m_Enabled: 1
+  serializedVersion: 3
+  m_Size: {x: 1, y: 1, z: 1}
+  m_Center: {x: -1, y: 0.5, z: 0}
+--- !u!1001 &7576994708712382837
+PrefabInstance:
+  m_ObjectHideFlags: 0
+  serializedVersion: 2
+  m_Modification:
+    serializedVersion: 3
+    m_TransformParent: {fileID: 7065619579114910469}
+    m_Modifications:
+    - target: {fileID: 4521062537676429355, guid: ec549132bf117594e81e95cc4ae15b07, type: 3}
+      propertyPath: m_LocalPosition.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 4521062537676429355, guid: ec549132bf117594e81e95cc4ae15b07, type: 3}
+      propertyPath: m_LocalPosition.y
+      value: 0.5
+      objectReference: {fileID: 0}
+    - target: {fileID: 4521062537676429355, guid: ec549132bf117594e81e95cc4ae15b07, type: 3}
+      propertyPath: m_LocalPosition.z
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 4521062537676429355, guid: ec549132bf117594e81e95cc4ae15b07, type: 3}
+      propertyPath: m_LocalRotation.w
+      value: 1
+      objectReference: {fileID: 0}
+    - target: {fileID: 4521062537676429355, guid: ec549132bf117594e81e95cc4ae15b07, type: 3}
+      propertyPath: m_LocalRotation.x
+      value: -0
+      objectReference: {fileID: 0}
+    - target: {fileID: 4521062537676429355, guid: ec549132bf117594e81e95cc4ae15b07, type: 3}
+      propertyPath: m_LocalRotation.y
+      value: -0
+      objectReference: {fileID: 0}
+    - target: {fileID: 4521062537676429355, guid: ec549132bf117594e81e95cc4ae15b07, type: 3}
+      propertyPath: m_LocalRotation.z
+      value: -0
+      objectReference: {fileID: 0}
+    - target: {fileID: 4521062537676429355, guid: ec549132bf117594e81e95cc4ae15b07, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 4521062537676429355, guid: ec549132bf117594e81e95cc4ae15b07, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 4521062537676429355, guid: ec549132bf117594e81e95cc4ae15b07, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.z
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 5071667469683539556, guid: ec549132bf117594e81e95cc4ae15b07, type: 3}
+      propertyPath: m_Name
+      value: Model
+      objectReference: {fileID: 0}
+    m_RemovedComponents: []
+    m_RemovedGameObjects: []
+    m_AddedGameObjects: []
+    m_AddedComponents: []
+  m_SourcePrefab: {fileID: 100100000, guid: ec549132bf117594e81e95cc4ae15b07, type: 3}
+--- !u!4 &6312057550851766622 stripped
+Transform:
+  m_CorrespondingSourceObject: {fileID: 4521062537676429355, guid: ec549132bf117594e81e95cc4ae15b07, type: 3}
+  m_PrefabInstance: {fileID: 7576994708712382837}
+  m_PrefabAsset: {fileID: 0}
diff --git a/Assets/Resources/Prefabs/Weapons/TestWeapon/TestInteractable.prefab.meta b/Assets/Resources/Prefabs/Weapons/TestWeapon/TestInteractable.prefab.meta
new file mode 100644
index 0000000000000000000000000000000000000000..2625d70e8148cf1015a53b519db61907e9b08694
--- /dev/null
+++ b/Assets/Resources/Prefabs/Weapons/TestWeapon/TestInteractable.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: f8c15abc8b664dd4f93785993c19e187
+PrefabImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Resources/Prefabs/Weapons/TestWeapon/TestProjectile.prefab.meta b/Assets/Resources/Prefabs/Weapons/TestWeapon/TestProjectile.prefab.meta
index fdcf4faf3543690ef12d186b06494026120e8792..473bcc3989a0db930ef1fc9ae9b3595234a8739e 100644
--- a/Assets/Resources/Prefabs/Weapons/TestWeapon/TestProjectile.prefab.meta
+++ b/Assets/Resources/Prefabs/Weapons/TestWeapon/TestProjectile.prefab.meta
@@ -1,5 +1,5 @@
 fileFormatVersion: 2
-guid: 70a197083e3d99246b1d381922eb03bf
+guid: 7b013dfe2e9df3842ae1eb6f1741813c
 PrefabImporter:
   externalObjects: {}
   userData: 
diff --git a/Assets/Scenes/DevRoom.unity b/Assets/Scenes/DevRoom.unity
index a11d7bee307b706de5e80afd193d30a32b85a472..eaf6ad3e0d7d2170a7709f00f7f9b3c544a0b693 100644
--- a/Assets/Scenes/DevRoom.unity
+++ b/Assets/Scenes/DevRoom.unity
@@ -257,6 +257,18 @@ MonoBehaviour:
   m_Name: 
   m_EditorClassIdentifier: 
   difficulty: 1
+  events: []
+  currencyData:
+    balance: 0
+    transactions: []
+  positionData:
+    level: 1
+    point: {x: 0, y: 0, z: 0}
+  storyData:
+    events: []
+    progress: 
+  statisticsData:
+    enemiesKilled: 0
 --- !u!4 &354420149
 Transform:
   m_ObjectHideFlags: 0
@@ -272,6 +284,55 @@ Transform:
   m_Children: []
   m_Father: {fileID: 0}
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &462044645
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 462044647}
+  - component: {fileID: 462044646}
+  m_Layer: 10
+  m_Name: Weapon
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!114 &462044646
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 462044645}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 0d987ecf817e9a742a921b5b1e18bedf, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  data: {fileID: 11400000, guid: 56e830b65df7e2646bf9860251b1ea1c, type: 2}
+  canAttack: 1
+  attackRange: 2.5
+  attackDamage: 25
+--- !u!4 &462044647
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 462044645}
+  serializedVersion: 2
+  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: 1397095544}
+  m_Father: {fileID: 1501595418}
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!1 &464623400
 GameObject:
   m_ObjectHideFlags: 0
@@ -926,6 +987,91 @@ PrefabInstance:
     m_AddedGameObjects: []
     m_AddedComponents: []
   m_SourcePrefab: {fileID: 100100000, guid: c98b222ded23bb24690e674886e5741a, type: 3}
+--- !u!1 &1397095543
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1397095544}
+  - component: {fileID: 1397095546}
+  - component: {fileID: 1397095545}
+  m_Layer: 10
+  m_Name: Model
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &1397095544
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1397095543}
+  serializedVersion: 2
+  m_LocalRotation: {x: 0.45506826, y: -0.13475184, z: -0.051124513, w: 0.87871563}
+  m_LocalPosition: {x: -0.1, y: 0.983, z: 0.281}
+  m_LocalScale: {x: 0.03817184, y: 0.55788624, z: 0.09148124}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 462044647}
+  m_LocalEulerAnglesHint: {x: 51.811, y: -27.277, z: -20.102}
+--- !u!23 &1397095545
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1397095543}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_StaticShadowCaster: 0
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 2
+  m_RayTraceProcedural: 0
+  m_RayTracingAccelStructBuildFlagsOverride: 0
+  m_RayTracingAccelStructBuildFlags: 1
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
+  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: 1
+  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_AdditionalVertexStreams: {fileID: 0}
+--- !u!33 &1397095546
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1397095543}
+  m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0}
 --- !u!1 &1501595415
 GameObject:
   m_ObjectHideFlags: 0
@@ -968,7 +1114,7 @@ MonoBehaviour:
   damagedDelay: 1
   baseDamage: 10
   weaponList:
-  - {fileID: 5029868015402955001, guid: 1a7698227caac3d429dceb8aa5056502, type: 3}
+  - {fileID: 462044646}
   companionList: []
   companionActive: 
 --- !u!54 &1501595417
@@ -1007,11 +1153,12 @@ Transform:
   m_GameObject: {fileID: 1501595415}
   serializedVersion: 2
   m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
-  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalPosition: {x: 0.1, y: 0, z: -0.55}
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_ConstrainProportionsScale: 0
   m_Children:
   - {fileID: 1134916567}
+  - {fileID: 462044647}
   m_Father: {fileID: 1835324898}
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!1001 &1546353266
diff --git a/Assets/Weapon.cs b/Assets/Weapon.cs
new file mode 100644
index 0000000000000000000000000000000000000000..4108eb5c371baa64e66e6ac28e8a3ec82bfdca5c
--- /dev/null
+++ b/Assets/Weapon.cs
@@ -0,0 +1,18 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class Weapon : MonoBehaviour
+{
+    // Start is called before the first frame update
+    void Start()
+    {
+        
+    }
+
+    // Update is called once per frame
+    void Update()
+    {
+        
+    }
+}
diff --git a/Assets/Weapon.cs.meta b/Assets/Weapon.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..13e0c6e35d9d435ca04e39d1f94896a9225dcb9e
--- /dev/null
+++ b/Assets/Weapon.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 68ed3a47015cb7b49a388cef5be0e56f
\ No newline at end of file
diff --git a/Assets/_Scripts/Core/Objects/Weapons/TestWeapon/Sword.cs b/Assets/_Scripts/Core/Objects/Weapons/TestWeapon/Sword.cs
new file mode 100644
index 0000000000000000000000000000000000000000..b5bb4f303fda5d5b23c33fd53e523872367ae6cd
--- /dev/null
+++ b/Assets/_Scripts/Core/Objects/Weapons/TestWeapon/Sword.cs
@@ -0,0 +1,53 @@
+using UnityEngine;
+
+public class Sword : WeaponObject
+{
+    public const string weaponPrefab = "Prefabs/Weapons/TestWeapon/Sword";
+    private const string hitboxPrefab = "Prefabs/Weapons/TestWeapon/WeaponHitbox";
+    
+    public float attackRange = 2.5f;
+    public float attackDamage = 25f; 
+    public SwordAnimationController animationController;
+
+    protected new void Start()
+    {
+        base.Start();
+        animationController = new SwordAnimationController(this);
+    }
+
+    protected override void OnAttack()
+    {
+        // Spawn hitbox
+        AttackObject hitboxObject = ObjectFactory.CreateAttackObject(
+            prefabPath: hitboxPrefab,
+            damage: MathUtils.CalculateDamage(bearer.BaseDamage, data.baseDamage),
+            knockbackPower: data.knockbackPower,
+            attackLayerCode: bearer.AttackLayerCode,
+            damageModifier: bearer.AttackMultiplier,
+            knockbackOrigin: transform.position,
+            parent: transform, // Attach hitbox to the sword
+            objectName: "Sword Hitbox"
+        );
+        ObjectFactory.DestroyObject(hitboxObject, 1f);
+    }
+
+
+    protected override void OnAlternateAttack()
+    {
+        animationController.AnimateAlternateAttack();
+
+        AttackObject attackHitbox = ObjectFactory.CreateAttackObject(
+            prefabPath: hitboxPrefab,
+            damage: MathUtils.CalculateDamage(bearer.BaseDamage, data.baseDamage),
+            knockbackPower: data.knockbackPower,
+            attackLayerCode: bearer.AttackLayerCode,
+            damageModifier: bearer.AttackMultiplier,
+            knockbackOrigin: transform.position,
+            parent: animationController.model.transform,
+            objectName: "Sword Hitbox"
+        );
+
+        ObjectFactory.DestroyObject(attackHitbox, 0.5f);
+    }
+
+}
diff --git a/Assets/_Scripts/Core/Objects/Weapons/TestWeapon/Sword.cs.meta b/Assets/_Scripts/Core/Objects/Weapons/TestWeapon/Sword.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..329a309c73c71504782ee16c33311b3d35aebe7b
--- /dev/null
+++ b/Assets/_Scripts/Core/Objects/Weapons/TestWeapon/Sword.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 0d987ecf817e9a742a921b5b1e18bedf
\ No newline at end of file
diff --git a/Assets/_Scripts/Core/Objects/Weapons/TestWeapon/SwordController.cs b/Assets/_Scripts/Core/Objects/Weapons/TestWeapon/SwordController.cs
new file mode 100644
index 0000000000000000000000000000000000000000..2668ad7046a542c656075c47593894c032e624fa
--- /dev/null
+++ b/Assets/_Scripts/Core/Objects/Weapons/TestWeapon/SwordController.cs
@@ -0,0 +1,18 @@
+using UnityEngine;
+
+public class SwordAnimationController : AnimationController
+{
+    private const string ALTERNATE_ATTACK_TRIGGER = "AlternateAttack_param";
+
+    private readonly Sword sword;
+
+    public SwordAnimationController(Sword sword) : base(sword)
+    {
+        this.sword = sword;
+    }
+
+    public void AnimateAlternateAttack()
+    {
+        animator.SetTrigger(ALTERNATE_ATTACK_TRIGGER);
+    }
+}
diff --git a/Assets/_Scripts/Core/Objects/Weapons/TestWeapon/SwordController.cs.meta b/Assets/_Scripts/Core/Objects/Weapons/TestWeapon/SwordController.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..cda782f720d6aab8e2d07c05d2d294868f93e6a4
--- /dev/null
+++ b/Assets/_Scripts/Core/Objects/Weapons/TestWeapon/SwordController.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: f3a64b3d0c80c0b48a46d8b0bc9ae5c6
\ No newline at end of file