2025-10-23 00:49:44 -04:00
|
|
|
|
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)
|
|
|
|
|
|
{
|
2025-11-15 12:17:34 -05:00
|
|
|
|
card.SetAttribute("DisplayDamage", mainLogic.GetTargetedFinalDamage(target));
|
2025-10-23 00:49:44 -04:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
protected override void UntargetingEffect()
|
|
|
|
|
|
{
|
2025-11-15 12:17:34 -05:00
|
|
|
|
card.SetAttribute("DisplayDamage", mainLogic.GetNoTargetFinalDamage());
|
2025-10-23 00:49:44 -04:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 设置伤害值
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="additive">是否为叠加,true为叠加,false为覆盖</param>
|
|
|
|
|
|
/// <param name="originalDamage">原始伤害值,仅在additive为true时有效,否则被覆盖为BaseDamage</param>
|
|
|
|
|
|
/// <param name="damageOffset">伤害增量</param>
|
|
|
|
|
|
public void SetDamage(int damageOffset, bool additive = false, int originalDamage = 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
card.SetVariableAttribute("Damage", damageOffset, additive, originalDamage);
|
|
|
|
|
|
}
|
2025-12-13 23:28:23 -05:00
|
|
|
|
|
|
|
|
|
|
public void SetDamage_Default()
|
|
|
|
|
|
{
|
|
|
|
|
|
SetDamage(0);
|
|
|
|
|
|
}
|
2025-10-23 00:49:44 -04:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 斩击伤害计算,伤害=基础伤害+(力量加成+敏捷加成)/2
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
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);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 打击伤害计算,伤害=基础伤害+力量加成
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public void SetDamage_Strike(bool additive = false, int originalDamage = 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
int damageOffset = user.GetAttribute("OffsetFromStrength");
|
|
|
|
|
|
SetDamage(damageOffset, additive, originalDamage);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 突刺伤害计算,伤害=基础伤害+敏捷加成
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public void SetDamage_Prick(bool additive = false, int originalDamage = 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
int damageOffset = user.GetAttribute("OffsetFromAgility");
|
|
|
|
|
|
SetDamage(damageOffset, additive, originalDamage);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 奥术伤害计算,伤害=基础伤害+智力加成
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public void SetDamage_Arcane(bool additive = false, int originalDamage = 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
int damageOffset = user.GetAttribute("OffsetFromIntelligence");
|
|
|
|
|
|
SetDamage(damageOffset, additive, originalDamage);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 契术伤害计算,伤害=基础伤害+魅力加成
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public void SetDamage_Sorcery(bool additive = false, int originalDamage = 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
int damageOffset = user.GetAttribute("OffsetFromCharisma");
|
|
|
|
|
|
SetDamage(damageOffset, additive, originalDamage);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|