Exemplo n.º 1
0
 public void OnImmolateCB(GameObject obj)
 {
     if (this.Garrison != null)
     {
         List <Unit> list = new List <Unit>(this.selectedUnits);
         list.RemoveAll((Unit unit) => !unit.IsImmolableUnit() || unit.IsAlreadyImmolated());
         if (list.Count > 0)
         {
             OrderImmolateUnits order = new OrderImmolateUnits(this.Garrison.Empire.Index, list.ToArray());
             IPlayerControllerRepositoryService service = base.Game.Services.GetService <IPlayerControllerRepositoryService>();
             Ticket ticket;
             service.ActivePlayerController.PostOrder(order, out ticket, new EventHandler <TicketRaisedEventArgs>(this.OnOrderResponse));
         }
     }
 }
Exemplo n.º 2
0
 protected override State Execute(AIBehaviorTree aiBehaviorTree, params object[] parameters)
 {
     if (this.orderTicket != null)
     {
         if (!this.orderExecuted)
         {
             return(State.Running);
         }
         if (this.orderTicket.PostOrderResponse == PostOrderResponse.PreprocessHasFailed)
         {
             this.orderExecuted       = false;
             this.orderTicket         = null;
             aiBehaviorTree.ErrorCode = 1;
             return(State.Failure);
         }
         this.orderExecuted = false;
         this.orderTicket   = null;
         return(State.Success);
     }
     else
     {
         if (!Services.GetService <IDownloadableContentService>().IsShared(DownloadableContent19.ReadOnlyName))
         {
             return(State.Success);
         }
         if (!Services.GetService <IGameService>().Game.Services.GetService <ISeasonService>().GetCurrentSeason().SeasonDefinition.SeasonType.Equals(Season.ReadOnlyHeatWave))
         {
             return(State.Success);
         }
         Army army = null;
         if (base.GetArmyUnlessLocked(aiBehaviorTree, "$Army", out army) != AIArmyMission.AIArmyMissionErrorCode.None)
         {
             return(State.Failure);
         }
         Garrison garrison = aiBehaviorTree.Variables[this.TargetVarName] as Garrison;
         if (aiBehaviorTree.Variables[this.TargetVarName] is Kaiju)
         {
             garrison = (aiBehaviorTree.Variables[this.TargetVarName] as Kaiju).GetActiveTroops();
         }
         if (garrison == null)
         {
             return(State.Success);
         }
         if (garrison.IsInEncounter)
         {
             return(State.Running);
         }
         if (!this.EvaluateImmolationNeed(army, garrison))
         {
             return(State.Success);
         }
         GameEntityGUID[] array = null;
         this.SelectImmolableUnits(army, out array);
         if (array.Length < 1)
         {
             return(State.Success);
         }
         OrderImmolateUnits order = new OrderImmolateUnits(army.Empire.Index, array);
         this.orderExecuted = false;
         aiBehaviorTree.AICommander.Empire.PlayerControllers.AI.PostOrder(order, out this.orderTicket, new EventHandler <TicketRaisedEventArgs>(this.Order_TicketRaised));
         return(State.Running);
     }
 }