From e3d74db312b1c3a0f754a2b30a529cb7ddb9fa10 Mon Sep 17 00:00:00 2001 From: BuildTools Date: Fri, 9 Sep 2022 00:34:27 -0400 Subject: [PATCH] 10.5.1 --- PoE-MxFilterGen/PoE-MxFilterGen.csproj | 7 +- PoE-MxFilterGen/currency_classes.cs | 96 +++++++ PoE-MxFilterGen/generator/accessory.cs | 60 ++-- PoE-MxFilterGen/generator/armour.cs | 66 ++--- PoE-MxFilterGen/generator/base.cs | 30 ++ PoE-MxFilterGen/generator/card.cs | 14 +- PoE-MxFilterGen/generator/fossil.cs | 8 +- PoE-MxFilterGen/generator/tier.cs | 267 +++++++++++------- PoE-MxFilterGen/generator/tier_caster.cs | 115 -------- PoE-MxFilterGen/generator/weapon.cs | 66 ++--- PoE-MxFilterGen/json/settings.cs | 154 +++++++++- PoE-MxFilterGen/main.cs | 236 +++++++++++----- ...gnTimeResolveAssemblyReferencesInput.cache | Bin 21032 -> 21096 bytes PoE-MxFilterGen/obj/Debug/mxfiltergen.exe | Bin 359936 -> 373248 bytes PoE-MxFilterGen/obj/Debug/mxfiltergen.pdb | Bin 77312 -> 120320 bytes PoE-MxFilterGen/structures.cs | 48 ++++ 16 files changed, 770 insertions(+), 397 deletions(-) create mode 100644 PoE-MxFilterGen/currency_classes.cs create mode 100644 PoE-MxFilterGen/generator/base.cs delete mode 100644 PoE-MxFilterGen/generator/tier_caster.cs create mode 100644 PoE-MxFilterGen/structures.cs diff --git a/PoE-MxFilterGen/PoE-MxFilterGen.csproj b/PoE-MxFilterGen/PoE-MxFilterGen.csproj index 2932149..ac089c0 100644 --- a/PoE-MxFilterGen/PoE-MxFilterGen.csproj +++ b/PoE-MxFilterGen/PoE-MxFilterGen.csproj @@ -216,18 +216,20 @@ + + - + @@ -250,6 +252,9 @@ false + + + diff --git a/PoE-MxFilterGen/currency_classes.cs b/PoE-MxFilterGen/currency_classes.cs new file mode 100644 index 0000000..82ff64f --- /dev/null +++ b/PoE-MxFilterGen/currency_classes.cs @@ -0,0 +1,96 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace PoE_MxFilterGen +{ + public class CurrencyDetail + { + public int id { get; set; } + public string icon { get; set; } + public string name { get; set; } + public string tradeId { get; set; } + } + + public class LanguageCurrency + { + public string name { get; set; } + public Translations translations { get; set; } + } + + public class LineCurrency + { + public string currencyTypeName { get; set; } + public Pay pay { get; set; } + public Receive receive { get; set; } + public double chaosEquivalent { get; set; } + public LowConfidencePaySparkLine lowConfidencePaySparkLine { get; set; } + public LowConfidenceReceiveSparkLine lowConfidenceReceiveSparkLine { get; set; } + public string detailsId { get; set; } + } + + public class LowConfidencePaySparkLine + { + public List data { get; set; } + public double totalChange { get; set; } + } + + public class LowConfidenceReceiveSparkLine + { + public List data { get; set; } + public double totalChange { get; set; } + } + + public class Pay + { + public int id { get; set; } + public int league_id { get; set; } + public int pay_currency_id { get; set; } + public int get_currency_id { get; set; } + public DateTime sample_time_utc { get; set; } + public int count { get; set; } + public double value { get; set; } + public int data_point_count { get; set; } + public bool includes_secondary { get; set; } + public int listing_count { get; set; } + } + + public class PaySparkLine + { + public List data { get; set; } + public double totalChange { get; set; } + } + + public class Receive + { + public int id { get; set; } + public int league_id { get; set; } + public int pay_currency_id { get; set; } + public int get_currency_id { get; set; } + public DateTime sample_time_utc { get; set; } + public int count { get; set; } + public double value { get; set; } + public int data_point_count { get; set; } + public bool includes_secondary { get; set; } + public int listing_count { get; set; } + } + + public class ReceiveSparkLine + { + public List data { get; set; } + public double totalChange { get; set; } + } + + public class RootCurrency + { + public List lines { get; set; } + public List currencyDetails { get; set; } + public LanguageCurrency language { get; set; } + } + + public class TranslationsCurrency + { + } +} diff --git a/PoE-MxFilterGen/generator/accessory.cs b/PoE-MxFilterGen/generator/accessory.cs index 35e49a8..57009d5 100644 --- a/PoE-MxFilterGen/generator/accessory.cs +++ b/PoE-MxFilterGen/generator/accessory.cs @@ -6,38 +6,38 @@ using System.Text; namespace PoE_MxFilterGen.generator { - internal class accessory - { - private static string iB; - - public static void Gen(string section, int uniquev) + internal class accessory { - List stringList = new List(); - foreach (Line line in JsonConvert.DeserializeObject(File.ReadAllText("data/ninja.accessory.json", Encoding.UTF8)).lines) - { - double? chaosValue = line.chaosValue; - double num = (double) uniquev; - if (chaosValue.GetValueOrDefault() >= num & chaosValue.HasValue && !stringList.Contains(line.baseType)) + private static string iB; + + public static void Gen(string section, int uniquev) { - stringList.Add(line.baseType); - accessory.iB += string.Format(" \"{0}\"", (object) line.baseType); + List stringList = new List(); + foreach (Line line in JsonConvert.DeserializeObject(File.ReadAllText("data/ninja.accessory.json", Encoding.UTF8)).lines) + { + int chaosValue = Convert.ToInt32(line.chaosValue); + int num = Convert.ToInt32(uniquev); + if (chaosValue >= num) + { + stringList.Add(line.baseType); + accessory.iB += string.Format(@" ""{0}""", line.baseType); + } + } + if (accessory.iB == null) + accessory.iB = "\"\""; + string path = "gen/" + section + ".filter"; + File.AppendAllText(path, string.Format("# Section: {0}", (object)section) + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, Environment.NewLine ?? "", Encoding.UTF8); + File.AppendAllText(path, "Show" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " BaseType" + accessory.iB + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " Rarity = Unique" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " SetTextColor 222 95 0" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " SetBackgroundColor 255 255 255" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " SetBorderColor 180 96 0" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " SetFontSize 40" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " CustomAlertSound \"mx_unique.mp3\"" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " MinimapIcon 0 White Star" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " PlayEffect White", Encoding.UTF8); } - } - if (accessory.iB == null) - accessory.iB = "\"\""; - string path = "gen/" + section + ".filter"; - File.AppendAllText(path, string.Format("# Section: {0}", (object) section) + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, Environment.NewLine ?? "", Encoding.UTF8); - File.AppendAllText(path, "Show" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " BaseType" + accessory.iB + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " Rarity = Unique" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetTextColor 222 95 0" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetBackgroundColor 255 255 255" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetBorderColor 180 96 0" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetFontSize 45" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " CustomAlertSound \"mx_chase.mp3\"" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " MinimapIcon 0 White Star" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " PlayEffect White", Encoding.UTF8); } - } } diff --git a/PoE-MxFilterGen/generator/armour.cs b/PoE-MxFilterGen/generator/armour.cs index 3f9deb0..c903628 100644 --- a/PoE-MxFilterGen/generator/armour.cs +++ b/PoE-MxFilterGen/generator/armour.cs @@ -12,43 +12,39 @@ using System.Text; namespace PoE_MxFilterGen.generator { - internal class armour - { - private static string iB; - - public static void Gen(string section, int uniquev) + internal class armour { - List stringList = new List(); - foreach (Line line in JsonConvert.DeserializeObject(File.ReadAllText("data/ninja.armour.json", Encoding.UTF8)).lines) - { - int? links = line.links; - int num1 = 5; - if (links.GetValueOrDefault() <= num1 & links.HasValue) + private static string iB; + + public static void Gen(string section, int uniquev) { - double? chaosValue = line.chaosValue; - double num2 = (double) uniquev; - if (chaosValue.GetValueOrDefault() >= num2 & chaosValue.HasValue && !stringList.Contains(line.baseType)) - { - stringList.Add(line.baseType); - armour.iB += string.Format(" \"{0}\"", (object) line.baseType); - } + var ln = JsonConvert.DeserializeObject(File.ReadAllText("data/ninja.armour.json", Encoding.UTF8)); + List stringList = new List(); + foreach (Line line in ln.lines) + { + int chaosValue = Convert.ToInt32(line.chaosValue); + int? links = line.links; + if (chaosValue >= uniquev && !stringList.Contains(line.baseType) && links == null) + { + stringList.Add(line.baseType); + armour.iB += string.Format(@" ""{0}""", line.baseType); + } + } + if (armour.iB == null) + armour.iB = "\"\""; + string path = "gen/" + section + ".filter"; + File.AppendAllText(path, string.Format("# Section: {0}", (object)section) + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, Environment.NewLine ?? "", Encoding.UTF8); + File.AppendAllText(path, "Show" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " BaseType " + armour.iB + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " Rarity = Unique" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " SetTextColor 222 95 0" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " SetBackgroundColor 255 255 255" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " SetBorderColor 180 96 0" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " SetFontSize 40" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " CustomAlertSound \"mx_unique.mp3\"" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " MinimapIcon 0 White Star" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " PlayEffect White", Encoding.UTF8); } - } - if (armour.iB == null) - armour.iB = "\"\""; - string path = "gen/" + section + ".filter"; - File.AppendAllText(path, string.Format("# Section: {0}", (object) section) + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, Environment.NewLine ?? "", Encoding.UTF8); - File.AppendAllText(path, "Show" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " BaseType" + armour.iB + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " Rarity = Unique" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetTextColor 222 95 0" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetBackgroundColor 255 255 255" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetBorderColor 180 96 0" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetFontSize 45" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " CustomAlertSound \"mx_chase.mp3\"" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " MinimapIcon 0 White Star" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " PlayEffect White", Encoding.UTF8); } - } } diff --git a/PoE-MxFilterGen/generator/base.cs b/PoE-MxFilterGen/generator/base.cs new file mode 100644 index 0000000..332500a --- /dev/null +++ b/PoE-MxFilterGen/generator/base.cs @@ -0,0 +1,30 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace PoE_MxFilterGen.generator +{ + internal class @base + { + private static string iB; + + public static void GenAccessory(string section, int basev) + { + List stringList = new List(); + foreach (Line line in JsonConvert.DeserializeObject(File.ReadAllText("data/ninja.accessory.json", Encoding.UTF8)).lines) + { + int chaosValue = Convert.ToInt32(line.chaosValue); + int num = Convert.ToInt32(basev); + if (chaosValue >= num) + { + stringList.Add(line.baseType); + @base.iB += string.Format(@" ""{0}""", line.baseType); + } + } + } + } +} diff --git a/PoE-MxFilterGen/generator/card.cs b/PoE-MxFilterGen/generator/card.cs index 70153fb..613b2e4 100644 --- a/PoE-MxFilterGen/generator/card.cs +++ b/PoE-MxFilterGen/generator/card.cs @@ -21,13 +21,13 @@ namespace PoE_MxFilterGen.generator List stringList = new List(); foreach (Line line in JsonConvert.DeserializeObject(File.ReadAllText("data/ninja.card.json", Encoding.UTF8)).lines) { - double? chaosValue = line.chaosValue; - double num = (double) cardv; - if (chaosValue.GetValueOrDefault() >= num & chaosValue.HasValue && !stringList.Contains(line.name)) - { - stringList.Add(line.name); - card.iB += string.Format(" \"{0}\"", (object) line.name); - } + int chaosValue = Convert.ToInt32(line.chaosValue); + int num = Convert.ToInt32(cardv); + if (chaosValue >= num) + { + stringList.Add(line.name); + card.iB += string.Format(@" ""{0}""", line.name); + } } if (card.iB == null) card.iB = "\"\""; diff --git a/PoE-MxFilterGen/generator/fossil.cs b/PoE-MxFilterGen/generator/fossil.cs index 50735ff..6e047b3 100644 --- a/PoE-MxFilterGen/generator/fossil.cs +++ b/PoE-MxFilterGen/generator/fossil.cs @@ -21,12 +21,12 @@ namespace PoE_MxFilterGen.generator List stringList = new List(); foreach (Line line in JsonConvert.DeserializeObject(File.ReadAllText("data/ninja.fossil.json", Encoding.UTF8)).lines) { - double? chaosValue = line.chaosValue; - double num = (double) fossilv; - if (chaosValue.GetValueOrDefault() >= num & chaosValue.HasValue && !stringList.Contains(line.name)) + int chaosValue = Convert.ToInt32(line.chaosValue); + int num = Convert.ToInt32(fossilv); + if (chaosValue >= num) { stringList.Add(line.name); - fossil.iB += string.Format(" \"{0}\"", (object) line.name); + fossil.iB += string.Format(@" ""{0}""", line.name); } } if (fossil.iB == null) diff --git a/PoE-MxFilterGen/generator/tier.cs b/PoE-MxFilterGen/generator/tier.cs index af51b4a..5074c09 100644 --- a/PoE-MxFilterGen/generator/tier.cs +++ b/PoE-MxFilterGen/generator/tier.cs @@ -4,112 +4,177 @@ // MVID: 9686B206-07DB-4C70-B4F4-1F6EF4D87358 // Assembly location: C:\Users\blood\OneDrive\Desktop\mxfiltergen.exe +using Newtonsoft.Json; using System; +using System.Collections.Generic; using System.IO; using System.Text; namespace PoE_MxFilterGen.generator -{ - internal class tier - { - private static string iB; - - public static void Gen(string section) +{ + internal class tier { - string str = File.ReadAllText("config/Tiers.txt"); - if (tier.iB == null) - tier.iB = "\"\""; - string path = "gen/" + section + ".filter"; - File.AppendAllText(path, string.Format("# Section: {0}", (object) section) + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, Environment.NewLine ?? "", Encoding.UTF8); - File.AppendAllText(path, "Show" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " BaseType " + str + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " HasExplicitMod \"Veiled\"" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " Rarity = Rare" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetTextColor 255 215 0" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetBackgroundColor 54 54 54" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetBorderColor 112 255 112 255" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetFontSize 40" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " MinimapIcon 1 Green Star" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " PlayEffect Green" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " CustomAlertSound \"mx_tier.mp3\"" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, Environment.NewLine ?? "", Encoding.UTF8); - File.AppendAllText(path, "Show" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " BaseType " + str + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " FracturedItem True" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " Rarity = Rare" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetTextColor 255 215 0" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetBackgroundColor 54 54 54" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetBorderColor 112 255 112 255" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetFontSize 40" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " MinimapIcon 1 Green Star" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " PlayEffect Green" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " CustomAlertSound \"mx_tier.mp3\"" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, Environment.NewLine ?? "", Encoding.UTF8); - File.AppendAllText(path, "Show" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " BaseType " + str + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SynthesisedItem True" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " Rarity = Rare" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetTextColor 255 215 0" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetBackgroundColor 54 54 54" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetBorderColor 112 255 112 255" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetFontSize 40" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " MinimapIcon 1 Green Star" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " PlayEffect Green" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " CustomAlertSound \"mx_tier.mp3\"" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, Environment.NewLine ?? "", Encoding.UTF8); - File.AppendAllText(path, "Show" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " BaseType " + str + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " Identified True" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " Rarity = Rare" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetTextColor 255 215 0" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetBackgroundColor 54 54 54" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetBorderColor 0 0 0" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetFontSize 35" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " CustomAlertSound \"mx_tier.mp3\"" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, Environment.NewLine ?? "", Encoding.UTF8); - File.AppendAllText(path, "Show" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " BaseType " + str + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " Corrupted True" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " Rarity = Rare" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetTextColor 255 215 0" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetBackgroundColor 54 54 54" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetBorderColor 210 0 0" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetFontSize 35" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " CustomAlertSound \"mx_tier.mp3\"" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, Environment.NewLine ?? "", Encoding.UTF8); - File.AppendAllText(path, "Show" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " BaseType " + str + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " ItemLevel >= 75" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " ItemLevel <= 100" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " Rarity = Rare" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetTextColor 255 215 0" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetBackgroundColor 54 54 54" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetBorderColor 184 218 242" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetFontSize 40" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " CustomAlertSound \"mx_tier.mp3\"" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, Environment.NewLine ?? "", Encoding.UTF8); - File.AppendAllText(path, "Show" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " BaseType " + str + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " ItemLevel >= 60" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " ItemLevel <= 74" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " Rarity = Rare" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetTextColor 255 215 0" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetBackgroundColor 54 54 54" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetBorderColor 222 118 0" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetFontSize 40" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " CustomAlertSound \"mx_tier.mp3\"" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, Environment.NewLine ?? "", Encoding.UTF8); - File.AppendAllText(path, "Show" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " BaseType " + str + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " ItemLevel >= 60" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " ItemLevel <= 74" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " Rarity = Rare" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetTextColor 255 215 0" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetBackgroundColor 54 54 54" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetBorderColor 222 118 0" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetFontSize 40" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " CustomAlertSound \"mx_tier.mp3\"" + Environment.NewLine, Encoding.UTF8); + private static string iB; + private static string bAxe; + private static string bBow; + private static string bClaw; + private static string bDagger; + private static string bFishing; + private static string bMace; + private static string bSceptre; + private static string bStaff; + private static string bSword; + private static string bWand; + private static string bBody; + private static string bBoots; + private static string bGloves; + private static string bHelmet; + private static string bShield; + private static string bQuiver; + public static void Gen(string section, int tierValue, bool tier1HAxe, bool tier2HAxe, bool tierBow, bool tierClaw, bool tierDagger, bool tier1HMace, bool tier2HMace, bool tierSceptre, bool tierStaff, bool tier1HSword, bool tier2HSword, bool tierWand, bool tierBody, bool tierBoots, bool tierGloves, bool tierHelmet, bool tierShield, bool tierQuiver) + { + var ln = JsonConvert.DeserializeObject(File.ReadAllText("data/ninja.base.json", Encoding.UTF8)); + + ForEachLine(ln, "One Handed Axe", tier1HAxe, section, tierValue); + ForEachLine(ln, "Two Handed Axe", tier2HAxe, section, tierValue); + ForEachLine(ln, "Bow", tierBow, section, tierValue); + ForEachLine(ln, "Claw", tierClaw, section, tierValue); + ForEachLine(ln, "Dagger", tierDagger, section, tierValue); + ForEachLine(ln, "One Handed Mace", tier1HMace, section, tierValue); + ForEachLine(ln, "Two Handed Mace", tier2HMace, section, tierValue); + ForEachLine(ln, "Sceptre", tierSceptre, section, tierValue); + ForEachLine(ln, "Staff", tierStaff, section, tierValue); + ForEachLine(ln, "One Handed Sword", tier1HSword, section, tierValue); + ForEachLine(ln, "Two Handed Sword", tier2HSword, section, tierValue); + ForEachLine(ln, "Wand", tierWand, section, tierValue); + ForEachLine(ln, "Body Armour", tierBody, section, tierValue); + ForEachLine(ln, "Boots", tierBoots, section, tierValue); + ForEachLine(ln, "Gloves", tierGloves, section, tierValue); + ForEachLine(ln, "Helmet", tierHelmet, section, tierValue); + ForEachLine(ln, "Shield", tierShield, section, tierValue); + ForEachLine(ln, "Quiver", tierQuiver, section, tierValue); + } + + public static void ForEachLine(dynamic lnb, string type, bool tierBool, string section, int tierValue) + { + int c = 0; + if (tierBool) + { + var ln = JsonConvert.DeserializeObject(File.ReadAllText("data/ninja.base.json", Encoding.UTF8)); + foreach (var line in ln.lines) + { + if (line.itemType == type && tierBool && line.levelRequired <= 86 && line.variant == null && line.chaosValue >= tierValue) + { + c++; + iB += string.Format(@" ""{0}""", line.baseType); + } + } + } + + if (tierBool && c != 0) + { + GenerateFile(section, iB, type); + } + iB = ""; + c = 0; + } + + public static void GenerateFile(string section, string iB, string type) + { + if (iB == null) + iB = "\"\""; + string path = "gen/" + section + ".filter"; + File.AppendAllText(path, $"# Section: {section} ({type})" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, Environment.NewLine ?? "", Encoding.UTF8); + File.AppendAllText(path, "Show" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " BaseType " + iB + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " HasExplicitMod \"Veiled\"" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " Rarity = Rare" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " SetTextColor 255 215 0" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " SetBackgroundColor 54 54 54" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " SetBorderColor 112 255 112 255" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " SetFontSize 35" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " MinimapIcon 1 Green Star" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " PlayEffect Green" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " CustomAlertSound \"mx_tier.mp3\"" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, Environment.NewLine ?? "", Encoding.UTF8); + File.AppendAllText(path, "Show" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " BaseType " + iB + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " FracturedItem True" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " Rarity = Rare" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " SetTextColor 255 215 0" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " SetBackgroundColor 54 54 54" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " SetBorderColor 112 255 112 255" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " SetFontSize 35" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " MinimapIcon 1 Green Star" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " PlayEffect Green" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " CustomAlertSound \"mx_tier.mp3\"" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, Environment.NewLine ?? "", Encoding.UTF8); + File.AppendAllText(path, "Show" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " BaseType " + iB + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " SynthesisedItem True" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " Rarity = Rare" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " SetTextColor 255 215 0" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " SetBackgroundColor 54 54 54" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " SetBorderColor 112 255 112 255" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " SetFontSize 35" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " MinimapIcon 1 Green Star" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " PlayEffect Green" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " CustomAlertSound \"mx_tier.mp3\"" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, Environment.NewLine ?? "", Encoding.UTF8); + File.AppendAllText(path, "Show" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " BaseType " + iB + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " Identified True" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " Rarity = Rare" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " SetTextColor 255 215 0" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " SetBackgroundColor 54 54 54" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " SetBorderColor 0 0 0" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " SetFontSize 35" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " CustomAlertSound \"mx_tier.mp3\"" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, Environment.NewLine ?? "", Encoding.UTF8); + File.AppendAllText(path, "Show" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " BaseType " + iB + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " Corrupted True" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " Rarity = Rare" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " SetTextColor 255 215 0" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " SetBackgroundColor 54 54 54" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " SetBorderColor 210 0 0" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " SetFontSize 35" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " CustomAlertSound \"mx_tier.mp3\"" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, Environment.NewLine ?? "", Encoding.UTF8); + File.AppendAllText(path, "Show" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " BaseType " + iB + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " ItemLevel >= 75" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " ItemLevel <= 100" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " Rarity = Rare" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " SetTextColor 255 215 0" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " SetBackgroundColor 54 54 54" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " SetBorderColor 184 218 242" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " SetFontSize 35" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " CustomAlertSound \"mx_tier.mp3\"" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, Environment.NewLine ?? "", Encoding.UTF8); + File.AppendAllText(path, "Show" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " BaseType " + iB + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " ItemLevel >= 60" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " ItemLevel <= 74" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " Rarity = Rare" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " SetTextColor 255 215 0" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " SetBackgroundColor 54 54 54" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " SetBorderColor 222 118 0" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " SetFontSize 35" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " CustomAlertSound \"mx_tier.mp3\"" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, Environment.NewLine ?? "", Encoding.UTF8); + File.AppendAllText(path, "Show" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " BaseType " + iB + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " ItemLevel >= 60" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " ItemLevel <= 74" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " Rarity = Rare" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " SetTextColor 255 215 0" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " SetBackgroundColor 54 54 54" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " SetBorderColor 222 118 0" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " SetFontSize 35" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " CustomAlertSound \"mx_tier.mp3\"" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, Environment.NewLine ?? "", Encoding.UTF8); + } } - } } diff --git a/PoE-MxFilterGen/generator/tier_caster.cs b/PoE-MxFilterGen/generator/tier_caster.cs deleted file mode 100644 index 2cf960c..0000000 --- a/PoE-MxFilterGen/generator/tier_caster.cs +++ /dev/null @@ -1,115 +0,0 @@ -// Decompiled with JetBrains decompiler -// Type: PoE_MxFilterGen.generator.tier_caster -// Assembly: mxfiltergen, Version=8.4.0.0, Culture=neutral, PublicKeyToken=null -// MVID: 9686B206-07DB-4C70-B4F4-1F6EF4D87358 -// Assembly location: C:\Users\blood\OneDrive\Desktop\mxfiltergen.exe - -using System; -using System.IO; -using System.Text; - -namespace PoE_MxFilterGen.generator -{ - internal class tier_caster - { - private static string iB; - - public static void Gen(string section) - { - string str = File.ReadAllText("config/Tiers_Caster.txt"); - if (tier_caster.iB == null) - tier_caster.iB = "\"\""; - string path = "gen/" + section + ".filter"; - File.AppendAllText(path, string.Format("# Section: {0}", (object) section) + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, Environment.NewLine ?? "", Encoding.UTF8); - File.AppendAllText(path, "Show" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " BaseType " + str + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " HasExplicitMod \"Veiled\"" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " Rarity = Rare" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetTextColor 255 215 0" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetBackgroundColor 54 54 54" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetBorderColor 112 255 112 255" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetFontSize 40" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " MinimapIcon 1 Green Star" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " PlayEffect Green" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " CustomAlertSound \"mx_tier.mp3\"" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, Environment.NewLine ?? "", Encoding.UTF8); - File.AppendAllText(path, "Show" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " BaseType " + str + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " FracturedItem True" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " Rarity = Rare" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetTextColor 255 215 0" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetBackgroundColor 54 54 54" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetBorderColor 112 255 112 255" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetFontSize 40" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " MinimapIcon 1 Green Star" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " PlayEffect Green" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " CustomAlertSound \"mx_tier.mp3\"" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, Environment.NewLine ?? "", Encoding.UTF8); - File.AppendAllText(path, "Show" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " BaseType " + str + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SynthesisedItem True" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " Rarity = Rare" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetTextColor 255 215 0" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetBackgroundColor 54 54 54" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetBorderColor 112 255 112 255" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetFontSize 40" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " MinimapIcon 1 Green Star" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " PlayEffect Green" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " CustomAlertSound \"mx_tier.mp3\"" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, Environment.NewLine ?? "", Encoding.UTF8); - File.AppendAllText(path, "Show" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " BaseType " + str + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " Identified True" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " Rarity = Rare" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetTextColor 255 215 0" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetBackgroundColor 54 54 54" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetBorderColor 0 0 0" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetFontSize 35" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " CustomAlertSound \"mx_tier.mp3\"" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, Environment.NewLine ?? "", Encoding.UTF8); - File.AppendAllText(path, "Show" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " BaseType " + str + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " Corrupted True" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " Rarity = Rare" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetTextColor 255 215 0" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetBackgroundColor 54 54 54" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetBorderColor 210 0 0" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetFontSize 35" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " CustomAlertSound \"mx_tier.mp3\"" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, Environment.NewLine ?? "", Encoding.UTF8); - File.AppendAllText(path, "Show" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " BaseType " + str + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " ItemLevel >= 75" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " ItemLevel <= 100" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " Rarity = Rare" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetTextColor 255 215 0" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetBackgroundColor 54 54 54" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetBorderColor 184 218 242" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetFontSize 40" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " CustomAlertSound \"mx_tier.mp3\"" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, Environment.NewLine ?? "", Encoding.UTF8); - File.AppendAllText(path, "Show" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " BaseType " + str + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " ItemLevel >= 60" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " ItemLevel <= 74" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " Rarity = Rare" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetTextColor 255 215 0" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetBackgroundColor 54 54 54" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetBorderColor 222 118 0" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetFontSize 40" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " CustomAlertSound \"mx_tier.mp3\"" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, Environment.NewLine ?? "", Encoding.UTF8); - File.AppendAllText(path, "Show" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " BaseType " + str + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " ItemLevel >= 60" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " ItemLevel <= 74" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " Rarity = Rare" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetTextColor 255 215 0" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetBackgroundColor 54 54 54" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetBorderColor 222 118 0" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetFontSize 40" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " CustomAlertSound \"mx_tier.mp3\"" + Environment.NewLine, Encoding.UTF8); - } - } -} diff --git a/PoE-MxFilterGen/generator/weapon.cs b/PoE-MxFilterGen/generator/weapon.cs index 1429982..990eccf 100644 --- a/PoE-MxFilterGen/generator/weapon.cs +++ b/PoE-MxFilterGen/generator/weapon.cs @@ -12,43 +12,39 @@ using System.Text; namespace PoE_MxFilterGen.generator { - internal class weapon - { - private static string iB; - - public static void Gen(string section, int uniquev) + internal class weapon { - List stringList = new List(); - foreach (Line line in JsonConvert.DeserializeObject(File.ReadAllText("data/ninja.weapon.json", Encoding.UTF8)).lines) - { - int? links = line.links; - int num1 = 5; - if (links.GetValueOrDefault() <= num1 & links.HasValue) + private static string iB; + + public static void Gen(string section, int uniquev) { - double? chaosValue = line.chaosValue; - double num2 = (double) uniquev; - if (chaosValue.GetValueOrDefault() >= num2 & chaosValue.HasValue && !stringList.Contains(line.baseType)) - { - stringList.Add(line.baseType); - weapon.iB += string.Format(" \"{0}\"", (object) line.baseType); - } + var ln = JsonConvert.DeserializeObject(File.ReadAllText("data/ninja.weapon.json", Encoding.UTF8)); + List stringList = new List(); + foreach (Line line in ln.lines) + { + int chaosValue = Convert.ToInt32(line.chaosValue); + int? links = line.links; + if (chaosValue >= uniquev && !stringList.Contains(line.baseType) && links == null) + { + stringList.Add(line.baseType); + weapon.iB += string.Format(@" ""{0}""", line.baseType); + } + } + if (weapon.iB == null) + weapon.iB = "\"\""; + string path = "gen/" + section + ".filter"; + File.AppendAllText(path, string.Format("# Section: {0}", (object)section) + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, Environment.NewLine ?? "", Encoding.UTF8); + File.AppendAllText(path, "Show" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " BaseType " + weapon.iB + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " Rarity = Unique" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " SetTextColor 222 95 0" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " SetBackgroundColor 255 255 255" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " SetBorderColor 180 96 0" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " SetFontSize 40" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " CustomAlertSound \"mx_unique.mp3\"" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " MinimapIcon 0 White Star" + Environment.NewLine, Encoding.UTF8); + File.AppendAllText(path, " PlayEffect White", Encoding.UTF8); } - } - if (weapon.iB == null) - weapon.iB = "\"\""; - string path = "gen/" + section + ".filter"; - File.AppendAllText(path, string.Format("# Section: {0}", (object) section) + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, Environment.NewLine ?? "", Encoding.UTF8); - File.AppendAllText(path, "Show" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " BaseType" + weapon.iB + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " Rarity = Unique" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetTextColor 222 95 0" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetBackgroundColor 255 255 255" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetBorderColor 180 96 0" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " SetFontSize 45" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " CustomAlertSound \"mx_chase.mp3\"" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " MinimapIcon 0 White Star" + Environment.NewLine, Encoding.UTF8); - File.AppendAllText(path, " PlayEffect White", Encoding.UTF8); } - } } diff --git a/PoE-MxFilterGen/json/settings.cs b/PoE-MxFilterGen/json/settings.cs index a5555f6..2169987 100644 --- a/PoE-MxFilterGen/json/settings.cs +++ b/PoE-MxFilterGen/json/settings.cs @@ -10,6 +10,25 @@ namespace PoE_MxFilterGen.json { public class SETTINGS { + public int tierValue { get; set; } + public bool tier1HAxe { get; set; } + public bool tier2HAxe { get; set; } + public bool tierBow { get; set; } + public bool tierClaw { get; set; } + public bool tierDagger { get; set; } + public bool tier1HMace { get; set; } + public bool tier2HMace { get; set; } + public bool tierSceptre { get; set; } + public bool tierStaff { get; set; } + public bool tier1HSword { get; set; } + public bool tier2HSword { get; set; } + public bool tierWand { get; set; } + public bool tierBody { get; set; } + public bool tierBoots { get; set; } + public bool tierGloves { get; set; } + public bool tierHelmet { get; set; } + public bool tierShield { get; set; } + public bool tierQuiver { get; set; } public int uniqueValue { get; set; } public int fossilValue { get; set; } public int cardValue { get; set; } @@ -19,6 +38,11 @@ namespace PoE_MxFilterGen.json class settings { + public static int GetTierValue() + { + SETTINGS j = JsonConvert.DeserializeObject(File.ReadAllText("settings.json")); + return j.tierValue; + } public static int GetUniqueValue() { @@ -44,19 +68,145 @@ namespace PoE_MxFilterGen.json return j.section; } + internal static bool GetTier1HAxe() + { + SETTINGS j = JsonConvert.DeserializeObject(File.ReadAllText("settings.json")); + return j.tier1HAxe; + } + + internal static bool GetTier2HAxe() + { + SETTINGS j = JsonConvert.DeserializeObject(File.ReadAllText("settings.json")); + return j.tier2HAxe; + } + + internal static bool GetTierBow() + { + SETTINGS j = JsonConvert.DeserializeObject(File.ReadAllText("settings.json")); + return j.tierBow; + } + + internal static bool GetTierClaw() + { + SETTINGS j = JsonConvert.DeserializeObject(File.ReadAllText("settings.json")); + return j.tierClaw; + } + + internal static bool GetTierDagger() + { + SETTINGS j = JsonConvert.DeserializeObject(File.ReadAllText("settings.json")); + return j.tierDagger; + } + + internal static bool GetTier1HMace() + { + SETTINGS j = JsonConvert.DeserializeObject(File.ReadAllText("settings.json")); + return j.tier1HMace; + } + + internal static bool GetTier2HMace() + { + SETTINGS j = JsonConvert.DeserializeObject(File.ReadAllText("settings.json")); + return j.tier2HMace; + } + + internal static bool GetTierSceptre() + { + SETTINGS j = JsonConvert.DeserializeObject(File.ReadAllText("settings.json")); + return j.tierSceptre; + } + + internal static bool GetTierStaff() + { + SETTINGS j = JsonConvert.DeserializeObject(File.ReadAllText("settings.json")); + return j.tierStaff; + } + + internal static bool GetTier1HSword() + { + SETTINGS j = JsonConvert.DeserializeObject(File.ReadAllText("settings.json")); + return j.tier1HSword; + } + + internal static bool GetTier2HSword() + { + SETTINGS j = JsonConvert.DeserializeObject(File.ReadAllText("settings.json")); + return j.tier2HSword; + } + + internal static bool GetTierWand() + { + SETTINGS j = JsonConvert.DeserializeObject(File.ReadAllText("settings.json")); + return j.tierWand; + } + + internal static bool GetTierBody() + { + SETTINGS j = JsonConvert.DeserializeObject(File.ReadAllText("settings.json")); + return j.tierBody; + } + + internal static bool GetTierBoots() + { + SETTINGS j = JsonConvert.DeserializeObject(File.ReadAllText("settings.json")); + return j.tierBoots; + } + + internal static bool GetTierGloves() + { + SETTINGS j = JsonConvert.DeserializeObject(File.ReadAllText("settings.json")); + return j.tierGloves; + } + + internal static bool GetTierHelmet() + { + SETTINGS j = JsonConvert.DeserializeObject(File.ReadAllText("settings.json")); + return j.tierHelmet; + } + + internal static bool GetTierShield() + { + SETTINGS j = JsonConvert.DeserializeObject(File.ReadAllText("settings.json")); + return j.tierShield; + } + + internal static bool GetTierQuiver() + { + SETTINGS j = JsonConvert.DeserializeObject(File.ReadAllText("settings.json")); + return j.tierQuiver; + } + public static void WriteSection(string section) { SETTINGS js = JsonConvert.DeserializeObject(File.ReadAllText($@"settings.json")); SETTINGS se = new SETTINGS { + tierValue = js.tierValue, + tier1HAxe = js.tier1HAxe, + tier2HAxe = js.tier2HAxe, + tierBow = js.tierBow, + tierClaw = js.tierClaw, + tierDagger = js.tierDagger, + tier1HMace = js.tier1HMace, + tier2HMace = js.tier2HMace, + tierSceptre = js.tierSceptre, + tierStaff = js.tierStaff, + tier1HSword = js.tier1HSword, + tier2HSword = js.tier2HSword, + tierWand = js.tierWand, + tierBody = js.tierBody, + tierBoots = js.tierBoots, + tierGloves = js.tierGloves, + tierHelmet = js.tierHelmet, + tierShield = js.tierShield, + tierQuiver = js.tierQuiver, uniqueValue = js.uniqueValue, fossilValue = js.fossilValue, cardValue = js.cardValue, - updateurl = js.updateurl, section = section }; var raw = JsonConvert.SerializeObject(se, Formatting.Indented); File.WriteAllText($@"settings.json", raw); - } + } } } diff --git a/PoE-MxFilterGen/main.cs b/PoE-MxFilterGen/main.cs index 80327a2..3a39c70 100644 --- a/PoE-MxFilterGen/main.cs +++ b/PoE-MxFilterGen/main.cs @@ -4,16 +4,17 @@ using PoE_MxFilterGen.json; using System; using System.Collections.Generic; using System.IO; +using System.Text; namespace PoE_MxFilterGen { internal class main { private static DateTime dt = DateTime.Now; - public static string version = "9.0.0"; + public static string version = "10.5.1"; public static string fDate = string.Format("{0}-{1}-{2}", (object)main.dt.Day, (object)main.dt.Month, (object)main.dt.Year); public static string api = ""; - public static string giturl = "https://git.mxnet.xyz/mikx"; + public static string giturl = "https://mxgit.ovh/mikx"; public static string section = ""; public static string league = ""; public static string path = Environment.GetFolderPath(Environment.SpecialFolder.Personal); @@ -21,21 +22,14 @@ namespace PoE_MxFilterGen public static int ftotal = 0; public static int sprog = 0; public static int stotal = 0; - public static bool deb = false; - public static string[] filters = new string[4] - { - "Normal", - "Strict", - "Strict_NSNLC", - "Strict_Caster" - }; + public static bool debug = false; private static void Main(string[] args) { if (!File.Exists("config/mxfiltergen_settings.json")) { msg.CMW("ERROR: settings.json not found! Downloading a template...", true, 3); - web.DownloadFile("https://poe.mikx.xyz/mxfilter/data/settings_template.json", "config/mxfiltergen_settings.json"); + web.DownloadFile("https://mxpoe.ovh/mxfilter/data/settings_template.json", "config/mxfiltergen_settings.json"); } msg.Splash(); main.CleanDirData(); @@ -55,7 +49,7 @@ namespace PoE_MxFilterGen msg.CMW("Cleaning the base dirs...", true, 1); main.CleanDirData(); msg.CMW("Cleaning the last filter from path...", true, 1); - foreach (string filter in main.filters) + foreach (string filter in structures.Filters()) File.Delete("out/MxFilter_" + filter + ".filter"); msg.CMW("Downloading the latest API data from poe.ninja...", true, 1); web.SaveString(main.api + "itemoverview?league=" + main.league + "&type=UniqueArmour&language=en", "data/ninja.armour.json"); @@ -64,75 +58,183 @@ namespace PoE_MxFilterGen web.SaveString(main.api + "itemoverview?league=" + main.league + "&type=DivinationCard&language=en", "data/ninja.card.json"); web.SaveString(main.api + "currencyoverview?league=" + main.league + "&type=Currency&language=en", "data/ninja.currency.json"); web.SaveString(main.api + "itemoverview?league=" + main.league + "&type=Fossil&language=en", "data/ninja.fossil.json"); - foreach (string filter in main.filters) + web.SaveString(main.api + "itemoverview?league=" + main.league + "&type=BaseType&language=en", "data/ninja.base.json"); + foreach (string filter in structures.Filters()) { string str = "MxFilter"; - main.RootStructure rootStructure = JsonConvert.DeserializeObject(File.ReadAllText("structure/" + filter + ".json")); - msg.CMW(string.Format("Generating the {0} filter using {1} source(s)...", (object)filter, (object)rootStructure.structures.Count), true, 1); - main.ftotal = rootStructure.structures.Count; - foreach (main.STRUCTURE structure in rootStructure.structures) + int sc = structures.Structures().Length; + msg.CMW(string.Format("Generating the {0} filter using {1} source(s)...", filter, sc), true, 1); + main.ftotal = sc; + foreach (var structure in structures.Structures()) { - if (structure.gen) + ++main.fprog; + msg.drawProgress(main.fprog, main.ftotal); + settings.WriteSection(structure); + string section = structure; + int fossilValue = settings.GetFossilValue(); + int cardValue = settings.GetCardValue(); + int uniqueValue = settings.GetUniqueValue(); + int tierValue = settings.GetTierValue(); + bool tier1HAxe = settings.GetTier1HAxe(); + bool tier2HAxe = settings.GetTier2HAxe(); + bool tierBow = settings.GetTierBow(); + bool tierClaw = settings.GetTierClaw(); + bool tierDagger = settings.GetTierDagger(); + bool tier1HMace = settings.GetTier1HMace(); + bool tier2HMace = settings.GetTier2HMace(); + bool tierSceptre = settings.GetTierSceptre(); + bool tierStaff = settings.GetTierStaff(); + bool tier1HSword = settings.GetTier1HSword(); + bool tier2HSword = settings.GetTier2HSword(); + bool tierWand = settings.GetTierWand(); + bool tierBody = settings.GetTierBody(); + bool tierBoots = settings.GetTierBoots(); + bool tierGloves = settings.GetTierGloves(); + bool tierHelmet = settings.GetTierHelmet(); + bool tierShield = settings.GetTierShield(); + bool tierQuiver = settings.GetTierQuiver(); + switch (structure) { - ++main.fprog; - msg.drawProgress(main.fprog, main.ftotal); - settings.WriteSection(structure.section); - string section = structure.section; - int fossilValue = settings.GetFossilValue(); - int cardValue = settings.GetCardValue(); - int uniqueValue = settings.GetUniqueValue(); - switch (structure.section) - { - case "DIVINATION CARD (GEN)": - card.Gen(section, cardValue); - break; - case "EXPENSIVE UNIQUE (GEN) (Accessories)": - accessory.Gen(section, uniqueValue); - break; - case "EXPENSIVE UNIQUE (GEN) (Armours)": - armour.Gen(section, uniqueValue); - break; - case "EXPENSIVE UNIQUE (GEN) (Weapons)": - weapon.Gen(section, uniqueValue); - break; - case "FOSSIL (GEN)": - fossil.Gen(section, fossilValue); - break; - case "Tiers (DATA)": - tier.Gen(section); - break; - case "Tiers - Caster (DATA)": - tier_caster.Gen(section); - break; - } - } - else - { - ++main.fprog; - msg.drawProgress(main.fprog, main.ftotal); + case "DIVINATION CARD (GEN)": + card.Gen(section, cardValue); + break; + case "EXPENSIVE UNIQUE (GEN) (Accessories)": + accessory.Gen(section, uniqueValue); + break; + case "EXPENSIVE UNIQUE (GEN) (Armours)": + armour.Gen(section, uniqueValue); + break; + case "EXPENSIVE UNIQUE (GEN) (Weapons)": + weapon.Gen(section, uniqueValue); + break; + case "FOSSIL (GEN)": + fossil.Gen(section, fossilValue); + break; + case "Tiers (DATA)": + tier.Gen(section, tierValue, tier1HAxe, tier2HAxe, tierBow, tierClaw, tierDagger, tier1HMace, tier2HMace, tierSceptre, tierStaff, tier1HSword, tier2HSword, tierWand, tierBody, tierBoots, tierGloves, tierHelmet, tierShield, tierQuiver); + break; } } msg.CMW("Creating the final filter...", true, 1); - foreach (main.STRUCTURE structure in rootStructure.structures) + foreach (var structure in structures.Structures()) { - if (structure.gen) + switch (structure) { - File.AppendAllText("out/" + str + "_" + filter + ".filter", File.ReadAllText(string.Format("gen/" + structure.section + ".filter"))); - File.AppendAllText("out/" + str + "_" + filter + ".filter", Environment.NewLine ?? ""); - File.AppendAllText("out/" + str + "_" + filter + ".filter", Environment.NewLine ?? ""); - } - else - { - File.AppendAllText("out/" + str + "_" + filter + ".filter", string.Format("# Section: {0}", (object)structure.section) + Environment.NewLine); - File.AppendAllText("out/" + str + "_" + filter + ".filter", Environment.NewLine ?? ""); - File.AppendAllText("out/" + str + "_" + filter + ".filter", File.ReadAllText(string.Format("structure/" + filter + "/" + structure.section + ".filter"))); - File.AppendAllText("out/" + str + "_" + filter + ".filter", Environment.NewLine ?? ""); - File.AppendAllText("out/" + str + "_" + filter + ".filter", Environment.NewLine ?? ""); + case "DIVINATION CARD (GEN)": + File.AppendAllText("out/" + str + "_" + filter + ".filter", File.ReadAllText(string.Format("gen/" + structure + ".filter"))); + File.AppendAllText("out/" + str + "_" + filter + ".filter", Environment.NewLine ?? ""); + File.AppendAllText("out/" + str + "_" + filter + ".filter", Environment.NewLine ?? ""); + break; + case "EXPENSIVE UNIQUE (GEN) (Accessories)": + File.AppendAllText("out/" + str + "_" + filter + ".filter", File.ReadAllText(string.Format("gen/" + structure + ".filter"))); + File.AppendAllText("out/" + str + "_" + filter + ".filter", Environment.NewLine ?? ""); + File.AppendAllText("out/" + str + "_" + filter + ".filter", Environment.NewLine ?? ""); + break; + case "EXPENSIVE UNIQUE (GEN) (Armours)": + File.AppendAllText("out/" + str + "_" + filter + ".filter", File.ReadAllText(string.Format("gen/" + structure + ".filter"))); + File.AppendAllText("out/" + str + "_" + filter + ".filter", Environment.NewLine ?? ""); + File.AppendAllText("out/" + str + "_" + filter + ".filter", Environment.NewLine ?? ""); + break; + case "EXPENSIVE UNIQUE (GEN) (Weapons)": + File.AppendAllText("out/" + str + "_" + filter + ".filter", File.ReadAllText(string.Format("gen/" + structure + ".filter"))); + File.AppendAllText("out/" + str + "_" + filter + ".filter", Environment.NewLine ?? ""); + File.AppendAllText("out/" + str + "_" + filter + ".filter", Environment.NewLine ?? ""); + break; + case "FOSSIL (GEN)": + File.AppendAllText("out/" + str + "_" + filter + ".filter", File.ReadAllText(string.Format("gen/" + structure + ".filter"))); + File.AppendAllText("out/" + str + "_" + filter + ".filter", Environment.NewLine ?? ""); + File.AppendAllText("out/" + str + "_" + filter + ".filter", Environment.NewLine ?? ""); + break; + case "Tiers (DATA)": + File.AppendAllText("out/" + str + "_" + filter + ".filter", File.ReadAllText(string.Format("gen/" + structure + ".filter"))); + File.AppendAllText("out/" + str + "_" + filter + ".filter", Environment.NewLine ?? ""); + + File.AppendAllText("out/" + str + "_" + filter + ".filter", Environment.NewLine ?? ""); + break; + case "Tiers - Caster (DATA)": + File.AppendAllText("out/" + str + "_" + filter + ".filter", File.ReadAllText(string.Format("gen/" + structure + ".filter"))); + File.AppendAllText("out/" + str + "_" + filter + ".filter", Environment.NewLine ?? ""); + File.AppendAllText("out/" + str + "_" + filter + ".filter", Environment.NewLine ?? ""); + break; + default: + File.AppendAllText("out/" + str + "_" + filter + ".filter", string.Format("# Section: {0}", (object)structure) + Environment.NewLine); + File.AppendAllText("out/" + str + "_" + filter + ".filter", Environment.NewLine ?? ""); + File.AppendAllText("out/" + str + "_" + filter + ".filter", File.ReadAllText(string.Format("structure/" + filter + "/" + structure + ".filter"))); + File.AppendAllText("out/" + str + "_" + filter + ".filter", Environment.NewLine ?? ""); + File.AppendAllText("out/" + str + "_" + filter + ".filter", Environment.NewLine ?? ""); + break; } } main.ftotal = 0; main.fprog = 0; main.CleanDir(); + CurrencyValueOut(); + if(debug) + { + Console.ReadKey(); + } + } + } + + public static void CurrencyValueOut() + { + foreach (LineCurrency line in JsonConvert.DeserializeObject(File.ReadAllText("data/ninja.currency.json", Encoding.UTF8)).lines) + { + string currencyTypeName = line.currencyTypeName; + + if (currencyTypeName == "Divine Orb") + { + string fc = line.chaosEquivalent.ToString(); + File.WriteAllText("out/divine.txt", fc); + } + + if (currencyTypeName == "Exalted Orb") + { + string fc = line.chaosEquivalent.ToString(); + File.WriteAllText("out/exalted.txt", fc); + } + + if (currencyTypeName == "Orb of Annulment") + { + string fc = line.chaosEquivalent.ToString(); + File.WriteAllText("out/annulment.txt", fc); + } + + if (currencyTypeName == "Orb of Alteration") + { + string fc = line.chaosEquivalent.ToString(); + File.WriteAllText("out/alteration.txt", fc); + } + + if (currencyTypeName == "Orb of Fusing") + { + string fc = line.chaosEquivalent.ToString(); + File.WriteAllText("out/fusing.txt", fc); + } + + if (currencyTypeName == "Chromatic Orb") + { + string fc = line.chaosEquivalent.ToString(); + File.WriteAllText("out/chromatic.txt", fc); + } + + if (currencyTypeName == "Jeweller's Orb") + { + string fc = line.chaosEquivalent.ToString(); + File.WriteAllText("out/jeweller.txt", fc); + } + + if (currencyTypeName == "Orb of Alchemy") + { + string fc = line.chaosEquivalent.ToString(); + File.WriteAllText("out/alchemy.txt", fc); + } + + if (currencyTypeName == "Cartographer's Chisel") + { + string fc = line.chaosEquivalent.ToString(); + File.WriteAllText("out/chisel.txt", fc); + } } } diff --git a/PoE-MxFilterGen/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/PoE-MxFilterGen/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache index 751b502b9b85cbc6ed0e8992ddbfca89f070c389..86ae6bd3431b95c54c81fae54c7dc17fbe0e66d6 100644 GIT binary patch delta 62 zcmZ3ngz?1^#tn;j7_BDp%1%DOEim~2j}W6djPrqqpV0=!k>wR(bb)d<`}5v(0RWTu B6XE~> delta 50 ycmaE{gmJ|Z#tn;j7_}xV@XAiUz$3({4rU4P@-ymyS-!j?j3z*q+~x_qH(UUM&khg( diff --git a/PoE-MxFilterGen/obj/Debug/mxfiltergen.exe b/PoE-MxFilterGen/obj/Debug/mxfiltergen.exe index 37f26ccae8f4c20b9e9f93ca21dbf5f1b6c64032..2748875d16386da00bf6e928835b4d0565966ddd 100644 GIT binary patch delta 36367 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 diff --git a/PoE-MxFilterGen/obj/Debug/mxfiltergen.pdb b/PoE-MxFilterGen/obj/Debug/mxfiltergen.pdb index 21f922c628af71e733d6405e5469102588c145ed..1760814603ea27675b93dc0fc8d3470788393316 100644 GIT binary patch literal 120320 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 diff --git a/PoE-MxFilterGen/structures.cs b/PoE-MxFilterGen/structures.cs new file mode 100644 index 0000000..fc33c72 --- /dev/null +++ b/PoE-MxFilterGen/structures.cs @@ -0,0 +1,48 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace PoE_MxFilterGen +{ + internal class structures + { + public static string[] Filters() + { + string[] Filters = new string[] { + "Normal", + "Strict" + }; + return Filters; + } + + public static string[] Structures() + { + string[] Structures = new string[] { + "LEAGUE", + "FOSSIL (GEN)", + "FOSSIL", + "MISC", + "ESSENCE", + "SKILL GEM", + "FLASK", + "MAPS", + "JEWEL", + "DIVINATION CARD", + "DIVINATION CARD (GEN)", + "EXPENSIVE UNIQUE (GEN) (Armours)", + "EXPENSIVE UNIQUE (GEN) (Weapons)", + "CURRENCY", + "INFLUENCED", + "ACCESSORIES", + "Tiers (DATA)", + "GEAR BY SOCKET", + "GEAR BY QUALITY", + "RECIPES", + "HIDE", + }; + return Structures; + } + } +}