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