Elemental resistance calculation changes
This commit is contained in:
@@ -26,7 +26,7 @@ namespace Zennysoft.Ma.Adapter
|
|||||||
int incomingDamage,
|
int incomingDamage,
|
||||||
double elementalResistance)
|
double elementalResistance)
|
||||||
{
|
{
|
||||||
var result = incomingDamage - (int)(incomingDamage * (elementalResistance / 100));
|
var result = incomingDamage - (int)(incomingDamage * elementalResistance);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using Chickensoft.GodotNodeInterfaces;
|
using Chickensoft.GodotNodeInterfaces;
|
||||||
|
using Godot;
|
||||||
using System.Collections.Immutable;
|
using System.Collections.Immutable;
|
||||||
using Zennysoft.Game.Ma;
|
using Zennysoft.Game.Ma;
|
||||||
|
|
||||||
@@ -30,6 +31,8 @@ namespace Zennysoft.Ma.Adapter.Entity
|
|||||||
|
|
||||||
public IDefenseComponent DefenseComponent { get; }
|
public IDefenseComponent DefenseComponent { get; }
|
||||||
|
|
||||||
|
public ElementalResistanceSet ElementalResistanceSet { get; }
|
||||||
|
|
||||||
public int InitialHP { get; }
|
public int InitialHP { get; }
|
||||||
|
|
||||||
public int InitialAttack { get; }
|
public int InitialAttack { get; }
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<Project Sdk="Godot.NET.Sdk/4.4.1">
|
<Project Sdk="Godot.NET.Sdk/4.4.0">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net8.0</TargetFramework>
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
<EnableDynamicLoading>true</EnableDynamicLoading>
|
<EnableDynamicLoading>true</EnableDynamicLoading>
|
||||||
|
|||||||
@@ -1,38 +0,0 @@
|
|||||||
<Project Sdk="Godot.NET.Sdk/4.4.0">
|
|
||||||
<PropertyGroup>
|
|
||||||
<TargetFramework>net8.0</TargetFramework>
|
|
||||||
<EnableDynamicLoading>true</EnableDynamicLoading>
|
|
||||||
<WarningsAsErrors>CS9057</WarningsAsErrors>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<PackageReference Include="Chickensoft.AutoInject" Version="2.5.0" />
|
|
||||||
<PackageReference Include="Chickensoft.GodotNodeInterfaces" Version="2.4.0" />
|
|
||||||
<PackageReference Include="Chickensoft.Introspection" Version="2.2.0" />
|
|
||||||
<PackageReference Include="Chickensoft.Introspection.Generator" Version="2.2.0" />
|
|
||||||
<PackageReference Include="Chickensoft.LogicBlocks" Version="5.16.0" />
|
|
||||||
<PackageReference Include="Chickensoft.LogicBlocks.DiagramGenerator" Version="5.16.0" />
|
|
||||||
<PackageReference Include="Chickensoft.SaveFileBuilder" Version="1.1.0" />
|
|
||||||
<PackageReference Include="Chickensoft.Serialization.Godot" Version="0.7.6" />
|
|
||||||
<PackageReference Include="GodotSharp.SourceGenerators" Version="2.6.0-250131-2115.Release" />
|
|
||||||
<PackageReference Include="SimpleInjector" Version="5.5.0" />
|
|
||||||
<PackageReference Include="SSH.NET" Version="2024.2.0" />
|
|
||||||
<PackageReference Include="System.IO.Abstractions" Version="22.0.11" />
|
|
||||||
<PackageReference Include="Zeroconf" Version="3.7.16" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<None Include=".editorconfig" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ProjectReference Include="..\Zennysoft.Game.Godot.Implementation\Zennysoft.Game.Implementation.csproj" />
|
|
||||||
<ProjectReference Include="..\Zennysoft.Game.Ma.Implementation\Zennysoft.Ma.Adapter.csproj" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<PackageReference Update="Godot.SourceGenerators" Version="4.4.0-dev.2" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<PackageReference Update="GodotSharp" Version="4.4.0-dev.2" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<PackageReference Update="GodotSharpEditor" Version="4.4.0-dev.2" />
|
|
||||||
</ItemGroup>
|
|
||||||
</Project>
|
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
using Chickensoft.AutoInject;
|
using Chickensoft.AutoInject;
|
||||||
using Chickensoft.Introspection;
|
using Chickensoft.Introspection;
|
||||||
using Godot;
|
using Godot;
|
||||||
|
using Godot.Collections;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Immutable;
|
using System.Collections.Immutable;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@@ -45,6 +46,18 @@ public abstract partial class Enemy : CharacterBody3D, IEnemy, IProvide<IEnemyLo
|
|||||||
|
|
||||||
[Export] public int ExpGiven { get; set; } = 10;
|
[Export] public int ExpGiven { get; set; } = 10;
|
||||||
|
|
||||||
|
[Export] public double AeolicResistance { get; set; }
|
||||||
|
|
||||||
|
[Export] public double HydricResistance { get; set; }
|
||||||
|
|
||||||
|
[Export] public double IgenousResistance { get; set; }
|
||||||
|
|
||||||
|
[Export] public double FerrumResistance { get; set; }
|
||||||
|
|
||||||
|
[Export] public double TelluricResistance { get; set; }
|
||||||
|
|
||||||
|
public ElementalResistanceSet ElementalResistanceSet => new ElementalResistanceSet(AeolicResistance, HydricResistance, IgenousResistance, FerrumResistance, TelluricResistance);
|
||||||
|
|
||||||
[Node] private AudioStreamPlayer3D _absorbSFX { get; set; } = default!;
|
[Node] private AudioStreamPlayer3D _absorbSFX { get; set; } = default!;
|
||||||
[Node] private AudioStreamPlayer3D _hitSFX { get; set; } = default!;
|
[Node] private AudioStreamPlayer3D _hitSFX { get; set; } = default!;
|
||||||
[Node] private AudioStreamPlayer3D _morphSFX { get; set; } = default!;
|
[Node] private AudioStreamPlayer3D _morphSFX { get; set; } = default!;
|
||||||
|
|||||||
@@ -127,7 +127,7 @@ public class EffectService
|
|||||||
var currentEnemies = currentRoom.EnemiesInRoom;
|
var currentEnemies = currentRoom.EnemiesInRoom;
|
||||||
foreach (var enemy in currentEnemies)
|
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);
|
enemy.HealthComponent.Damage(damageDealt);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -116,14 +116,14 @@ public partial class ThrownItem : RigidBody3D, IThrownItem
|
|||||||
_effectService.TeleportToRandomRoom(enemy);
|
_effectService.TeleportToRandomRoom(enemy);
|
||||||
break;
|
break;
|
||||||
default:
|
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);
|
enemy.HealthComponent.Damage(damageDealt);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
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);
|
enemy.HealthComponent.Damage(damageDealt);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -407,7 +407,7 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide<IPlayer>
|
|||||||
}
|
}
|
||||||
|
|
||||||
var baseAttack = new AttackData(totalDamage, element, ignoreDefense, ignoreElementalResistance);
|
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);
|
enemy.HealthComponent.Damage(damageDealt);
|
||||||
|
|
||||||
if (((Weapon)EquipmentComponent.EquippedWeapon.Value).WeaponTag == WeaponTag.Knockback && enemy is IKnockbackable knockbackable)
|
if (((Weapon)EquipmentComponent.EquippedWeapon.Value).WeaponTag == WeaponTag.Knockback && enemy is IKnockbackable knockbackable)
|
||||||
|
|||||||
Reference in New Issue
Block a user