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; } } }