2025-10-23 00:49:44 -04:00
|
|
|
|
using System;
|
2025-10-03 00:02:43 -04:00
|
|
|
|
using System.Collections.Generic;
|
2025-10-23 00:49:44 -04:00
|
|
|
|
using System.Linq;
|
2025-10-03 00:02:43 -04:00
|
|
|
|
using Continentis.MainGame.Character;
|
2025-10-23 00:49:44 -04:00
|
|
|
|
using Continentis.MainGame.Commands;
|
|
|
|
|
|
using NUnit.Framework;
|
|
|
|
|
|
using SLSFramework.General;
|
2025-10-24 09:11:22 -04:00
|
|
|
|
using SLSFramework.UModAssistance;
|
2025-10-03 00:02:43 -04:00
|
|
|
|
using UnityEngine;
|
|
|
|
|
|
|
|
|
|
|
|
namespace Continentis.MainGame.Card
|
|
|
|
|
|
{
|
2025-10-23 00:49:44 -04:00
|
|
|
|
#region Fundamental
|
2025-11-15 12:17:34 -05:00
|
|
|
|
public partial class CardInstance
|
2025-10-03 00:02:43 -04:00
|
|
|
|
{
|
2025-10-27 07:04:34 -04:00
|
|
|
|
public List<string> GetElementalKeywords(List<string> overrideKeywords = null)
|
2025-10-03 00:02:43 -04:00
|
|
|
|
{
|
2025-10-27 07:04:34 -04:00
|
|
|
|
overrideKeywords ??= contentSubmodule.keywords;
|
|
|
|
|
|
return overrideKeywords.Filtered(kw => MainGameManager.Instance.elementTags.Contains(kw));
|
2025-10-03 00:02:43 -04:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public bool HasKeyword(string keyword)
|
|
|
|
|
|
{
|
|
|
|
|
|
return contentSubmodule.keywords.Contains(keyword);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-10-23 00:49:44 -04:00
|
|
|
|
#endregion
|
2025-10-03 00:02:43 -04:00
|
|
|
|
|
|
|
|
|
|
#region Attributes
|
2025-11-15 12:17:34 -05:00
|
|
|
|
public partial class CardInstance
|
2025-10-03 00:02:43 -04:00
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 设置可变属性值
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="attributeName">属性名,通常为</param>
|
|
|
|
|
|
/// <param name="additive">是否为叠加,true为叠加,false为覆盖,true时,originalValue为外部传入值</param>
|
|
|
|
|
|
/// <param name="originalValue">原始伤害值,仅在additive为true时有效,否则此值被覆盖为BaseAttribute</param>
|
|
|
|
|
|
/// <param name="baseOffset">伤害增量</param>
|
2025-10-23 00:49:44 -04:00
|
|
|
|
public void SetVariableAttribute(string attributeName, int baseOffset, bool additive = false, int originalValue = 0)
|
2025-10-03 00:02:43 -04:00
|
|
|
|
{
|
|
|
|
|
|
string baseName = "Base" + attributeName;
|
|
|
|
|
|
string baseOffsetName = baseName + "Offset";
|
|
|
|
|
|
|
|
|
|
|
|
if (!additive) originalValue = GetAttribute(baseName);
|
|
|
|
|
|
|
|
|
|
|
|
SetAttribute(attributeName, originalValue);
|
|
|
|
|
|
SetAttribute(baseOffsetName, baseOffset);
|
|
|
|
|
|
ModifyAttribute(attributeName, baseOffset);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2025-10-23 00:49:44 -04:00
|
|
|
|
/// 检查卡牌是否具有某属性
|
2025-10-03 00:02:43 -04:00
|
|
|
|
/// </summary>
|
2025-10-23 00:49:44 -04:00
|
|
|
|
public bool HasAttribute(string attributeName)
|
2025-10-03 00:02:43 -04:00
|
|
|
|
{
|
2025-10-23 00:49:44 -04:00
|
|
|
|
return attributeSubmodule.attributeGroup.current.ContainsKey(attributeName);
|
2025-10-03 00:02:43 -04:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2025-10-23 00:49:44 -04:00
|
|
|
|
/// 获取卡牌的属性值
|
2025-10-03 00:02:43 -04:00
|
|
|
|
/// </summary>
|
2025-10-23 00:49:44 -04:00
|
|
|
|
public int GetAttribute(string attributeName, int defaultValue = 0)
|
2025-10-03 00:02:43 -04:00
|
|
|
|
{
|
2025-10-23 00:49:44 -04:00
|
|
|
|
return attributeSubmodule.GetRoundCurrentAttribute(attributeName, defaultValue);
|
2025-10-03 00:02:43 -04:00
|
|
|
|
}
|
|
|
|
|
|
|
2025-10-23 00:49:44 -04:00
|
|
|
|
public float GetRawAttribute(string attributeName, float defaultValue = 0)
|
2025-10-03 00:02:43 -04:00
|
|
|
|
{
|
2025-10-23 00:49:44 -04:00
|
|
|
|
return attributeSubmodule.GetCurrentAttribute(attributeName, defaultValue);
|
2025-10-03 00:02:43 -04:00
|
|
|
|
}
|
2025-10-23 00:49:44 -04:00
|
|
|
|
|
2025-10-03 00:02:43 -04:00
|
|
|
|
/// <summary>
|
2025-10-23 00:49:44 -04:00
|
|
|
|
/// 设置卡牌的属性值
|
2025-10-03 00:02:43 -04:00
|
|
|
|
/// </summary>
|
2025-10-23 00:49:44 -04:00
|
|
|
|
public void SetAttribute(string attributeName, int value)
|
2025-10-03 00:02:43 -04:00
|
|
|
|
{
|
2025-10-23 00:49:44 -04:00
|
|
|
|
attributeSubmodule.attributeGroup.current[attributeName] = value;
|
2025-10-03 00:02:43 -04:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2025-10-23 00:49:44 -04:00
|
|
|
|
/// 设置卡牌的属性值
|
2025-10-03 00:02:43 -04:00
|
|
|
|
/// </summary>
|
2025-10-23 00:49:44 -04:00
|
|
|
|
public void SetAttribute(string attributeName, float value)
|
2025-10-03 00:02:43 -04:00
|
|
|
|
{
|
2025-10-23 00:49:44 -04:00
|
|
|
|
attributeSubmodule.attributeGroup.current[attributeName] = value;
|
2025-10-03 00:02:43 -04:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2025-10-23 00:49:44 -04:00
|
|
|
|
/// 修改卡牌的属性值
|
2025-10-03 00:02:43 -04:00
|
|
|
|
/// </summary>
|
2025-10-23 00:49:44 -04:00
|
|
|
|
public void ModifyAttribute(string attributeName, int delta)
|
2025-10-03 00:02:43 -04:00
|
|
|
|
{
|
2025-10-23 00:49:44 -04:00
|
|
|
|
attributeSubmodule.attributeGroup.current[attributeName] += delta;
|
2025-10-03 00:02:43 -04:00
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-10-23 00:49:44 -04:00
|
|
|
|
#endregion
|
2025-10-03 00:02:43 -04:00
|
|
|
|
}
|