Files
Continentis/Assets/Scripts/MainGame/Card/Templates/CardLogicBase_Attack.cs
SoulliesOfficial 9b1b5ca93f initial
2025-10-03 00:02:43 -04:00

78 lines
3.1 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 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
{
/// <summary>
/// 设置伤害值
/// </summary>
/// <param name="additive">是否为叠加true为叠加false为覆盖</param>
/// <param name="originalDamage">原始伤害值仅在additive为true时有效否则被覆盖为BaseDamage</param>
/// <param name="damageOffset">伤害增量</param>
protected void SetDamage(bool additive, int originalDamage, int damageOffset)
{
SetVariableAttribute("Damage", additive, originalDamage, damageOffset);
}
/// <summary>
/// 斩击伤害计算,伤害=基础伤害+(力量加成+敏捷加成)/2
/// </summary>
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));
}
/// <summary>
/// 打击伤害计算,伤害=基础伤害+力量加成
/// </summary>
protected void SetDamage_Strike(bool additive = false, int originalDamage = 0)
{
int damageOffset = user.GetAttribute("PhysicsDamageDealtOffsetFromStrength");
SetDamage(additive, originalDamage, damageOffset);
}
/// <summary>
/// 突刺伤害计算,伤害=基础伤害+敏捷加成
/// </summary>
protected void SetDamage_Prick(bool additive = false, int originalDamage = 0)
{
int damageOffset = user.GetAttribute("PhysicsDamageDealtOffsetFromAgility");
SetDamage(additive, originalDamage, damageOffset);
}
/// <summary>
/// 奥术伤害计算,伤害=基础伤害+智力加成
/// </summary>
protected void SetDamage_Arcane(bool additive = false, int originalDamage = 0)
{
int damageOffset = user.GetAttribute("MagicDamageDealtOffsetFromIntelligence");
SetDamage(additive, originalDamage, damageOffset);
}
/// <summary>
/// 契术伤害计算,伤害=基础伤害+魅力加成
/// </summary>
protected void SetDamage_Sorcery(bool additive = false, int originalDamage = 0)
{
int damageOffset = user.GetAttribute("MagicDamageDealtOffsetFromCharisma");
SetDamage(additive, originalDamage, damageOffset);
}
}
}