1 // Copyright (C) 2017 Kazuhiro Fujieda <fujieda@users.osdn.me>
\r
3 // Licensed under the Apache License, Version 2.0 (the "License");
\r
4 // you may not use this file except in compliance with the License.
\r
5 // You may obtain a copy of the License at
\r
7 // http://www.apache.org/licenses/LICENSE-2.0
\r
9 // Unless required by applicable law or agreed to in writing, software
\r
10 // distributed under the License is distributed on an "AS IS" BASIS,
\r
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
12 // See the License for the specific language governing permissions and
\r
13 // limitations under the License.
\r
16 using System.Collections.Generic;
\r
18 using ExpressionToCodeLib;
\r
19 using KancolleSniffer.Model;
\r
20 using KancolleSniffer.Util;
\r
21 using Microsoft.VisualStudio.TestTools.UnitTesting;
\r
23 namespace KancolleSniffer.Test
\r
26 public class QuestInfoTest
\r
29 public void AdjustCount()
\r
31 var count = new QuestCount
\r
33 Spec = new QuestSpec {Max = 7},
\r
36 count.AdjustCount(0);
\r
37 PAssert.That(() => count.Now == 3);
\r
38 count.AdjustCount(50);
\r
39 PAssert.That(() => count.Now == 4);
\r
40 count.AdjustCount(80);
\r
41 PAssert.That(() => count.Now == 6);
\r
42 count.AdjustCount(100);
\r
43 PAssert.That(() => count.Now == 7);
\r
45 count.AdjustCount(100);
\r
46 PAssert.That(() => count.Now == 14);
\r
47 count.AdjustCount(80);
\r
48 PAssert.That(() => count.Now == 6);
\r
49 count.AdjustCount(50);
\r
50 PAssert.That(() => count.Now == 5);
\r
51 count.AdjustCount(0);
\r
52 PAssert.That(() => count.Now == 3);
\r
56 public void AdjustCountWithShift()
\r
58 var count = new QuestCount
\r
60 Spec = new QuestSpec {Max = 7, Shift = 1},
\r
63 count.AdjustCount(0);
\r
64 PAssert.That(() => count.Now == 2);
\r
65 count.AdjustCount(50);
\r
66 PAssert.That(() => count.Now == 3);
\r
67 count.AdjustCount(80);
\r
68 PAssert.That(() => count.Now == 6);
\r
69 count.AdjustCount(100);
\r
70 PAssert.That(() => count.Now == 7);
\r
72 count.AdjustCount(100);
\r
73 PAssert.That(() => count.Now == 14);
\r
74 count.AdjustCount(80);
\r
75 PAssert.That(() => count.Now == 6);
\r
76 count.AdjustCount(50);
\r
77 PAssert.That(() => count.Now == 5);
\r
78 count.AdjustCount(0);
\r
79 PAssert.That(() => count.Now == 2);
\r
83 public void AdjustCount80Percent()
\r
85 var count = new QuestCount
\r
87 Spec = new QuestSpec()
\r
89 for (var shift = 0; shift <= 1; shift++)
\r
91 for (var max = 2; max <= 6; max++)
\r
93 count.Spec.Max = max;
\r
94 count.Spec.Shift = shift;
\r
96 count.AdjustCount(80);
\r
97 PAssert.That(() => count.Now == count.Spec.Max - 1);
\r
103 public void AdjustCountNowArray()
\r
105 var count = new QuestCount
\r
107 Spec = new QuestSpec {MaxArray = new[] {36, 6, 24, 12}},
\r
108 NowArray = new[] {1, 2, 3, 4}
\r
110 count.AdjustCount(50);
\r
111 PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 2, 3, 4}));
\r
112 count.AdjustCount(100);
\r
113 PAssert.That(() => count.NowArray.SequenceEqual(new[] {36, 6, 24, 12}));
\r
114 count.NowArray = new[] {38, 12, 19, 12};
\r
115 count.AdjustCount(100);
\r
116 PAssert.That(() => count.NowArray.SequenceEqual(new[] {38, 12, 24, 12}));
\r
120 public void ResetQuestCount()
\r
122 var queue = new Queue<DateTime>(new[]
\r
124 new DateTime(2017, 11, 1, 5, 0, 0), new DateTime(2017, 11, 6, 5, 0, 0),
\r
125 new DateTime(2017, 12, 1, 5, 0, 0)
\r
127 var questInfo = new QuestInfo(null, null, () => queue.Dequeue());
\r
128 var status = new Status
\r
130 QuestCountList = new[]
\r
132 new QuestCount {Id = 201, Now = 1}, new QuestCount {Id = 213, Now = 1},
\r
133 new QuestCount {Id = 265, Now = 1}, new QuestCount {Id = 822, Now = 1}
\r
135 QuestLastReset = new DateTime(2017, 10, 31, 5, 0, 0)
\r
137 questInfo.LoadState(status);
\r
138 questInfo.InspectQuestList(CreateQuestList(new[] {201}));
\r
139 questInfo.SaveState(status);
\r
141 status.QuestCountList.Select(qc => new {qc.Id, qc.Now}).SequenceEqual(new[]
\r
142 {new {Id = 213, Now = 1}, new {Id = 822, Now = 1}})); // デイリーとマンスリーが消える
\r
143 questInfo.InspectQuestList(CreateQuestList(new[] {201}));
\r
144 questInfo.SaveState(status);
\r
146 status.QuestCountList.Select(qc => new {qc.Id, qc.Now}).SequenceEqual(new[]
\r
147 {new {Id = 822, Now = 1}})); // ウィークリーが消える
\r
148 questInfo.InspectQuestList(CreateQuestList(new[] {201}));
\r
149 questInfo.SaveState(status);
\r
150 PAssert.That(() => status.QuestCountList.Length == 0); // クォータリーが消える
\r
154 public void ResetQuestList()
\r
156 var queue = new Queue<DateTime>(new[]
\r
158 new DateTime(2017, 11, 1, 5, 0, 0), new DateTime(2017, 11, 6, 5, 0, 0),
\r
159 new DateTime(2017, 12, 1, 5, 0, 0)
\r
161 var questInfo = new QuestInfo(null, null, () => queue.Dequeue());
\r
162 var status = new Status
\r
166 new QuestStatus {Id = 201, Category = 2}, new QuestStatus {Id = 213, Category = 2},
\r
167 new QuestStatus {Id = 265, Category = 2}, new QuestStatus {Id = 822, Category = 8}
\r
169 QuestLastReset = new DateTime(2017, 10, 31, 5, 0, 0)
\r
171 questInfo.LoadState(status);
\r
172 questInfo.InspectQuestList(CreateQuestList(new int[0]));
\r
173 questInfo.SaveState(status);
\r
174 PAssert.That(() => status.QuestList.Select(q => q.Id).SequenceEqual(new[] {213, 822})); // デイリーとマンスリーが消える
\r
175 questInfo.InspectQuestList(CreateQuestList(new int[0]));
\r
176 questInfo.SaveState(status);
\r
177 PAssert.That(() => status.QuestList.Select(q => q.Id).SequenceEqual(new[] {822})); // ウィークリーが消える
\r
178 questInfo.InspectQuestList(CreateQuestList(new int[0]));
\r
179 questInfo.SaveState(status);
\r
180 PAssert.That(() => status.QuestList.Length == 0); // クォータリーが消える
\r
184 public void ResetFrom0To5OClock()
\r
186 var queue = new Queue<DateTime>(new[]
\r
188 new DateTime(2019, 1, 22, 4, 0, 0)
\r
190 var questInfo = new QuestInfo(null, null, () => queue.Dequeue());
\r
191 var status = new Status
\r
193 QuestCountList = new[] {new QuestCount {Id = 213, Now = 1}},
\r
194 QuestLastReset = new DateTime(2019, 1, 20, 5, 16, 22)
\r
196 questInfo.LoadState(status);
\r
197 questInfo.InspectQuestList(CreateQuestList(new[] {201}));
\r
198 questInfo.SaveState(status);
\r
199 PAssert.That(() => status.QuestCountList.Length == 0);
\r
203 public void ResetWeeklyWithoutCount()
\r
205 var queue = new Queue<DateTime>(new[]
\r
207 new DateTime(2019, 1, 27, 10, 0, 0),
\r
208 new DateTime(2019, 1, 28, 5, 0, 0)
\r
210 var questInfo = new QuestInfo(null, null, () => queue.Dequeue());
\r
211 var status = new Status
\r
213 QuestLastReset = new DateTime(2019, 1, 27, 5, 0, 0)
\r
215 questInfo.LoadState(status);
\r
216 questInfo.InspectQuestList( // 2019-1-27 10:00
\r
227 api_title = "【節分拡張任務】南方海域 艦隊決戦",
\r
229 api_get_material = new int[0],
\r
230 api_progress_flag = 0
\r
234 PAssert.That(() => questInfo.Quests[0].Id == 237);
\r
235 questInfo.InspectQuestList(CreateQuestList(new[] {201})); // 2019-1-28 05:00
\r
236 PAssert.That(() => questInfo.Quests[0].Id == 201);
\r
239 private JsonObject Js(object obj) => JsonObject.CreateJsonObject(obj);
\r
241 private object CreateQuestList(int[] ids) => Js(new
\r
244 ids.Select(id => new
\r
247 api_category = id / 100,
\r
252 api_get_material = new int[0],
\r
253 api_progress_flag = 0
\r
259 /// 210: 敵艦隊を10回邀撃せよ!
\r
261 /// 216: 敵艦隊主力を撃滅せよ!
\r
264 public void BattleResult_201_216_210_214()
\r
266 var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));
\r
267 questInfo.InspectQuestList(CreateQuestList(new[] {201, 216, 210, 214}));
\r
269 questInfo.InspectMapStart(Js(new
\r
271 api_maparea_id = 1,
\r
272 api_mapinfo_no = 1,
\r
275 var quests = questInfo.Quests;
\r
277 PAssert.That(() => quests[2].Id == 214 && quests[2].Count.NowArray[0] == 1);
\r
278 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
280 PAssert.That(() => quests.Select(q => new {q.Id, q.Count.Now}).SequenceEqual(new[]
\r
282 new {Id = 201, Now = 1}, new {Id = 210, Now = 1},
\r
283 new {Id = 214, Now = 0}, new {Id = 216, Now = 1}
\r
285 PAssert.That(() => quests[2].Id == 214 &&
\r
286 quests[2].Count.NowArray.SequenceEqual(new[] {1, 1, 0, 0}));
\r
288 questInfo.InspectMapNext(Js(new
\r
290 api_maparea_id = 1,
\r
291 api_mapinfo_no = 1,
\r
295 questInfo.InspectBattleResult(Js(new {api_win_rank = "B"}));
\r
296 PAssert.That(() => quests.Select(q => new {q.Id, q.Count.Now}).SequenceEqual(new[]
\r
298 new {Id = 201, Now = 2}, new {Id = 210, Now = 2},
\r
299 new {Id = 214, Now = 0}, new {Id = 216, Now = 2}
\r
302 PAssert.That(() => quests[2].Id == 214 && quests[2].Count.NowArray.SequenceEqual(new[] {1, 1, 1, 1}));
\r
303 questInfo.InspectBattleResult(Js(new {api_win_rank = "C"}));
\r
304 PAssert.That(() => quests.Select(q => new {q.Id, q.Count.Now}).SequenceEqual(new[]
\r
306 new {Id = 201, Now = 2}, new {Id = 210, Now = 3},
\r
307 new {Id = 214, Now = 0}, new {Id = 216, Now = 2}
\r
309 PAssert.That(() => quests[2].Id == 214 && quests[2].Count.NowArray.SequenceEqual(new[] {1, 1, 2, 1}));
\r
313 /// 211: 敵空母を3隻撃沈せよ!
\r
316 /// 218: 敵補給艦を3隻撃沈せよ!
\r
319 public void BattleResult_211_212_213_218_220_221()
\r
321 var battleInfo = new BattleInfo(null, null);
\r
322 var questInfo = new QuestInfo(null, battleInfo, () => new DateTime(2015, 1, 1)) {AcceptMax = 6};
\r
323 questInfo.InspectQuestList(CreateQuestList(new[] {211, 212, 213, 218, 220, 221}));
\r
325 battleInfo.InjectResultStatus(new ShipStatus[0], new ShipStatus[0], new[]
\r
327 new ShipStatus {NowHp = 0, MaxHp = 130, Spec = new ShipSpec {Id = 1558, ShipType = 15}},
\r
328 new ShipStatus {NowHp = 0, MaxHp = 90, Spec = new ShipSpec {Id = 1543, ShipType = 8}},
\r
329 new ShipStatus {NowHp = 0, MaxHp = 90, Spec = new ShipSpec {Id = 1543, ShipType = 8}},
\r
330 new ShipStatus {NowHp = 0, MaxHp = 96, Spec = new ShipSpec {Id = 1528, ShipType = 11}},
\r
331 new ShipStatus {NowHp = 0, MaxHp = 70, Spec = new ShipSpec {Id = 1523, ShipType = 7}},
\r
332 new ShipStatus {NowHp = 1, MaxHp = 70, Spec = new ShipSpec {Id = 1523, ShipType = 7}}
\r
333 }, new ShipStatus[0]);
\r
334 questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));
\r
336 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})
\r
337 .SequenceEqual(new[]
\r
339 new {Id = 211, Now = 2}, new {Id = 212, Now = 1}, new {Id = 213, Now = 1},
\r
340 new {Id = 218, Now = 1}, new {Id = 220, Now = 2}, new {Id = 221, Now = 1}
\r
346 /// 230: 敵潜水艦を制圧せよ!
\r
349 public void BattleResult_228_230()
\r
351 var battleInfo = new BattleInfo(null, null);
\r
352 var questInfo = new QuestInfo(null, battleInfo, () => new DateTime(2015, 1, 1));
\r
353 questInfo.InspectQuestList(CreateQuestList(new[] {228, 230}));
\r
355 battleInfo.InjectResultStatus(new ShipStatus[0], new ShipStatus[0], new[]
\r
357 new ShipStatus {NowHp = 0, MaxHp = 27, Spec = new ShipSpec {Id = 1532, ShipType = 13}},
\r
358 new ShipStatus {NowHp = 0, MaxHp = 19, Spec = new ShipSpec {Id = 1530, ShipType = 13}},
\r
359 new ShipStatus {NowHp = 0, MaxHp = 19, Spec = new ShipSpec {Id = 1530, ShipType = 13}}
\r
360 }, new ShipStatus[0]);
\r
361 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
363 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})
\r
364 .SequenceEqual(new[]
\r
366 new {Id = 228, Now = 3}, new {Id = 230, Now = 3}
\r
371 /// 226: 南西諸島海域の制海権を握れ!
\r
374 public void BattleResult_226()
\r
376 var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));
\r
377 questInfo.InspectQuestList(CreateQuestList(new[] {226}));
\r
379 questInfo.InspectMapStart(Js(new
\r
381 api_maparea_id = 2,
\r
382 api_mapinfo_no = 1,
\r
385 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
387 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})
\r
388 .SequenceEqual(new[] {new {Id = 226, Now = 0}}));
\r
389 questInfo.InspectMapNext(Js(new
\r
391 api_maparea_id = 2,
\r
392 api_mapinfo_no = 1,
\r
395 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
397 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})
\r
398 .SequenceEqual(new[] {new {Id = 226, Now = 1}}));
\r
399 questInfo.InspectMapStart(Js(new
\r
401 api_maparea_id = 2,
\r
402 api_mapinfo_no = 1,
\r
405 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
407 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})
\r
408 .SequenceEqual(new[] {new {Id = 226, Now = 1}}));
\r
412 /// // 243: 南方海域珊瑚諸島沖の制空権を握れ!
\r
415 public void BattleResult_243()
\r
417 var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));
\r
418 questInfo.InspectQuestList(CreateQuestList(new[] {243}));
\r
420 questInfo.InspectMapStart(Js(new
\r
422 api_maparea_id = 5,
\r
423 api_mapinfo_no = 2,
\r
426 questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));
\r
428 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})
\r
429 .SequenceEqual(new[] {new {Id = 243, Now = 0}}));
\r
431 questInfo.InspectMapNext(Js(new
\r
433 api_maparea_id = 5,
\r
434 api_mapinfo_no = 2,
\r
437 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
439 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})
\r
440 .SequenceEqual(new[] {new {Id = 243, Now = 1}}));
\r
443 private ShipStatus ShipStatus(int shipType, int specId = 0) =>
\r
444 new ShipStatus {NowHp = 1, Spec = new ShipSpec {Id = specId, ShipType = shipType}};
\r
448 /// 249: 「第五戦隊」出撃せよ!
\r
451 public void BattleResult_249()
\r
453 var battleInfo = new BattleInfo(null, null);
\r
454 var questInfo = new QuestInfo(null, battleInfo, () => new DateTime(2015, 1, 1));
\r
455 questInfo.InspectQuestList(CreateQuestList(new[] {249}));
\r
457 battleInfo.InjectResultStatus(new[]
\r
459 ShipStatus(5, 319), ShipStatus(5, 192), ShipStatus(5, 194),
\r
460 ShipStatus(5, 193), ShipStatus(6, 189), ShipStatus(6, 188)
\r
461 }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);
\r
462 questInfo.InspectMapNext(Js(new
\r
464 api_maparea_id = 2,
\r
465 api_mapinfo_no = 5,
\r
468 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
469 questInfo.InspectMapNext(Js(new
\r
471 api_maparea_id = 2,
\r
472 api_mapinfo_no = 5,
\r
475 questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));
\r
476 PAssert.That(() => questInfo.Quests[0].Count.Now == 0);
\r
477 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
478 PAssert.That(() => questInfo.Quests[0].Count.Now == 1);
\r
479 questInfo.Quests[0].Count.Now = 0;
\r
481 battleInfo.Result.Friend.Main[1].NowHp = 0;
\r
482 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
483 PAssert.That(() => questInfo.Quests[0].Count.Now == 0, "那智改二轟沈");
\r
487 /// 257: 「水雷戦隊」南西へ!
\r
490 public void BattleResult_257()
\r
492 var battleInfo = new BattleInfo(null, null);
\r
493 var questInfo = new QuestInfo(null, battleInfo, () => new DateTime(2015, 1, 1));
\r
494 questInfo.InspectQuestList(CreateQuestList(new[] {257}));
\r
496 battleInfo.InjectResultStatus(new[]
\r
498 ShipStatus(3), ShipStatus(2), ShipStatus(2),
\r
499 ShipStatus(2), ShipStatus(2), ShipStatus(2)
\r
500 }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);
\r
501 questInfo.InspectMapNext(Js(new
\r
503 api_maparea_id = 1,
\r
504 api_mapinfo_no = 4,
\r
507 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
508 questInfo.InspectMapNext(Js(new
\r
510 api_maparea_id = 1,
\r
511 api_mapinfo_no = 4,
\r
514 questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));
\r
515 PAssert.That(() => questInfo.Quests[0].Count.Now == 0);
\r
516 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
517 PAssert.That(() => questInfo.Quests[0].Count.Now == 1);
\r
518 questInfo.Quests[0].Count.Now = 0;
\r
520 battleInfo.Result.Friend.Main[0].NowHp = 0;
\r
521 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
522 PAssert.That(() => questInfo.Quests[0].Count.Now == 0, "軽巡轟沈");
\r
523 battleInfo.Result.Friend.Main[0].NowHp = 1;
\r
525 battleInfo.Result.Friend.Main[0].Spec.ShipType = 2;
\r
526 battleInfo.Result.Friend.Main[1].Spec.ShipType = 3;
\r
527 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
528 PAssert.That(() => questInfo.Quests[0].Count.Now == 0, "旗艦が駆逐");
\r
529 battleInfo.Result.Friend.Main[0].Spec.ShipType = 3;
\r
531 battleInfo.Result.Friend.Main[2].Spec.ShipType = 3;
\r
532 battleInfo.Result.Friend.Main[3].Spec.ShipType = 3;
\r
533 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
534 PAssert.That(() => questInfo.Quests[0].Count.Now == 0, "軽巡が4隻");
\r
536 battleInfo.Result.Friend.Main[0].Spec.ShipType = 3;
\r
537 battleInfo.Result.Friend.Main[3].Spec.ShipType = 4;
\r
538 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
539 PAssert.That(() => questInfo.Quests[0].Count.Now == 0, "駆逐軽巡以外");
\r
542 private ShipStatus ShipStatus(int shipType, int shipClass, int specId) =>
\r
543 new ShipStatus {NowHp = 1, Spec = new ShipSpec {Id = specId, ShipType = shipType, ShipClass = shipClass}};
\r
546 /// 257: 「水上打撃部隊」南方へ!
\r
549 public void BattleResult_259()
\r
551 var battleInfo = new BattleInfo(null, null);
\r
552 var questInfo = new QuestInfo(null, battleInfo, () => new DateTime(2015, 1, 1));
\r
553 questInfo.InspectQuestList(CreateQuestList(new[] {259}));
\r
557 ShipStatus(3, 52, 321), ShipStatus(9, 19, 276), ShipStatus(10, 26, 411),
\r
558 ShipStatus(10, 26, 412), ShipStatus(5, 29, 193), ShipStatus(5, 29, 194)
\r
560 battleInfo.InjectResultStatus(
\r
561 org.ToArray(), new ShipStatus[0],
\r
562 new ShipStatus[0], new ShipStatus[0]);
\r
563 questInfo.InspectMapNext(Js(new
\r
565 api_maparea_id = 5,
\r
566 api_mapinfo_no = 1,
\r
569 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
570 questInfo.InspectMapNext(Js(new
\r
572 api_maparea_id = 5,
\r
573 api_mapinfo_no = 1,
\r
576 questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));
\r
577 PAssert.That(() => questInfo.Quests[0].Count.Now == 0);
\r
578 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
579 PAssert.That(() => questInfo.Quests[0].Count.Now == 1);
\r
580 questInfo.Quests[0].Count.Now = 0;
\r
582 battleInfo.Result.Friend.Main[0].NowHp = 0;
\r
583 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
584 PAssert.That(() => questInfo.Quests[0].Count.Now == 0, "軽巡轟沈");
\r
585 battleInfo.Result.Friend.Main[0].NowHp = 1;
\r
587 battleInfo.Result.Friend.Main[4] = ShipStatus(9, 37, 136);
\r
588 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
589 PAssert.That(() => questInfo.Quests[0].Count.Now == 0, "戦艦4隻");
\r
590 battleInfo.Result.Friend.Main[4] = org[4];
\r
592 battleInfo.Result.Friend.Main[0] = ShipStatus(4, 4, 58);
\r
593 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
594 PAssert.That(() => questInfo.Quests[0].Count.Now == 0, "軽巡なし");
\r
595 battleInfo.Result.Friend.Main[0] = org[0];
\r
597 battleInfo.Result.Friend.Main[2] = ShipStatus(10, 2, 553);
\r
598 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
599 PAssert.That(() => questInfo.Quests[0].Count.Now == 1, "伊勢改二");
\r
603 /// 264: 「空母機動部隊」西へ!
\r
606 public void BattleResult_264()
\r
608 var battleInfo = new BattleInfo(null, null);
\r
609 var questInfo = new QuestInfo(null, battleInfo, () => new DateTime(2015, 1, 1));
\r
610 questInfo.InspectQuestList(CreateQuestList(new[] {264}));
\r
612 battleInfo.InjectResultStatus(new[]
\r
614 ShipStatus(7), ShipStatus(11), ShipStatus(3),
\r
615 ShipStatus(3), ShipStatus(2), ShipStatus(2)
\r
616 }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);
\r
617 questInfo.InspectMapNext(Js(new
\r
619 api_maparea_id = 4,
\r
620 api_mapinfo_no = 2,
\r
623 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
624 questInfo.InspectMapNext(Js(new
\r
626 api_maparea_id = 4,
\r
627 api_mapinfo_no = 2,
\r
630 questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));
\r
631 PAssert.That(() => questInfo.Quests[0].Count.Now == 0);
\r
632 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
633 PAssert.That(() => questInfo.Quests[0].Count.Now == 1);
\r
635 battleInfo.Result.Friend.Main[0].NowHp = 0;
\r
636 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
637 PAssert.That(() => questInfo.Quests[0].Count.Now == 1, "轟沈あり");
\r
641 /// 266: 「水上反撃部隊」突入せよ!
\r
644 public void BattleResult_266()
\r
646 var battleInfo = new BattleInfo(null, null);
\r
647 var questInfo = new QuestInfo(null, battleInfo, () => new DateTime(2015, 1, 1));
\r
648 questInfo.InspectQuestList(CreateQuestList(new[] {266}));
\r
650 battleInfo.InjectResultStatus(new[]
\r
652 ShipStatus(2), ShipStatus(5), ShipStatus(3),
\r
653 ShipStatus(2), ShipStatus(2), ShipStatus(2)
\r
654 }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);
\r
655 questInfo.InspectMapNext(Js(new
\r
657 api_maparea_id = 2,
\r
658 api_mapinfo_no = 5,
\r
661 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
662 questInfo.InspectMapNext(Js(new
\r
664 api_maparea_id = 2,
\r
665 api_mapinfo_no = 5,
\r
668 questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));
\r
669 PAssert.That(() => questInfo.Quests[0].Count.Now == 0);
\r
670 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
671 PAssert.That(() => questInfo.Quests[0].Count.Now == 1);
\r
673 battleInfo.Result.Friend.Main[1].NowHp = 0;
\r
674 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
675 PAssert.That(() => questInfo.Quests[0].Count.Now == 1, "轟沈あり");
\r
676 battleInfo.Result.Friend.Main[1].NowHp = 1;
\r
678 battleInfo.Result.Friend.Main[0].Spec.ShipType = 3;
\r
679 battleInfo.Result.Friend.Main[2].Spec.ShipType = 2;
\r
680 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
681 PAssert.That(() => questInfo.Quests[0].Count.Now == 1, "旗艦が軽巡");
\r
682 battleInfo.Result.Friend.Main[0].Spec.ShipType = 2;
\r
683 battleInfo.Result.Friend.Main[2].Spec.ShipType = 3;
\r
685 battleInfo.Result.Friend.Main[3].Spec.ShipType = 3;
\r
686 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
687 PAssert.That(() => questInfo.Quests[0].Count.Now == 1, "軽巡が2隻");
\r
692 /// 854: 戦果拡張任務!「Z作戦」前段作戦
\r
695 public void BattleResult_822_854()
\r
697 var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));
\r
698 questInfo.InspectQuestList(CreateQuestList(new[] {822, 854}));
\r
700 questInfo.InspectMapNext(Js(new
\r
702 api_maparea_id = 2,
\r
703 api_mapinfo_no = 4,
\r
706 questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));
\r
707 questInfo.InspectMapNext(Js(new
\r
709 api_maparea_id = 6,
\r
710 api_mapinfo_no = 1,
\r
713 questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));
\r
714 questInfo.InspectMapNext(Js(new
\r
716 api_maparea_id = 6,
\r
717 api_mapinfo_no = 3,
\r
720 questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));
\r
721 questInfo.InspectMapNext(Js(new
\r
723 api_maparea_id = 6,
\r
724 api_mapinfo_no = 4,
\r
727 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
728 PAssert.That(() => questInfo.Quests[1].Count.NowArray.SequenceEqual(new[] {1, 1, 1, 1}));
\r
729 PAssert.That(() => questInfo.Quests[0].Count.Now == 0);
\r
730 questInfo.InspectMapNext(Js(new
\r
732 api_maparea_id = 2,
\r
733 api_mapinfo_no = 4,
\r
736 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
737 PAssert.That(() => questInfo.Quests[1].Count.NowArray.SequenceEqual(new[] {2, 1, 1, 1}));
\r
738 PAssert.That(() => questInfo.Quests[0].Count.Now == 1);
\r
742 /// 861: 強行輸送艦隊、抜錨!
\r
745 public void MapNext_861()
\r
747 var battleInfo = new BattleInfo(null, null);
\r
748 var questInfo = new QuestInfo(null, battleInfo, () => new DateTime(2015, 1, 1));
\r
749 questInfo.InspectQuestList(CreateQuestList(new[] {861}));
\r
751 battleInfo.InjectResultStatus(new[]
\r
753 ShipStatus(10), ShipStatus(22), ShipStatus(2),
\r
754 ShipStatus(2), ShipStatus(2), ShipStatus(2)
\r
755 }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);
\r
757 questInfo.InspectMapNext(Js(new
\r
759 api_maparea_id = 1,
\r
760 api_mapinfo_no = 6,
\r
763 questInfo.InspectMapNext(Js(new
\r
765 api_maparea_id = 1,
\r
766 api_mapinfo_no = 6,
\r
769 PAssert.That(() => questInfo.Quests[0].Count.Now == 1);
\r
771 battleInfo.Result.Friend.Main[1].NowHp = 0;
\r
772 questInfo.InspectMapNext(Js(new
\r
774 api_maparea_id = 1,
\r
775 api_mapinfo_no = 6,
\r
778 PAssert.That(() => questInfo.Quests[0].Count.Now == 1, "轟沈あり");
\r
779 battleInfo.Result.Friend.Main[1].NowHp = 1;
\r
781 battleInfo.Result.Friend.Main[2].Spec.ShipType = 10;
\r
782 questInfo.InspectMapNext(Js(new
\r
784 api_maparea_id = 1,
\r
785 api_mapinfo_no = 6,
\r
788 PAssert.That(() => questInfo.Quests[0].Count.Now == 1, "補給・航戦が3隻");
\r
792 /// 862: 前線の航空偵察を実施せよ!
\r
795 public void BattleResult_862()
\r
797 var battleInfo = new BattleInfo(null, null);
\r
798 var questInfo = new QuestInfo(null, battleInfo, () => new DateTime(2015, 1, 1));
\r
799 questInfo.InspectQuestList(CreateQuestList(new[] {862}));
\r
801 battleInfo.InjectResultStatus(new[]
\r
803 ShipStatus(2), ShipStatus(3), ShipStatus(3),
\r
804 ShipStatus(2), ShipStatus(2), ShipStatus(16)
\r
805 }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);
\r
806 questInfo.InspectMapNext(Js(new
\r
808 api_maparea_id = 6,
\r
809 api_mapinfo_no = 3,
\r
812 questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));
\r
813 questInfo.InspectMapNext(Js(new
\r
815 api_maparea_id = 6,
\r
816 api_mapinfo_no = 3,
\r
819 questInfo.InspectBattleResult(Js(new {api_win_rank = "B"}));
\r
820 PAssert.That(() => questInfo.Quests[0].Count.Now == 0);
\r
821 questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));
\r
822 PAssert.That(() => questInfo.Quests[0].Count.Now == 1);
\r
824 battleInfo.Result.Friend.Main[1].NowHp = 0;
\r
825 questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));
\r
826 PAssert.That(() => questInfo.Quests[0].Count.Now == 1, "轟沈あり");
\r
827 battleInfo.Result.Friend.Main[1].NowHp = 1;
\r
829 battleInfo.Result.Friend.Main[3].Spec.ShipType = 3;
\r
830 battleInfo.Result.Friend.Main[4].Spec.ShipType = 16;
\r
831 questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));
\r
832 PAssert.That(() => questInfo.Quests[0].Count.Now == 2, "軽巡3隻水母2隻");
\r
836 /// 873: 北方海域警備を実施せよ!
\r
839 public void BattleResult_873()
\r
841 var battleInfo = new BattleInfo(null, null);
\r
842 var questInfo = new QuestInfo(null, battleInfo, () => new DateTime(2015, 1, 1));
\r
843 questInfo.InspectQuestList(CreateQuestList(new[] {873}));
\r
845 battleInfo.InjectResultStatus(new[]
\r
847 ShipStatus(3), ShipStatus(2), ShipStatus(2),
\r
848 ShipStatus(2), ShipStatus(2), ShipStatus(2)
\r
849 }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);
\r
850 questInfo.InspectMapNext(Js(new
\r
852 api_maparea_id = 3,
\r
853 api_mapinfo_no = 1,
\r
856 questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));
\r
857 questInfo.InspectMapNext(Js(new
\r
859 api_maparea_id = 3,
\r
860 api_mapinfo_no = 1,
\r
863 questInfo.InspectBattleResult(Js(new {api_win_rank = "B"}));
\r
864 PAssert.That(() => questInfo.Quests[0].Count.NowArray[0] == 0);
\r
865 questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));
\r
866 PAssert.That(() => questInfo.Quests[0].Count.NowArray[0] == 1);
\r
868 battleInfo.Result.Friend.Main[0].Spec.ShipType = 2;
\r
869 questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));
\r
870 PAssert.That(() => questInfo.Quests[0].Count.NowArray[0] == 1, "軽巡なし");
\r
871 battleInfo.Result.Friend.Main[0].Spec.ShipType = 3;
\r
873 questInfo.InspectMapNext(Js(new
\r
875 api_maparea_id = 3,
\r
876 api_mapinfo_no = 2,
\r
879 questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));
\r
880 questInfo.InspectMapNext(Js(new
\r
882 api_maparea_id = 3,
\r
883 api_mapinfo_no = 3,
\r
886 questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));
\r
887 PAssert.That(() => questInfo.Quests[0].Count.NowArray.SequenceEqual(new[] {1, 1, 1}));
\r
891 /// 875: 精鋭「三一駆」、鉄底海域に突入せよ!
\r
894 public void BattleResult_875()
\r
896 var battleInfo = new BattleInfo(null, null);
\r
897 var questInfo = new QuestInfo(null, battleInfo, () => new DateTime(2015, 1, 1));
\r
898 questInfo.InspectQuestList(CreateQuestList(new[] {875}));
\r
900 battleInfo.InjectResultStatus(new[]
\r
902 ShipStatus(2, 543), ShipStatus(8, 360), ShipStatus(11, 545),
\r
903 ShipStatus(18, 467), ShipStatus(11, 261), ShipStatus(2, 344)
\r
904 }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);
\r
905 questInfo.InspectMapNext(Js(new
\r
907 api_maparea_id = 5,
\r
908 api_mapinfo_no = 4,
\r
911 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
912 questInfo.InspectMapNext(Js(new
\r
914 api_maparea_id = 5,
\r
915 api_mapinfo_no = 4,
\r
918 questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));
\r
919 PAssert.That(() => questInfo.Quests[0].Count.Now == 0);
\r
920 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
921 PAssert.That(() => questInfo.Quests[0].Count.Now == 1);
\r
923 battleInfo.Result.Friend.Main[5].NowHp = 0;
\r
924 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
925 PAssert.That(() => questInfo.Quests[0].Count.Now == 1, "朝霜改轟沈");
\r
926 battleInfo.Result.Friend.Main[5].NowHp = 1;
\r
928 battleInfo.Result.Friend.Main[0].Spec.Id = 345;
\r
929 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
930 PAssert.That(() => questInfo.Quests[0].Count.Now == 1, "長波改二なし");
\r
931 battleInfo.Result.Friend.Main[0].Spec.Id = 543;
\r
933 battleInfo.Result.Friend.Main[5].Spec.Id = 345;
\r
934 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
935 PAssert.That(() => questInfo.Quests[0].Count.Now == 2, "高波改");
\r
936 battleInfo.Result.Friend.Main[5].Spec.Id = 359;
\r
937 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
938 PAssert.That(() => questInfo.Quests[0].Count.Now == 3, "沖波改");
\r
942 /// 888: 新編成「三川艦隊」、鉄底海峡に突入せよ!
\r
945 public void BattleResult_888()
\r
947 var battleInfo = new BattleInfo(null, null);
\r
948 var questInfo = new QuestInfo(null, battleInfo, () => new DateTime(2015, 1, 1));
\r
949 questInfo.InspectQuestList(CreateQuestList(new[] {888}));
\r
950 var count = questInfo.Quests[0].Count;
\r
952 battleInfo.InjectResultStatus(new[]
\r
954 ShipStatus(5, 427), ShipStatus(5, 264), ShipStatus(5, 142),
\r
955 ShipStatus(5, 417), ShipStatus(2, 144), ShipStatus(2, 195)
\r
956 }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);
\r
957 questInfo.InspectMapNext(Js(new
\r
959 api_maparea_id = 5,
\r
960 api_mapinfo_no = 1,
\r
963 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
964 questInfo.InspectMapNext(Js(new
\r
966 api_maparea_id = 5,
\r
967 api_mapinfo_no = 1,
\r
970 questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));
\r
971 PAssert.That(() => count.NowArray[0] == 0);
\r
972 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
973 PAssert.That(() => count.NowArray[0] == 1);
\r
975 battleInfo.Result.Friend.Main[0].NowHp = 0;
\r
976 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
977 PAssert.That(() => count.NowArray[0] == 1, "轟沈あり");
\r
978 battleInfo.Result.Friend.Main[0].NowHp = 1;
\r
980 battleInfo.Result.Friend.Main[0].Spec.Id = 319;
\r
981 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
982 PAssert.That(() => count.NowArray[0] == 1, "三川艦隊3隻");
\r
983 battleInfo.Result.Friend.Main[0].Spec.Id = 427;
\r
985 questInfo.InspectMapNext(Js(new
\r
987 api_maparea_id = 5,
\r
988 api_mapinfo_no = 3,
\r
991 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
992 PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 0}));
\r
994 questInfo.InspectMapNext(Js(new
\r
996 api_maparea_id = 5,
\r
997 api_mapinfo_no = 4,
\r
1000 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
1001 PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1}));
\r
1005 /// 893: 泊地周辺海域の安全確保を徹底せよ!
\r
1008 public void BattleResult_893()
\r
1010 var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));
\r
1011 questInfo.InspectQuestList(CreateQuestList(new[] {893}));
\r
1012 var count = questInfo.Quests[0].Count;
\r
1014 questInfo.InspectMapNext(Js(new
\r
1016 api_maparea_id = 1,
\r
1017 api_mapinfo_no = 5,
\r
1020 questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));
\r
1021 PAssert.That(() => count.NowArray[0] == 0, "A勝利はカウントしない");
\r
1022 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
1023 PAssert.That(() => count.NowArray[0] == 1, "1-5");
\r
1025 questInfo.InspectMapNext(Js(new
\r
1027 api_maparea_id = 7,
\r
1028 api_mapinfo_no = 1,
\r
1031 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
1032 PAssert.That(() => count.NowArray[1] == 1, "7-1");
\r
1034 questInfo.InspectMapNext(Js(new
\r
1036 api_maparea_id = 7,
\r
1037 api_mapinfo_no = 2,
\r
1041 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
1042 PAssert.That(() => count.NowArray[2] == 1, "7-2G");
\r
1044 questInfo.InspectMapNext(Js(new
\r
1046 api_maparea_id = 7,
\r
1047 api_mapinfo_no = 2,
\r
1051 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
1052 PAssert.That(() => count.NowArray[3] == 1, "7-2M");
\r
1056 /// 894: 空母戦力の投入による兵站線戦闘哨戒
\r
1059 public void BattleResult_894()
\r
1061 var battleInfo = new BattleInfo(null, null);
\r
1062 var questInfo = new QuestInfo(null, battleInfo, () => new DateTime(2015, 1, 1));
\r
1063 questInfo.InspectQuestList(CreateQuestList(new[] {894}));
\r
1064 var count = questInfo.Quests[0].Count;
\r
1065 battleInfo.InjectResultStatus(new[]
\r
1067 ShipStatus(2), ShipStatus(2), ShipStatus(2),
\r
1068 ShipStatus(2), ShipStatus(2), ShipStatus(2)
\r
1069 }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);
\r
1071 questInfo.InspectMapNext(Js(new
\r
1073 api_maparea_id = 1,
\r
1074 api_mapinfo_no = 3,
\r
1077 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
1078 PAssert.That(() => count.NowArray[0] == 0, "空母なしはカウントしない");
\r
1080 battleInfo.Result.Friend.Main[0].Spec.ShipType = 7;
\r
1081 questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));
\r
1082 PAssert.That(() => count.NowArray[0] == 0, "A勝利はカウントしない");
\r
1084 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
1085 PAssert.That(() => count.NowArray[0] == 1, "1-3");
\r
1087 questInfo.InspectMapNext(Js(new
\r
1089 api_maparea_id = 1,
\r
1090 api_mapinfo_no = 4,
\r
1093 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
1094 PAssert.That(() => count.NowArray[1] == 1, "1-4");
\r
1096 questInfo.InspectMapNext(Js(new
\r
1098 api_maparea_id = 2,
\r
1099 api_mapinfo_no = 1,
\r
1102 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
1103 PAssert.That(() => count.NowArray[2] == 1, "2-1");
\r
1105 questInfo.InspectMapNext(Js(new
\r
1107 api_maparea_id = 2,
\r
1108 api_mapinfo_no = 2,
\r
1111 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
1112 PAssert.That(() => count.NowArray[3] == 1, "2-2");
\r
1114 questInfo.InspectMapNext(Js(new
\r
1116 api_maparea_id = 2,
\r
1117 api_mapinfo_no = 3,
\r
1120 questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));
\r
1121 PAssert.That(() => count.NowArray[4] == 1, "2-3");
\r
1126 /// 303: 「演習」で練度向上!
\r
1127 /// 304: 「演習」で他提督を圧倒せよ!
\r
1129 /// 318: 給糧艦「伊良湖」の支援
\r
1132 public void PracticeResult_303_304_302_311_315()
\r
1134 var battleInfo = new BattleInfo(null, null);
\r
1135 var questInfo = new QuestInfo(null, battleInfo, () => new DateTime(2015, 1, 1));
\r
1136 questInfo.InspectQuestList(CreateQuestList(new[] {302, 303, 304, 311, 315}));
\r
1138 battleInfo.InjectResultStatus(new[]
\r
1140 ShipStatus(2, 543), ShipStatus(3, 488)
\r
1141 }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);
\r
1142 questInfo.InspectPracticeResult(Js(new {api_win_rank = "C"}));
\r
1143 questInfo.InspectPracticeResult(Js(new {api_win_rank = "A"}));
\r
1144 PAssert.That(() =>
\r
1145 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})
\r
1146 .SequenceEqual(new[]
\r
1148 new {Id = 302, Now = 1}, new {Id = 303, Now = 2}, new {Id = 304, Now = 1},
\r
1149 new {Id = 311, Now = 1}, new {Id = 315, Now = 1}
\r
1154 public void PracticeResult_318()
\r
1156 var battleInfo = new BattleInfo(null, null);
\r
1157 var questInfo = new QuestInfo(null, battleInfo, () => new DateTime(2015, 1, 1));
\r
1158 questInfo.InspectQuestList(CreateQuestList(new[] {318}));
\r
1159 var q318 = questInfo.Quests[0];
\r
1161 battleInfo.InjectResultStatus(new[]
\r
1163 ShipStatus(2, 543), ShipStatus(3, 488)
\r
1164 }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);
\r
1166 questInfo.InspectPracticeResult(Js(new {api_win_rank = "B"}));
\r
1167 PAssert.That(() => q318.Count.Now == 0, "軽巡1隻");
\r
1168 battleInfo.Result.Friend.Main[0] = ShipStatus(3, 200);
\r
1169 questInfo.StartPractice("api%5Fdeck%5Fid=2");
\r
1170 questInfo.InspectPracticeResult(Js(new {api_win_rank = "B"}));
\r
1171 PAssert.That(() => q318.Count.Now == 0, "第2艦隊");
\r
1172 questInfo.StartPractice("api%5Fdeck%5Fid=1"); // 第一艦隊
\r
1173 questInfo.InspectPracticeResult(Js(new {api_win_rank = "C"}));
\r
1174 PAssert.That(() => q318.Count.Now == 0, "敗北");
\r
1175 questInfo.InspectPracticeResult(Js(new {api_win_rank = "B"}));
\r
1176 PAssert.That(() => q318.Count.Now == 1);
\r
1178 q318.Count.Now = 2;
\r
1179 questInfo.InspectQuestList(CreateQuestList(new[] {318}));
\r
1180 PAssert.That(() => q318.Count.Now == 2, "進捗調節しない");
\r
1184 /// 402: 「遠征」を3回成功させよう!
\r
1185 /// 403: 「遠征」を10回成功させよう!
\r
1186 /// 404: 大規模遠征作戦、発令!
\r
1187 /// 410: 南方への輸送作戦を成功させよ!
\r
1188 /// 411: 南方への鼠輸送を継続実施せよ!
\r
1191 public void MissionResult_402_403_404_410_411()
\r
1193 var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));
\r
1194 questInfo.InspectQuestList(CreateQuestList(new[] {402, 403, 404, 410, 411}));
\r
1196 questInfo.InspectDeck(Js(
\r
1199 new {api_id = 2, api_mission = new[] {2, 6}},
\r
1200 new {api_id = 3, api_mission = new[] {2, 37}},
\r
1201 new {api_id = 4, api_mission = new[] {2, 2}}
\r
1203 questInfo.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));
\r
1204 questInfo.InspectMissionResult("api%5Fdeck%5Fid=3", Js(new {api_clear_result = 2}));
\r
1205 questInfo.InspectMissionResult("api%5Fdeck%5Fid=4", Js(new {api_clear_result = 0}));
\r
1206 PAssert.That(() =>
\r
1207 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})
\r
1208 .SequenceEqual(new[]
\r
1210 new {Id = 402, Now = 2}, new {Id = 403, Now = 2}, new {Id = 404, Now = 2},
\r
1211 new {Id = 410, Now = 1}, new {Id = 411, Now = 1}
\r
1216 /// 426: 海上通商航路の警戒を厳とせよ!
\r
1219 public void MissionResult_426()
\r
1221 var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));
\r
1222 questInfo.InspectQuestList(CreateQuestList(new[] {426}));
\r
1224 questInfo.InspectDeck(Js(
\r
1227 new {api_id = 2, api_mission = new[] {2, 3}},
\r
1228 new {api_id = 3, api_mission = new[] {2, 4}},
\r
1229 new {api_id = 4, api_mission = new[] {2, 5}}
\r
1231 questInfo.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));
\r
1232 questInfo.InspectMissionResult("api%5Fdeck%5Fid=3", Js(new {api_clear_result = 1}));
\r
1233 questInfo.InspectMissionResult("api%5Fdeck%5Fid=4", Js(new {api_clear_result = 1}));
\r
1234 PAssert.That(() =>
\r
1235 questInfo.Quests[0].Count.NowArray.SequenceEqual(new[] {1, 1, 1, 0}));
\r
1236 questInfo.InspectDeck(Js(
\r
1239 new {api_id = 2, api_mission = new[] {2, 10}}
\r
1241 questInfo.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));
\r
1242 PAssert.That(() =>
\r
1243 questInfo.Quests[0].Count.NowArray.SequenceEqual(new[] {1, 1, 1, 1}));
\r
1247 /// 428: 近海に侵入する敵潜を制圧せよ!
\r
1250 public void MissionResult_428()
\r
1252 var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));
\r
1253 questInfo.InspectQuestList(CreateQuestList(new[] {428}));
\r
1255 questInfo.InspectDeck(Js(
\r
1258 new {api_id = 2, api_mission = new[] {2, 4}},
\r
1259 new {api_id = 3, api_mission = new[] {2, 101}},
\r
1260 new {api_id = 4, api_mission = new[] {2, 102}}
\r
1262 questInfo.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));
\r
1263 questInfo.InspectMissionResult("api%5Fdeck%5Fid=3", Js(new {api_clear_result = 1}));
\r
1264 questInfo.InspectMissionResult("api%5Fdeck%5Fid=4", Js(new {api_clear_result = 1}));
\r
1265 PAssert.That(() =>
\r
1266 questInfo.Quests[0].Count.NowArray.SequenceEqual(new[] {1, 1, 1}));
\r
1274 public void PowerUp_503_504()
\r
1276 var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));
\r
1277 questInfo.InspectQuestList(CreateQuestList(new[] {503, 504}));
\r
1279 questInfo.CountNyukyo();
\r
1280 questInfo.CountCharge();
\r
1281 PAssert.That(() =>
\r
1282 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})
\r
1283 .SequenceEqual(new[] {new {Id = 503, Now = 1}, new {Id = 504, Now = 1}}));
\r
1287 /// 605: 新装備「開発」指令
\r
1288 /// 606: 新造艦「建造」指令
\r
1289 /// 607: 装備「開発」集中強化!
\r
1290 /// 608: 艦娘「建造」艦隊強化!
\r
1295 public void Kousyou_605_606_607_608_609_619()
\r
1297 var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1)) {AcceptMax = 6};
\r
1298 questInfo.InspectQuestList(CreateQuestList(new[] {605, 606, 607, 608, 609, 619}));
\r
1300 questInfo.CountCreateItem();
\r
1301 questInfo.CountCreateShip();
\r
1302 questInfo.InspectDestroyShip("api%5Fship%5Fid=98159%2C98166%2C98168&api%5Fverno=1");
\r
1303 questInfo.CountRemodelSlot();
\r
1304 PAssert.That(() =>
\r
1305 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})
\r
1306 .SequenceEqual(new[]
\r
1308 new {Id = 605, Now = 1}, new {Id = 606, Now = 1}, new {Id = 607, Now = 1},
\r
1309 new {Id = 608, Now = 1}, new {Id = 609, Now = 3}, new {Id = 619, Now = 1}
\r
1316 /// 643: 主力「陸攻」の調達
\r
1317 /// 645: 「洋上補給」物資の調達
\r
1318 /// 663: 新型艤装の継続研究
\r
1321 /// 675: 運用装備の統合整備
\r
1322 /// 676: 装備開発力の集中整備
\r
1323 /// 677: 継戦支援能力の整備
\r
1324 /// 678: 主力艦上戦闘機の更新
\r
1325 /// 680: 対空兵装の整備拡充
\r
1329 public void DestroyItem_613_638_643_645_663_673_674_675_676_677_678_680_688()
\r
1331 var itemInfo = new ItemInfo(new ItemMaster(), new ItemInventory());
\r
1332 var questInfo = new QuestInfo(itemInfo, null, () => new DateTime(2015, 1, 1));
\r
1334 itemInfo.InjectItemSpec(new[]
\r
1336 new ItemSpec {Id = 1, Name = "12cm単装砲", Type = 1},
\r
1337 new ItemSpec {Id = 37, Name = "7.7mm機銃", Type = 21},
\r
1338 new ItemSpec {Id = 19, Name = "九六式艦戦", Type = 6},
\r
1339 new ItemSpec {Id = 4, Name = "14cm単装砲", Type = 2},
\r
1340 new ItemSpec {Id = 11, Name = "15.2cm単装砲", Type = 4},
\r
1341 new ItemSpec {Id = 75, Name = "ドラム缶(輸送用)", Type = 30},
\r
1342 new ItemSpec {Id = 7, Name = "35.6cm連装砲", Type = 3},
\r
1343 new ItemSpec {Id = 25, Name = "零式水上偵察機", Type = 10},
\r
1344 new ItemSpec {Id = 13, Name = "61cm三連装魚雷", Type = 5},
\r
1345 new ItemSpec {Id = 20, Name = "零式艦戦21型", Type = 6},
\r
1346 new ItemSpec {Id = 28, Name = "22号水上電探", Type = 12},
\r
1347 new ItemSpec {Id = 31, Name = "32号水上電探", Type = 13},
\r
1348 new ItemSpec {Id = 35, Name = "三式弾", Type = 18},
\r
1349 new ItemSpec {Id = 23, Name = "九九式艦爆", Type = 7},
\r
1350 new ItemSpec {Id = 16, Name = "九七式艦攻", Type = 8}
\r
1352 var items = new[] {1, 37, 19, 4, 11, 75, 7, 25, 13, 20, 28, 31, 35, 23, 16};
\r
1353 itemInfo.InjectItems(items);
\r
1354 var questList = new[] {613, 638, 643, 645, 663, 673, 674, 675, 676, 677, 678, 680, 688};
\r
1355 questInfo.AcceptMax = questList.Length;
\r
1356 questInfo.InspectQuestList(CreateQuestList(questList));
\r
1357 questInfo.InspectDestroyItem(
\r
1358 $"api%5Fslotitem%5Fids={string.Join("%2C", Enumerable.Range(1, items.Length))}&api%5Fverno=1", null);
\r
1359 var scalar = new[]
\r
1361 new {Id = 613, Now = 1}, new {Id = 638, Now = 1}, new {Id = 643, Now = 1}, new {Id = 645, Now = 1},
\r
1362 new {Id = 663, Now = 1}, new {Id = 673, Now = 1}, new {Id = 674, Now = 1}
\r
1364 foreach (var e in scalar)
\r
1366 var c = Array.Find(questInfo.Quests, q => q.Id == e.Id).Count;
\r
1367 PAssert.That(() => c.Id == e.Id && c.Now == e.Now, $"{c.Id}");
\r
1371 new {Id = 675, NowArray = new[] {2, 1}}, new {Id = 676, NowArray = new[] {1, 1, 1}},
\r
1372 new {Id = 677, NowArray = new[] {1, 1, 1}}, new {Id = 678, NowArray = new[] {1, 1}},
\r
1373 new {Id = 680, NowArray = new[] {1, 2}}, new {Id = 688, NowArray = new[] {2, 1, 1, 1}}
\r
1375 foreach (var e in array)
\r
1377 var c = Array.Find(questInfo.Quests, q => q.Id == e.Id).Count;
\r
1378 PAssert.That(() => c.Id == e.Id && c.NowArray.SequenceEqual(e.NowArray), $"{c.Id}");
\r
1383 /// 702: 艦の「近代化改修」を実施せよ!
\r
1384 /// 703: 「近代化改修」を進め、戦備を整えよ!
\r
1387 public void PowerUp_702_703()
\r
1389 var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));
\r
1390 questInfo.InspectQuestList(CreateQuestList(new[] {702, 703}));
\r
1391 questInfo.InspectPowerUp(Js(new {api_powerup_flag = 1}));
\r
1392 PAssert.That(() =>
\r
1393 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})
\r
1394 .SequenceEqual(new[] {new {Id = 702, Now = 1}, new {Id = 703, Now = 1}}));
\r
1398 public void NotImplemented()
\r
1400 var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));
\r
1401 questInfo.InspectQuestList(CreateQuestList(new[] {679}));
\r
1402 PAssert.That(() => questInfo.Quests[0].Count.Spec.Material.Length == 0);
\r
1409 public void ToStringTest()
\r
1411 var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));
\r
1412 var status = new Status
\r
1414 QuestCountList = new[]
\r
1416 new QuestCount {Id = 211, Now = 2},
\r
1417 new QuestCount {Id = 214, NowArray = new[] {20, 7, 10, 8}},
\r
1418 new QuestCount {Id = 854, NowArray = new[] {2, 1, 1, 1}},
\r
1419 new QuestCount {Id = 426, NowArray = new[] {1, 1, 1, 1}},
\r
1420 new QuestCount {Id = 428, NowArray = new[] {1, 1, 1}},
\r
1421 new QuestCount {Id = 873, NowArray = new[] {1, 1, 1}},
\r
1422 new QuestCount {Id = 888, NowArray = new[] {1, 1, 1}},
\r
1423 new QuestCount {Id = 688, NowArray = new[] {2, 1, 2, 1}},
\r
1424 new QuestCount {Id = 893, NowArray = new[] {1, 1, 1, 1}},
\r
1425 new QuestCount {Id = 894, NowArray = new[] {1, 1, 1, 1, 1}}
\r
1428 questInfo.LoadState(status);
\r
1429 PAssert.That(() => status.QuestCountList[0].ToString() == "2/3");
\r
1430 PAssert.That(() => status.QuestCountList[1].ToString() == "20/36 7/6 10/24 8/12");
\r
1431 var z = status.QuestCountList[2];
\r
1432 PAssert.That(() => z.ToString() == "4/4");
\r
1433 PAssert.That(() => z.ToToolTip() == "2-4 6-1 6-3 6-4");
\r
1434 z.NowArray = new[] {0, 0, 0, 0};
\r
1435 PAssert.That(() => z.ToToolTip() == "");
\r
1436 var q426 = status.QuestCountList[3];
\r
1437 PAssert.That(() => q426.ToString() == "4/4");
\r
1438 PAssert.That(() => q426.ToToolTip() == "警備任務 対潜警戒任務 海上護衛任務 強硬偵察任務");
\r
1439 var q428 = status.QuestCountList[4];
\r
1440 PAssert.That(() => q428.ToToolTip() == "対潜警戒任務1 海峡警備行動1 長時間対潜警戒1");
\r
1441 q428.NowArray = new[] {0, 1, 0};
\r
1442 PAssert.That(() => q428.ToToolTip() == "海峡警備行動1");
\r
1443 var q873 = status.QuestCountList[5];
\r
1444 PAssert.That(() => q873.ToString() == "3/3");
\r
1445 PAssert.That(() => q873.ToToolTip() == "3-1 3-2 3-3");
\r
1446 var q888 = status.QuestCountList[6];
\r
1447 PAssert.That(() => q888.ToString() == "3/3");
\r
1448 PAssert.That(() => q888.ToToolTip() == "5-1 5-3 5-4");
\r
1449 var q688 = status.QuestCountList[7];
\r
1450 PAssert.That(() => q688.ToToolTip() == "艦戦2 艦爆1 艦攻2 水偵1");
\r
1451 var q893 = status.QuestCountList[8];
\r
1452 PAssert.That(() => q893.ToToolTip() == "1-5:1 7-1:1 7-2G:1 7-2M:1");
\r
1453 var q894 = status.QuestCountList[9];
\r
1454 PAssert.That(() => q894.ToString() == "5/5");
\r
1455 PAssert.That(() => q894.ToToolTip() == "1-3 1-4 2-1 2-2 2-3");
\r
1459 /// 状態をロードするときに獲得資材に特殊資材のリストを追加しない
\r
1462 public void LoadStateNotAppendMaterialList()
\r
1464 var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));
\r
1465 var status = new Status
\r
1475 Material = new[] {0, 2000, 0, 0, 0, 0, 0, 4}
\r
1478 QuestCountList = new[]
\r
1480 new QuestCount {Id = 854, NowArray = new[] {1, 0, 1, 0}}
\r
1483 questInfo.LoadState(status);
\r
1484 PAssert.That(() => questInfo.Quests[0].Material.Length == 8);
\r