From da2eebd6a058652fcd3164ea23f482e5777f17d6 Mon Sep 17 00:00:00 2001
From: Ny Bruker <robinhs@stud.ntnu.no>
Date: Fri, 30 Sep 2022 16:07:54 +0200
Subject: [PATCH] Added a conditional item to test. - Also moved some classes
 around to avoid future clutter.

---
 .../Base/{ => Conditional}/OnDeathItemBase.cs |  0
 .../Base/{ => Conditional}/OnFireItemBase.cs  |  0
 .../Base/{ => Conditional}/OnHealItemBase.cs  |  0
 .../Base/{ => Conditional}/OnHitItemBase.cs   |  0
 .../Base/{ => Conditional}/OnKillItemBase.cs  |  0
 .../{ => Conditional}/OnTakeDamageItemBase.cs |  0
 .../Code/Item/Base/ConditionalItemBase.cs     |  3 ++
 MrBigsock/Assets/Code/Item/Base/ItemBase.cs   |  6 ++--
 .../Assets/Code/Item/Items/ItemFourEyes.cs    | 31 +++++++++++++++++++
 .../{RunningShoes.cs => ItemRunningShoes.cs}  | 13 ++++----
 .../Code/Item/Items/RunningShoes.cs.meta      | 11 -------
 MrBigsock/Assets/Code/PlayerController.cs     |  5 ++-
 12 files changed, 48 insertions(+), 21 deletions(-)
 rename MrBigsock/Assets/Code/Item/Base/{ => Conditional}/OnDeathItemBase.cs (100%)
 rename MrBigsock/Assets/Code/Item/Base/{ => Conditional}/OnFireItemBase.cs (100%)
 rename MrBigsock/Assets/Code/Item/Base/{ => Conditional}/OnHealItemBase.cs (100%)
 rename MrBigsock/Assets/Code/Item/Base/{ => Conditional}/OnHitItemBase.cs (100%)
 rename MrBigsock/Assets/Code/Item/Base/{ => Conditional}/OnKillItemBase.cs (100%)
 rename MrBigsock/Assets/Code/Item/Base/{ => Conditional}/OnTakeDamageItemBase.cs (100%)
 create mode 100644 MrBigsock/Assets/Code/Item/Items/ItemFourEyes.cs
 rename MrBigsock/Assets/Code/Item/Items/{RunningShoes.cs => ItemRunningShoes.cs} (54%)
 delete mode 100644 MrBigsock/Assets/Code/Item/Items/RunningShoes.cs.meta

diff --git a/MrBigsock/Assets/Code/Item/Base/OnDeathItemBase.cs b/MrBigsock/Assets/Code/Item/Base/Conditional/OnDeathItemBase.cs
similarity index 100%
rename from MrBigsock/Assets/Code/Item/Base/OnDeathItemBase.cs
rename to MrBigsock/Assets/Code/Item/Base/Conditional/OnDeathItemBase.cs
diff --git a/MrBigsock/Assets/Code/Item/Base/OnFireItemBase.cs b/MrBigsock/Assets/Code/Item/Base/Conditional/OnFireItemBase.cs
similarity index 100%
rename from MrBigsock/Assets/Code/Item/Base/OnFireItemBase.cs
rename to MrBigsock/Assets/Code/Item/Base/Conditional/OnFireItemBase.cs
diff --git a/MrBigsock/Assets/Code/Item/Base/OnHealItemBase.cs b/MrBigsock/Assets/Code/Item/Base/Conditional/OnHealItemBase.cs
similarity index 100%
rename from MrBigsock/Assets/Code/Item/Base/OnHealItemBase.cs
rename to MrBigsock/Assets/Code/Item/Base/Conditional/OnHealItemBase.cs
diff --git a/MrBigsock/Assets/Code/Item/Base/OnHitItemBase.cs b/MrBigsock/Assets/Code/Item/Base/Conditional/OnHitItemBase.cs
similarity index 100%
rename from MrBigsock/Assets/Code/Item/Base/OnHitItemBase.cs
rename to MrBigsock/Assets/Code/Item/Base/Conditional/OnHitItemBase.cs
diff --git a/MrBigsock/Assets/Code/Item/Base/OnKillItemBase.cs b/MrBigsock/Assets/Code/Item/Base/Conditional/OnKillItemBase.cs
similarity index 100%
rename from MrBigsock/Assets/Code/Item/Base/OnKillItemBase.cs
rename to MrBigsock/Assets/Code/Item/Base/Conditional/OnKillItemBase.cs
diff --git a/MrBigsock/Assets/Code/Item/Base/OnTakeDamageItemBase.cs b/MrBigsock/Assets/Code/Item/Base/Conditional/OnTakeDamageItemBase.cs
similarity index 100%
rename from MrBigsock/Assets/Code/Item/Base/OnTakeDamageItemBase.cs
rename to MrBigsock/Assets/Code/Item/Base/Conditional/OnTakeDamageItemBase.cs
diff --git a/MrBigsock/Assets/Code/Item/Base/ConditionalItemBase.cs b/MrBigsock/Assets/Code/Item/Base/ConditionalItemBase.cs
index 7beca59d..879b73c9 100644
--- a/MrBigsock/Assets/Code/Item/Base/ConditionalItemBase.cs
+++ b/MrBigsock/Assets/Code/Item/Base/ConditionalItemBase.cs
@@ -11,6 +11,9 @@ namespace BigSock.Item {
 		A class that represents an item that an effect when a condition is meet.
 	*/
 	public abstract class ConditionalItemBase : ItemBase {
+
+		public static readonly Random RND = new Random();
+
 		/*
 			The type of trigger this item uses.
 		*/
diff --git a/MrBigsock/Assets/Code/Item/Base/ItemBase.cs b/MrBigsock/Assets/Code/Item/Base/ItemBase.cs
index bd74fdd3..24ee2654 100644
--- a/MrBigsock/Assets/Code/Item/Base/ItemBase.cs
+++ b/MrBigsock/Assets/Code/Item/Base/ItemBase.cs
@@ -14,17 +14,17 @@ namespace BigSock.Item {
 		/*
 			The name of the item.
 		*/
-		public string Name { get; protected set; }
+		public abstract string Name { get; }
 
 		/*
 			The description of the item.
 		*/
-		public string Description { get; protected set; }
+		public abstract string Description { get; }
 
 		/*
 			The id of the item.
 		*/
-		public ulong Id { get; protected set; }
+		public abstract ulong Id { get; }
 
 	}
 }
\ No newline at end of file
diff --git a/MrBigsock/Assets/Code/Item/Items/ItemFourEyes.cs b/MrBigsock/Assets/Code/Item/Items/ItemFourEyes.cs
new file mode 100644
index 00000000..df46c8fa
--- /dev/null
+++ b/MrBigsock/Assets/Code/Item/Items/ItemFourEyes.cs
@@ -0,0 +1,31 @@
+using System.Collections;
+using System;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.InputSystem;
+
+
+namespace BigSock.Item {
+	
+	/*
+		An item that adds a 30% chance to deal double damage on hit.
+	*/
+	public class ItemFourEyes : OnHitItemBase {	
+		public override ulong Id => 201;
+		public override string Name => "Four Eyes";
+		public override string Description => "30% chance to deal double dammage.";
+
+		public static readonly double CHANCE = 0.3;
+
+		public override void Handler(Character source, Character target, AttackStats attack) {
+			var roll = RND.NextDouble();
+			if(roll >= CHANCE) {
+				attack.Damage *= 2;
+				MonoBehaviour.print($"[ItemFourEyes.Handler()] Hit. ({roll:P1} >= {CHANCE:P1})")
+			} else {
+				MonoBehaviour.print($"[ItemFourEyes.Handler()] Miss. ({roll:P1} < {CHANCE:P1})")
+			}
+		}
+
+	}
+}
\ No newline at end of file
diff --git a/MrBigsock/Assets/Code/Item/Items/RunningShoes.cs b/MrBigsock/Assets/Code/Item/Items/ItemRunningShoes.cs
similarity index 54%
rename from MrBigsock/Assets/Code/Item/Items/RunningShoes.cs
rename to MrBigsock/Assets/Code/Item/Items/ItemRunningShoes.cs
index 618fdef6..bc30d62e 100644
--- a/MrBigsock/Assets/Code/Item/Items/RunningShoes.cs
+++ b/MrBigsock/Assets/Code/Item/Items/ItemRunningShoes.cs
@@ -6,15 +6,16 @@ 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%";
+	public class ItemRunningShoes : PassiveItemBase {	
+		public override ulong Id => 101;
+		public override string Name => "Running Shoes";
+		public override string Description => "Increases movement speed by 50%";
+
+		public ItemRunningShoes() {
 			Modifier = new CharacterStats{
 				MoveSpeed = 0.5f,
 			};
diff --git a/MrBigsock/Assets/Code/Item/Items/RunningShoes.cs.meta b/MrBigsock/Assets/Code/Item/Items/RunningShoes.cs.meta
deleted file mode 100644
index 791c93b1..00000000
--- a/MrBigsock/Assets/Code/Item/Items/RunningShoes.cs.meta
+++ /dev/null
@@ -1,11 +0,0 @@
-fileFormatVersion: 2
-guid: 12406fa4fcf374142ad545946396cbde
-MonoImporter:
-  externalObjects: {}
-  serializedVersion: 2
-  defaultReferences: []
-  executionOrder: 0
-  icon: {instanceID: 0}
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 
diff --git a/MrBigsock/Assets/Code/PlayerController.cs b/MrBigsock/Assets/Code/PlayerController.cs
index 3fbe2ec8..95ef3e8c 100644
--- a/MrBigsock/Assets/Code/PlayerController.cs
+++ b/MrBigsock/Assets/Code/PlayerController.cs
@@ -44,6 +44,9 @@ namespace BigSock {
 				spriteRenderer = GetComponent<SpriteRenderer>();
 				hpBar.SetMaxHealth(Convert.ToInt32(MaxHP));
 				hpBar.SetHealth(Convert.ToInt32(HP));
+
+				//!! DEBUG: Add item to player at start to test if it works.
+				TryPickUpItem(new ItemFourEyes());
 			}
 
 
@@ -106,7 +109,7 @@ namespace BigSock {
 
 				//!! Code for testing the new item stuff.
 				if(Input.GetKeyDown(KeyCode.Space)) {
-					TryPickUpItem(new RunningShoes());
+					TryPickUpItem(new ItemRunningShoes());
 				}
 			}
 
-- 
GitLab