public override void OnPhaseStart() { base.OnPhaseStart(); //check if we've got any cmder to actually command commandableCommanders.Clear(); worldCommandScript.Cleanup(); Faction playerFac = GameModeHandler.instance.curPlayingFaction; List <Commander> factionCmders = playerFac.OwnedCommanders; GameInfo gData = GameController.CurGameData; foreach (Commander cmder in factionCmders) { if (cmder.troopsContained.Count == 0 && cmder.pointsToSpend > 0) { cmder.OrderRecruitTroops(); //if we don't recruit, we would just disappear at the end of the turn } else { if (!gData.unifyBattlePhase || (gData.unifyBattlePhase && gData.unifiedOrdersRegistry.GetOrderGivenToCmder(cmder.ID) == null)) { commandableCommanders.Add(cmder); } } } if (commandableCommanders.Count > 0) { //sort commanders by zone so that the player's focus jumps around less often //(this should also help the AI) commandableCommanders.Sort(Commander.SortByZoneIAmIn); if (playerFac.isPlayer) { worldCommandScript.allowedCmders3d = GameController.CmdersToCmder3ds(commandableCommanders); worldCommandScript.enabled = true; curCmderInfoBox.gameObject.SetActive(true); SelectCmder(commandableCommanders[0]); } else { AiPlayer.AiCommandPhase(playerFac, commandableCommanders, this); OnPhaseEnding(GameModeHandler.instance.currentTurnIsFast); } } else { bool fastEnd = (GameModeHandler.instance.currentTurnIsFast); if (!fastEnd) { SmallTextAnnouncer.instance.DoAnnouncement("No active commanders found!", Color.white); } OnPhaseEnding(fastEnd); } }