diff --git a/MrBigsock/Assets/Code/Character.cs b/MrBigsock/Assets/Code/Character.cs
index 3a04ccfd00919e28e66af357d3fb610280ac3888..de0bdcacdd805bfe9071fd611a69d3ee7735e957 100644
--- a/MrBigsock/Assets/Code/Character.cs
+++ b/MrBigsock/Assets/Code/Character.cs
@@ -3,6 +3,7 @@ using System;
 using System.Collections.Generic;
 using UnityEngine;
 using UnityEngine.InputSystem;
+using BigSock.Item;
 
 namespace BigSock {
 	// Common class for all characters.
@@ -11,7 +12,7 @@ namespace BigSock {
 		/*
 			Attack speed of the character.
 		*/
-		public float AttackSpeed => baseAttackSpeed;
+		public float AttackSpeed => Stats.AttackSpeed;
 		public float baseAttackSpeed = 1;
 
 		/*
@@ -22,20 +23,20 @@ namespace BigSock {
 		/*
 			Movement speed of the character.
 		*/
-		public float MovementSpeed => baseMovementSpeed;
+		public float MovementSpeed => Stats.MoveSpeed;
 		public float baseMovementSpeed = 1;
 
 		
 		/*
 			Damage of the character.
 		*/
-		public float Damage => baseDamage;
+		public float Damage => Stats.Damage;
 		public float baseDamage = 1;
 
 		/*
 			Knockback force
 		*/
-		public float KnockbackForce => knockbackForce;
+		public float KnockbackForce => Stats.Knockback;
 		public float knockbackForce = 150;
 
 		
@@ -52,7 +53,7 @@ namespace BigSock {
 		/*
 			Maximum hit points of the character.
 		*/
-		public float MaxHP => baseMaxHP;
+		public float MaxHP => Stats.MaxHP;
 		public float baseMaxHP = 10;
 
 
@@ -81,8 +82,58 @@ namespace BigSock {
 		protected Rigidbody2D rb;
 
 
-		void Start() {
-				rb = GetComponent<Rigidbody2D>();
+		/*
+			The inventory of the character.
+		*/
+		public Inventory Inventory { get; protected set; } = new Inventory();
+
+		/*
+			The base stats of the character.
+		*/
+		public ICharacterStats BaseStats { get; protected set; } = new CharacterStats();
+
+		/*
+			The final stats of the character after applying modifiers.
+		*/
+		public ICharacterStats Stats { get; protected set; } = new CharacterStats();
+
+
+
+		protected virtual void Start() {
+			rb = GetComponent<Rigidbody2D>();
+
+			// Set the base stats.
+			BaseStats = new CharacterStats {
+				MaxHP = baseMaxHP,
+				Damage = baseDamage,
+				MoveSpeed = baseMovementSpeed,
+				Knockback = knockbackForce,
+				Range = 1,
+				AttackSpeed = baseAttackSpeed,
+			};
+			UpdateModifiers();
+
+		}
+
+		/*
+			Updates the modifiers to the character's stats.
+		*/
+		public void UpdateModifiers(ICharacterStats modifiers = null) {
+			modifiers ??= Inventory.Modifier;
+			Stats = BaseStats.Modify(modifiers);
+		}
+
+		/*
+			Try to pick up an item.
+		*/
+		public bool TryPickUpItem(IItem item) {
+			if(Inventory.AddItem(item)) {
+				UpdateModifiers();
+				print($"[Character.TryPickUpItem()] {item.Name} picked up. ({Inventory.Items.Count}/{Inventory.Cap})");
+				return true;
+			}
+			print($"[Character.TryPickUpItem()] {item.Name} NOT picked up. ({Inventory.Items.Count}/{Inventory.Cap})");
+			return false;
 		}
 
 		/*
diff --git a/MrBigsock/Assets/Code/Core/CharacterStats.cs b/MrBigsock/Assets/Code/Core/CharacterStats.cs
new file mode 100644
index 0000000000000000000000000000000000000000..e6e13cbabf07dda3571d6496fab421846b98eb1c
--- /dev/null
+++ b/MrBigsock/Assets/Code/Core/CharacterStats.cs
@@ -0,0 +1,45 @@
+using System.Collections;
+using System;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.InputSystem;
+
+
+namespace BigSock {
+
+	/*
+		class represents the stats of a character.
+	*/
+	public class CharacterStats : ICharacterStats {
+		/*
+			The hp of the character.
+		*/
+		public float MaxHP { get; set; }
+
+		/*
+			The damage of the character.
+		*/
+		public float Damage { get; set; }
+
+		/*
+			The movement speed of the character.
+		*/
+		public float MoveSpeed { get; set; }
+
+		/*
+			The knockback of the character.
+		*/
+		public float Knockback { get; set; }
+
+		/*
+			The range of the character.
+		*/
+		public float Range { get; set; }
+
+		/*
+			The attack speed of the character.
+		*/
+		public float AttackSpeed { get; set; }
+
+	}
+}
\ No newline at end of file
diff --git a/MrBigsock/Assets/Code/Core/CharacterStats.cs.meta b/MrBigsock/Assets/Code/Core/CharacterStats.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..aa194f501fac12f79b35d5817f71673e224c9bff
--- /dev/null
+++ b/MrBigsock/Assets/Code/Core/CharacterStats.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 697f21373556c9549b064efc46c9730b
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/MrBigsock/Assets/Code/Core/ICharacterStats.cs b/MrBigsock/Assets/Code/Core/ICharacterStats.cs
new file mode 100644
index 0000000000000000000000000000000000000000..afccfaf265773815843b27def98513049c26dcde
--- /dev/null
+++ b/MrBigsock/Assets/Code/Core/ICharacterStats.cs
@@ -0,0 +1,100 @@
+using System.Collections;
+using System;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.InputSystem;
+
+
+namespace BigSock {
+
+	/*
+		Interface represents the stats of a character.
+	*/
+	public interface ICharacterStats {
+		/*
+			The hp of the character.
+		*/
+		float MaxHP { get; }
+
+		/*
+			The damage of the character.
+		*/
+		float Damage { get; }
+
+		/*
+			The movement speed of the character.
+		*/
+		float MoveSpeed { get; }
+
+		/*
+			The knockback of the character.
+		*/
+		float Knockback { get; }
+
+		/*
+			The range of the character.
+		*/
+		float Range { get; }
+
+		/*
+			The attack speed of the character.
+		*/
+		float AttackSpeed { get; }
+
+	}
+
+	/*
+		Holds extension methods for character stat objects.
+	*/
+	public static class CharacterStatsExtension {
+		/*
+			Identity object for character stats.
+		*/
+		public static readonly ICharacterStats IDENTITY = new CharacterStats{
+			MaxHP = 1,
+			Damage = 1,
+			MoveSpeed = 1,
+			Knockback = 1,
+			Range = 1,
+			AttackSpeed = 1,
+		};
+
+		/*
+			Adds the values of 2 character stats together.
+		*/
+		public static ICharacterStats Add(this ICharacterStats a, ICharacterStats b) {
+			return new CharacterStats{
+				MaxHP = a.MaxHP + b.MaxHP,
+				Damage = a.Damage + b.Damage,
+				MoveSpeed = a.MoveSpeed + b.MoveSpeed,
+				Knockback = a.Knockback + b.Knockback,
+				Range = a.Range + b.Range,
+				AttackSpeed = a.AttackSpeed + b.AttackSpeed,
+			};
+		}
+
+		/*
+			Multiplies the values of 2 character stats together.
+		*/
+		public static ICharacterStats Multiply(this ICharacterStats a, ICharacterStats b) {
+			return new CharacterStats{
+				MaxHP = a.MaxHP * b.MaxHP,
+				Damage = a.Damage * b.Damage,
+				MoveSpeed = a.MoveSpeed * b.MoveSpeed,
+				Knockback = a.Knockback * b.Knockback,
+				Range = a.Range * b.Range,
+				AttackSpeed = a.AttackSpeed * b.AttackSpeed,
+			};
+		}
+
+		
+		/*
+			Modifies the first stat object by the second one.
+			Ex.: if the second is 20% hp, the result will be the first one, but with 20% more hp.
+		*/
+		public static ICharacterStats Modify(this ICharacterStats a, ICharacterStats b) {
+			return a.Multiply(b.Add(IDENTITY));
+		}
+
+	}
+}
\ No newline at end of file
diff --git a/MrBigsock/Assets/Code/Core/ICharacterStats.cs.meta b/MrBigsock/Assets/Code/Core/ICharacterStats.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..48fb62635f548d34ef2b2d9eef3cad9ce2ee6225
--- /dev/null
+++ b/MrBigsock/Assets/Code/Core/ICharacterStats.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: d67cdc4f8a1fd31439d31116ad4821b7
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/MrBigsock/Assets/Code/Item.meta b/MrBigsock/Assets/Code/Item.meta
new file mode 100644
index 0000000000000000000000000000000000000000..fa111966b15fa7cc106df13fefe50dbd37dddfb7
--- /dev/null
+++ b/MrBigsock/Assets/Code/Item.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 023fe0779d2abeb44ad4470ad4e5642a
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/MrBigsock/Assets/Code/Item/Base.meta b/MrBigsock/Assets/Code/Item/Base.meta
new file mode 100644
index 0000000000000000000000000000000000000000..0b806ae62abd931bdeb3f79f166131d0948bd6d4
--- /dev/null
+++ b/MrBigsock/Assets/Code/Item/Base.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: fdc1d36c8d53fe54898d8cccff53b536
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/MrBigsock/Assets/Code/Item/Base/ConditionalItemBase.cs b/MrBigsock/Assets/Code/Item/Base/ConditionalItemBase.cs
new file mode 100644
index 0000000000000000000000000000000000000000..9561289398ced21d1238d3b72eed0f9c4bdae616
--- /dev/null
+++ b/MrBigsock/Assets/Code/Item/Base/ConditionalItemBase.cs
@@ -0,0 +1,25 @@
+using System.Collections;
+using System;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.InputSystem;
+
+
+namespace BigSock.Item {
+
+	/*
+		A class that represents an item that an effect when a condition is meet.
+	*/
+	public abstract class ConditionalItemBase : ItemBase {
+		/*
+			The type of trigger this item uses.
+		*/
+		public TriggerType Trigger { get; set; }
+
+		/*
+			The handler to activate when the condition is triggered.
+		*/
+		public Action<ICharEventParams> Handler { get; set; }
+
+	}
+} 
\ No newline at end of file
diff --git a/MrBigsock/Assets/Code/Item/Base/ConditionalItemBase.cs.meta b/MrBigsock/Assets/Code/Item/Base/ConditionalItemBase.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..ec5d95648b7e2b2f55f9eeb61c722713513845a8
--- /dev/null
+++ b/MrBigsock/Assets/Code/Item/Base/ConditionalItemBase.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 15064819886e52a4a85b803e26467c05
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/MrBigsock/Assets/Code/Item/Base/IItem.cs b/MrBigsock/Assets/Code/Item/Base/IItem.cs
new file mode 100644
index 0000000000000000000000000000000000000000..720fa112b799cb7f7f8373b9b32617315939e313
--- /dev/null
+++ b/MrBigsock/Assets/Code/Item/Base/IItem.cs
@@ -0,0 +1,30 @@
+using System.Collections;
+using System;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.InputSystem;
+
+
+namespace BigSock.Item {
+
+	/*
+		An interface representing a generic item.
+	*/
+	public interface IItem {
+		/*
+			The name of the item.
+		*/
+		string Name { get; }
+
+		/*
+			The description of the item.
+		*/
+		string Description { get; }
+
+		/*
+			The id of the item.
+		*/
+		ulong Id { get; }
+
+	}
+}
\ No newline at end of file
diff --git a/MrBigsock/Assets/Code/Item/Base/IItem.cs.meta b/MrBigsock/Assets/Code/Item/Base/IItem.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..7c3c5385da20ccce838959983475ea760de2d696
--- /dev/null
+++ b/MrBigsock/Assets/Code/Item/Base/IItem.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 0a4fa79a9560deb45976fa4bebd5d1ec
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/MrBigsock/Assets/Code/Item/Base/ItemBase.cs b/MrBigsock/Assets/Code/Item/Base/ItemBase.cs
new file mode 100644
index 0000000000000000000000000000000000000000..bd74fdd3b23a7dd5f0ef149b226700c37db581ab
--- /dev/null
+++ b/MrBigsock/Assets/Code/Item/Base/ItemBase.cs
@@ -0,0 +1,30 @@
+using System.Collections;
+using System;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.InputSystem;
+
+
+namespace BigSock.Item {
+
+	/*
+		A class that represents the root of all items.
+	*/
+	public abstract class ItemBase : IItem {
+		/*
+			The name of the item.
+		*/
+		public string Name { get; protected set; }
+
+		/*
+			The description of the item.
+		*/
+		public string Description { get; protected set; }
+
+		/*
+			The id of the item.
+		*/
+		public ulong Id { get; protected set; }
+
+	}
+}
\ No newline at end of file
diff --git a/MrBigsock/Assets/Code/Item/Base/ItemBase.cs.meta b/MrBigsock/Assets/Code/Item/Base/ItemBase.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..fa7b453195eae4547f3c337f3db982ae379d264e
--- /dev/null
+++ b/MrBigsock/Assets/Code/Item/Base/ItemBase.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: e99afc192b85f3d43a7159cbbd68a39c
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/MrBigsock/Assets/Code/Item/Base/PassiveItemBase.cs b/MrBigsock/Assets/Code/Item/Base/PassiveItemBase.cs
new file mode 100644
index 0000000000000000000000000000000000000000..1b09c3b45c9e33bb67790386d61559486ca16d0e
--- /dev/null
+++ b/MrBigsock/Assets/Code/Item/Base/PassiveItemBase.cs
@@ -0,0 +1,21 @@
+using System.Collections;
+using System;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.InputSystem;
+
+
+namespace BigSock.Item {
+
+	/*
+		A class that represents an item that provides passive stat boosts.
+	*/
+	public abstract class PassiveItemBase : ItemBase {
+		/*
+			The modifier of the item.
+		*/
+		public ICharacterStats Modifier { get; set; }
+
+
+	}
+}
\ No newline at end of file
diff --git a/MrBigsock/Assets/Code/Item/Base/PassiveItemBase.cs.meta b/MrBigsock/Assets/Code/Item/Base/PassiveItemBase.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..d264b9a2f2dfb6752f394787448ba76f09828638
--- /dev/null
+++ b/MrBigsock/Assets/Code/Item/Base/PassiveItemBase.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 779b8b8f25258cf4983c1ac9d442cb8c
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/MrBigsock/Assets/Code/Item/Base/TriggerType.cs b/MrBigsock/Assets/Code/Item/Base/TriggerType.cs
new file mode 100644
index 0000000000000000000000000000000000000000..5ea86686ea3a336febb9af898ac444e10196e4c8
--- /dev/null
+++ b/MrBigsock/Assets/Code/Item/Base/TriggerType.cs
@@ -0,0 +1,20 @@
+using System.Collections;
+using System;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.InputSystem;
+
+
+namespace BigSock.Item {
+
+	/*
+		The type of trigger that activates the item's effect.
+	*/
+	public enum TriggerType {
+		None,
+		OnKill,
+		OnAttack,
+		OnHit,
+		OnDamage,
+	}
+}
\ No newline at end of file
diff --git a/MrBigsock/Assets/Code/Item/Base/TriggerType.cs.meta b/MrBigsock/Assets/Code/Item/Base/TriggerType.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..de080a71d83b00ed33ee9f7a465d794301ca6be0
--- /dev/null
+++ b/MrBigsock/Assets/Code/Item/Base/TriggerType.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 39ba995ac8dbf00498eb995c98f71402
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/MrBigsock/Assets/Code/Item/EventParams.meta b/MrBigsock/Assets/Code/Item/EventParams.meta
new file mode 100644
index 0000000000000000000000000000000000000000..ed6be0cab34c3379653b0fff94562c4f859679aa
--- /dev/null
+++ b/MrBigsock/Assets/Code/Item/EventParams.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 9b2c87c112ffd1a4dbacf0405214b30b
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/MrBigsock/Assets/Code/Item/EventParams/CharEventParams.cs b/MrBigsock/Assets/Code/Item/EventParams/CharEventParams.cs
new file mode 100644
index 0000000000000000000000000000000000000000..fa52874e947279b9a67f649f19856c68a79ecf53
--- /dev/null
+++ b/MrBigsock/Assets/Code/Item/EventParams/CharEventParams.cs
@@ -0,0 +1,27 @@
+using System.Collections;
+using System;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.InputSystem;
+
+
+namespace BigSock {
+
+	/*
+		Class that represents the parameters of a generic character event.
+	*/
+	public class CharEventParams : ICharEventParams {
+		/*
+			The character that own's the event.
+		*/
+		public Character Source { get; set; }
+
+		/*
+			The character that triggered the event. (If any)
+			ex.: OnKill -> the killed enemy. OnDamage -> Enemy that dealt the damage.
+		*/
+		public Character Target { get; set; }
+
+
+	}
+}
\ No newline at end of file
diff --git a/MrBigsock/Assets/Code/Item/EventParams/CharEventParams.cs.meta b/MrBigsock/Assets/Code/Item/EventParams/CharEventParams.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..d594b12ab5bbbb768b16315448091d7d834a9106
--- /dev/null
+++ b/MrBigsock/Assets/Code/Item/EventParams/CharEventParams.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 69465ff2019a5bb428771fa1c74e4f41
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/MrBigsock/Assets/Code/Item/EventParams/ICharEventParms.cs b/MrBigsock/Assets/Code/Item/EventParams/ICharEventParms.cs
new file mode 100644
index 0000000000000000000000000000000000000000..8204f89ee6af36be47ef6fd8c0c851be92a4e4a7
--- /dev/null
+++ b/MrBigsock/Assets/Code/Item/EventParams/ICharEventParms.cs
@@ -0,0 +1,27 @@
+using System.Collections;
+using System;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.InputSystem;
+
+
+namespace BigSock {
+
+	/*
+		Interface that represents the parameters of a generic character event.
+	*/
+	public interface ICharEventParams {
+		/*
+			The character that own's the event.
+		*/
+		Character Source { get; }
+
+		/*
+			The character that triggered the event. (If any)
+			ex.: OnKill -> the killed enemy. OnDamage -> Enemy that dealt the damage.
+		*/
+		Character Target { get; }
+
+
+	}
+}
\ No newline at end of file
diff --git a/MrBigsock/Assets/Code/Item/EventParams/ICharEventParms.cs.meta b/MrBigsock/Assets/Code/Item/EventParams/ICharEventParms.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..1161d2b5f7ac2f2593134a08c62c6209280e364e
--- /dev/null
+++ b/MrBigsock/Assets/Code/Item/EventParams/ICharEventParms.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: f392d99fa5161e04791a522b7becc933
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/MrBigsock/Assets/Code/Item/Inventory.cs b/MrBigsock/Assets/Code/Item/Inventory.cs
new file mode 100644
index 0000000000000000000000000000000000000000..26c4656832fcf521ae5c2ccb164171312edf8f28
--- /dev/null
+++ b/MrBigsock/Assets/Code/Item/Inventory.cs
@@ -0,0 +1,49 @@
+using System.Collections;
+using System;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.InputSystem;
+
+
+namespace BigSock.Item {
+
+	/*
+		An inventory of a character.
+	*/
+	public class Inventory {
+		/*
+			The items in the inventory.
+		*/
+		public List<IItem> Items { get; protected set; } = new List<IItem>();
+
+		/*
+			The modifier from all the passives.
+		*/
+		public ICharacterStats Modifier { get; protected set; } = new CharacterStats();
+
+
+		/*
+			The max number of items the inventory can hold.
+		*/
+		public int Cap { get; set; } = 3;
+
+
+		/*
+			Adds an item to the inventory and manages changes.
+		*/
+		public bool AddItem(IItem item) {
+			if(Items.Count >= Cap) return false;
+			
+			Items.Add(item);
+
+			// Add the passive effects to the modifier.
+			if(item is PassiveItemBase passive) {
+				Modifier = Modifier.Add(passive.Modifier);
+			}
+			//! Add ifs to handle the other 2 types of items.
+
+			return true;
+		}
+
+	}
+}
\ No newline at end of file
diff --git a/MrBigsock/Assets/Code/Item/Inventory.cs.meta b/MrBigsock/Assets/Code/Item/Inventory.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..f35fc65d8c981db6397e9cf58dcbfce6192b66ca
--- /dev/null
+++ b/MrBigsock/Assets/Code/Item/Inventory.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 91c4ea7605d846e4a8ea5208d2217072
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/MrBigsock/Assets/Code/Item/Items.meta b/MrBigsock/Assets/Code/Item/Items.meta
new file mode 100644
index 0000000000000000000000000000000000000000..0970a19ed437c91a865ed0fc2b94c0e2d91cbd3d
--- /dev/null
+++ b/MrBigsock/Assets/Code/Item/Items.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: dbcc22c9f61379c4e9676afbe7eb8feb
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/MrBigsock/Assets/Code/Item/Items/RunningShoes.cs b/MrBigsock/Assets/Code/Item/Items/RunningShoes.cs
new file mode 100644
index 0000000000000000000000000000000000000000..618fdef69119bb7a3d8b3287512a4671f78d51b1
--- /dev/null
+++ b/MrBigsock/Assets/Code/Item/Items/RunningShoes.cs
@@ -0,0 +1,24 @@
+using System.Collections;
+using System;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.InputSystem;
+
+
+namespace BigSock.Item {
+
+	/*
+		A passive item that increases user's running speed by 50%.
+	*/
+	public class RunningShoes : PassiveItemBase {
+		public RunningShoes() {
+			Id = 101;
+			Name = "Running Shoes";
+			Description = "Increases movement speed by 50%";
+			Modifier = new CharacterStats{
+				MoveSpeed = 0.5f,
+			};
+		}
+
+	}
+}
\ No newline at end of file
diff --git a/MrBigsock/Assets/Code/Item/Items/RunningShoes.cs.meta b/MrBigsock/Assets/Code/Item/Items/RunningShoes.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..791c93b1d01a17f77cac06836a39c1c2ff9c6cd1
--- /dev/null
+++ b/MrBigsock/Assets/Code/Item/Items/RunningShoes.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 12406fa4fcf374142ad545946396cbde
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/MrBigsock/Assets/Code/Item/Root.meta b/MrBigsock/Assets/Code/Item/Root.meta
new file mode 100644
index 0000000000000000000000000000000000000000..ebb119032c2e6e46d02d06a64330f22c93ccccc2
--- /dev/null
+++ b/MrBigsock/Assets/Code/Item/Root.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: fad9ca94bd85fe14da5644defaaf3820
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/MrBigsock/Assets/Code/PlayerController.cs b/MrBigsock/Assets/Code/PlayerController.cs
index 0711143f7fb5eb7509ca9b5ae0815edff431225b..dea96a53c392c6ca7d24236fa97ad348aa716053 100644
--- a/MrBigsock/Assets/Code/PlayerController.cs
+++ b/MrBigsock/Assets/Code/PlayerController.cs
@@ -4,6 +4,7 @@ using System.Collections.Generic;
 using UnityEngine;
 using UnityEngine.InputSystem;
 using BigSock.UI;
+using BigSock.Item;
 
 
 namespace BigSock {
@@ -36,13 +37,13 @@ namespace BigSock {
 
 
 			// Start is called before the first frame update 
-			void Start()
+			protected override void Start()
 			{
-					rb = GetComponent<Rigidbody2D>();
-					animator = GetComponent<Animator>();
-					spriteRenderer = GetComponent<SpriteRenderer>();
-					hpBar.SetMaxHealth(Convert.ToInt32(MaxHP));
-					hpBar.SetHealth(Convert.ToInt32(HP));
+				base.Start();
+				animator = GetComponent<Animator>();
+				spriteRenderer = GetComponent<SpriteRenderer>();
+				hpBar.SetMaxHealth(Convert.ToInt32(MaxHP));
+				hpBar.SetHealth(Convert.ToInt32(HP));
 			}
 
 
@@ -102,6 +103,11 @@ namespace BigSock {
 
 					
 				}
+
+				//!! Code for testing the new item stuff.
+				if(Input.GetKeyDown(KeyCode.Space)) {
+					TryPickUpItem(new RunningShoes());
+				}
 			}
 
 
diff --git a/MrBigsock/Assets/Code/orc/EnemyController.cs b/MrBigsock/Assets/Code/orc/EnemyController.cs
index d6e7282d9bef271b2f0f1d636e669d26cb88cb87..5e286172793b1282a79e2395d207afc5c7f592cc 100644
--- a/MrBigsock/Assets/Code/orc/EnemyController.cs
+++ b/MrBigsock/Assets/Code/orc/EnemyController.cs
@@ -28,8 +28,8 @@ namespace BigSock {
 
 		// private Collider2D_Proxy secondCollider;
 		
-		protected virtual void Start(){
-			rb = GetComponent<Rigidbody2D>();
+		protected override void Start() {
+			base.Start();
 
 			m_Animator = gameObject.GetComponent<Animator>();