From 02e6ee2f70722b3eb1daf421f32fc18a5376ee9e Mon Sep 17 00:00:00 2001 From: Zenny Date: Tue, 17 Feb 2026 00:50:19 -0800 Subject: [PATCH] Test masks and finish implementing armor --- .../Equipment/Tags/AccessoryTag.cs | 3 +- .../Equipment/Tags/ArmorTag.cs | 7 ++++ .../Equipment/Tags/WeaponTag.cs | 2 +- .../Item/IArmor.cs | 2 ++ .../accessory/resources/MaskAvarice.tres | 2 +- .../accessory/resources/MaskDestruction.tres | 2 +- .../items/accessory/resources/MaskGuilt.tres | 2 +- .../accessory/resources/MaskObstinance.tres | 2 +- .../accessory/resources/MaskOfMalice.tres | 27 +++++++++++++++ .../accessory/resources/MaskShunned.tres | 2 +- .../items/accessory/resources/MaskSloth.tres | 2 +- .../accessory/resources/MaskSuffering.tres | 2 +- .../items/accessory/resources/MaskWisdom.tres | 27 +++++++++++++++ .../items/accessory/resources/MaskZeal.tres | 2 +- .../accessory/resources/StonePrison.tres | 27 +++++++++++++++ Zennysoft.Game.Ma/src/items/armor/Armor.cs | 2 ++ .../src/items/armor/ArmorStats.cs | 5 +++ .../armor/resources/AtonersAdornments.tres | 3 +- .../armor/resources/CeremonialVestments.tres | 3 +- .../src/items/armor/resources/Commitment.tres | 3 +- .../src/items/armor/resources/DevicLayer.tres | 3 +- .../items/armor/resources/GoddessRobe.tres | 3 +- .../items/armor/resources/HolyBarrier.tres | 34 +++++++++++++++++++ .../items/armor/resources/RustedPlate.tres | 2 +- .../src/items/armor/resources/Stoic.tres | 3 +- .../items/armor/resources/WoodenArmament.tres | 3 +- Zennysoft.Game.Ma/src/player/Player.cs | 17 ++++++++++ Zennysoft.Game.Ma/src/player/Player.tscn | 1 + 28 files changed, 175 insertions(+), 18 deletions(-) create mode 100644 Zennysoft.Game.Ma.Implementation/Equipment/Tags/ArmorTag.cs create mode 100644 Zennysoft.Game.Ma/src/items/accessory/resources/MaskOfMalice.tres create mode 100644 Zennysoft.Game.Ma/src/items/accessory/resources/MaskWisdom.tres create mode 100644 Zennysoft.Game.Ma/src/items/accessory/resources/StonePrison.tres create mode 100644 Zennysoft.Game.Ma/src/items/armor/resources/HolyBarrier.tres diff --git a/Zennysoft.Game.Ma.Implementation/Equipment/Tags/AccessoryTag.cs b/Zennysoft.Game.Ma.Implementation/Equipment/Tags/AccessoryTag.cs index 3ea730b39..89031e975 100644 --- a/Zennysoft.Game.Ma.Implementation/Equipment/Tags/AccessoryTag.cs +++ b/Zennysoft.Game.Ma.Implementation/Equipment/Tags/AccessoryTag.cs @@ -4,5 +4,6 @@ public enum AccessoryTag { None, HalfVTConsumption, - StatusEffectImmunity + StatusEffectImmunity, + BoostEXPGainRate } diff --git a/Zennysoft.Game.Ma.Implementation/Equipment/Tags/ArmorTag.cs b/Zennysoft.Game.Ma.Implementation/Equipment/Tags/ArmorTag.cs new file mode 100644 index 000000000..e564fa543 --- /dev/null +++ b/Zennysoft.Game.Ma.Implementation/Equipment/Tags/ArmorTag.cs @@ -0,0 +1,7 @@ +namespace Zennysoft.Ma.Adapter; + +public enum ArmorTag +{ + None, + DegradeOnHit +} diff --git a/Zennysoft.Game.Ma.Implementation/Equipment/Tags/WeaponTag.cs b/Zennysoft.Game.Ma.Implementation/Equipment/Tags/WeaponTag.cs index 608acd459..a01032918 100644 --- a/Zennysoft.Game.Ma.Implementation/Equipment/Tags/WeaponTag.cs +++ b/Zennysoft.Game.Ma.Implementation/Equipment/Tags/WeaponTag.cs @@ -15,4 +15,4 @@ public enum WeaponTag TripleAttack, ElementalProjectile, KineticProjectile -} +} \ No newline at end of file diff --git a/Zennysoft.Game.Ma.Implementation/Item/IArmor.cs b/Zennysoft.Game.Ma.Implementation/Item/IArmor.cs index ea7b4bf16..8c067a33d 100644 --- a/Zennysoft.Game.Ma.Implementation/Item/IArmor.cs +++ b/Zennysoft.Game.Ma.Implementation/Item/IArmor.cs @@ -5,4 +5,6 @@ public interface IArmor : IEquipableItem, IAugmentableItem public void IncreaseArmorDefense(int bonus); public void DecreaseArmorDefense(int lowerAmount); + + public ArmorTag ArmorTag { get; } } diff --git a/Zennysoft.Game.Ma/src/items/accessory/resources/MaskAvarice.tres b/Zennysoft.Game.Ma/src/items/accessory/resources/MaskAvarice.tres index b5360494c..fded4cb44 100644 --- a/Zennysoft.Game.Ma/src/items/accessory/resources/MaskAvarice.tres +++ b/Zennysoft.Game.Ma/src/items/accessory/resources/MaskAvarice.tres @@ -11,7 +11,7 @@ Description = "Raises Luck" SpawnRate = 0.1 BonusAttack = 0 BonusDefense = 0 -BonusLuck = 0.3 +BonusLuck = 15 BonusHP = 0 BonusVT = 0 AeolicResistance = 0 diff --git a/Zennysoft.Game.Ma/src/items/accessory/resources/MaskDestruction.tres b/Zennysoft.Game.Ma/src/items/accessory/resources/MaskDestruction.tres index 71c0a81d7..c483e2556 100644 --- a/Zennysoft.Game.Ma/src/items/accessory/resources/MaskDestruction.tres +++ b/Zennysoft.Game.Ma/src/items/accessory/resources/MaskDestruction.tres @@ -11,7 +11,7 @@ Description = "Raises ATK." SpawnRate = 0.1 BonusAttack = 3 BonusDefense = 0 -BonusLuck = 0.05 +BonusLuck = 0 BonusHP = 0 BonusVT = 0 AeolicResistance = 0 diff --git a/Zennysoft.Game.Ma/src/items/accessory/resources/MaskGuilt.tres b/Zennysoft.Game.Ma/src/items/accessory/resources/MaskGuilt.tres index 9a2704140..8e4229cb3 100644 --- a/Zennysoft.Game.Ma/src/items/accessory/resources/MaskGuilt.tres +++ b/Zennysoft.Game.Ma/src/items/accessory/resources/MaskGuilt.tres @@ -11,7 +11,7 @@ Description = "Raises MAX HP, MAX VT, ATK, DEF" SpawnRate = 0.1 BonusAttack = 2 BonusDefense = 2 -BonusLuck = 0.05 +BonusLuck = 0 BonusHP = 25 BonusVT = 25 AeolicResistance = 0 diff --git a/Zennysoft.Game.Ma/src/items/accessory/resources/MaskObstinance.tres b/Zennysoft.Game.Ma/src/items/accessory/resources/MaskObstinance.tres index 1355664a0..45159d891 100644 --- a/Zennysoft.Game.Ma/src/items/accessory/resources/MaskObstinance.tres +++ b/Zennysoft.Game.Ma/src/items/accessory/resources/MaskObstinance.tres @@ -11,7 +11,7 @@ Description = "Raises DEF." SpawnRate = 0.1 BonusAttack = 0 BonusDefense = 3 -BonusLuck = 0.05 +BonusLuck = 0 BonusHP = 0 BonusVT = 0 AeolicResistance = 0 diff --git a/Zennysoft.Game.Ma/src/items/accessory/resources/MaskOfMalice.tres b/Zennysoft.Game.Ma/src/items/accessory/resources/MaskOfMalice.tres new file mode 100644 index 000000000..061b86bcb --- /dev/null +++ b/Zennysoft.Game.Ma/src/items/accessory/resources/MaskOfMalice.tres @@ -0,0 +1,27 @@ +[gd_resource type="Resource" script_class="AccessoryStats" load_steps=3 format=3 uid="uid://crxh6vr26s6g1"] + +[ext_resource type="Texture2D" uid="uid://cy7qvpjahblv3" path="res://src/items/accessory/textures/Mask of Zeal.png" id="1_b0dvh"] +[ext_resource type="Script" uid="uid://b8arlmivk68b" path="res://src/items/accessory/AccessoryStats.cs" id="2_dw5c8"] + +[resource] +script = ExtResource("2_dw5c8") +AccessoryTag = 0 +Name = "Mask of the Goddess of Malice" +Description = "Raises Attack, Defense, and Luck." +SpawnRate = 0.1 +BonusAttack = 3 +BonusDefense = 3 +BonusLuck = 15 +BonusHP = 0 +BonusVT = 0 +AeolicResistance = 0 +TelluricResistance = 0 +HydricResistance = 0 +IgneousResistance = 0 +FerrumResistance = 0 +HolyResistance = 0 +CurseResistance = 0 +ThrowSpeed = 12.0 +ThrowDamage = 5 +ItemTag = 0 +Texture = ExtResource("1_b0dvh") diff --git a/Zennysoft.Game.Ma/src/items/accessory/resources/MaskShunned.tres b/Zennysoft.Game.Ma/src/items/accessory/resources/MaskShunned.tres index 25185780c..9248990a0 100644 --- a/Zennysoft.Game.Ma/src/items/accessory/resources/MaskShunned.tres +++ b/Zennysoft.Game.Ma/src/items/accessory/resources/MaskShunned.tres @@ -11,7 +11,7 @@ Description = "Status Effect Immunity" SpawnRate = 0.1 BonusAttack = 0 BonusDefense = 0 -BonusLuck = 0.05 +BonusLuck = 0 BonusHP = 0 BonusVT = 0 AeolicResistance = 0 diff --git a/Zennysoft.Game.Ma/src/items/accessory/resources/MaskSloth.tres b/Zennysoft.Game.Ma/src/items/accessory/resources/MaskSloth.tres index 35e8ae940..bf84fa0df 100644 --- a/Zennysoft.Game.Ma/src/items/accessory/resources/MaskSloth.tres +++ b/Zennysoft.Game.Ma/src/items/accessory/resources/MaskSloth.tres @@ -11,7 +11,7 @@ Description = "Halves VT Depletion Rate" SpawnRate = 0.1 BonusAttack = 0 BonusDefense = 0 -BonusLuck = 0.05 +BonusLuck = 0 BonusHP = 0 BonusVT = 0 AeolicResistance = 0 diff --git a/Zennysoft.Game.Ma/src/items/accessory/resources/MaskSuffering.tres b/Zennysoft.Game.Ma/src/items/accessory/resources/MaskSuffering.tres index de4bd090f..fa33c3fd1 100644 --- a/Zennysoft.Game.Ma/src/items/accessory/resources/MaskSuffering.tres +++ b/Zennysoft.Game.Ma/src/items/accessory/resources/MaskSuffering.tres @@ -11,7 +11,7 @@ Description = "Raises MAX VT" SpawnRate = 0.1 BonusAttack = 0 BonusDefense = 0 -BonusLuck = 0.05 +BonusLuck = 0 BonusHP = 0 BonusVT = 50 AeolicResistance = 0 diff --git a/Zennysoft.Game.Ma/src/items/accessory/resources/MaskWisdom.tres b/Zennysoft.Game.Ma/src/items/accessory/resources/MaskWisdom.tres new file mode 100644 index 000000000..3e87cd881 --- /dev/null +++ b/Zennysoft.Game.Ma/src/items/accessory/resources/MaskWisdom.tres @@ -0,0 +1,27 @@ +[gd_resource type="Resource" script_class="AccessoryStats" load_steps=3 format=3 uid="uid://b81h3vxtmvq8y"] + +[ext_resource type="Texture2D" uid="uid://m0f8xmp8l2fe" path="res://src/items/accessory/textures/mask placeholder.png" id="1_iu13c"] +[ext_resource type="Script" uid="uid://b8arlmivk68b" path="res://src/items/accessory/AccessoryStats.cs" id="2_73i6n"] + +[resource] +script = ExtResource("2_73i6n") +AccessoryTag = 3 +Name = "Mask of the Goddess of Wisdom" +Description = "Increases EXP gained." +SpawnRate = 0.1 +BonusAttack = 0 +BonusDefense = 0 +BonusLuck = 0 +BonusHP = 0 +BonusVT = 0 +AeolicResistance = 0 +TelluricResistance = 0 +HydricResistance = 0 +IgneousResistance = 0 +FerrumResistance = 0 +HolyResistance = 0 +CurseResistance = 0 +ThrowSpeed = 12.0 +ThrowDamage = 5 +ItemTag = 0 +Texture = ExtResource("1_iu13c") diff --git a/Zennysoft.Game.Ma/src/items/accessory/resources/MaskZeal.tres b/Zennysoft.Game.Ma/src/items/accessory/resources/MaskZeal.tres index f17aa2da1..8bd85811c 100644 --- a/Zennysoft.Game.Ma/src/items/accessory/resources/MaskZeal.tres +++ b/Zennysoft.Game.Ma/src/items/accessory/resources/MaskZeal.tres @@ -7,7 +7,7 @@ script = ExtResource("1_0u4rq") AccessoryTag = 0 Name = "Mask of the Goddess of Zeal" -Description = "Raises MAX HP" +Description = "Raises MAX HP." SpawnRate = 0.1 BonusAttack = 0 BonusDefense = 0 diff --git a/Zennysoft.Game.Ma/src/items/accessory/resources/StonePrison.tres b/Zennysoft.Game.Ma/src/items/accessory/resources/StonePrison.tres new file mode 100644 index 000000000..db686f0e8 --- /dev/null +++ b/Zennysoft.Game.Ma/src/items/accessory/resources/StonePrison.tres @@ -0,0 +1,27 @@ +[gd_resource type="Resource" script_class="AccessoryStats" load_steps=3 format=3 uid="uid://c77yinw37htrx"] + +[ext_resource type="Texture2D" uid="uid://m0f8xmp8l2fe" path="res://src/items/accessory/textures/mask placeholder.png" id="1_ri4uv"] +[ext_resource type="Script" uid="uid://b8arlmivk68b" path="res://src/items/accessory/AccessoryStats.cs" id="2_fpys5"] + +[resource] +script = ExtResource("2_fpys5") +AccessoryTag = 0 +Name = "Stone Prison" +Description = "Cannot be unequipped." +SpawnRate = 0.1 +BonusAttack = 0 +BonusDefense = 0 +BonusLuck = 0 +BonusHP = 0 +BonusVT = 0 +AeolicResistance = 0 +TelluricResistance = 0 +HydricResistance = 0 +IgneousResistance = 0 +FerrumResistance = 0 +HolyResistance = 0 +CurseResistance = 0 +ThrowSpeed = 12.0 +ThrowDamage = 5 +ItemTag = 19 +Texture = ExtResource("1_ri4uv") diff --git a/Zennysoft.Game.Ma/src/items/armor/Armor.cs b/Zennysoft.Game.Ma/src/items/armor/Armor.cs index 0af1d95ea..0707aaf86 100644 --- a/Zennysoft.Game.Ma/src/items/armor/Armor.cs +++ b/Zennysoft.Game.Ma/src/items/armor/Armor.cs @@ -88,5 +88,7 @@ public partial class Armor : Node3D, IArmor public bool Glued { get; set; } + public ArmorTag ArmorTag => Stats.ArmorTag; + public Texture2D GetTexture() => Stats.Texture; } diff --git a/Zennysoft.Game.Ma/src/items/armor/ArmorStats.cs b/Zennysoft.Game.Ma/src/items/armor/ArmorStats.cs index 42f625c42..650617307 100644 --- a/Zennysoft.Game.Ma/src/items/armor/ArmorStats.cs +++ b/Zennysoft.Game.Ma/src/items/armor/ArmorStats.cs @@ -1,6 +1,7 @@ using Chickensoft.Introspection; using Chickensoft.Serialization; using Godot; +using Zennysoft.Ma.Adapter; using Zennysoft.Ma.Adapter.Entity; namespace Zennysoft.Game.Ma; @@ -37,5 +38,9 @@ public partial class ArmorStats : InventoryItemStats [Save("armor_curse_resistance")] private double _curseResistance { get; set; } = 0; + [Export] + [Save("armor_tag")] + public ArmorTag ArmorTag { get; set; } = ArmorTag.None; + public ElementalResistanceSet ElementalResistanceSet => new ElementalResistanceSet(_aeolicResistance, _hydricResistance, _igneousResistance, _ferrumResistance, _telluricResistance, _holyResistance, _curseResistance); } diff --git a/Zennysoft.Game.Ma/src/items/armor/resources/AtonersAdornments.tres b/Zennysoft.Game.Ma/src/items/armor/resources/AtonersAdornments.tres index 960fab0c1..b76c5e3be 100644 --- a/Zennysoft.Game.Ma/src/items/armor/resources/AtonersAdornments.tres +++ b/Zennysoft.Game.Ma/src/items/armor/resources/AtonersAdornments.tres @@ -12,12 +12,13 @@ _igneousResistance = 0.0 _ferrumResistance = 0.0 _holyResistance = 0.0 _curseResistance = 0.0 +ArmorTag = 0 Name = "Atoner's Adornments" Description = "" SpawnRate = 0.25 BonusAttack = 0 BonusDefense = 0 -BonusLuck = 0.05 +BonusLuck = 0 BonusHP = 0 BonusVT = 0 AeolicResistance = 0 diff --git a/Zennysoft.Game.Ma/src/items/armor/resources/CeremonialVestments.tres b/Zennysoft.Game.Ma/src/items/armor/resources/CeremonialVestments.tres index 806fc2b9e..9cdac9564 100644 --- a/Zennysoft.Game.Ma/src/items/armor/resources/CeremonialVestments.tres +++ b/Zennysoft.Game.Ma/src/items/armor/resources/CeremonialVestments.tres @@ -12,12 +12,13 @@ _igneousResistance = 0.0 _ferrumResistance = 0.0 _holyResistance = 0.0 _curseResistance = 0.0 +ArmorTag = 0 Name = "Ceremonial Vestments" Description = "+1 DEF" SpawnRate = 0.2 BonusAttack = 0 BonusDefense = 1 -BonusLuck = 5 +BonusLuck = 0 BonusHP = 0 BonusVT = 0 AeolicResistance = 0 diff --git a/Zennysoft.Game.Ma/src/items/armor/resources/Commitment.tres b/Zennysoft.Game.Ma/src/items/armor/resources/Commitment.tres index c9ddc052e..e03285196 100644 --- a/Zennysoft.Game.Ma/src/items/armor/resources/Commitment.tres +++ b/Zennysoft.Game.Ma/src/items/armor/resources/Commitment.tres @@ -12,12 +12,13 @@ _igneousResistance = 0.0 _ferrumResistance = 0.0 _holyResistance = 0.0 _curseResistance = 0.0 +ArmorTag = 0 Name = "Commitment" Description = "Armor cannot pass beyond current floor once equipped." SpawnRate = 0.25 BonusAttack = 0 BonusDefense = 8 -BonusLuck = 0.05 +BonusLuck = 0 BonusHP = 0 BonusVT = 0 AeolicResistance = 0 diff --git a/Zennysoft.Game.Ma/src/items/armor/resources/DevicLayer.tres b/Zennysoft.Game.Ma/src/items/armor/resources/DevicLayer.tres index ae3e7c752..5eca16d8b 100644 --- a/Zennysoft.Game.Ma/src/items/armor/resources/DevicLayer.tres +++ b/Zennysoft.Game.Ma/src/items/armor/resources/DevicLayer.tres @@ -12,12 +12,13 @@ _igneousResistance = 0.0 _ferrumResistance = 0.0 _holyResistance = 0.0 _curseResistance = 0.0 +ArmorTag = 0 Name = "Devic Layers" Description = "+7 DEF" SpawnRate = 0.05 BonusAttack = 0 BonusDefense = 7 -BonusLuck = 0.05 +BonusLuck = 0 BonusHP = 0 BonusVT = 0 AeolicResistance = 0 diff --git a/Zennysoft.Game.Ma/src/items/armor/resources/GoddessRobe.tres b/Zennysoft.Game.Ma/src/items/armor/resources/GoddessRobe.tres index e0ff9c495..95fa90041 100644 --- a/Zennysoft.Game.Ma/src/items/armor/resources/GoddessRobe.tres +++ b/Zennysoft.Game.Ma/src/items/armor/resources/GoddessRobe.tres @@ -12,12 +12,13 @@ _igneousResistance = 0.0 _ferrumResistance = 0.0 _holyResistance = 0.0 _curseResistance = 0.0 +ArmorTag = 0 Name = "Goddess' Robe" Description = "+8 DEF" SpawnRate = 0.03 BonusAttack = 0 BonusDefense = 8 -BonusLuck = 0.05 +BonusLuck = 0 BonusHP = 0 BonusVT = 0 AeolicResistance = 0 diff --git a/Zennysoft.Game.Ma/src/items/armor/resources/HolyBarrier.tres b/Zennysoft.Game.Ma/src/items/armor/resources/HolyBarrier.tres new file mode 100644 index 000000000..6938236f6 --- /dev/null +++ b/Zennysoft.Game.Ma/src/items/armor/resources/HolyBarrier.tres @@ -0,0 +1,34 @@ +[gd_resource type="Resource" script_class="ArmorStats" load_steps=3 format=3 uid="uid://dfyv783nh5wyj"] + +[ext_resource type="Texture2D" uid="uid://bhhxd7cphx0q2" path="res://src/items/armor/textures/Atoner's Adornments.png" id="1_yq22p"] +[ext_resource type="Script" uid="uid://dqtp6ewvttoyu" path="res://src/items/armor/ArmorStats.cs" id="2_0uq6f"] + +[resource] +script = ExtResource("2_0uq6f") +_telluricResistance = 0.0 +_aeolicResistance = 0.0 +_hydricResistance = 0.0 +_igneousResistance = 0.0 +_ferrumResistance = 0.0 +_holyResistance = 0.0 +_curseResistance = 0.0 +ArmorTag = 1 +Name = "Holy Barrier" +Description = "Defense decreases on hit." +SpawnRate = 0.05 +BonusAttack = 0 +BonusDefense = 20 +BonusLuck = 0 +BonusHP = 0 +BonusVT = 0 +AeolicResistance = 0 +TelluricResistance = 0 +HydricResistance = 0 +IgneousResistance = 0 +FerrumResistance = 0 +HolyResistance = 0 +CurseResistance = 0 +ThrowSpeed = 12.0 +ThrowDamage = 5 +ItemTag = 0 +Texture = ExtResource("1_yq22p") diff --git a/Zennysoft.Game.Ma/src/items/armor/resources/RustedPlate.tres b/Zennysoft.Game.Ma/src/items/armor/resources/RustedPlate.tres index c22b267a6..267f4b35f 100644 --- a/Zennysoft.Game.Ma/src/items/armor/resources/RustedPlate.tres +++ b/Zennysoft.Game.Ma/src/items/armor/resources/RustedPlate.tres @@ -16,7 +16,7 @@ Name = "Rusted Plate" Description = "" SpawnRate = 0.5 BonusAttack = 0 -BonusDefense = 4 +BonusDefense = 3 BonusLuck = 0 BonusHP = 0 BonusVT = 0 diff --git a/Zennysoft.Game.Ma/src/items/armor/resources/Stoic.tres b/Zennysoft.Game.Ma/src/items/armor/resources/Stoic.tres index feaf8d7f6..e6fd5d23c 100644 --- a/Zennysoft.Game.Ma/src/items/armor/resources/Stoic.tres +++ b/Zennysoft.Game.Ma/src/items/armor/resources/Stoic.tres @@ -12,12 +12,13 @@ _igneousResistance = 0.0 _ferrumResistance = 0.0 _holyResistance = 0.0 _curseResistance = 0.0 +ArmorTag = 0 Name = "Stoic" Description = "+6 DEF" SpawnRate = 0.05 BonusAttack = 0 BonusDefense = 6 -BonusLuck = 0.05 +BonusLuck = 0 BonusHP = 0 BonusVT = 0 AeolicResistance = 0 diff --git a/Zennysoft.Game.Ma/src/items/armor/resources/WoodenArmament.tres b/Zennysoft.Game.Ma/src/items/armor/resources/WoodenArmament.tres index bd4f3969e..8096725d6 100644 --- a/Zennysoft.Game.Ma/src/items/armor/resources/WoodenArmament.tres +++ b/Zennysoft.Game.Ma/src/items/armor/resources/WoodenArmament.tres @@ -12,12 +12,13 @@ _igneousResistance = 0.0 _ferrumResistance = 0.0 _holyResistance = 0.0 _curseResistance = 0.0 +ArmorTag = 0 Name = "Wooden Armament" Description = "+3 DEF" SpawnRate = 0.3 BonusAttack = 0 BonusDefense = 3 -BonusLuck = 5 +BonusLuck = 0 BonusHP = 0 BonusVT = 0 AeolicResistance = 0 diff --git a/Zennysoft.Game.Ma/src/player/Player.cs b/Zennysoft.Game.Ma/src/player/Player.cs index 1a6aa58cd..bcf6a7b5a 100644 --- a/Zennysoft.Game.Ma/src/player/Player.cs +++ b/Zennysoft.Game.Ma/src/player/Player.cs @@ -248,6 +248,12 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide var damageReceived = DamageCalculator.CalculateDamage(damage, TotalDefense, EquipmentComponent.ElementalResistance); HealthComponent.Damage(damageReceived); SfxDatabase.Instance.Play(SoundEffect.TakeDamage); + + if (EquipmentComponent.EquippedArmor.Value.ArmorTag == ArmorTag.DegradeOnHit) + { + EquipmentComponent.EquippedArmor.Value.DecreaseArmorDefense(1); + EquipmentComponent.UpdateEquipment(EquipmentComponent.EquippedArmor.Value); + } } public void Knockback(float impulse) @@ -337,6 +343,12 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide if (weapon.WeaponTag == WeaponTag.InverseHPAttackPower) InverseHPToAttackPowerSync(HealthComponent.CurrentHP.Value); } + + if (equipable is Accessory accessory) + { + if (accessory.AccessoryTag == AccessoryTag.BoostEXPGainRate) + ExperiencePointsComponent.ModifyExpGainRate(ExperiencePointsComponent.ExpGainRate.Value + 0.2f); + } } public void Unequip(IEquipableItem equipable) @@ -352,6 +364,11 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide if (equipable is Weapon weapon && weapon.WeaponTag == WeaponTag.KineticProjectile) PersuaderCrosshair.Hide(); + if (equipable is Accessory accessory) + { + if (accessory.AccessoryTag == AccessoryTag.BoostEXPGainRate) + ExperiencePointsComponent.ModifyExpGainRate(ExperiencePointsComponent.ExpGainRate.Value - 0.2f); + } } public void ApplyNewAugment(IAugmentItem jewel, IAugmentableItem augmentableItem) diff --git a/Zennysoft.Game.Ma/src/player/Player.tscn b/Zennysoft.Game.Ma/src/player/Player.tscn index ca41b88ea..6ec91cb93 100644 --- a/Zennysoft.Game.Ma/src/player/Player.tscn +++ b/Zennysoft.Game.Ma/src/player/Player.tscn @@ -10637,6 +10637,7 @@ animations = [{ collision_layer = 802 collision_mask = 775 script = ExtResource("1_xcol5") +HealthTimerIsActive = true [node name="MainCollision" type="CollisionShape3D" parent="."] unique_name_in_owner = true