public Type abilityClass = typeof(Ability); // 能力实现类(默认基础能力类)
public Type gizmoClass = typeof(Command_Ability); // 关联的Gizmo组件类(用于显示操作按钮)
public List<AbilityCompProperties> comps = new List<AbilityCompProperties>(); // 能力组件列表(扩展功能)
public AbilityCategoryDef category; // 能力分类(用于界面分组)
public int displayOrder; // 界面显示顺序(同分类内排序)
public List<StatModifier> statBases; // 基础属性修正(影响角色属性)
public VerbProperties verbProperties; // 动词属性(定义使用时的动作表现)
public KeyBindingDef hotKey; // 快捷键绑定定义
public JobDef jobDef; // 使用能力时创建的工作类型
public ThingDef warmupMote; // 预热时显示的粒子效果
public EffecterDef warmupEffecter; // 预热时的特效器(复杂视觉效果)
public FleckDef emittedFleck; // 持续施放时发射的粒子类型
public int emissionInterval; // 粒子发射间隔(游戏刻)
public string warmupMoteSocialSymbol; // 社交互动时显示的符号标识
public SoundDef warmupStartSound; // 预热开始音效
public SoundDef warmupSound; // 持续预热音效
public SoundDef warmupPreEndSound; // 预热即将结束音效
public float warmupPreEndSoundSeconds; // 预热结束前触发音效的时间(秒)
public Vector3 moteDrawOffset; // 粒子效果绘制偏移量
public float moteOffsetAmountTowardsTarget; // 朝向目标的粒子偏移量
public bool canUseAoeToGetTargets = true; // 是否允许通过AOE范围选择目标
public bool useAverageTargetPositionForWarmupEffecter; // 是否使用多个目标的平均位置进行预热特效
public bool targetRequired = true; // 是否需要选择目标
public bool targetWorldCell; // 是否以世界坐标单元格为目标
public bool showGizmoOnWorldView; // 是否在世界地图显示操作按钮
public bool aiCanUse; // AI是否可以使用此能力
public bool ai_SearchAOEForTargets; // AI是否在范围内搜索目标
public bool ai_IsOffensive = true; // 是否被AI视为进攻性能力
public bool ai_IsIncendiary = true; // 是否被AI视为燃烧类能力
public bool groupAbility; // 是否属于群体能力
public int level; // 能力等级(用于同类能力排序)
public IntRange cooldownTicksRange; // 冷却时间范围(游戏刻)
public bool cooldownPerCharge; // 是否按使用次数单独计算冷却
public bool hasExternallyHandledCooldown; // 是否由外部系统管理冷却
public int charges = -1; // 最大使用次数(-1表示无限)
public AbilityGroupDef groupDef; // 所属能力组定义
public bool overrideGroupCooldown; // 是否覆盖组的冷却时间
public List<MemeDef> requiredMemes; // 需要具备的模因(文化要素)
public bool sendLetterOnCooldownComplete; // 冷却完成时发送信件通知
public bool sendMessageOnCooldownComplete; // 冷却完成时显示消息
public bool displayGizmoWhileUndrafted; // 未征召时是否显示操作按钮
public bool disableGizmoWhileUndrafted = true; // 未征召时默认隐藏按钮
public bool writeCombatLog; // 是否记录战斗日志
public bool stunTargetWhileCasting; // 施放时是否击晕目标
public bool showPsycastEffects = true; // 是否显示灵能特效
public bool showCastingProgressBar; // 是否显示施法进度条
public float detectionChanceOverride = -1f; // 被发现几率覆盖值(-1使用默认)
public float uiOrder; // 界面排序权重
public bool waitForJobEnd; // 是否等待当前工作完成再施放
public bool showWhenDrafted = true; // 征召时是否显示按钮
public bool showOnCharacterCard = true; // 是否在角色卡片显示
public bool hostile = true; // 是否属于敌对行为
public bool casterMustBeCapableOfViolence = true; // 施法者是否需要具有暴力能力
[MustTranslate]
public string confirmationDialogText; // 确认对话框文本(需要翻译)
[NoTranslate]
public string iconPath; // 图标资源路径(无需翻译)
public Texture2D uiIcon = BaseContent.BadTex; // UI显示图标(默认错误图标)
private string cachedTooltip;
private Pawn cachedTooltipPawn;
private List<string> cachedTargets;
private int requiredPsyfocusBandCached = -1;
private bool? anyCompOverridesPsyfocusCost;
private FloatRange psyfocusCostRange = new FloatRange(-1f, -1f);
private string psyfocusCostPercent;
private string psyfocusCostPercentMax;
private Texture2D warmupMoteSocialSymbolCached;