Files
Continentis/Assets/Scripts/MainGame/Card/LogicComponents/CardLogicComponent_Attack.cs
SoulliesOfficial c3b1561375 更新
2026-04-01 12:23:27 -04:00

86 lines
3.7 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 System.Collections.Generic;
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());
}
/// <summary>
/// 设置伤害值
/// </summary>
/// <param name="damageAttributeName">要写入的属性名,默认为 "Damage"</param>
/// <param name="damageOffset">伤害增量</param>
/// <param name="additive">是否为叠加true为叠加false为覆盖</param>
/// <param name="originalDamage">原始伤害值仅在additive为true时有效</param>
public void SetDamage(int damageOffset, string damageAttributeName = "Damage", bool additive = false, int originalDamage = 0)
{
card.SetVariableAttribute(damageAttributeName, damageOffset, additive, originalDamage);
}
/// <summary>
/// 默认伤害计算,仅使用卡牌基础伤害(无任何属性加成)
/// </summary>
public void SetDamage_Default(string damageAttributeName = "Damage")
{
SetDamage(0, damageAttributeName);
}
/// <summary>
/// 斩击伤害计算,伤害=基础伤害+(力量加成+敏捷加成)/2
/// </summary>
public void SetDamage_Slash(string damageAttributeName = "Damage", bool additive = false, int originalDamage = 0)
{
float rawDamageOffsetFromStrength = user.GetRawAttribute("OffsetFromStrength");
float rawDamageOffsetFromAgility = user.GetRawAttribute("OffsetFromAgility");
SetDamage(Mathf.RoundToInt((rawDamageOffsetFromStrength + rawDamageOffsetFromAgility) / 2f), damageAttributeName, additive, originalDamage);
}
/// <summary>
/// 打击伤害计算,伤害=基础伤害+力量加成
/// </summary>
public void SetDamage_Strike(string damageAttributeName = "Damage", bool additive = false, int originalDamage = 0)
{
int damageOffset = user.GetAttribute("OffsetFromStrength");
SetDamage(damageOffset, damageAttributeName, additive, originalDamage);
}
/// <summary>
/// 突刺伤害计算,伤害=基础伤害+敏捷加成
/// </summary>
public void SetDamage_Prick(string damageAttributeName = "Damage", bool additive = false, int originalDamage = 0)
{
int damageOffset = user.GetAttribute("OffsetFromAgility");
SetDamage(damageOffset, damageAttributeName, additive, originalDamage);
}
/// <summary>
/// 奥术伤害计算,伤害=基础伤害+智力加成
/// </summary>
public void SetDamage_Arcane(string damageAttributeName = "Damage", bool additive = false, int originalDamage = 0)
{
int damageOffset = user.GetAttribute("OffsetFromIntelligence");
SetDamage(damageOffset, damageAttributeName, additive, originalDamage);
}
/// <summary>
/// 契术伤害计算,伤害=基础伤害+魅力加成
/// </summary>
public void SetDamage_Sorcery(string damageAttributeName = "Damage", bool additive = false, int originalDamage = 0)
{
int damageOffset = user.GetAttribute("OffsetFromCharisma");
SetDamage(damageOffset, damageAttributeName, additive, originalDamage);
}
}
}