using Continentis.MainGame.Character; using UnityEngine; namespace Continentis.MainGame.Card { public abstract partial class CardLogicBase_Attack : CardLogicBase { protected override void TargetingEffect(CharacterBase target) { SetAttribute("DisplayDamage", GetFinalDamage(target)); } protected override void UntargetingEffect() { SetAttribute("DisplayDamage", GetAttribute("Damage")); } } public abstract partial class CardLogicBase_Attack { /// /// 设置伤害值 /// /// 是否为叠加,true为叠加,false为覆盖 /// 原始伤害值,仅在additive为true时有效,否则被覆盖为BaseDamage /// 伤害增量 protected void SetDamage(bool additive, int originalDamage, int damageOffset) { SetVariableAttribute("Damage", additive, originalDamage, damageOffset); } /// /// 斩击伤害计算,伤害=基础伤害+(力量加成+敏捷加成)/2 /// protected void SetDamage_Slash(bool additive = false, int originalDamage = 0) { float rawDamageOffsetFromStrength = user.GetRawAttribute("PhysicsDamageDealtOffsetFromStrength"); float rawDamageOffsetFromAgility = user.GetRawAttribute("PhysicsDamageDealtOffsetFromAgility"); SetDamage(additive, originalDamage, Mathf.RoundToInt((rawDamageOffsetFromStrength + rawDamageOffsetFromAgility) / 2f)); } /// /// 打击伤害计算,伤害=基础伤害+力量加成 /// protected void SetDamage_Strike(bool additive = false, int originalDamage = 0) { int damageOffset = user.GetAttribute("PhysicsDamageDealtOffsetFromStrength"); SetDamage(additive, originalDamage, damageOffset); } /// /// 突刺伤害计算,伤害=基础伤害+敏捷加成 /// protected void SetDamage_Prick(bool additive = false, int originalDamage = 0) { int damageOffset = user.GetAttribute("PhysicsDamageDealtOffsetFromAgility"); SetDamage(additive, originalDamage, damageOffset); } /// /// 奥术伤害计算,伤害=基础伤害+智力加成 /// protected void SetDamage_Arcane(bool additive = false, int originalDamage = 0) { int damageOffset = user.GetAttribute("MagicDamageDealtOffsetFromIntelligence"); SetDamage(additive, originalDamage, damageOffset); } /// /// 契术伤害计算,伤害=基础伤害+魅力加成 /// protected void SetDamage_Sorcery(bool additive = false, int originalDamage = 0) { int damageOffset = user.GetAttribute("MagicDamageDealtOffsetFromCharisma"); SetDamage(additive, originalDamage, damageOffset); } } }