diff --git a/MHFZ_Overlay/App.config b/MHFZ_Overlay/App.config
index 4f5de082..d2f7b00b 100644
--- a/MHFZ_Overlay/App.config
+++ b/MHFZ_Overlay/App.config
@@ -1029,6 +1029,15 @@
0.5
+
+ True
+
+
+ 105
+
+
+ 102
+
diff --git a/MHFZ_Overlay/Assets/Icons/png/whetstone_red.png b/MHFZ_Overlay/Assets/Icons/png/whetstone_red.png
new file mode 100644
index 00000000..d6182fe4
Binary files /dev/null and b/MHFZ_Overlay/Assets/Icons/png/whetstone_red.png differ
diff --git a/MHFZ_Overlay/MHFZ_Overlay.csproj b/MHFZ_Overlay/MHFZ_Overlay.csproj
index 8f69ada2..4e2ab87b 100644
--- a/MHFZ_Overlay/MHFZ_Overlay.csproj
+++ b/MHFZ_Overlay/MHFZ_Overlay.csproj
@@ -799,6 +799,7 @@
+
@@ -1855,6 +1856,7 @@
+
diff --git a/MHFZ_Overlay/Models/Addresses/AddressModelHGE.cs b/MHFZ_Overlay/Models/Addresses/AddressModelHGE.cs
index a6d88177..306b0e96 100644
--- a/MHFZ_Overlay/Models/Addresses/AddressModelHGE.cs
+++ b/MHFZ_Overlay/Models/Addresses/AddressModelHGE.cs
@@ -1908,4 +1908,7 @@ public AddressModelHGE(Mem m)
///
public override int QuestVariant4() => this.M.ReadByte("mhfo-hd.dll+2AFA89A");
+ ///
+ public override int DualSwordsSharpens() => this.M.ReadByte("mhfo-hd.dll+DC6C278");
+
}
diff --git a/MHFZ_Overlay/Models/Addresses/AddressModelNotHGE.cs b/MHFZ_Overlay/Models/Addresses/AddressModelNotHGE.cs
index faa7137a..e5af8e2e 100644
--- a/MHFZ_Overlay/Models/Addresses/AddressModelNotHGE.cs
+++ b/MHFZ_Overlay/Models/Addresses/AddressModelNotHGE.cs
@@ -1827,4 +1827,8 @@ public AddressModelNotHGE(Mem m)
///
public override int QuestVariant4() => this.M.ReadByte("mhfo.dll+28C2CEA");
+ ///
+ public override int DualSwordsSharpens() => this.M.ReadByte("mhfo.dll+50346B8");
+
+
}
diff --git a/MHFZ_Overlay/Services/OverlaySettingsService.cs b/MHFZ_Overlay/Services/OverlaySettingsService.cs
index e3fd4e95..12cb07da 100644
--- a/MHFZ_Overlay/Services/OverlaySettingsService.cs
+++ b/MHFZ_Overlay/Services/OverlaySettingsService.cs
@@ -73,6 +73,7 @@ public static void SetConfigurationPreset(Settings s, ConfigurationPreset preset
s.PersonalBestTimePercentShown = false;
s.EnablePersonalBestPaceColor = false;
s.PlayerPositionShown = false;
+ s.DualSwordsSharpensShown = false;
s.TimerInfoShown = true;
s.EnableInputLogging = true;
@@ -109,7 +110,7 @@ public static void SetConfigurationPreset(Settings s, ConfigurationPreset preset
s.EnableInputLogging = false;
s.EnableMap = false;
s.PlayerPositionShown = false;
-
+ s.DualSwordsSharpensShown = false;
s.OverlayModeWatermarkShown = false;
s.Monster1IconShown = true;
@@ -140,6 +141,7 @@ public static void SetConfigurationPreset(Settings s, ConfigurationPreset preset
s.ActionsPerMinuteShown = false;
s.PersonalBestShown = false;
s.PlayerPositionShown = false;
+ s.DualSwordsSharpensShown = false;
s.OverlayModeWatermarkShown = false;
@@ -179,6 +181,7 @@ public static void SetConfigurationPreset(Settings s, ConfigurationPreset preset
s.TimerInfoShown = true;
s.EnableInputLogging = true;
s.EnableMap = true;
+ s.DualSwordsSharpensShown = true;
s.OverlayModeWatermarkShown = true;
diff --git a/MHFZ_Overlay/Settings.Designer.cs b/MHFZ_Overlay/Settings.Designer.cs
index 47a60405..d5181c01 100644
--- a/MHFZ_Overlay/Settings.Designer.cs
+++ b/MHFZ_Overlay/Settings.Designer.cs
@@ -4102,5 +4102,41 @@ public double PlayerInputPressedOpacity {
this["PlayerInputPressedOpacity"] = value;
}
}
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("True")]
+ public bool DualSwordsSharpensShown {
+ get {
+ return ((bool)(this["DualSwordsSharpensShown"]));
+ }
+ set {
+ this["DualSwordsSharpensShown"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("105")]
+ public double DualSwordsSharpensX {
+ get {
+ return ((double)(this["DualSwordsSharpensX"]));
+ }
+ set {
+ this["DualSwordsSharpensX"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("102")]
+ public double DualSwordsSharpensY {
+ get {
+ return ((double)(this["DualSwordsSharpensY"]));
+ }
+ set {
+ this["DualSwordsSharpensY"] = value;
+ }
+ }
}
}
diff --git a/MHFZ_Overlay/Settings.settings b/MHFZ_Overlay/Settings.settings
index 5a8eafc6..8f41eae1 100644
--- a/MHFZ_Overlay/Settings.settings
+++ b/MHFZ_Overlay/Settings.settings
@@ -1022,5 +1022,14 @@
0.5
+
+ True
+
+
+ 105
+
+
+ 102
+
\ No newline at end of file
diff --git a/MHFZ_Overlay/ViewModels/Windows/AddressModel.cs b/MHFZ_Overlay/ViewModels/Windows/AddressModel.cs
index bae5df7f..d5d4b919 100644
--- a/MHFZ_Overlay/ViewModels/Windows/AddressModel.cs
+++ b/MHFZ_Overlay/ViewModels/Windows/AddressModel.cs
@@ -118,6 +118,8 @@ public AddressModel(Mem m)
public bool ShowPersonalBestAttemptsInfo { get; set; }
+ public bool ShowDualSwordsSharpens { get; set; }
+
public bool ShowMonster1HPBar { get; set; }
public bool ShowMonster2HPBar { get; set; }
@@ -1393,6 +1395,8 @@ 21747 or
///
public abstract int QuestVariant4();
+ public abstract int DualSwordsSharpens();
+
///
/// Updates every 11 seconds
///
@@ -1816,7 +1820,8 @@ public OverlayMode GetOverlayMode()
|| s.EnableMap
|| s.PersonalBestTimePercentShown
|| s.EnablePersonalBestPaceColor
- || s.PlayerPositionShown) // TODO monster 1 overview? and update README
+ || s.PlayerPositionShown
+ || s.DualSwordsSharpensShown) // TODO monster 1 overview? and update README
{
return OverlayMode.Standard;
}
@@ -3278,6 +3283,8 @@ public string IsLowestMonsterDefrate
public string DivaSongIcon { get; set; } = "../../Assets/Icons/png/diva_fountain.png";
+ public string DualSwordsSharpensIcon { get; set; } = "../../Assets/Icons/png/whetstone.png";
+
public string GuildFoodIcon { get; set; } = "../../Assets/Icons/png/guild_hall.png";
///
@@ -3338,6 +3345,32 @@ public string ATK
}
}
+ public string DualSwordsSharpensColor
+ {
+ get
+ {
+ var count = this.DualSwordsSharpens();
+ if (count >= 4)
+ {
+ this.DualSwordsSharpensIcon = "../../Assets/Icons/png/whetstone_red.png";
+ }
+ else
+ {
+ this.DualSwordsSharpensIcon = "../../Assets/Icons/png/whetstone.png";
+ }
+
+ return count switch
+ {
+ 4 => "#cba6f7", // Mauve
+ 3 => "#f38ba8", // Red
+ 2 => "#fab387", // Peach
+ 1 => "#f9e2af", // Yellow
+ 0 => "#f5e0dc", // Rosewater
+ _ => "#cdd6f4",
+ };
+ }
+ }
+
///
/// Gets the color of the sharpness.
///
@@ -3385,6 +3418,15 @@ public string SharpnessNumber
}
}
+ public string DualSwordsSharpensCount
+ {
+ get
+ {
+ var count = this.DualSwordsSharpens();
+ return count.ToString(CultureInfo.InvariantCulture);
+ }
+ }
+
///
/// Gets the current weapon multiplier.
///
@@ -3401,7 +3443,7 @@ public float CurrentWeaponMultiplier
}
///
- /// Gets the name of the current weapon.
+ /// Gets the name of the current weapon. This refers to the weapon type name.
///
///
/// The name of the current weapon.
diff --git a/MHFZ_Overlay/Views/Windows/ConfigWindow.xaml b/MHFZ_Overlay/Views/Windows/ConfigWindow.xaml
index 3d752452..20f2a503 100644
--- a/MHFZ_Overlay/Views/Windows/ConfigWindow.xaml
+++ b/MHFZ_Overlay/Views/Windows/ConfigWindow.xaml
@@ -2439,6 +2439,8 @@
+
+
@@ -2836,7 +2838,19 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/MHFZ_Overlay/Views/Windows/MainWindow.xaml b/MHFZ_Overlay/Views/Windows/MainWindow.xaml
index 0615a704..1375d664 100644
--- a/MHFZ_Overlay/Views/Windows/MainWindow.xaml
+++ b/MHFZ_Overlay/Views/Windows/MainWindow.xaml
@@ -130,7 +130,20 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/MHFZ_Overlay/Views/Windows/MainWindow.xaml.cs b/MHFZ_Overlay/Views/Windows/MainWindow.xaml.cs
index 9de22eec..dc64e1f8 100644
--- a/MHFZ_Overlay/Views/Windows/MainWindow.xaml.cs
+++ b/MHFZ_Overlay/Views/Windows/MainWindow.xaml.cs
@@ -1327,6 +1327,9 @@ private void SetPlayerStatsVisibility(bool v, Settings s)
this.DataLoader.Model.ShowQuestAttemptsInfo = v && s.QuestAttemptsShown;
this.DataLoader.Model.ShowPersonalBestTimePercentInfo = v && s.PersonalBestTimePercentShown;
this.DataLoader.Model.ShowPersonalBestAttemptsInfo = v && s.PersonalBestAttemptsShown;
+
+ this.DataLoader.Model.ShowDualSwordsSharpens = v && s.DualSwordsSharpensShown && DataLoader.Model.CurrentWeaponName == "Dual Swords";
+
}
private double? yOffset { get; set; }
@@ -1458,6 +1461,10 @@ private void MainGrid_DragOver(object sender, DragEventArgs e)
s.MapX = (double)(pos.X - this.xOffset);
s.MapY = (double)(pos.Y - this.yOffset);
break;
+ case "DualSwordsSharpensInfo":
+ s.DualSwordsSharpensX = (double)(pos.X - this.xOffset);
+ s.DualSwordsSharpensY = (double)(pos.Y - this.yOffset);
+ break;
// case "OverlayModeWatermark":
// s.OverlayModeWatermarkX = (double)(pos.X - this.XOffset);
@@ -1712,6 +1719,7 @@ private void ToggleOverlayBorders()
this.PlayerDPSGraphGridBorder.BorderThickness = thickness;
this.PlayerHitsPerSecondGraphGridBorder.BorderThickness = thickness;
this.TitleBarBorder.BorderThickness = thickness;
+ this.DualSwordsSharpensBorder.BorderThickness = thickness;
}
private void ToggleClickThrough()