protected override State Execute(AIBehaviorTree aiBehaviorTree, params object[] parameters) { if (string.IsNullOrEmpty(this.TargetVarName)) { return(State.Success); } Kaiju kaiju = aiBehaviorTree.Variables[this.TargetVarName] as Kaiju; if (kaiju == null || kaiju.IsTamed()) { return(State.Success); } if (!(aiBehaviorTree.AICommander.Empire is MajorEmpire)) { return(State.Success); } Army army; if (base.GetArmyUnlessLocked(aiBehaviorTree, "$Army", out army) != AIArmyMission.AIArmyMissionErrorCode.None) { return(State.Success); } if (this.aILayer_Trade.ArmiesThatTriedKaijuTameResourceTrading.Contains(army.GUID)) { return(State.Success); } this.aILayer_Trade.ArmiesThatTriedKaijuTameResourceTrading.Add(army.GUID); return(State.Failure); }
private void KaijuLostEncounter(Kaiju kaiju, global::Empire stunner, bool setKaijuFree) { bool flag = Amplitude.Unity.Runtime.Runtime.Registry.GetValue <bool>("Gameplay/Kaiju/KaijuAutoTameBeforeLoseEncounter", true); bool relocate = false; if (setKaijuFree) { flag = false; relocate = true; } global::PlayerController server = this.KaijuEmpire.PlayerControllers.Server; if (kaiju.IsTamed()) { MajorEmpire majorEmpire = kaiju.MajorEmpire; if (server != null) { OrderUntameKaiju order = new OrderUntameKaiju(kaiju, relocate, stunner.Index, flag); server.PostOrder(order); } } else if (flag) { if (server != null) { OrderTameKaiju order2 = new OrderTameKaiju(stunner.Index, kaiju, null); server.PostOrder(order2); } } else { this.Kaiju.ChangeToStunState(stunner); this.ResetRelocationETA(); } }
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); }
private void CleanAfterEncounter(Kaiju kaiju, GameEntityGUID garrisonGUID, Encounter encounter) { bool setKaijuFree = false; bool flag = false; foreach (Contender contender in encounter.GetAlliedContendersFromEmpire(kaiju.Empire)) { if (contender.IsTakingPartInBattle && contender.GUID == garrisonGUID && contender.ContenderState == ContenderState.Defeated) { flag = true; break; } } if (kaiju.IsTamed()) { switch (encounter.GetEncounterResultForEmpire(kaiju.Empire)) { case EncounterResult.Draw: setKaijuFree = true; break; case EncounterResult.Victory: setKaijuFree = true; break; } } if (flag) { global::Empire stunner = null; IEnumerable <Contender> enemiesContenderFromEmpire = encounter.GetEnemiesContenderFromEmpire(kaiju.Empire); if (enemiesContenderFromEmpire.Count <Contender>() > 0) { Contender contender2 = enemiesContenderFromEmpire.FirstOrDefault <Contender>(); if (contender2.Empire != null) { stunner = encounter.GetEnemiesContenderFromEmpire(kaiju.Empire).FirstOrDefault <Contender>().Empire; } } this.KaijuLostEncounter(kaiju, stunner, setKaijuFree); } }
private List <IWorldPositionable> Execute_GetKaijus(AIBehaviorTree aiBehaviorTree, Army army, IGameService gameService, List <IWorldPositionable> unfilteredTargetList) { List <IWorldPositionable> list = new List <IWorldPositionable>(); for (int i = 0; i < unfilteredTargetList.Count; i++) { Kaiju kaiju = null; if (unfilteredTargetList[i] is Kaiju) { kaiju = (unfilteredTargetList[i] as Kaiju); } else if (unfilteredTargetList[i] is KaijuArmy) { kaiju = (unfilteredTargetList[i] as KaijuArmy).Kaiju; } else if (unfilteredTargetList[i] is KaijuGarrison) { kaiju = (unfilteredTargetList[i] as KaijuGarrison).Kaiju; } if (kaiju != null) { if (this.TypeOfTarget == AIBehaviorTreeNode_Decorator_SelectTarget.TargetType.StunnedKaiju && !kaiju.IsTamed() && kaiju.IsStunned()) { list.Add(kaiju); } if (this.TypeOfTarget == AIBehaviorTreeNode_Decorator_SelectTarget.TargetType.WildKaiju && !kaiju.IsTamed() && kaiju.IsWild()) { list.Add(kaiju); } if (this.TypeOfTarget == AIBehaviorTreeNode_Decorator_SelectTarget.TargetType.TamedKaiju && kaiju.IsTamed()) { list.Add(kaiju); } } } return(list); }