Files
Continentis/Assets/Scripts/MainGame/Card/LogicComponents/CardLogicComponent_Attack.cs
2025-11-08 09:50:55 -05:00

76 lines
3.0 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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", card.GetFinalDamage(target));
}
protected override void UntargetingEffect()
{
card.SetAttribute("DisplayDamage", card.GetUserDamage());
}
/// <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);
}
/// <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);
}
}
}