예제 #1
0
        public void RegisterEvent(TrackManager manager)
        {
            manager.BattleResultEvent += (sender, args) =>
            {
                if (!IsTracking)
                {
                    return;
                }

                var fleet = KanColleClient.Current.Homeport.Organization.Fleets.FirstOrDefault(x => x.Value.IsInSortie).Value;

                if (fleet?.Ships[0]?.Info.ShipType.Id != 3)
                {
                    return;                                                         // 기함 경순양함 이외
                }
                if (fleet?.Ships.Any(x => x.Info.ShipType.Id != 2 && x.Info.ShipType.Id != 3) ?? false)
                {
                    return;                                                                                                     // 구축함, 경순양함 이외 함종
                }
                if (fleet?.Ships.Count(x => x.Info.ShipType.Id == 3) > 3)
                {
                    return;                                                                       // 경순양함 3척 이상
                }
                if (fleet?.Ships.Count(x => x.Info.ShipType.Id == 2) < 3)
                {
                    return;                                                                       // 구축함 3척 미만
                }
                count = count.Add(1).Max(max_count);

                ProcessChanged?.Invoke(this, emptyEventArgs);
            };
        }
예제 #2
0
        public void RegisterEvent(TrackManager manager)
        {
            manager.BattleResultEvent += (sender, args) =>
            {
                if (!IsTracking)
                {
                    return;
                }

                if (args.MapWorldId != 1 || args.MapAreaId != 5)
                {
                    return;                                                              // 1-5
                }
                if ("敵通商破壊主力艦隊" != args.EnemyName)
                {
                    return;                                                // boss
                }
                if (!"SA".Contains(args.Rank))
                {
                    return;
                }

                count = count.Add(1).Max(max_count);

                ProcessChanged?.Invoke(this, emptyEventArgs);
            };
        }
예제 #3
0
        public void RegisterEvent(ApiEvent apiEvent)
        {
            apiEvent.BattleResultEvent += (sender, args) =>
            {
                if (!IsTracking)
                {
                    return;
                }

                foreach (var ship in args.EnemyShips)
                {
                    // 7 = CVL
                    // 11 = CV
                    if (ship.Type == 7 || ship.Type == 11)
                    {
                        if (ship.MaxHp != int.MaxValue && ship.NowHp <= 0)
                        {
                            count += count >= max_count ? 0 : 1;
                        }
                    }
                }

                ProcessChanged?.Invoke(this, new EventArgs());
            };
        }
예제 #4
0
        public void RegisterEvent(TrackManager manager)
        {
            manager.HenseiEvent += (sender, args) =>
            {
                if (!IsTracking)
                {
                    return;
                }
                count = 0;

                var homeport = KanColleClient.Current.Homeport;
                foreach (var fleet in homeport.Organization.Fleets)
                {
                    var ships = fleet.Value.Ships;

                    count = Math.Max(
                        count,
                        ships.Count(x => x.Info.ShipType.Id == 8 || x.Info.ShipType.Id == 9).Max(1)
                        + ships.Count(x => x.Info.ShipType.Id == 5).Max(2)
                        );
                }

                ProcessChanged?.Invoke(this, emptyEventArgs);
            };
        }
예제 #5
0
        public void RegisterEvent(TrackManager manager)
        {
            manager.BattleResultEvent += (sender, args) =>
            {
                if (!IsTracking)
                {
                    return;
                }

                if (args.MapWorldId != 3 || args.MapAreaId != 5)
                {
                    return;                                                              // 3-5
                }
                if (args.EnemyName != "北方増援部隊主力")
                {
                    return;                                               // boss
                }
                if ("S" != args.Rank)
                {
                    return;                                   // S승리
                }
                var fleet = KanColleClient.Current.Homeport.Organization.Fleets.FirstOrDefault(x => x.Value.IsInSortie).Value;
                var ships = fleet?.Ships;

                if (ships[0]?.Info.ShipType.Id != 7 || ships[0]?.Info.ShipType.Id != 11 || ships[0]?.Info.ShipType.Id != 18)
                {
                    return;                                                                                                                          // 공모 기함
                }
                count = count.Add(1).Max(max_count);

                ProcessChanged?.Invoke(this, emptyEventArgs);
            };
        }
예제 #6
0
        public void RegisterEvent(TrackManager manager)
        {
            manager.MissionResultEvent += (sender, args) =>
            {
                if (!IsTracking)
                {
                    return;
                }
                if (!args.IsSuccess)
                {
                    return;
                }

                if (args.Name == "MO作戦")
                {
                    count_1 = count_1.Add(1).Max(1);
                }
                if (args.Name == "敵母港空襲作戦")
                {
                    count_2 = count_2.Add(1).Max(1);
                }

                ProcessChanged?.Invoke(this, emptyEventArgs);
            };
        }
예제 #7
0
        public void RegisterEvent(TrackManager manager)
        {
            manager.HenseiEvent += (sender, args) =>
            {
                if (!IsTracking)
                {
                    return;
                }
                count = 0;

                var shipTable = new int[]
                {
                    463,                     // 朝潮改二
                    468,                     // 朝潮改二丁
                    199,                     // 大潮改二
                };

                var homeport = KanColleClient.Current.Homeport;
                foreach (var fleet in homeport.Organization.Fleets)
                {
                    var ships = fleet.Value.Ships;
                    if (ships.Length <= 0)
                    {
                        continue;
                    }

                    count = Math.Max(
                        count,
                        ships.Count(x => shipTable.Contains(x.Info.Id))
                        );
                }

                ProcessChanged?.Invoke(this, emptyEventArgs);
            };
        }
예제 #8
0
        public void RegisterEvent(TrackManager manager)
        {
            manager.BattleResultEvent += (sender, args) =>
            {
                if (!IsTracking)
                {
                    return;
                }

                var fleet    = KanColleClient.Current.Homeport.Organization.Fleets.FirstOrDefault(x => x.Value.IsInSortie).Value;
                var flagship = fleet?.Ships[0]?.Info.ShipType.Id;

                if (flagship != 7 && flagship != 11 && flagship != 18)
                {
                    return;                                                                    // 기함 공모 이외
                }
                if (fleet?.Ships.Count(x => x.Info.ShipType.Id == 2) < 3)
                {
                    return;                                                                       // 구축함 3척 미만
                }
                count = count.Add(1).Max(max_count);

                ProcessChanged?.Invoke(this, emptyEventArgs);
            };
        }
예제 #9
0
        public void RegisterEvent(TrackManager manager)
        {
            manager.DestoryItemEvent += (sender, args) =>
            {
                if (!IsTracking)
                {
                    return;
                }

                var flagshipTable = new int[]
                {
                    89,                      // 鳳翔
                    285,                     // 鳳翔改
                };

                var fleet = KanColleClient.Current.Homeport.Organization.Fleets[1];
                if (!flagshipTable.Any(x => x == (fleet?.Ships[0]?.Info.Id ?? 0)))
                {
                    return;                                                                                // 호쇼 비서함
                }
                var slotitems = fleet?.Ships[0]?.Slots;
                if (!slotitems.Any(x => x.Item.Info.Id == 20 && x.Item.Proficiency == 7))
                {
                    return;                                                                                       // 숙련도max 영식함전21형
                }
                var homeportSlotitems = KanColleClient.Current.Homeport.Itemyard.SlotItems;
                count_1 = count_1.Add(args.itemList.Count(x => (homeportSlotitems[x]?.Info.Id ?? 0) == 20)).Max(2);                 // 영식함전21형
                count_2 = count_2.Add(args.itemList.Count(x => (homeportSlotitems[x]?.Info.Id ?? 0) == 19)).Max(1);                 // 96식함전

                ProcessChanged?.Invoke(this, emptyEventArgs);
            };
        }
예제 #10
0
        public void RegisterEvent(TrackManager manager)
        {
            manager.HenseiEvent += (sender, args) =>
            {
                if (!IsTracking)
                {
                    return;
                }
                count = 0;

                var homeport = KanColleClient.Current.Homeport;
                foreach (var fleet in homeport.Organization.Fleets)
                {
                    var ships = fleet.Value.Ships;
                    if (ships.Length <= 0)
                    {
                        continue;
                    }
                    if (ships[0]?.Info.ShipType.Id != 20)
                    {
                        continue;                                                       // 잠수모함 기함
                    }
                    count = Math.Max(
                        count,
                        (1 + ships.Count(x => x.Info.ShipType.Id == 13 || x.Info.ShipType.Id == 14)).Max(5)
                        );
                }

                ProcessChanged?.Invoke(this, emptyEventArgs);
            };
        }
예제 #11
0
        public void RegisterEvent(TrackManager manager)
        {
            manager.HenseiEvent += (sender, args) =>
            {
                if (!IsTracking)
                {
                    return;
                }
                count = 0;

                var homeport = KanColleClient.Current.Homeport;
                foreach (var fleet in homeport.Organization.Fleets)
                {
                    var ships = fleet.Value.Ships;
                    if (ships.Length <= 0)
                    {
                        continue;
                    }

                    var flagship = ships[0]?.Info.ShipType.Id;

                    // 기함 공모/장갑공모
                    count = Math.Max(
                        count,
                        (flagship != 7 && flagship != 11 && flagship != 18)
                                                        ? 0
                                                        : ships.Count(x => x.Info.ShipType.Id == 7 || x.Info.ShipType.Id == 11 || x.Info.ShipType.Id == 18).Max(1)
                        + ships.Count(x => x.Info.ShipType.Id == 2).Max(3)
                        );
                }

                ProcessChanged?.Invoke(this, emptyEventArgs);
            };
        }
예제 #12
0
        public void RegisterEvent(TrackManager manager)
        {
            manager.HenseiEvent += (sender, args) =>
            {
                if (!IsTracking)
                {
                    return;
                }

                var homeport = KanColleClient.Current.Homeport;
                foreach (var fleet in homeport.Organization.Fleets)
                {
                    var ships = fleet.Value.Ships;
                    if (ships.Length <= 0)
                    {
                        continue;
                    }

                    count = Math.Max(
                        count,
                        (ships[0]?.Info.Id ?? 0) == 406 ? 1 : 0                         // 雲龍改
                        );
                }

                ProcessChanged?.Invoke(this, emptyEventArgs);
            };
        }
        private void EndProcess(string context, string message, bool isComplete)
        {
            lblProcess.InvokeIfRequired(() =>
            {
                lblProcess.Text = context;
            });

            lblMessage.InvokeIfRequired(() =>
            {
                lblMessage.Text = message;
            });

            ProcessChanged?.Invoke(this, new SyncStateEventArgs
            {
                StepName = this.Name,
                Status   = isComplete ? PublishProcessStatus.Complete : PublishProcessStatus.Fail,
                Message  = message
            });

            if (isComplete || processRunAt)
            {
                btnClose.Visible = true;
                btnClose.PerformClick();
            }
            else
            {
                btnClose.Visible  = true;
                btnUpdate.Visible = true;
                processRunAt      = true;
            }
        }
예제 #14
0
        public void RegisterEvent(TrackManager manager)
        {
            manager.BattleResultEvent += (sender, args) =>
            {
                if (!IsTracking)
                {
                    return;
                }

                if (args.MapWorldId != 1 || args.MapAreaId != 6)
                {
                    return;                                                              // 1-6
                }
                if (args.MapNodeId != 14 && args.MapNodeId != 17)
                {
                    return;                                                               // 1-6-N node
                }
                var fleet    = KanColleClient.Current.Homeport.Organization.Fleets.FirstOrDefault(x => x.Value.IsInSortie).Value;
                var ships    = fleet?.Ships;
                var flagship = ships[0]?.Info.ShipType.Id;

                if (flagship != 3 && flagship != 4 && flagship != 21)
                {
                    return;                                                                   // 기함 경순/중뇌순/연순
                }
                if (ships.Count(x => x.Info.ShipType.Id == 2) < 4)
                {
                    return;                                                                // 구축 4척
                }
                count = count.Add(1).Max(max_count);

                ProcessChanged?.Invoke(this, emptyEventArgs);
            };
        }
예제 #15
0
		public void RegisterEvent(TrackManager manager)
		{
			EventHandler handler = (sender, args) =>
			{
				if (!IsTracking) return;
				count = 0;

				var flagshipTable = new int[]
				{
					89,  // 鳳翔
					285, // 鳳翔改
				};

				var fleet = KanColleClient.Current.Homeport.Organization.Fleets[1];
				if (!flagshipTable.Any(x => x == (fleet?.Ships[0]?.Info.Id ?? 0))) return; // 호쇼 기함

				var slotitems = fleet?.Ships[0]?.Slots;
				if (!slotitems.Any(x => x.Item.Info.Id == 19 && x.Item.Level == 10 && x.Item.Proficiency == 7)) return;
				// 숙련도max, 개수max 96식함전

				count = 1;
				ProcessChanged?.Invoke(this, emptyEventArgs);
			};
			manager.HenseiEvent += handler;
			manager.EquipEvent += handler;
		}
예제 #16
0
        public void RegisterEvent(TrackManager manager)
        {
            manager.BattleResultEvent += (sender, args) =>
            {
                if (!IsTracking)
                {
                    return;
                }

                if (args.MapWorldId != 6 || args.MapAreaId != 3)
                {
                    return;                                                              // 6-3
                }
                if (args.EnemyName != "留守泊地旗艦艦隊")
                {
                    return;                                               // boss
                }
                if (!"SAB".Contains(args.Rank))
                {
                    return;                                             // B승리 이상
                }
                count = count.Add(1).Max(max_count);

                ProcessChanged?.Invoke(this, emptyEventArgs);
            };
        }
예제 #17
0
        public void RegisterEvent(TrackManager manager)
        {
            manager.BattleResultEvent += (sender, args) =>
            {
                if (!IsTracking)
                {
                    return;
                }

                var BossNameList = new string[]
                {
                    "深海棲艦泊地艦隊",                       // 3-3
                    "深海棲艦北方艦隊中枢",                     // 3-4
                    "北方増援部隊主力"                        // 3-5
                };

                if (args.MapWorldId != 3 || (args.MapAreaId != 3 && args.MapAreaId != 4 && args.MapAreaId != 5))
                {
                    return;                                                                                                              // 3-3 3-4 3-5
                }
                if (!BossNameList.Contains(args.EnemyName))
                {
                    return;                                                         // boss
                }
                if (!"SAB".Contains(args.Rank))
                {
                    return;
                }

                count = count.Add(1).Max(max_count);

                ProcessChanged?.Invoke(this, emptyEventArgs);
            };
        }
예제 #18
0
        public void RegisterEvent(TrackManager manager)
        {
            manager.BattleResultEvent += (sender, args) =>
            {
                if (!IsTracking)
                {
                    return;
                }

                var BossNameList = new string[]
                {
                    "敵主力艦隊",                       // 2-1, 2-5
                    "敵通商破壊艦隊",                     // 2-2
                    "敵主力打撃群",                      // 2-3
                    "敵侵攻中核艦隊",                     // 2-4
                };

                if (args.MapWorldId != 2)
                {
                    return;                                       // 2 해역
                }
                if (!BossNameList.Contains(args.EnemyName))
                {
                    return;                                                         // 보스명
                }
                if (!"SAB".Contains(args.Rank))
                {
                    return;                                             // 승리 랭크
                }
                count = count.Add(1).Max(max_count);

                ProcessChanged?.Invoke(this, emptyEventArgs);
            };
        }
예제 #19
0
        public void RegisterEvent(TrackManager manager)
        {
            manager.DestoryItemEvent += (sender, args) =>
            {
                if (!IsTracking)
                {
                    return;
                }

                var flagshipTable = new int[]
                {
                    110,                     // 翔鶴
                    288,                     // 翔鶴改
                    461,                     // 翔鶴改二
                    466,                     // 翔鶴改二甲
                };

                var fleet = KanColleClient.Current.Homeport.Organization.Fleets[1];
                if (!flagshipTable.Any(x => x == (fleet?.Ships[0]?.Info.Id ?? 0)))
                {
                    return;                                                                                // 쇼카쿠 비서함
                }
                var slotitems = fleet?.Ships[0]?.Slots;
                if (!slotitems.Any(x => x.Item.Info.Id == 143))
                {
                    return;                                                             // 97식 함상공격기(무라타대)
                }
                var homeportSlotitems = KanColleClient.Current.Homeport.Itemyard.SlotItems;
                count = count.Add(args.itemList.Count(x => (homeportSlotitems[x]?.Info.Id ?? 0) == 17))                 // 텐잔
                        .Max(max_count);

                ProcessChanged?.Invoke(this, emptyEventArgs);
            };
        }
예제 #20
0
        public void RegisterEvent(TrackManager manager)
        {
            manager.BattleResultEvent += (sender, args) =>
            {
                if (!IsTracking)
                {
                    return;
                }

                if (args.MapWorldId != 2 || args.MapAreaId != 3)
                {
                    return;                                                              // 2-3
                }
                if (args.EnemyName != "敵主力打撃群")
                {
                    return;                                             // boss
                }
                if (!"SAB".Contains(args.Rank))
                {
                    return;                                             // 승리
                }
                var fleet = KanColleClient.Current.Homeport.Organization.Fleets.FirstOrDefault(x => x.Value.IsInSortie).Value;
                if (fleet?.Ships.Count(x => x.Info.ShipType.Id == 13 || x.Info.ShipType.Id == 14) < 2)
                {
                    return;
                }

                count = count.Add(1).Max(max_count);

                ProcessChanged?.Invoke(this, emptyEventArgs);
            };
        }
예제 #21
0
        public void RegisterEvent(TrackManager manager)
        {
            manager.BattleResultEvent += (sender, args) =>
            {
                if (!IsTracking)
                {
                    return;
                }

                if (args.MapWorldId != 1 || args.MapAreaId != 4)
                {
                    return;                                                              // 1-4
                }
                if (args.EnemyName != "敵機動部隊")
                {
                    return;                                            // boss
                }
                if ("S" != args.Rank)
                {
                    return;                                   // S승리
                }
                count = count.Add(1).Max(max_count);

                ProcessChanged?.Invoke(this, emptyEventArgs);
            };
        }
예제 #22
0
        public void RegisterEvent(TrackManager manager)
        {
            manager.HenseiEvent += (sender, args) =>
            {
                if (!IsTracking)
                {
                    return;
                }
                count = 0;

                var flagshipTable = new int[]
                {
                    112,                     // 瑞鶴改
                    462,                     // 瑞鶴改二
                    467,                     // 瑞鶴改二甲
                };
                var shipTable = new int[]
                {
                    112,                     // 瑞鶴改
                    462,                     // 瑞鶴改二
                    467,                     // 瑞鶴改二甲
                    102,                     // 千歳
                    103,                     // 千代田
                    117,                     // 瑞鳳改
                    104,                     // 千歳改
                    105,                     // 千代田改
                    82,                      // 伊勢改
                    88,                      // 日向改
                    106,                     // 千歳甲
                    107,                     // 千代田甲
                    108,                     // 千歳航
                    109,                     // 千代田航
                    291,                     // 千歳航改
                    292,                     // 千代田航改
                    296,                     // 千歳航改二
                    297,                     // 千代田航改二
                };

                var homeport = KanColleClient.Current.Homeport;
                foreach (var fleet in homeport.Organization.Fleets)
                {
                    var ships = fleet.Value.Ships;
                    if (ships.Length <= 0)
                    {
                        continue;
                    }

                    if (!flagshipTable.Contains((ships[0]?.Info.Id ?? 0)))
                    {
                        continue;                                                                        // 즈이카쿠改 기함
                    }
                    count = Math.Max(
                        count,
                        ships.Count(x => shipTable.Contains(x.Info.Id))
                        );
                }

                ProcessChanged?.Invoke(this, emptyEventArgs);
            };
        }
예제 #23
0
        public void RegisterEvent(TrackManager manager)
        {
            List <string> BossNameList = new List <string>
            {
                "敵東方中枢艦隊"
            };

            manager.BattleResultEvent += (sender, args) =>
            {
                if (!IsTracking)
                {
                    return;
                }

                if (args.MapAreaId != 4)
                {
                    return;                      // 4해역
                }
                if (!BossNameList.Contains(args.EnemyName))
                {
                    return;
                }
                if (!"SAB".Contains(args.Rank))
                {
                    return;
                }

                count += count >= max_count ? 0 : 1;
                ProcessChanged?.Invoke(this, emptyEventArgs);
            };
        }
예제 #24
0
        public void RegisterEvent(TrackManager manager)
        {
            manager.HenseiEvent += (sender, args) =>
            {
                if (!IsTracking)
                {
                    return;
                }
                count = 0;

                var shipTable = new int[]
                {
                    26,                      // 扶桑
                    27,                      // 山城
                    286,                     // 扶桑改
                    287,                     // 山城改
                    411,                     // 扶桑改二
                    412,                     // 山城改二
                };

                var homeport = KanColleClient.Current.Homeport;
                foreach (var fleet in homeport.Organization.Fleets)
                {
                    var ships = fleet.Value.Ships;

                    count = Math.Max(
                        count,
                        ships.Count(x => shipTable.Contains(x.Info.Id))
                        );
                }

                ProcessChanged?.Invoke(this, emptyEventArgs);
            };
        }
예제 #25
0
        public void RegisterEvent(TrackManager manager)
        {
            manager.DestoryItemEvent += (sender, args) =>
            {
                if (!IsTracking)
                {
                    return;
                }

                var flagshipTable = new int[]
                {
                    111,                     // 瑞鶴
                    112,                     // 瑞鶴改
                    462,                     // 瑞鶴改二
                    467,                     // 瑞鶴改二甲
                };

                var fleet = KanColleClient.Current.Homeport.Organization.Fleets[1];
                if (!flagshipTable.Any(x => x == fleet?.Ships[0]?.Info.Id))
                {
                    return;                                                                         // 즈이카쿠 비서함
                }
                var slotitems = fleet?.Ships[0]?.Slots;
                if (!slotitems.Any(x => x.Item.Info.Id == 155 && x.Item.Proficiency == 7))
                {
                    return;                                                                                        // 숙련도max 영전 21형(이와모토소대)
                }
                var homeportSlotitems = KanColleClient.Current.Homeport.Itemyard.SlotItems;
                count = count.Add(args.itemList.Count(x => (homeportSlotitems[x]?.Info.Id ?? 0) == 21))                 // 영식 함전 52형
                        .Max(max_count);

                ProcessChanged?.Invoke(this, emptyEventArgs);
            };
        }
예제 #26
0
        public void RegisterEvent(TrackManager manager)
        {
            manager.BattleResultEvent += (sender, args) =>
            {
                if (!IsTracking)
                {
                    return;
                }

                var shipTable = new int[]
                {
                    34,                      // 暁
                    35,                      // 響
                    36,                      // 雷
                    37,                      // 電
                    234,                     // 暁改
                    235,                     // 響改
                    236,                     // 雷改
                    237,                     // 電改
                    437,                     // 暁改二
                    147,                     // Верный
                };

                var fleet = KanColleClient.Current.Homeport.Organization.Fleets.FirstOrDefault(x => x.Value.IsInSortie).Value;
                if (fleet?.Ships.Count(x => shipTable.Contains(x.Info.Id)) < 4)
                {
                    return;
                }

                count = count.Add(1).Max(max_count);

                ProcessChanged?.Invoke(this, emptyEventArgs);
            };
        }
예제 #27
0
 private static void ChangeProcess(ProcessChanged onProcessChanged, int currValue)
 {
     if (onProcessChanged != null)
     {
         onProcessChanged(currValue);
     }
 }
예제 #28
0
        private void Poll()
        {
            while (Enabled)
            {
                Thread.Sleep(100);
                var hWnd = DllImport.UserInfo32.GetForegroundWindow();

                int processId;
                DllImport.UserInfo32.GetWindowThreadProcessId(hWnd, out processId);

                var current = System.Diagnostics.Process.GetCurrentProcess();

                var firstOrDefault = System.Diagnostics.Process.GetProcesses().FirstOrDefault(p => p.Id == processId);
                if (firstOrDefault == null || _lastProcessName == firstOrDefault.ProcessName)
                {
                    continue;
                }
                var newProcess = firstOrDefault.ProcessName;
                if (newProcess == null)
                {
                    continue;
                }

                ProcessChanged?.Invoke(_lastProcessName, newProcess);
                _lastProcessName = newProcess;
            }
        }
예제 #29
0
        public void RegisterEvent(ApiEvent apiEvent)
        {
            apiEvent.BattleResultEvent += (sender, args) =>
            {
                if (!IsTracking)
                {
                    return;
                }

                if (args.MapAreaId != map_id)
                {
                    return;
                }

                if (!boss_names.Contains(args.EnemyName))
                {
                    return;
                }

                if (args.Rank != "S" && args.Rank != "A")
                {
                    return;
                }

                count += count >= max_count ? 0 : 1;

                ProcessChanged?.Invoke(this, new EventArgs());
            };
        }
예제 #30
0
        public void RegisterEvent(TrackManager manager)
        {
            manager.HenseiEvent += (sender, args) =>
            {
                if (!IsTracking)
                {
                    return;
                }

                var homeport = KanColleClient.Current.Homeport;
                var ships    = homeport.Organization.Fleets[1]?.Ships;

                if (ships[0]?.Info.ShipType.Id != 3)                 // 기함 경순
                {
                    count = 0;
                }
                else
                {
                    count = ships.Count(x => x.Info.ShipType.Id == 3).Max(1)
                            + ships.Count(x => x.Info.ShipType.Id == 2).Max(3);
                }

                ProcessChanged?.Invoke(this, emptyEventArgs);
            };
        }