Test masks and finish implementing armor
This commit is contained in:
@@ -4,5 +4,6 @@ public enum AccessoryTag
|
||||
{
|
||||
None,
|
||||
HalfVTConsumption,
|
||||
StatusEffectImmunity
|
||||
StatusEffectImmunity,
|
||||
BoostEXPGainRate
|
||||
}
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
namespace Zennysoft.Ma.Adapter;
|
||||
|
||||
public enum ArmorTag
|
||||
{
|
||||
None,
|
||||
DegradeOnHit
|
||||
}
|
||||
@@ -15,4 +15,4 @@ public enum WeaponTag
|
||||
TripleAttack,
|
||||
ElementalProjectile,
|
||||
KineticProjectile
|
||||
}
|
||||
}
|
||||
@@ -5,4 +5,6 @@ public interface IArmor : IEquipableItem, IAugmentableItem
|
||||
public void IncreaseArmorDefense(int bonus);
|
||||
|
||||
public void DecreaseArmorDefense(int lowerAmount);
|
||||
|
||||
public ArmorTag ArmorTag { get; }
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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")
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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")
|
||||
@@ -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
|
||||
|
||||
@@ -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")
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
34
Zennysoft.Game.Ma/src/items/armor/resources/HolyBarrier.tres
Normal file
34
Zennysoft.Game.Ma/src/items/armor/resources/HolyBarrier.tres
Normal file
@@ -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")
|
||||
@@ -16,7 +16,7 @@ Name = "Rusted Plate"
|
||||
Description = ""
|
||||
SpawnRate = 0.5
|
||||
BonusAttack = 0
|
||||
BonusDefense = 4
|
||||
BonusDefense = 3
|
||||
BonusLuck = 0
|
||||
BonusHP = 0
|
||||
BonusVT = 0
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -248,6 +248,12 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide<IPlayer>
|
||||
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<IPlayer>
|
||||
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<IPlayer>
|
||||
|
||||
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)
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user