diff --git a/Zennysoft.Game.Ma.Implementation/Calculators/IDamageCalculator.cs b/Zennysoft.Game.Ma.Implementation/Calculators/IDamageCalculator.cs index 9d067ae2..0f301a45 100644 --- a/Zennysoft.Game.Ma.Implementation/Calculators/IDamageCalculator.cs +++ b/Zennysoft.Game.Ma.Implementation/Calculators/IDamageCalculator.cs @@ -26,7 +26,7 @@ namespace Zennysoft.Ma.Adapter int incomingDamage, double elementalResistance) { - var result = incomingDamage - (int)(incomingDamage * (elementalResistance / 100)); + var result = incomingDamage - (int)(incomingDamage * elementalResistance); return result; } } diff --git a/Zennysoft.Game.Ma.Implementation/Entity/IEnemy.cs b/Zennysoft.Game.Ma.Implementation/Entity/IEnemy.cs index 1f94bd56..3d81f4c8 100644 --- a/Zennysoft.Game.Ma.Implementation/Entity/IEnemy.cs +++ b/Zennysoft.Game.Ma.Implementation/Entity/IEnemy.cs @@ -1,4 +1,5 @@ using Chickensoft.GodotNodeInterfaces; +using Godot; using System.Collections.Immutable; using Zennysoft.Game.Ma; @@ -30,6 +31,8 @@ namespace Zennysoft.Ma.Adapter.Entity public IDefenseComponent DefenseComponent { get; } + public ElementalResistanceSet ElementalResistanceSet { get; } + public int InitialHP { get; } public int InitialAttack { get; } diff --git a/Zennysoft.Game.Ma/Ma.csproj b/Zennysoft.Game.Ma/Ma.csproj index 0ca2470c..853d610d 100644 --- a/Zennysoft.Game.Ma/Ma.csproj +++ b/Zennysoft.Game.Ma/Ma.csproj @@ -1,4 +1,4 @@ - + net8.0 true diff --git a/Zennysoft.Game.Ma/Ma.csproj.old.5 b/Zennysoft.Game.Ma/Ma.csproj.old.5 deleted file mode 100644 index 853d610d..00000000 --- a/Zennysoft.Game.Ma/Ma.csproj.old.5 +++ /dev/null @@ -1,38 +0,0 @@ - - - net8.0 - true - CS9057 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Zennysoft.Game.Ma/src/enemy/Enemy.cs b/Zennysoft.Game.Ma/src/enemy/Enemy.cs index 024ca2a1..977dffbf 100644 --- a/Zennysoft.Game.Ma/src/enemy/Enemy.cs +++ b/Zennysoft.Game.Ma/src/enemy/Enemy.cs @@ -1,6 +1,7 @@ using Chickensoft.AutoInject; using Chickensoft.Introspection; using Godot; +using Godot.Collections; using System; using System.Collections.Immutable; using System.Linq; @@ -45,6 +46,18 @@ public abstract partial class Enemy : CharacterBody3D, IEnemy, IProvide new ElementalResistanceSet(AeolicResistance, HydricResistance, IgenousResistance, FerrumResistance, TelluricResistance); + [Node] private AudioStreamPlayer3D _absorbSFX { get; set; } = default!; [Node] private AudioStreamPlayer3D _hitSFX { get; set; } = default!; [Node] private AudioStreamPlayer3D _morphSFX { get; set; } = default!; diff --git a/Zennysoft.Game.Ma/src/items/EffectService.cs b/Zennysoft.Game.Ma/src/items/EffectService.cs index ca4154a8..037fcbfb 100644 --- a/Zennysoft.Game.Ma/src/items/EffectService.cs +++ b/Zennysoft.Game.Ma/src/items/EffectService.cs @@ -127,7 +127,7 @@ public class EffectService var currentEnemies = currentRoom.EnemiesInRoom; foreach (var enemy in currentEnemies) { - var damageDealt = DamageCalculator.CalculateDamage(new AttackData(20, elementType), 10, ElementalResistanceSet.None); + var damageDealt = DamageCalculator.CalculateDamage(new AttackData(20, elementType), 10, enemy.ElementalResistanceSet); enemy.HealthComponent.Damage(damageDealt); } } diff --git a/Zennysoft.Game.Ma/src/items/thrown/ThrownItem.cs b/Zennysoft.Game.Ma/src/items/thrown/ThrownItem.cs index 0f539c57..c02d02f8 100644 --- a/Zennysoft.Game.Ma/src/items/thrown/ThrownItem.cs +++ b/Zennysoft.Game.Ma/src/items/thrown/ThrownItem.cs @@ -116,14 +116,14 @@ public partial class ThrownItem : RigidBody3D, IThrownItem _effectService.TeleportToRandomRoom(enemy); break; default: - var damageDealt = DamageCalculator.CalculateDamage(new AttackData(throwableItem.ThrowDamage, throwableItem.ElementType), 10, ElementalResistanceSet.None); + var damageDealt = DamageCalculator.CalculateDamage(new AttackData(throwableItem.ThrowDamage, throwableItem.ElementType), 10, enemy.ElementalResistanceSet); enemy.HealthComponent.Damage(damageDealt); break; } } else { - var damageDealt = DamageCalculator.CalculateDamage(new AttackData(ItemThatIsThrown.ThrowDamage, ElementType.None), 10, ElementalResistanceSet.None); + var damageDealt = DamageCalculator.CalculateDamage(new AttackData(ItemThatIsThrown.ThrowDamage, ElementType.None), 10, enemy.ElementalResistanceSet); enemy.HealthComponent.Damage(damageDealt); } } diff --git a/Zennysoft.Game.Ma/src/player/Player.cs b/Zennysoft.Game.Ma/src/player/Player.cs index 0e58960e..200d5180 100644 --- a/Zennysoft.Game.Ma/src/player/Player.cs +++ b/Zennysoft.Game.Ma/src/player/Player.cs @@ -407,7 +407,7 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide } var baseAttack = new AttackData(totalDamage, element, ignoreDefense, ignoreElementalResistance); - var damageDealt = DamageCalculator.CalculateDamage(baseAttack, enemy.DefenseComponent.CurrentDefense.Value, ElementalResistanceSet.None); + var damageDealt = DamageCalculator.CalculateDamage(baseAttack, enemy.DefenseComponent.CurrentDefense.Value, enemy.ElementalResistanceSet); enemy.HealthComponent.Damage(damageDealt); if (((Weapon)EquipmentComponent.EquippedWeapon.Value).WeaponTag == WeaponTag.Knockback && enemy is IKnockbackable knockbackable)