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

89 lines
4.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;
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 TemporaryHealth = "TemporaryHealth";
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 TemporaryHealthGainOffset = "TemporaryHealthGainOffset";
public const string TemporaryHealthGainMultiplier = "TemporaryHealthGainMultiplier";
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
}
}