89 lines
4.6 KiB
C#
89 lines
4.6 KiB
C#
using System;
|
||
using System.Collections.Generic;
|
||
|
||
namespace Continentis.MainGame
|
||
{
|
||
/// <summary>
|
||
/// 标记一个类为属性常量集合容器。
|
||
/// Mod 制作者可以在自己的 Mod 常量类打上这个标签,
|
||
/// 这样编辑器工具就能自动收集它们并放入下拉菜单中。
|
||
/// </summary>
|
||
[AttributeUsage(AttributeTargets.Class)]
|
||
public class GameAttributeCollectionAttribute : Attribute
|
||
{
|
||
}
|
||
|
||
/// <summary>
|
||
/// 游戏通用属性名称常量。
|
||
/// 请始终使用此类中的常量而非裸字符串访问属性,以避免 typo 错误。
|
||
/// </summary>
|
||
[GameAttributeCollection]
|
||
public static class GameAttributes
|
||
{
|
||
// ── 生命值 ──────────────────────────────────
|
||
public const string Health = "Health";
|
||
public const string MaximumHealth = "MaximumHealth";
|
||
|
||
// ── 资源 ────────────────────────────────────
|
||
public const string Stamina = "Stamina";
|
||
public const string MaximumStamina = "MaximumStamina";
|
||
public const string StaminaRecoverPerAction = "StaminaRecoverPerAction";
|
||
public const string Mana = "Mana";
|
||
public const string MaximumMana = "MaximumMana";
|
||
public const string ManaRecoverPerAction = "ManaRecoverPerAction";
|
||
|
||
// ── 防御 ────────────────────────────────────
|
||
public const string Block = "Block";
|
||
public const string Shield = "Shield";
|
||
public const string Dodge = "Dodge";
|
||
|
||
public const string BlockGainOffset = "BlockGainOffset";
|
||
public const string BlockGainMultiplier = "BlockGainMultiplier";
|
||
public const string DodgeGainOffset = "DodgeGainOffset";
|
||
public const string DodgeGainMultiplier = "DodgeGainMultiplier";
|
||
public const string ShieldGainOffset = "ShieldGainOffset";
|
||
public const string ShieldGainMultiplier = "ShieldGainMultiplier";
|
||
|
||
public const string KeepBlockOnActionStart = "KeepBlockOnActionStart";
|
||
public const string KeepDodgeOnActionStart = "KeepDodgeOnActionStart";
|
||
|
||
// ── 速度与行动 ──────────────────────────────
|
||
public const string Speed = "Speed";
|
||
public const string DrawCardAmountPerAction = "DrawCardAmountPerAction";
|
||
public const string DeckCapacity = "DeckCapacity";
|
||
|
||
// ── 伤害调整(通用)──────────────────────────
|
||
public const string PhysicsDamageDealtOffset = "PhysicsDamageDealtOffset";
|
||
public const string MagicDamageDealtOffset = "MagicDamageDealtOffset";
|
||
public const string FinalDamageDealtMultiplier = "FinalDamageDealtMultiplier";
|
||
public const string FinalDamageGainMultiplier = "FinalDamageGainMultiplier";
|
||
public const string MagicDamageDealtMultiplier = "MagicDamageDealtMultiplier";
|
||
public const string MagicDamageGainMultiplier = "MagicDamageGainMultiplier";
|
||
|
||
// ── 核心属性(角色创建时)──────────────────────
|
||
public const string Strength = "Strength";
|
||
public const string Agility = "Agility";
|
||
public const string Intelligence = "Intelligence";
|
||
public const string Physique = "Physique";
|
||
public const string Perception = "Perception";
|
||
public const string Charisma = "Charisma";
|
||
public const string Level = "Level";
|
||
|
||
// ── 感知与闪避检测 ──────────────────────────
|
||
public const string Awareness = "Awareness";
|
||
public const string DodgeCheckStartDamageMultiplier = "DodgeCheckStartDamageMultiplier";
|
||
|
||
#if UNITY_EDITOR
|
||
/// <summary>
|
||
/// 提供给 Odin Inspector [ValueDropdown] 使用的方法。
|
||
/// 从所有 Mod 的 EditorBaseCollection 资产中聚合角色属性(Core + General),
|
||
/// 覆盖旧的反射扫描方式,天然支持多 Mod 叠加,无需关心程序集加载顺序。
|
||
/// </summary>
|
||
public static IEnumerable<Sirenix.OdinInspector.ValueDropdownItem<string>> GetAllAvailableAttributes()
|
||
{
|
||
return Continentis.MainGame.Base.EditorBaseCollection.GetCharacterAttributesDropdown(null);
|
||
}
|
||
#endif
|
||
}
|
||
}
|