var raw = _expTable[Min(s1, _expTable.Length) - 1] / 100.0 +\r
_expTable[Min(s2, _expTable.Length) - 1] / 300.0;\r
var exp = raw >= 500 ? 500 + (int)Sqrt(raw - 500) : (int)raw;\r
- Text += $"獲得経験値 : {exp}\r\nS勝利 : {(int)(exp * 1.2)}";\r
+ var bonus = 1 + TrainingCruiserBonus(_shipInfo.GetShipStatuses(0));\r
+ Text += $"獲得経験値 : {(int)(exp * bonus)}\r\nS勝利 : {(int)((int)(exp * 1.2) * bonus)}";\r
+ }\r
+\r
+ private double TrainingCruiserBonus(ShipStatus[] fleet)\r
+ {\r
+ if (fleet[0].Spec.IsTrainingCruiser)\r
+ {\r
+ var fsLevel = fleet[0].Level;\r
+ if (fleet.Skip(1).Any(s => s.Spec.IsTrainingCruiser))\r
+ {\r
+ if (fsLevel < 10)\r
+ return 0.10;\r
+ if (fsLevel < 30)\r
+ return 0.13;\r
+ if (fsLevel < 60)\r
+ return 0.16;\r
+ if (fsLevel < 100)\r
+ return 0.20;\r
+ return 0.25;\r
+ }\r
+ if (fsLevel < 10)\r
+ return 0.05;\r
+ if (fsLevel < 30)\r
+ return 0.08;\r
+ if (fsLevel < 60)\r
+ return 0.12;\r
+ if (fsLevel < 100)\r
+ return 0.15;\r
+ return 0.20;\r
+ }\r
+ var tc = fleet.Count(s => s.Spec.IsTrainingCruiser);\r
+ if (tc == 0)\r
+ return 0;\r
+ var level = fleet.Where(s => s.Spec.IsTrainingCruiser).Max(s => s.Level);\r
+ if (tc == 1)\r
+ {\r
+ if (level < 10)\r
+ return 0.03;\r
+ if (level < 30)\r
+ return 0.05;\r
+ if (level < 60)\r
+ return 0.07;\r
+ if (level < 100)\r
+ return 0.10;\r
+ return 0.15;\r
+ }\r
+ if (level < 10)\r
+ return 0.04;\r
+ if (level < 30)\r
+ return 0.06;\r
+ if (level < 60)\r
+ return 0.08;\r
+ if (level < 100)\r
+ return 0.12;\r
+ return 0.175;\r
}\r
\r
public void InspectMapNext(dynamic json)\r