/* * @Author: 白哉 * @Description: * @Date: 2025年06月06日 星期五 19:06:16 * @Modify: */ using System; using Logic.AI; using NodeCanvas.Framework; using ParadoxNotion.Design; namespace NodeCanvas.Tasks.Actions { [Name("判断自身血量")] [Category("AI节点")] [Serializable] public class AIParamHealth : BaseActionTask { public bool GreaterThan = true; public float Ratio = 0.6f; protected override string desc { get { if (GreaterThan) return string.Format($"自身血量大于等于 {(int)(Ratio * 100)}"); return string.Format($"自身血量小于等于 {(int)(Ratio * 100)}"); } } protected override void OnExecute() { base.OnExecute(); // 直接从Blackboard获取AICalculatorData var data = blackboard.GetVariable("Data"); if (data?.value?.TargetParam.UnitData == null) { EndAction(false); return; } var unit = data.value.TargetParam.UnitData; if (!Table.Instance.UnitTypeDataAssets.GetUnitTypeInfo(unit.UnitType, unit.GiantType,unit.UnitLevel, out var info)) { EndAction(false); return; } if (GreaterThan) EndAction(unit.Health >= info.MaxHealth * Ratio); else EndAction(unit.Health <= info.MaxHealth * Ratio); } } }