public void Tick()
    {
        if (global::Game.Time - this.lastTickTime < 10.0)
        {
            return;
        }
        this.lastTickTime = global::Game.Time;
        this.State        = TickableState.Optional;
        List <City> list = new List <City>();

        foreach (KeyValuePair <City, List <AILayer_SiegeBreaker.ArmySupportInfo> > keyValuePair in this.SiegeBreakerArmyAssignations)
        {
            if (keyValuePair.Key == null || !keyValuePair.Key.GUID.IsValid || keyValuePair.Key.BesiegingEmpireIndex < 0 || keyValuePair.Key.Empire.Index != base.AIEntity.Empire.Index || keyValuePair.Value.Count == 0)
            {
                list.Add(keyValuePair.Key);
            }
            else
            {
                for (int i = 0; i < keyValuePair.Value.Count; i++)
                {
                    AILayer_SiegeBreaker.ArmySupportInfo armySupportInfo = keyValuePair.Value[i];
                    AIData_Army aidata_Army;
                    if (!armySupportInfo.IsValid())
                    {
                        keyValuePair.Value.RemoveAt(i);
                        i--;
                    }
                    else if (!this.aiDataRepositoryHelper.TryGetAIData <AIData_Army>(armySupportInfo.Army.GUID, out aidata_Army) || aidata_Army.CommanderMission == null || aidata_Army.CommanderMission.State == TickableState.NoTick)
                    {
                        keyValuePair.Value.RemoveAt(i);
                        i--;
                    }
                }
            }
        }
        foreach (City key in list)
        {
            this.SiegeBreakerArmyAssignations.Remove(key);
        }
        if (this.SiegeBreakerArmyAssignations.Count == 0)
        {
            this.State = TickableState.NoTick;
        }
    }