var now = Now + Spec.Shift;\r
var max = Spec.Max + Spec.Shift;\r
var low = (int)Ceiling(max * progress / 100.0);\r
+ if (low >= max && progress != 100)\r
+ low = max - 1;\r
var high = (int)Ceiling(max * next / 100.0);\r
if (now < low)\r
{\r
\r
public override string ToString()\r
{\r
- if (Id == 426 || Id == 854)\r
+ if (Id == 426 || Id == 854 || Id == 873)\r
return $"{NowArray.Count(n => n >= 1)}/{Spec.MaxArray.Length}";\r
return NowArray != null\r
? string.Join(" ", NowArray.Zip(Spec.MaxArray, (n, m) => $"{n}/{m}"))\r
return string.Join(" ",\r
new[] {"2-4", "6-1", "6-3", "6-4"}.Zip(NowArray, (map, n) => n >= 1 ? map : "")\r
.Where(s => !string.IsNullOrEmpty(s)));\r
+ case 873:\r
+ return string.Join(" ",\r
+ new[] {"3-1", "3-2", "3-3"}.Zip(NowArray, (map, n) => n >= 1 ? map : "")\r
+ .Where(s => !string.IsNullOrEmpty(s)));\r
}\r
return "";\r
}\r
{241, new QuestSortie {Interval = Weekly, Max = 5, Rank = "B", Maps = new[] {33, 34, 35}, Material = new[] {0, 0, 3, 3}}}, // 241: 敵北方艦隊主力を撃滅せよ!\r
{242, new QuestSortie {Interval = Weekly, Max = 1, Rank = "B", Maps = new[] {44}, Material = new[] {0, 1, 1, 0}}}, // 242: 敵東方中枢艦隊を撃破せよ!\r
{243, new QuestSortie {Interval = Weekly, Max = 2, Rank = "S", Maps = new[] {52}, Material = new[] {0, 0, 2, 2}}}, // 243: 南方海域珊瑚諸島沖の制空権を握れ!\r
+ {249, new QuestSpec {Interval = Monthly, Max = 1, Material = new[] {0, 0, 5, 0}}}, // 249: 「第五戦隊」出撃せよ!\r
{256, new QuestSortie {Interval = Monthly, Max = 3, Rank = "S", Maps = new[] {61}, Material = new[] {0, 0, 0, 0}}}, // 256: 「潜水艦隊」出撃せよ!\r
+ {257, new QuestSpec {Interval = Monthly, Max = 1, Material = new[] {0, 0, 0, 3}}}, // 257: 「水雷戦隊」南西へ!\r
+ {259, new QuestSpec {Interval = Monthly, Max = 1, Material = new[] {0, 3, 0, 4}}}, // 259: 「水上打撃部隊」南方へ!\r
{261, new QuestSortie {Interval = Weekly, Max = 3, Rank = "A", Maps = new[] {15}, Material = new[] {0, 0, 0, 3}}}, // 261: 海上輸送路の安全確保に努めよ!\r
{265, new QuestSortie {Interval = Monthly, Max = 10, Rank = "A", Maps = new[] {15}, Material = new[] {0, 0, 5, 3}}}, // 265: 海上護衛強化月間\r
+ {266, new QuestSpec {Interval = Monthly, Max = 1, Material = new[] {0, 0, 4, 2}}}, // 266: 「水上反撃部隊」突入せよ!\r
\r
{822, new QuestSortie {Interval = Quarterly, Max = 2, Rank = "S", Maps = new[] {24}, Material = new[] {0, 0, 0, 5}}}, // 822: 沖ノ島海域迎撃戦\r
{854, new QuestSpec {Interval = Quarterly, MaxArray = new[] {1, 1, 1, 1}, Material = new[] {0, 0, 0, 4}}}, // 854: 戦果拡張任務!「Z作戦」前段作戦\r
+ {861, new QuestSpec {Interval = Quarterly, Max = 2, Material = new[] {0, 4, 0, 0}}}, // 861: 強行輸送艦隊、抜錨!\r
+ {862, new QuestSpec {Interval = Quarterly, Max = 2, Material = new[] {0, 0, 8, 4}}}, // 862: 前線の航空偵察を実施せよ!\r
+ {873, new QuestSpec {Interval = Quarterly, MaxArray = new[] {1, 1, 1}, Material = new[] {0, 0, 0, 0}}}, // 873: 北方海域警備を実施せよ!\r
+ {875, new QuestSpec {Interval = Quarterly, Max = 2, Material = new[] {0, 0, 0, 0}}}, // 875: 精鋭「三一駆」、鉄底海域に突入せよ!\r
\r
{303, new QuestPractice {Interval = Daily, Max = 3, Win = false, Material = new[] {1, 0, 0, 0}}}, // 303: 「演習」で練度向上!\r
{304, new QuestPractice {Interval = Daily, Max = 5, Win = true, Material = new[] {0, 0, 1, 0}}}, // 304: 「演習」で他提督を圧倒せよ!\r
var count = _countList.GetCount(id);\r
if (adjustCount)\r
{\r
- count.AdjustCount(progress);\r
- NeedSave = true;\r
+ if (count.AdjustCount(progress))\r
+ NeedSave = true;\r
}\r
_quests[id] = new QuestStatus\r
{\r
Category = category,\r
Name = name,\r
Detail = detail,\r
- Material = material?.Concat(count.Spec.Material).ToArray(),\r
+ Material = adjustCount ? material?.Concat(count.Spec.Material).ToArray() : material,\r
Count = count,\r
Progress = progress,\r
Color = category <= _color.Length ? _color[category - 1] : Control.DefaultBackColor\r
NeedSave = true;\r
}\r
\r
- private bool _boss;\r
+\r
private int _map;\r
+ private bool _boss;\r
\r
public void InspectMapStart(dynamic json)\r
{\r
{\r
_map = (int)json.api_maparea_id * 10 + (int)json.api_mapinfo_no;\r
_boss = (int)json.api_event_id == 5;\r
+\r
+ if (_quests.TryGetValue(861, out var q861))\r
+ {\r
+ if (_map == 16 && (int)json.api_event_id == 8)\r
+ {\r
+ var fleet = _battleInfo.Result.Friend.Main.Where(s => s.NowHp > 0).Select(s => s.Spec.ShipType)\r
+ .ToArray();\r
+ if (fleet.Count(s => s == 10 || s == 22) == 2)\r
+ IncrementCount(q861.Count);\r
+ }\r
+ }\r
}\r
\r
public void InspectBattleResult(dynamic json)\r
NeedSave = true;\r
}\r
}\r
+ if (_quests.TryGetValue(249, out var q249))\r
+ {\r
+ if (_map == 25 && _boss && QuestSortie.CompareRank(rank, "S") == 0)\r
+ {\r
+ var fleet = _battleInfo.Result.Friend.Main.Where(s => s.NowHp > 0).Select(s => s.Spec.Id)\r
+ .ToArray();\r
+ if (fleet.Intersect(new[] {62, 63, 64, 265, 266, 268, 319, 192, 194}).Count() == 3)\r
+ IncrementCount(q249.Count);\r
+ }\r
+ }\r
+ if (_quests.TryGetValue(257, out var q257))\r
+ {\r
+ if (_map == 14 && _boss && QuestSortie.CompareRank(rank, "S") == 0)\r
+ {\r
+ var fleet = _battleInfo.Result.Friend.Main.Where(s => s.NowHp > 0).Select(s => s.Spec.ShipType)\r
+ .ToArray();\r
+ if (fleet[0] == 3 && fleet.Count(s => s == 3) <= 3 && fleet.All(s => s == 2 || s == 3))\r
+ IncrementCount(q257.Count);\r
+ }\r
+ }\r
+ if (_quests.TryGetValue(259, out var q259))\r
+ {\r
+ if (_map == 51 && _boss && QuestSortie.CompareRank(rank, "S") == 0)\r
+ {\r
+ var fleet = _battleInfo.Result.Friend.Main.Where(s => s.NowHp > 0).Select(s => s.Spec).ToArray();\r
+ var senkan = new[]\r
+ {\r
+ 131, 136, // 大和\r
+ 143, 148, 546, // 武蔵\r
+ 80, 275, 541, // 長門\r
+ 81, 276, // 陸奥\r
+ 26, 286, 411, // 扶桑\r
+ 27, 287, 412, // 山城\r
+ 77, 82, // 伊勢\r
+ 87, 88 // 日向\r
+ };\r
+ if (fleet.Select(s => s.Id).Intersect(senkan).Count() == 3 &&\r
+ fleet.Count(s => s.ShipType == 3) > 0)\r
+ {\r
+ IncrementCount(q259.Count);\r
+ }\r
+ }\r
+ }\r
+ if (_quests.TryGetValue(266, out var q266))\r
+ {\r
+ if (_map == 25 && _boss && QuestSortie.CompareRank(rank, "S") == 0)\r
+ {\r
+ var fleet = _battleInfo.Result.Friend.Main.Where(s => s.NowHp > 0).Select(s => s.Spec.ShipType)\r
+ .ToArray();\r
+ if (fleet[0] == 2 && fleet.OrderBy(x => x).SequenceEqual(new[] {2, 2, 2, 2, 3, 5}))\r
+ IncrementCount(q266.Count);\r
+ }\r
+ }\r
if (_quests.TryGetValue(854, out var opz) && _boss)\r
{\r
var array = opz.Count.NowArray;\r
break;\r
}\r
}\r
+ if (_quests.TryGetValue(862, out var q862))\r
+ {\r
+ if (_map == 63 && _boss && QuestSortie.CompareRank(rank, "A") <= 0)\r
+ {\r
+ var fleet = _battleInfo.Result.Friend.Main.Where(s => s.NowHp > 0).Select(s => s.Spec.ShipType).ToArray();\r
+ if (fleet.Count(s => s == 3) == 2 && fleet.Count(s => s == 16) == 1)\r
+ IncrementCount(q862.Count);\r
+ }\r
+ }\r
+ if (_quests.TryGetValue(873, out var q873))\r
+ {\r
+ if (_battleInfo.Result.Friend.Main.Count(s => s.NowHp > 0 && s.Spec.ShipType == 3) >= 1 &&\r
+ _boss && QuestSortie.CompareRank(rank, "A") <= 0)\r
+ {\r
+ var array = q873.Count.NowArray;\r
+ switch (_map)\r
+ {\r
+ case 31:\r
+ array[0]++;\r
+ NeedSave = true;\r
+ break;\r
+ case 32:\r
+ array[1]++;\r
+ NeedSave = true;\r
+ break;\r
+ case 33:\r
+ array[2]++;\r
+ NeedSave = true;\r
+ break;\r
+ }\r
+ }\r
+ }\r
+ if (_quests.TryGetValue(875, out var q875))\r
+ {\r
+ if (_map == 54 && _boss && QuestSortie.CompareRank(rank, "S") == 0)\r
+ {\r
+ var fleet = _battleInfo.Result.Friend.Main.Where(s => s.NowHp > 0).Select(s => s.Spec.Id).ToArray();\r
+ if (fleet.Contains(543) && fleet.Intersect(new []{344, 345, 359}).Any())\r
+ IncrementCount(q875.Count);\r
+ }\r
+ }\r
}\r
\r
public void InspectPracticeResult(dynamic json)\r