diff --git a/MHFZ_Overlay/App.config b/MHFZ_Overlay/App.config
index b52c4cdd..68a6a748 100644
--- a/MHFZ_Overlay/App.config
+++ b/MHFZ_Overlay/App.config
@@ -927,6 +927,33 @@
#11111b
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ False
+
+
+ False
+
diff --git a/MHFZ_Overlay/Assets/Icons/png/transcend.png b/MHFZ_Overlay/Assets/Icons/png/transcend.png
new file mode 100644
index 00000000..20eaa0a5
Binary files /dev/null and b/MHFZ_Overlay/Assets/Icons/png/transcend.png differ
diff --git a/MHFZ_Overlay/Models/Challenge.cs b/MHFZ_Overlay/Models/Challenge.cs
index 6629423d..2853a459 100644
--- a/MHFZ_Overlay/Models/Challenge.cs
+++ b/MHFZ_Overlay/Models/Challenge.cs
@@ -30,15 +30,24 @@ public sealed class Challenge
public DataTemplateKey? ChallengeDataTemplateKey { get; set; }
///
- /// The amount of achievements required in order to unlock the challenge
+ /// The amount of bronze achievements required in order to unlock the challenge
///
- public int AchievementsRequired { get; set; }
+ public int AchievementsBronzeRequired { get; set; }
///
- /// The rank of the achievements required in order to unlock the challenge.
- /// If set to none, it does not require any particular achievement type and any achievement counts for the requirement.
+ /// The amount of silver achievements required in order to unlock the challenge
///
- public AchievementRank AchievementRankRequired { get; set; }
+ public int AchievementsSilverRequired { get; set; }
+
+ ///
+ /// The amount of gold achievements required in order to unlock the challenge
+ ///
+ public int AchievementsGoldRequired { get; set; }
+
+ ///
+ /// The amount of platinum achievements required in order to unlock the challenge
+ ///
+ public int AchievementsPlatinumRequired { get; set; }
///
/// The achievement ID required (e.g. to unlock zenith gauntlet, you should beat gasura solo first). It should be a valid ID.
diff --git a/MHFZ_Overlay/Models/Collections/Achievements.cs b/MHFZ_Overlay/Models/Collections/Achievements.cs
index 12bc2e8f..39ad73af 100644
--- a/MHFZ_Overlay/Models/Collections/Achievements.cs
+++ b/MHFZ_Overlay/Models/Collections/Achievements.cs
@@ -5560,7 +5560,7 @@ public static class Achievements
Description = string.Empty,
Rank = AchievementRank.Platinum,
Image = @"pack://application:,,,/MHFZ_Overlay;component/Assets/Icons/achievement/medal_platinum.png",
- Objective = "Complete a zenith gauntlet without fainting.",
+ Objective = "Complete a Zenith Gauntlet without fainting.",
IsSecret = false,
Hint = string.Empty,
}
@@ -5573,7 +5573,7 @@ public static class Achievements
Description = string.Empty,
Rank = AchievementRank.Platinum,
Image = @"pack://application:,,,/MHFZ_Overlay;component/Assets/Icons/achievement/medal_platinum.png",
- Objective = "Complete a solstice gauntlet without fainting.",
+ Objective = "Complete a Solstice Gauntlet without fainting.",
IsSecret = false,
Hint = string.Empty,
}
@@ -5586,7 +5586,7 @@ public static class Achievements
Description = string.Empty,
Rank = AchievementRank.Platinum,
Image = @"pack://application:,,,/MHFZ_Overlay;component/Assets/Icons/achievement/medal_platinum.png",
- Objective = "Complete a musou gauntlet without fainting.",
+ Objective = "Complete a Musou Gauntlet without fainting.",
IsSecret = false,
Hint = string.Empty,
}
diff --git a/MHFZ_Overlay/Models/Collections/Challenges.cs b/MHFZ_Overlay/Models/Collections/Challenges.cs
new file mode 100644
index 00000000..b41b40dd
--- /dev/null
+++ b/MHFZ_Overlay/Models/Collections/Challenges.cs
@@ -0,0 +1,84 @@
+// © 2023 The mhfz-overlay developers.
+// Use of this source code is governed by a MIT license that can be
+// found in the LICENSE file.
+
+namespace MHFZ_Overlay.Models.Collections;
+
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+public static class Challenges
+{
+ public static List ChallengeList { get; private set; } = new List
+ {
+ {
+ new Challenge()
+ {
+ Name = "Bingo",
+ AchievementIDRequired = 214, // Zenny Galore
+ AchievementsBronzeRequired = 10,
+ AchievementsSilverRequired = 5,
+ AchievementsGoldRequired = 1,
+ AchievementsPlatinumRequired = 0,
+ ChallengeDataTemplateKey = null,
+ Description = "CURRENTLY UNAVAILABLE. You are presented with a variable sized grid depending on the bingo difficulty. In each grid is a monster icon which upon hunting marks the square as completed. Try to complete a fully diagonal, vertical or horizontal line in order to finish the game, and strive for the maximum bingo points!",
+ }
+ },
+ {
+ new Challenge()
+ {
+ Name = "Gacha",
+ AchievementIDRequired = 218, // Road Champion
+ AchievementsBronzeRequired = 20,
+ AchievementsSilverRequired = 10,
+ AchievementsGoldRequired = 5,
+ AchievementsPlatinumRequired = 1,
+ ChallengeDataTemplateKey = null,
+ Description = "CURRENTLY UNAVAILABLE. This is a minigame where you collect gacha cards and buy many sorts of upgrades with gacha coins (of the overlay) in order to help you get more cards! Can you get every single card?",
+ }
+ },
+ {
+ new Challenge()
+ {
+ Name = "Zenith Gauntlet",
+ AchievementIDRequired = 34, // Gasura nightmare
+ AchievementsBronzeRequired = 50,
+ AchievementsSilverRequired = 20,
+ AchievementsGoldRequired = 10,
+ AchievementsPlatinumRequired = 5,
+ ChallengeDataTemplateKey = null,
+ Description = "CURRENTLY UNAVAILABLE. A challenge only for the best of hunters. You have to hunt all 23 Zenith★4 monsters in any order you want, all in one go! Includes a real-time timer.",
+ }
+ },
+ {
+ new Challenge()
+ {
+ Name = "Solstice Gauntlet",
+ AchievementIDRequired = 319, // Bloodthirsty Moon
+ AchievementsBronzeRequired = 60,
+ AchievementsSilverRequired = 50,
+ AchievementsGoldRequired = 20,
+ AchievementsPlatinumRequired = 10,
+ ChallengeDataTemplateKey = null,
+ Description = "CURRENTLY UNAVAILABLE. A supreme challenge that tests the limits of even the most skilled hunters. This challenge demands the defeat of all Conquest Lv9999 and Upper Shiten monsters in a relentless, back-to-back confrontation. Only those who can conquer this formidable trial in one go shall earn the right to claim victory under the Bloodthirsty Moon.",
+ }
+ },
+ {
+ new Challenge()
+ {
+ Name = "Musou Gauntlet",
+ AchievementIDRequired = 317, // Elze bane
+ AchievementsBronzeRequired = 70,
+ AchievementsSilverRequired = 60,
+ AchievementsGoldRequired = 50,
+ AchievementsPlatinumRequired = 20,
+ ChallengeDataTemplateKey = null,
+ Description = "CURRENTLY UNAVAILABLE. Embark on a herculean trial that pushes hunters to the brink of their abilities. This challenge commands the defeat of all Musou monsters in an unyielding, consecutive battle. This merciless gauntlet demands more than mere strength; it calls for tactical finesse and the will to triumph against insurmountable odds. Only those who can surmount this grueling challenge shall earn the title of Unstoppable, showcasing their prowess to the world.",
+ }
+ },
+ };
+}
diff --git a/MHFZ_Overlay/Settings.Designer.cs b/MHFZ_Overlay/Settings.Designer.cs
index 72f63f40..901de0ba 100644
--- a/MHFZ_Overlay/Settings.Designer.cs
+++ b/MHFZ_Overlay/Settings.Designer.cs
@@ -3694,5 +3694,113 @@ public string MonsterBlastBarBorderColor {
this["MonsterBlastBarBorderColor"] = value;
}
}
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("0")]
+ public double GauntletProgressX {
+ get {
+ return ((double)(this["GauntletProgressX"]));
+ }
+ set {
+ this["GauntletProgressX"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("0")]
+ public double GauntletProgressY {
+ get {
+ return ((double)(this["GauntletProgressY"]));
+ }
+ set {
+ this["GauntletProgressY"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("0")]
+ public double GauntletProgressWidth {
+ get {
+ return ((double)(this["GauntletProgressWidth"]));
+ }
+ set {
+ this["GauntletProgressWidth"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("0")]
+ public double GauntletProgressHeight {
+ get {
+ return ((double)(this["GauntletProgressHeight"]));
+ }
+ set {
+ this["GauntletProgressHeight"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("0")]
+ public double BingoProgressX {
+ get {
+ return ((double)(this["BingoProgressX"]));
+ }
+ set {
+ this["BingoProgressX"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("0")]
+ public double BingoProgressY {
+ get {
+ return ((double)(this["BingoProgressY"]));
+ }
+ set {
+ this["BingoProgressY"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("0")]
+ public double BingoProgressSize {
+ get {
+ return ((double)(this["BingoProgressSize"]));
+ }
+ set {
+ this["BingoProgressSize"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("False")]
+ public bool GauntletProgressShown {
+ get {
+ return ((bool)(this["GauntletProgressShown"]));
+ }
+ set {
+ this["GauntletProgressShown"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("False")]
+ public bool BingoProgressShown {
+ get {
+ return ((bool)(this["BingoProgressShown"]));
+ }
+ set {
+ this["BingoProgressShown"] = value;
+ }
+ }
}
}
diff --git a/MHFZ_Overlay/Settings.settings b/MHFZ_Overlay/Settings.settings
index f25a0eb0..06eba87e 100644
--- a/MHFZ_Overlay/Settings.settings
+++ b/MHFZ_Overlay/Settings.settings
@@ -920,5 +920,32 @@
#11111b
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ False
+
+
+ False
+
\ No newline at end of file
diff --git a/MHFZ_Overlay/Views/Windows/ConfigWindow.xaml b/MHFZ_Overlay/Views/Windows/ConfigWindow.xaml
index b5fd6db1..9092d9a3 100644
--- a/MHFZ_Overlay/Views/Windows/ConfigWindow.xaml
+++ b/MHFZ_Overlay/Views/Windows/ConfigWindow.xaml
@@ -1915,7 +1915,32 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/MHFZ_Overlay/Views/Windows/ConfigWindow.xaml.cs b/MHFZ_Overlay/Views/Windows/ConfigWindow.xaml.cs
index 01f6b5e5..efe2583d 100644
--- a/MHFZ_Overlay/Views/Windows/ConfigWindow.xaml.cs
+++ b/MHFZ_Overlay/Views/Windows/ConfigWindow.xaml.cs
@@ -4142,7 +4142,7 @@ private void UpdateAchievementsProgress()
AchievementTotalProgressTextBlock.Fill = (Brush?)brushConverter.ConvertFromString(CatppuccinMochaColors.NameHex["Teal"]);
AchievementTotalProgressPercentTextBlock.Fill = (Brush?)brushConverter.ConvertFromString(CatppuccinMochaColors.NameHex["Teal"]);
}
- else if (true || obtainedAchievements == totalAchievements) // all
+ else if (obtainedAchievements == totalAchievements) // all
{
AchievementsProgressBar.Foreground = (Brush?)brushConverter.ConvertFromString(CatppuccinMochaColors.NameHex["Teal"]);
AchievementsProgressTextBlock.Fill = (Brush?)brushConverter.ConvertFromString(CatppuccinMochaColors.NameHex["Teal"]);