protected void SendArmyRequest() { if (this.requestArmy == null) { RequestArmyMessage message = new RequestArmyMessage(base.Commander.Empire.Index, null, base.Commander.GetPriority(this), base.Commander.Category); this.requestArmy = message; if (this.armyPattern == null) { this.armyPattern = this.CreateArmyPattern(); } if (this.armyPattern == null) { Diagnostics.LogError("Pattern is null. {0}", new object[] { this.ToString() }); return; } this.requestArmy.ArmyPattern = this.armyPattern; this.requestArmy.SetPriority(base.Commander.GetPriority(this)); this.requestArmy.MinimumNeededArmyFulfillement = this.MinimumNeededArmyFulfillement; this.requestArmy.FinalPosition = this.GetTargetPositionForTheArmy(); this.requestArmy.CanAcceptHero = this.MissionCanAcceptHero(); this.SetExtraArmyRequestInformation(); base.Commander.AIPlayer.Blackboard.AddMessage(message); this.armyPattern = null; } }
protected override void Success() { base.Success(); if (this.AICommanderRegroupArmies.MissionHasAllUnits(this) && this.AICommanderRegroupArmies.RequestUnitListMessageID != 0UL) { AIData_Army aidata = this.aiDataRepository.GetAIData <AIData_Army>(base.AIDataArmyGUID); Diagnostics.Assert(aidata != null); RequestArmyMessage requestArmyMessage = base.Commander.AIPlayer.Blackboard.GetMessage(this.AICommanderRegroupArmies.RequestUnitListMessageID) as RequestArmyMessage; if (requestArmyMessage != null) { requestArmyMessage.ArmyGUID = aidata.Army.GUID; requestArmyMessage.ExecutionState = RequestUnitListMessage.RequestUnitListState.ArmyAvailable; requestArmyMessage.TimeOut = 1; if (requestArmyMessage.HeroGUID != GameEntityGUID.Zero) { OrderChangeHeroAssignment order = new OrderChangeHeroAssignment(base.Commander.Empire.Index, requestArmyMessage.HeroGUID, aidata.Army.GUID); Ticket ticket; base.Commander.Empire.PlayerControllers.Client.PostOrder(order, out ticket, null); } if (this.majorEmpireAIEntity != null && this.majorEmpireAIEntity.GetCommanderMissionBasedOnItsArmyRequestArmy(requestArmyMessage.ID) != null) { base.SetArmyFree(); this.Process(); return; } } else { RequestGarrisonMessage requestGarrisonMessage = base.Commander.AIPlayer.Blackboard.GetMessage(this.AICommanderRegroupArmies.RequestUnitListMessageID) as RequestGarrisonMessage; if (requestGarrisonMessage != null) { requestGarrisonMessage.ExecutionState = RequestUnitListMessage.RequestUnitListState.ArmyAvailable; requestGarrisonMessage.TimeOut = 1; this.TransferUnits(requestGarrisonMessage.CityGuid); } RequestGarrisonCampMessage requestGarrisonCampMessage = base.Commander.AIPlayer.Blackboard.GetMessage(this.AICommanderRegroupArmies.RequestUnitListMessageID) as RequestGarrisonCampMessage; if (requestGarrisonCampMessage != null) { requestGarrisonCampMessage.ExecutionState = RequestUnitListMessage.RequestUnitListState.ArmyAvailable; requestGarrisonCampMessage.TimeOut = 1; this.TransferUnits(requestGarrisonCampMessage.CampGuid); } } } base.SetArmyFree(); }