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 7beca59de59b1edf8fb6f9cda726108d63aaee2c..879b73c921ff96fefcb9fd148ee5bfdabc5dface 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 bd74fdd3b23a7dd5f0ef149b226700c37db581ab..24ee265464fbc01154705917a6885ae8d48b7c95 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 0000000000000000000000000000000000000000..df46c8fa38e23334904d458301a01d343e0fca09 --- /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 618fdef69119bb7a3d8b3287512a4671f78d51b1..bc30d62e397d1d00e055242bff6cebe4abf251cd 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 791c93b1d01a17f77cac06836a39c1c2ff9c6cd1..0000000000000000000000000000000000000000 --- 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 3fbe2ec8df0b725ba7d7c9bafceaff99a19dcd1e..95ef3e8cadcf3956e2d0c0694f65dafe6da27d8f 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()); } }