From 31ec0b4af7c3096e593a2e27c949441279c12ed4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A5=9E=E6=A8=B9=E6=A1=9C=E4=B9=83?= Date: Wed, 5 Apr 2017 23:45:05 +0800 Subject: [PATCH 01/21] Something awkward --- HeavenlyWind/Views/Game/Overview.xaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/HeavenlyWind/Views/Game/Overview.xaml b/HeavenlyWind/Views/Game/Overview.xaml index 40f5dc39..86fe63a2 100644 --- a/HeavenlyWind/Views/Game/Overview.xaml +++ b/HeavenlyWind/Views/Game/Overview.xaml @@ -126,10 +126,10 @@ - - From 782d3b6cc8a4161e69864490a9830f06e3660d7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A5=9E=E6=A8=B9=E6=A1=9C=E4=B9=83?= Date: Fri, 5 May 2017 12:57:50 +0800 Subject: [PATCH 02/21] Fix a little bug --- HeavenlyWind.Game/KanColleGame.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/HeavenlyWind.Game/KanColleGame.cs b/HeavenlyWind.Game/KanColleGame.cs index d6bab419..4d7a7cbb 100644 --- a/HeavenlyWind.Game/KanColleGame.cs +++ b/HeavenlyWind.Game/KanColleGame.cs @@ -71,7 +71,7 @@ internal set var rMap = Maps[int.Parse(r.Parameters["api_maparea_id"]) * 10 + int.Parse(r.Parameters["api_map_no"])]; rMap.Difficulty = (EventMapDifficulty)int.Parse(r.Parameters["api_rank"]); - var rMaxHP = r.GetData().MaxHP ?? 9999; + var rMaxHP = r.GetData()?.MaxHP ?? 9999; rMap.HP.Set(rMaxHP, rMaxHP); }); From 26005c45702ade27b8f0b34170f2876263264e14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A5=9E=E6=A8=B9=E6=A1=9C=E4=B9=83?= Date: Sat, 12 Aug 2017 23:49:39 +0800 Subject: [PATCH 03/21] Some scripts about game loading don't be forced to check --- HeavenlyWind.Game/Services/CacheService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/HeavenlyWind.Game/Services/CacheService.cs b/HeavenlyWind.Game/Services/CacheService.cs index 5b40debe..fade2d7d 100644 --- a/HeavenlyWind.Game/Services/CacheService.cs +++ b/HeavenlyWind.Game/Services/CacheService.cs @@ -67,7 +67,7 @@ internal void ProcessRequest(ResourceSession rpResourceSession, Session rpSessio { var rTimestamp = new DateTimeOffset(File.GetLastWriteTime(rFilename)); - if (rpResourceSession.Path.OICContains("mainD2.swf") || rpResourceSession.Path.OICContains(".js") || !CheckFileVersionAndTimestamp(rpResourceSession, rTimestamp)) + if (rpResourceSession.Path.OICContains("mainD2.swf") || !CheckFileVersionAndTimestamp(rpResourceSession, rTimestamp)) { rpSession.oRequest["If-Modified-Since"] = rTimestamp.ToString("R"); rpSession.bBufferResponse = true; From 9a2c78632501b8f9ad04cdbf650993c3b3212d47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A5=9E=E6=A8=B9=E6=A1=9C=E4=B9=83?= Date: Mon, 21 Aug 2017 14:43:16 +0800 Subject: [PATCH 04/21] Target higher ship level ceiling --- HeavenlyWind.Game/Models/ExperienceTable.cs | 197 +++++++++++--------- HeavenlyWind/Services/UpdateService.cs | 3 + 2 files changed, 117 insertions(+), 83 deletions(-) diff --git a/HeavenlyWind.Game/Models/ExperienceTable.cs b/HeavenlyWind.Game/Models/ExperienceTable.cs index 165c05f2..3a4d4fff 100644 --- a/HeavenlyWind.Game/Models/ExperienceTable.cs +++ b/HeavenlyWind.Game/Models/ExperienceTable.cs @@ -1,16 +1,44 @@ -using Sakuno.Collections; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; using System.Collections.Generic; +using System.IO; namespace Sakuno.KanColle.Amatsukaze.Game.Models { public static class ExperienceTable { - public static IDTable Ship { get; } + public static IDTable Ship { get; private set; } public static IDTable Admiral { get; } static ExperienceTable() { - Ship = new IDTable(new SortedList(155) + if (!DataStore.TryGet("ship_experience", out byte[] content)) + ShipExperienceFallback(); + else + { + var reader = new JsonTextReader(new StreamReader(new MemoryStream(content))); + var data = JArray.Load(reader).ToObject(); + + var table = new SortedList(data.Length); + + var acc = 0; + + for (var i = 0; i < data.Length; i++) + { + if (i > 0) + acc += table[i].Next; + + var next = 0; + if (i < data.Length - 1) + next = data[i + 1] - data[i]; + + table[i + 1] = new Experience(i + 1, acc, next); + } + + Ship = new IDTable(table); + } + + Admiral = new IDTable(new SortedList(120) { { 1, new Experience(1, 0, 100) }, { 2, new Experience(2, 100, 200) }, @@ -110,66 +138,34 @@ static ExperienceTable() { 96, new Experience(96, 701500, 60000) }, { 97, new Experience(97, 761500, 90000) }, { 98, new Experience(98, 851500, 148500) }, - { 99, new Experience(99, 1000000, 0) }, - { 100, new Experience(100, 1000000, 10000) }, - { 101, new Experience(101, 1010000, 1000) }, - { 102, new Experience(102, 1011000, 2000) }, - { 103, new Experience(103, 1013000, 3000) }, - { 104, new Experience(104, 1016000, 4000) }, - { 105, new Experience(105, 1020000, 5000) }, - { 106, new Experience(106, 1025000, 6000) }, - { 107, new Experience(107, 1031000, 7000) }, - { 108, new Experience(108, 1038000, 8000) }, - { 109, new Experience(109, 1046000, 9000) }, - { 110, new Experience(110, 1055000, 10000) }, - { 111, new Experience(111, 1065000, 12000) }, - { 112, new Experience(112, 1077000, 14000) }, - { 113, new Experience(113, 1091000, 16000) }, - { 114, new Experience(114, 1107000, 18000) }, - { 115, new Experience(115, 1125000, 20000) }, - { 116, new Experience(116, 1145000, 23000) }, - { 117, new Experience(117, 1168000, 26000) }, - { 118, new Experience(118, 1194000, 29000) }, - { 119, new Experience(119, 1223000, 32000) }, - { 120, new Experience(120, 1255000, 35000) }, - { 121, new Experience(121, 1290000, 39000) }, - { 122, new Experience(122, 1329000, 43000) }, - { 123, new Experience(123, 1372000, 47000) }, - { 124, new Experience(124, 1419000, 51000) }, - { 125, new Experience(125, 1470000, 55000) }, - { 126, new Experience(126, 1525000, 59000) }, - { 127, new Experience(127, 1584000, 63000) }, - { 128, new Experience(128, 1647000, 67000) }, - { 129, new Experience(129, 1714000, 71000) }, - { 130, new Experience(130, 1785000, 75000) }, - { 131, new Experience(131, 1860000, 80000) }, - { 132, new Experience(132, 1940000, 85000) }, - { 133, new Experience(133, 2025000, 90000) }, - { 134, new Experience(134, 2115000, 95000) }, - { 135, new Experience(135, 2210000, 100000) }, - { 136, new Experience(136, 2310000, 105000) }, - { 137, new Experience(137, 2415000, 110000) }, - { 138, new Experience(138, 2525000, 115000) }, - { 139, new Experience(139, 2640000, 120000) }, - { 140, new Experience(140, 2760000, 127000) }, - { 141, new Experience(141, 2887000, 134000) }, - { 142, new Experience(142, 3021000, 141000) }, - { 143, new Experience(143, 3162000, 148000) }, - { 144, new Experience(144, 3310000, 155000) }, - { 145, new Experience(145, 3465000, 163000) }, - { 146, new Experience(146, 3628000, 171000) }, - { 147, new Experience(147, 3799000, 179000) }, - { 148, new Experience(148, 3978000, 187000) }, - { 149, new Experience(149, 4165000, 195000) }, - { 150, new Experience(150, 4360000, 204000) }, - { 151, new Experience(151, 4564000, 213000) }, - { 152, new Experience(152, 4777000, 222000) }, - { 153, new Experience(153, 4999000, 231000) }, - { 154, new Experience(154, 5230000, 240000) }, - { 155, new Experience(155, 5470000, 0) }, + { 99, new Experience(99, 1000000, 300000) }, + { 100, new Experience(100, 1300000, 300000) }, + { 101, new Experience(101, 1600000, 300000) }, + { 102, new Experience(102, 1900000, 300000) }, + { 103, new Experience(103, 2200000, 400000) }, + { 104, new Experience(104, 2600000, 400000) }, + { 105, new Experience(105, 3000000, 500000) }, + { 106, new Experience(106, 3500000, 500000) }, + { 107, new Experience(107, 4000000, 600000) }, + { 108, new Experience(108, 4600000, 600000) }, + { 109, new Experience(109, 5200000, 700000) }, + { 110, new Experience(110, 5900000, 700000) }, + { 111, new Experience(111, 6600000, 800000) }, + { 112, new Experience(112, 7400000, 800000) }, + { 113, new Experience(113, 8200000, 900000) }, + { 114, new Experience(114, 9100000, 900000) }, + { 115, new Experience(115, 10000000, 1000000) }, + { 116, new Experience(116, 11000000, 1000000) }, + { 117, new Experience(117, 12000000, 1000000) }, + { 118, new Experience(118, 13000000, 1000000) }, + { 119, new Experience(119, 14000000, 1000000) }, + { 120, new Experience(120, 15000000, 0) }, }); + } - Admiral = new IDTable(new SortedList(120) + static void ShipExperienceFallback() + { + Ship = new IDTable(new SortedList(155) { { 1, new Experience(1, 0, 100) }, { 2, new Experience(2, 100, 200) }, @@ -269,28 +265,63 @@ static ExperienceTable() { 96, new Experience(96, 701500, 60000) }, { 97, new Experience(97, 761500, 90000) }, { 98, new Experience(98, 851500, 148500) }, - { 99, new Experience(99, 1000000, 300000) }, - { 100, new Experience(100, 1300000, 300000) }, - { 101, new Experience(101, 1600000, 300000) }, - { 102, new Experience(102, 1900000, 300000) }, - { 103, new Experience(103, 2200000, 400000) }, - { 104, new Experience(104, 2600000, 400000) }, - { 105, new Experience(105, 3000000, 500000) }, - { 106, new Experience(106, 3500000, 500000) }, - { 107, new Experience(107, 4000000, 600000) }, - { 108, new Experience(108, 4600000, 600000) }, - { 109, new Experience(109, 5200000, 700000) }, - { 110, new Experience(110, 5900000, 700000) }, - { 111, new Experience(111, 6600000, 800000) }, - { 112, new Experience(112, 7400000, 800000) }, - { 113, new Experience(113, 8200000, 900000) }, - { 114, new Experience(114, 9100000, 900000) }, - { 115, new Experience(115, 10000000, 1000000) }, - { 116, new Experience(116, 11000000, 1000000) }, - { 117, new Experience(117, 12000000, 1000000) }, - { 118, new Experience(118, 13000000, 1000000) }, - { 119, new Experience(119, 14000000, 1000000) }, - { 120, new Experience(120, 15000000, 0) }, + { 99, new Experience(99, 1000000, 0) }, + { 100, new Experience(100, 1000000, 10000) }, + { 101, new Experience(101, 1010000, 1000) }, + { 102, new Experience(102, 1011000, 2000) }, + { 103, new Experience(103, 1013000, 3000) }, + { 104, new Experience(104, 1016000, 4000) }, + { 105, new Experience(105, 1020000, 5000) }, + { 106, new Experience(106, 1025000, 6000) }, + { 107, new Experience(107, 1031000, 7000) }, + { 108, new Experience(108, 1038000, 8000) }, + { 109, new Experience(109, 1046000, 9000) }, + { 110, new Experience(110, 1055000, 10000) }, + { 111, new Experience(111, 1065000, 12000) }, + { 112, new Experience(112, 1077000, 14000) }, + { 113, new Experience(113, 1091000, 16000) }, + { 114, new Experience(114, 1107000, 18000) }, + { 115, new Experience(115, 1125000, 20000) }, + { 116, new Experience(116, 1145000, 23000) }, + { 117, new Experience(117, 1168000, 26000) }, + { 118, new Experience(118, 1194000, 29000) }, + { 119, new Experience(119, 1223000, 32000) }, + { 120, new Experience(120, 1255000, 35000) }, + { 121, new Experience(121, 1290000, 39000) }, + { 122, new Experience(122, 1329000, 43000) }, + { 123, new Experience(123, 1372000, 47000) }, + { 124, new Experience(124, 1419000, 51000) }, + { 125, new Experience(125, 1470000, 55000) }, + { 126, new Experience(126, 1525000, 59000) }, + { 127, new Experience(127, 1584000, 63000) }, + { 128, new Experience(128, 1647000, 67000) }, + { 129, new Experience(129, 1714000, 71000) }, + { 130, new Experience(130, 1785000, 75000) }, + { 131, new Experience(131, 1860000, 80000) }, + { 132, new Experience(132, 1940000, 85000) }, + { 133, new Experience(133, 2025000, 90000) }, + { 134, new Experience(134, 2115000, 95000) }, + { 135, new Experience(135, 2210000, 100000) }, + { 136, new Experience(136, 2310000, 105000) }, + { 137, new Experience(137, 2415000, 110000) }, + { 138, new Experience(138, 2525000, 115000) }, + { 139, new Experience(139, 2640000, 120000) }, + { 140, new Experience(140, 2760000, 127000) }, + { 141, new Experience(141, 2887000, 134000) }, + { 142, new Experience(142, 3021000, 141000) }, + { 143, new Experience(143, 3162000, 148000) }, + { 144, new Experience(144, 3310000, 155000) }, + { 145, new Experience(145, 3465000, 163000) }, + { 146, new Experience(146, 3628000, 171000) }, + { 147, new Experience(147, 3799000, 179000) }, + { 148, new Experience(148, 3978000, 187000) }, + { 149, new Experience(149, 4165000, 195000) }, + { 150, new Experience(150, 4360000, 204000) }, + { 151, new Experience(151, 4564000, 213000) }, + { 152, new Experience(152, 4777000, 222000) }, + { 153, new Experience(153, 4999000, 231000) }, + { 154, new Experience(154, 5230000, 240000) }, + { 155, new Experience(155, 5470000, 0) }, }); } diff --git a/HeavenlyWind/Services/UpdateService.cs b/HeavenlyWind/Services/UpdateService.cs index a3b9535e..ffc92252 100644 --- a/HeavenlyWind/Services/UpdateService.cs +++ b/HeavenlyWind/Services/UpdateService.cs @@ -201,6 +201,9 @@ IEnumerable GetOfficialDataStoreItem() if (DataStore.TryGet("ship_avatar", DataStoreRetrieveOption.ExcludeContent, out rItem)) yield return rItem; + + if (DataStore.TryGet("ship_experience", DataStoreRetrieveOption.ExcludeContent, out rItem)) + yield return rItem; } void ProcessFiles(CheckForUpdateResult rpResult) { From a87fd8ff167c171b46a6360cf6f71d0f1a651659 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A5=9E=E6=A8=B9=E6=A1=9C=E4=B9=83?= Date: Fri, 1 Sep 2017 13:51:31 +0800 Subject: [PATCH 05/21] Little fix --- HeavenlyWind.Game/Models/Events/NothingHappenedEvent.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/HeavenlyWind.Game/Models/Events/NothingHappenedEvent.cs b/HeavenlyWind.Game/Models/Events/NothingHappenedEvent.cs index 00fd2c3d..27dd2d43 100644 --- a/HeavenlyWind.Game/Models/Events/NothingHappenedEvent.cs +++ b/HeavenlyWind.Game/Models/Events/NothingHappenedEvent.cs @@ -16,7 +16,7 @@ public class NothingHappenedEvent : SortieEvent internal NothingHappenedEvent(MapInfo rpMap, RawMapExploration rpData) : base(rpData) { - if (Message == NothingHappenedMessage.ManualSelection && MapService.Instance.ContainsMap(rpMap.ID)) + if (Message == NothingHappenedMessage.ManualSelection && rpData.NodeSelection != null && MapService.Instance.ContainsMap(rpMap.ID)) { CurrentNode = MapService.Instance.GetNodeWikiID(rpMap.ID, rpData.Node) ?? rpData.Node.ToString(); NodeSelections = rpData.NodeSelection.Nodes.Select(r => new NodeSelection(rpMap, rpData.Node, r)).ToArray(); From 9db53e52ea36cbe3158f1ec0a69da73e41289ca1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A5=9E=E6=A8=B9=E6=A1=9C=E4=B9=83?= Date: Wed, 13 Sep 2017 21:34:54 +0800 Subject: [PATCH 06/21] ASW attack power --- HeavenlyWind.Game/Models/ShipCombatAbility.cs | 27 ++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/HeavenlyWind.Game/Models/ShipCombatAbility.cs b/HeavenlyWind.Game/Models/ShipCombatAbility.cs index 54a10aeb..c5a95c06 100644 --- a/HeavenlyWind.Game/Models/ShipCombatAbility.cs +++ b/HeavenlyWind.Game/Models/ShipCombatAbility.cs @@ -339,6 +339,7 @@ void CalculateASWAttackPower() var rSonerCount = 0; var rDepthChargerCount = 0; + var rDepthChargerThrowerCount = 0; var rASWBase = r_Ship.Status.ASW; var rResult = .0; @@ -355,7 +356,17 @@ void CalculateASWAttackPower() break; case EquipmentType.DepthCharge: - rDepthChargerCount++; + switch (rEquipment.Info.ID) + { + case 226: + case 227: + rDepthChargerCount++; + break; + + default: + rDepthChargerThrowerCount++; + break; + } rResult += rEquipment.Info.ASW; break; @@ -379,8 +390,18 @@ void CalculateASWAttackPower() rResult *= GetHealthModifier(); - if (rSonerCount > 0 && rDepthChargerCount > 0) - rResult *= 1.15; + if (rSonerCount == 0) + { + if (rDepthChargerCount > 0 && rDepthChargerThrowerCount > 0) + rResult *= 1.1; + } + else + { + if (rDepthChargerCount > 0 && rDepthChargerThrowerCount > 0) + rResult *= 1.4375; + else if (rDepthChargerCount > 0 || rDepthChargerThrowerCount > 0) + rResult *= 1.15; + } GetAttackPowerAfterCaps(rResult, 100.0); From c4287eb0b1d12c9155edbde9f16e46870619923b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A5=9E=E6=A8=B9=E6=A1=9C=E4=B9=83?= Date: Sat, 30 Sep 2017 17:00:28 +0800 Subject: [PATCH 07/21] Update packages --- HeavenlyWind.Base/HeavenlyWind.Base.csproj | 13 +++++++------ HeavenlyWind.Base/packages.config | 4 ++-- HeavenlyWind.Game/HeavenlyWind.Game.csproj | 13 +++++++------ HeavenlyWind.Game/packages.config | 4 ++-- HeavenlyWind/App.config | 2 +- HeavenlyWind/HeavenlyWind.csproj | 13 +++++++------ HeavenlyWind/packages.config | 4 ++-- 7 files changed, 28 insertions(+), 25 deletions(-) diff --git a/HeavenlyWind.Base/HeavenlyWind.Base.csproj b/HeavenlyWind.Base/HeavenlyWind.Base.csproj index 80ae2da2..5b23b733 100644 --- a/HeavenlyWind.Base/HeavenlyWind.Base.csproj +++ b/HeavenlyWind.Base/HeavenlyWind.Base.csproj @@ -12,6 +12,8 @@ v4.5 512 + + true @@ -32,16 +34,15 @@ - $(SolutionDir)packages\Newtonsoft.Json.10.0.2\lib\net45\Newtonsoft.Json.dll + $(SolutionDir)packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll - - $(SolutionDir)packages\System.Data.SQLite.Core.1.0.104.0\lib\net45\System.Data.SQLite.dll - True + + $(SolutionDir)packages\System.Data.SQLite.Core.1.0.105.2\lib\net45\System.Data.SQLite.dll $(SolutionDir)packages\System.Reactive.Core.3.1.1\lib\net45\System.Reactive.Core.dll @@ -168,13 +169,13 @@ - このプロジェクトは、このコンピューター上にない NuGet パッケージを参照しています。それらのパッケージをダウンロードするには、[NuGet パッケージの復元] を使用します。詳細については、http://go.microsoft.com/fwlink/?LinkID=322105 を参照してください。見つからないファイルは {0} です。 - + +