private bool IsKaijuValidForTame(Army army, Kaiju kaiju, ref List <StaticString> failureFlags, bool checkNearbyKaijus = true) { if (army == null || kaiju == null) { failureFlags.Add(ArmyAction.NoCanDoWhileHidden); return(false); } if (checkNearbyKaijus && !this.IsKaijuNearby(kaiju, army)) { failureFlags.Add(ArmyAction.NoCanDoWhileHidden); return(false); } if (kaiju.IsTamed()) { failureFlags.Add(ArmyAction.NoCanDoWhileHidden); return(false); } if (kaiju.IsStunned()) { failureFlags.Add(ArmyAction.NoCanDoWhileHidden); return(false); } if (ELCPUtilities.UseELCPSymbiosisBuffs && !ELCPUtilities.CanELCPTameKaiju(kaiju, this.TameCost, army.Empire)) { failureFlags.Add(ArmyAction.NoCanDoWhileCannotAffordCosts); return(false); } return(true); }
protected override State Execute(AIBehaviorTree aiBehaviorTree, params object[] parameters) { Army army; if (base.GetArmyUnlessLocked(aiBehaviorTree, "$Army", out army) != AIArmyMission.AIArmyMissionErrorCode.None) { return(State.Failure); } ArmyAction armyAction = null; IDatabase <ArmyAction> database = Databases.GetDatabase <ArmyAction>(false); if (database == null || !database.TryGetValue(this.ArmyActionReadOnlyName, out armyAction)) { return(State.Failure); } bool flag = false; ArmyAction_TameUnstunnedKaiju armyAction_TameUnstunnedKaiju = armyAction as ArmyAction_TameUnstunnedKaiju; if (ELCPUtilities.UseELCPSymbiosisBuffs && armyAction_TameUnstunnedKaiju != null && this.TargetVarName != string.Empty) { Kaiju kaiju = (aiBehaviorTree.Variables[this.TargetVarName] as IGameEntity) as Kaiju; if (kaiju != null) { flag = ELCPUtilities.CanELCPTameKaiju(kaiju, armyAction_TameUnstunnedKaiju.TameCost, army.Empire); } } else { flag = armyAction.CanAfford(army.Empire); } if (flag) { if (aiBehaviorTree.Variables.ContainsKey(this.Output_ArmyActionVarName)) { aiBehaviorTree.Variables[this.Output_ArmyActionVarName] = this.ArmyActionReadOnlyName; } else { aiBehaviorTree.Variables.Add(this.Output_ArmyActionVarName, this.ArmyActionReadOnlyName); } return(State.Success); } aiBehaviorTree.ErrorCode = 38; return(State.Failure); }