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);
    }