using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Constant;
namespace Milimoe.FunGame.Core.Model
{
///
/// 记录所有伤害的组成部分
///
public readonly struct DamageRecord
{
///
/// 记录所有伤害的组成部分
///
public DamageRecord()
{
ExpectedDamage = 0;
BeforeDamageBonus = [];
CriticalDamage = 0;
DefenseReduction = 0;
AfterDamageBonus = [];
MagicEfficacyDamage = 0;
FinalDamage = 0;
ShieldReduction = 0;
ActualDamage = 0;
}
///
/// 记录所有伤害的组成部分
///
public DamageRecord(DamageType type, DamageResult result, double expectedDamage, Dictionary beforeDamageBonus, double criticalDamage, double defenseReduction, Dictionary afterDamageBonus, double magicEfficacyDamage, double finalDamage, double shieldReduction, double actualDamage)
{
DamageType = type;
DamageResult = result;
ExpectedDamage = expectedDamage;
BeforeDamageBonus = beforeDamageBonus;
CriticalDamage = criticalDamage;
DefenseReduction = defenseReduction;
AfterDamageBonus = afterDamageBonus;
MagicEfficacyDamage = magicEfficacyDamage;
FinalDamage = finalDamage;
ShieldReduction = shieldReduction;
ActualDamage = actualDamage;
}
///
/// 伤害类型
///
public DamageType DamageType { get; } = DamageType.Physical;
///
/// 伤害结果
///
public DamageResult DamageResult { get; } = DamageResult.Normal;
///
/// 伤害基底(期望)
///
public double ExpectedDamage { get; }
///
/// 特效伤害加成记录(乘区1:暴击和减伤计算前)
///
public Dictionary BeforeDamageBonus { get; }
///
/// 暴击伤害
///
public double CriticalDamage { get; }
///
/// 伤害减免
///
public double DefenseReduction { get; }
///
/// 特效伤害加成记录(乘区2:暴击和减伤计算后)
///
public Dictionary AfterDamageBonus { get; }
///
/// 魔法效能修正
///
public double MagicEfficacyDamage { get; }
///
/// 最终伤害
///
public double FinalDamage { get; }
///
/// 护盾减免
///
public double ShieldReduction { get; }
///
/// 实际造成伤害
///
public double ActualDamage { get; }
}
}