From 2da4b8958d590d35aa975701b624cb022787fe61 Mon Sep 17 00:00:00 2001 From: Zenny Date: Mon, 3 Mar 2025 22:49:32 -0800 Subject: [PATCH] Implement Stat Raising items --- src/items/armor/Armor.cs | 3 ++ src/items/effect/EffectItem.cs | 29 +++++++++++++++++++ .../effect/resources/ClothResolution.tres | 19 ++++++++++++ src/items/effect/resources/Cosmos.tres | 19 ++++++++++++ .../effect/resources/FerrousResolution.tres | 19 ++++++++++++ src/items/throwable/ThrowableItemTag.cs | 3 ++ src/items/weapons/Weapon.cs | 2 ++ 7 files changed, 94 insertions(+) create mode 100644 src/items/effect/resources/ClothResolution.tres create mode 100644 src/items/effect/resources/Cosmos.tres create mode 100644 src/items/effect/resources/FerrousResolution.tres diff --git a/src/items/armor/Armor.cs b/src/items/armor/Armor.cs index 48711285..afb99ad8 100644 --- a/src/items/armor/Armor.cs +++ b/src/items/armor/Armor.cs @@ -35,6 +35,9 @@ public partial class Armor : Node3D, IEquipableItem public int Defense => _armorStats.Defense; + public void IncreaseArmorDefense(int bonus) => _armorStats.Defense += bonus; + + public ImmutableList ItemTags => [.. _armorStats.ItemTags]; public bool IsEquipped { get; set; } diff --git a/src/items/effect/EffectItem.cs b/src/items/effect/EffectItem.cs index fe672435..44064e61 100644 --- a/src/items/effect/EffectItem.cs +++ b/src/items/effect/EffectItem.cs @@ -54,6 +54,12 @@ public partial class EffectItem : Node3D, IUsableItem DealElementalDamageToAllEnemiesInRoom(ElementType.Hydric); if (_effectItemStats.UsableItemTags.Contains(UsableItemTag.SwapHPAndVT)) SwapHPandVT(); + if (_effectItemStats.UsableItemTags.Contains(UsableItemTag.RaiseCurrentWeaponAttack)) + RaiseCurrentWeaponAttack(); + if (_effectItemStats.UsableItemTags.Contains(UsableItemTag.RaiseCurrentDefenseArmor)) + RaiseCurrentArmorDefense(); + if (_effectItemStats.UsableItemTags.Contains(UsableItemTag.RaiseLevel)) + RaiseLevel(); if (_effectItemStats.UsableItemTags.Contains(UsableItemTag.RandomEffect)) RandomEffect(); @@ -189,4 +195,27 @@ public partial class EffectItem : Node3D, IUsableItem _effectItemStats.UsableItemTags.Add(randomEffect); Use(); } + + private void RaiseCurrentWeaponAttack() + { + if (Player.EquippedWeapon.Value.ItemName == string.Empty) + return; + + var currentWeapon = Player.EquippedWeapon.Value; + currentWeapon.IncreaseWeaponAttack(1); + } + + private void RaiseCurrentArmorDefense() + { + if (Player.EquippedArmor.Value.ItemName == string.Empty) + return; + + var currentArmor = Player.EquippedArmor.Value; + currentArmor.IncreaseArmorDefense(1); + } + + private void RaiseLevel() + { + Player.LevelUp(); + } } diff --git a/src/items/effect/resources/ClothResolution.tres b/src/items/effect/resources/ClothResolution.tres new file mode 100644 index 00000000..f11bb56e --- /dev/null +++ b/src/items/effect/resources/ClothResolution.tres @@ -0,0 +1,19 @@ +[gd_resource type="Resource" script_class="EffectItemStats" load_steps=3 format=3 uid="uid://lx7xkoj6w8gr"] + +[ext_resource type="Texture2D" uid="uid://c7v5pm32sedkg" path="res://src/items/effect/textures/entropic seal.PNG" id="1_1mm10"] +[ext_resource type="Script" uid="uid://b5w4iw4iqmxtn" path="res://src/items/effect/EffectItemStats.cs" id="2_53wiy"] + +[resource] +script = ExtResource("2_53wiy") +UsableItemTags = Array[int]([11]) +ElementalDamageType = 0 +Name = "Cloth Resolution" +Description = "Raises currently equipped armor's defense by 1." +Texture = ExtResource("1_1mm10") +SpawnRate = 0.5 +ThrowSpeed = 12.0 +HealHPAmount = 0 +HealVTAmount = 0 +ThrowDamage = 5 +ItemTags = Array[int]([]) +metadata/_custom_type_script = "uid://b5w4iw4iqmxtn" diff --git a/src/items/effect/resources/Cosmos.tres b/src/items/effect/resources/Cosmos.tres new file mode 100644 index 00000000..1d94de2e --- /dev/null +++ b/src/items/effect/resources/Cosmos.tres @@ -0,0 +1,19 @@ +[gd_resource type="Resource" script_class="EffectItemStats" load_steps=3 format=3 uid="uid://bg2fsie2g3j6q"] + +[ext_resource type="Texture2D" uid="uid://c7v5pm32sedkg" path="res://src/items/effect/textures/entropic seal.PNG" id="1_dn5pk"] +[ext_resource type="Script" uid="uid://b5w4iw4iqmxtn" path="res://src/items/effect/EffectItemStats.cs" id="2_n1557"] + +[resource] +script = ExtResource("2_n1557") +UsableItemTags = Array[int]([12]) +ElementalDamageType = 0 +Name = "Cosmos" +Description = "Raises current Level by 1." +Texture = ExtResource("1_dn5pk") +SpawnRate = 0.5 +ThrowSpeed = 12.0 +HealHPAmount = 0 +HealVTAmount = 0 +ThrowDamage = 5 +ItemTags = Array[int]([]) +metadata/_custom_type_script = "uid://b5w4iw4iqmxtn" diff --git a/src/items/effect/resources/FerrousResolution.tres b/src/items/effect/resources/FerrousResolution.tres new file mode 100644 index 00000000..256bb412 --- /dev/null +++ b/src/items/effect/resources/FerrousResolution.tres @@ -0,0 +1,19 @@ +[gd_resource type="Resource" script_class="EffectItemStats" load_steps=3 format=3 uid="uid://cx8kpmyhl5vkj"] + +[ext_resource type="Texture2D" uid="uid://c7v5pm32sedkg" path="res://src/items/effect/textures/entropic seal.PNG" id="1_6wt4w"] +[ext_resource type="Script" uid="uid://b5w4iw4iqmxtn" path="res://src/items/effect/EffectItemStats.cs" id="1_uojwo"] + +[resource] +script = ExtResource("1_uojwo") +UsableItemTags = Array[int]([10]) +ElementalDamageType = 0 +Name = "Ferrous Resolution" +Description = "Raises currently equipped weapon's attack by 1." +Texture = ExtResource("1_6wt4w") +SpawnRate = 0.5 +ThrowSpeed = 12.0 +HealHPAmount = 0 +HealVTAmount = 0 +ThrowDamage = 5 +ItemTags = Array[int]([]) +metadata/_custom_type_script = "uid://b5w4iw4iqmxtn" diff --git a/src/items/throwable/ThrowableItemTag.cs b/src/items/throwable/ThrowableItemTag.cs index 93ef1b79..9f5798b2 100644 --- a/src/items/throwable/ThrowableItemTag.cs +++ b/src/items/throwable/ThrowableItemTag.cs @@ -20,6 +20,9 @@ public enum UsableItemTag AbsorbHPFromAllEnemiesInRoom, HealsAllInRoomToMaxHP, DealElementalDamageToAllEnemiesInRoom, + RaiseCurrentWeaponAttack, + RaiseCurrentDefenseArmor, + RaiseLevel, RandomEffect, } diff --git a/src/items/weapons/Weapon.cs b/src/items/weapons/Weapon.cs index 667ebf8e..28fe77d2 100644 --- a/src/items/weapons/Weapon.cs +++ b/src/items/weapons/Weapon.cs @@ -51,6 +51,8 @@ public partial class Weapon : Node3D, IInventoryItem, IEquipableItem public double ElementalDamageBonus => _weaponStats.ElementalDamageBonus; + public void IncreaseWeaponAttack(int bonus) => _weaponStats.Damage += bonus; + public bool IsEquipped { get; set; } public void OnReady()