OSDN Git Service

補強装備スロットのダメコンの消費を進撃前に反映させる
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Fri, 14 Aug 2015 13:11:58 +0000 (22:11 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Fri, 14 Aug 2015 13:11:58 +0000 (22:11 +0900)
KancolleSniffer/BattleInfo.cs
KancolleSniffer/ItemInfo.cs

index 1e4a03d..2370505 100644 (file)
@@ -110,18 +110,22 @@ namespace KancolleSniffer
             var combined = json.api_nowhps_combined();\r
             var nowhps = (int[])json.api_nowhps;\r
             _fleet = combined ? 0 : DeckId(json);\r
+            var fstats = _shipInfo.GetShipStatuses(_fleet);\r
             _friend = Record.Setup(\r
                 nowhps, (int[])json.api_maxhps,\r
-                _shipInfo.GetShipStatuses(_fleet).Select(s => s.Slot).ToArray(),\r
+                fstats.Select(s => s.Slot).ToArray(),\r
+                fstats.Select(s => s.SlotEx).ToArray(),\r
                 _itemInfo);\r
             _enemyHp = nowhps.Skip(7).TakeWhile(hp => hp != -1).ToArray();\r
             _enemyStartHp = (int[])_enemyHp.Clone();\r
             if (combined)\r
             {\r
+                var gstats = _shipInfo.GetShipStatuses(1);\r
                 _guard = Record.Setup(\r
                     (int[])json.api_nowhps_combined,\r
                     (int[])json.api_maxhps_combined,\r
-                    _shipInfo.GetShipStatuses(1).Select(s => s.Slot).ToArray(),\r
+                    gstats.Select(s => s.Slot).ToArray(),\r
+                    gstats.Select(s => s.SlotEx).ToArray(),\r
                     _itemInfo);\r
             }\r
             else\r
@@ -347,11 +351,12 @@ namespace KancolleSniffer
             private ItemInfo _itemInfo;\r
             private int _maxHp;\r
             private int[] _slot;\r
+            private int _slotEx;\r
             public int NowHp;\r
             public int StartHp;\r
             public int Damage;\r
 \r
-            public static Record[] Setup(int[] rawHp, int[] rawMax, int[][] slots, ItemInfo itemInfo)\r
+            public static Record[] Setup(int[] rawHp, int[] rawMax, int[][] slots, int[] slotEx, ItemInfo itemInfo)\r
             {\r
                 var hp = rawHp.Skip(1).Take(6).TakeWhile(h => h != -1).ToArray();\r
                 var max = rawMax.Skip(1).Take(6).TakeWhile(h => h != -1).ToArray();\r
@@ -364,6 +369,7 @@ namespace KancolleSniffer
                         StartHp = hp[i],\r
                         _maxHp = max[i],\r
                         _slot = slots[i].ToArray(),\r
+                        _slotEx = slotEx[i],\r
                         _itemInfo = itemInfo\r
                     };\r
                 }\r
@@ -380,6 +386,19 @@ namespace KancolleSniffer
                 }\r
                 Damage += NowHp;\r
                 NowHp = 0;\r
+                var idex = _itemInfo[_slotEx].Id;\r
+                if (idex == 42) // ダメコン\r
+                {\r
+                    _slotEx = -1;\r
+                    NowHp = (int)(_maxHp * 0.2);\r
+                    return;\r
+                }\r
+                if (idex == 43) // 女神\r
+                {\r
+                    _slotEx = -1;\r
+                    NowHp = _maxHp;\r
+                    return;\r
+                }\r
                 for (var j = 0; j < _slot.Length; j++)\r
                 {\r
                     var id = _itemInfo[_slot[j]].Id;\r
@@ -402,6 +421,7 @@ namespace KancolleSniffer
             {\r
                 ship.NowHp = NowHp;\r
                 ship.Slot = _slot;\r
+                ship.SlotEx = _slotEx;\r
             }\r
         }\r
 \r
index df0aa08..fad7d5e 100644 (file)
@@ -307,7 +307,7 @@ namespace KancolleSniffer
             if (full)\r
             {\r
                 _itemInfo.Clear();\r
-                _itemInfo[-1] = new ItemStatus();\r
+                _itemInfo[-1] = _itemInfo[0] = new ItemStatus();\r
             }\r
             foreach (var entry in json)\r
             {\r