using Milimoe.FunGame.Core.Entity; namespace Milimoe.FunGame.Core.Model { /// /// 精准的分步控制伤害计算选项 /// public class DamageCalculationOptions(Character character) { /// /// 伤害来源 /// public Character Character { get; set; } = character; /// /// 完整计算伤害 /// public bool NeedCalculate { get; set; } = true; /// /// 计算减伤 /// public bool CalculateReduction { get; set; } = true; /// /// 计算暴击 /// public bool CalculateCritical { get; set; } = true; /// /// 计算闪避 /// public bool CalculateEvade { get; set; } = true; /// /// 计算护盾 /// public bool CalculateShield { get; set; } = true; /// /// 触发特效 /// public bool TriggerEffects { get; set; } = true; /// /// 无视免疫 /// public bool IgnoreImmune { get; set; } = false; /// /// 如果来源是技能 /// public Skill? Skill { get; set; } = null; /// /// 是魔法技能 /// public bool IsMagicSkill => Skill?.IsMagic ?? false; /// /// 魔法瓶颈 /// public double MagicBottleneck => IsMagicSkill ? (Skill?.MagicBottleneck ?? 0) : 0; /// /// 魔法效能% /// public double MagicEfficacy => IsMagicSkill ? (Skill?.MagicEfficacy ?? 1) : 1; /// /// 施法者智力 /// public double INT => Character.INT; /** == 调试数据记录 == **/ /// /// 伤害基底(期望) /// internal double ExpectedDamage { get; set; } = 0; /// /// 特效伤害加成记录(乘区1:暴击和减伤计算前) /// internal Dictionary BeforeDamageBonus { get; set; } = []; /// /// 暴击伤害 /// internal double CriticalDamage { get; set; } = 0; /// /// 伤害减免 /// internal double DefenseReduction { get; set; } = 0; /// /// 特效伤害加成记录(乘区2:暴击和减伤计算后) /// internal Dictionary AfterDamageBonus { get; set; } = []; /// /// 魔法效能修正 /// internal double MagicEfficacyDamage { get; set; } = 0; /// /// 最终伤害 /// internal double FinalDamage { get; set; } = 0; /// /// 护盾减免 /// internal double ShieldReduction { get; set; } = 0; /// /// 实际造成伤害 /// internal double ActualDamage { get; set; } = 0; } }