/* * @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 { [Category("AIAction")] [Serializable] public class AIParamIsCalm : BaseActionTask { public bool IsSet = false; protected override string desc { get { if (IsSet) return "设置冷静期"; return "不处于冷静期"; } } protected override void OnExecute() { base.OnExecute(); // 直接从Blackboard获取AICalculatorData var data = blackboard.GetVariable("Data"); if (data?.value == null) { EndAction(false); return; } if (IsSet) { if (data.value.MaxAiAction != null) { var self = data.value.MaxAiAction.Param.PlayerData; var target = data.value.MaxAiAction.Param.TargetPlayerData; self.DiplomacyData.GetCountryDiplomacyInfo(target.Id, out var selfToTarget); selfToTarget.IsCalm = 3; EndAction(true); }else EndAction(false); } else { for (int i = data.value.AIActions.Count - 1; i >= 0; i--) { var self = data.value.AIActions[i].Param.PlayerData; var target = data.value.AIActions[i].Param.TargetPlayerData; self.DiplomacyData.GetCountryDiplomacyInfo(target.Id, out var selfToTarget); if (selfToTarget.IsCalm <= 0) continue; data.value.AIActions.RemoveAt(i); } EndAction(data.value.AIActions.Count > 0); } } } }