Damage calculation including elemental buff/resistance
This commit is contained in:
18
src/system/stats/DamageCalculator.cs
Normal file
18
src/system/stats/DamageCalculator.cs
Normal file
@@ -0,0 +1,18 @@
|
||||
using Godot;
|
||||
|
||||
namespace GameJamDungeon
|
||||
{
|
||||
public static class DamageCalculator
|
||||
{
|
||||
public static double CalculatePlayerDamage(int attackDamage, PlayerStatInfo playerStatInfo, EnemyStatInfo enemyStatInfo)
|
||||
{
|
||||
var baseDamage = attackDamage + playerStatInfo.BaseAttack;
|
||||
var elementADamage = (playerStatInfo.BaseElementADamageBonus > 0 ? playerStatInfo.BaseElementADamageBonus - enemyStatInfo.ElementAResistance : 0) / 100;
|
||||
var elementBDamage = (playerStatInfo.BaseElementBDamageBonus > 0 ? playerStatInfo.BaseElementBDamageBonus - enemyStatInfo.ElementBResistance : 0) / 100;
|
||||
var elementCDamage = (playerStatInfo.BaseElementCDamageBonus > 0 ? playerStatInfo.BaseElementCDamageBonus - enemyStatInfo.ElementCResistance : 0) / 100;
|
||||
var elementalBonusDamage = baseDamage + (baseDamage * elementADamage) + (baseDamage * elementBDamage) + (baseDamage * elementCDamage);
|
||||
var calculatedDamage = elementalBonusDamage - enemyStatInfo.BaseDefense;
|
||||
return calculatedDamage;
|
||||
}
|
||||
}
|
||||
}
|
||||
17
src/system/stats/ICharacterStats.cs
Normal file
17
src/system/stats/ICharacterStats.cs
Normal file
@@ -0,0 +1,17 @@
|
||||
namespace GameJamDungeon
|
||||
{
|
||||
public interface ICharacterStats
|
||||
{
|
||||
public double MaximumHP { get; }
|
||||
|
||||
public int BaseAttack { get; }
|
||||
|
||||
public int BaseDefense { get; }
|
||||
|
||||
public double ElementAResistance { get; }
|
||||
|
||||
public double ElementBResistance { get; }
|
||||
|
||||
public double ElementCResistance { get; }
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user