public override bool CanExecute(Army army, ref List <StaticString> failureFlags, params object[] parameters) { if (!base.CanExecute(army, ref failureFlags, parameters)) { return(false); } if (army.IsNaval) { failureFlags.Add(ArmyAction.NoCanDoWhileHidden); return(false); } KaijuArmy kaijuArmy = army as KaijuArmy; if (kaijuArmy == null) { return(false); } if (!base.CanAfford(army)) { failureFlags.Add(ArmyAction.NoCanDoWhileCannotAffordCosts); return(false); } if (!base.CheckActionPointsPrerequisites(army)) { failureFlags.Add(ArmyAction.NoCanDoWhileNotEnoughActionPointsLeft); return(false); } if (army.IsInEncounter) { if (failureFlags != null) { failureFlags.Add(ArmyAction.NoCanDoWhileLockedInBattle); } return(false); } Kaiju kaiju = kaijuArmy.Kaiju; if (Services.GetService <IGameService>().Game.Services.GetService <IWorldPositionningService>().IsWaterTile(kaijuArmy.WorldPosition)) { failureFlags.Add(ArmyAction.NoCanDoWhileOnFrozenWaterTile); return(false); } if (kaiju.CanChangeToGarrisonMode()) { return(true); } failureFlags.Add(ArmyAction_SettleKaiju.NoCanDoWhileRegionIsOwned); return(false); }