diff --git a/ForgeMapFixer.sln b/ForgeMapFixer.sln
new file mode 100644
index 0000000..55e2d4a
--- /dev/null
+++ b/ForgeMapFixer.sln
@@ -0,0 +1,22 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 14
+VisualStudioVersion = 14.0.24720.0
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ForgeMapFixer", "ForgeMapFixer\ForgeMapFixer.csproj", "{126B8B10-18A0-4DAE-AFFB-0271FB5289F6}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {126B8B10-18A0-4DAE-AFFB-0271FB5289F6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {126B8B10-18A0-4DAE-AFFB-0271FB5289F6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {126B8B10-18A0-4DAE-AFFB-0271FB5289F6}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {126B8B10-18A0-4DAE-AFFB-0271FB5289F6}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/ForgeMapFixer/App.config b/ForgeMapFixer/App.config
new file mode 100644
index 0000000..d1428ad
--- /dev/null
+++ b/ForgeMapFixer/App.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/ForgeMapFixer/ForgeMapFixer.csproj b/ForgeMapFixer/ForgeMapFixer.csproj
new file mode 100644
index 0000000..777fc09
--- /dev/null
+++ b/ForgeMapFixer/ForgeMapFixer.csproj
@@ -0,0 +1,93 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {126B8B10-18A0-4DAE-AFFB-0271FB5289F6}
+ WinExe
+ Properties
+ ForgeMapFixer
+ ForgeMapFixer
+ v4.5
+ 512
+ true
+
+
+
+ AnyCPU
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ AnyCPU
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Form
+
+
+ MainForm.cs
+
+
+
+
+ MainForm.cs
+
+
+ ResXFileCodeGenerator
+ Resources.Designer.cs
+ Designer
+
+
+ True
+ Resources.resx
+ True
+
+
+
+ SettingsSingleFileGenerator
+ Settings.Designer.cs
+
+
+ True
+ Settings.settings
+ True
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ForgeMapFixer/ForgeMapFixer.exe.config b/ForgeMapFixer/ForgeMapFixer.exe.config
new file mode 100644
index 0000000..d1428ad
--- /dev/null
+++ b/ForgeMapFixer/ForgeMapFixer.exe.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/ForgeMapFixer/ForgeMapFixer.vshost.exe.config b/ForgeMapFixer/ForgeMapFixer.vshost.exe.config
new file mode 100644
index 0000000..d1428ad
--- /dev/null
+++ b/ForgeMapFixer/ForgeMapFixer.vshost.exe.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/ForgeMapFixer/ForgeTagMap.csv b/ForgeMapFixer/ForgeTagMap.csv
new file mode 100644
index 0000000..715b672
--- /dev/null
+++ b/ForgeMapFixer/ForgeTagMap.csv
@@ -0,0 +1,228 @@
+34A4,34A4
+2EB3,2EB3
+2EB4,2EB4
+2EBC,2EBC
+34A5,34A5
+34C1,34C1
+2EB1,2EB1
+2EAF,2EAF
+34A7,34A7
+34A8,34A8
+34A9,34A9
+4225,4225
+34AB,34AB
+2EBF,2EBF
+2EBE,2EBE
+34A6,34A6
+2EBA,2EBA
+2EBB,2EBB
+2EB5,2EB5
+2EB6,2EB6
+2EB2,2EB2
+2EBD,2EBD
+2EB0,2EB0
+2EB8,2EB8
+2EB9,2EB9
+444A,444A
+34C0,34C0
+34C2,34C2
+27EF,27EF
+34C5,34C5
+444B,444B
+34AA,34AA
+3FD4,3FD4
+4221,4221
+444C,444C
+4226,4226
+4224,4224
+3FD3,3FD3
+4220,4220
+4223,4223
+3FD6,3FD6
+3FD5,3FD5
+3A94,3A94
+2EE5,2EE5
+3A9E,3A9E
+4222,4222
+2EB7,2EB7
+01AC,01AC
+01AF,01AF
+01B2,01B2
+01B5,01B5
+1564,1564
+1561,1561
+1567,1567
+2EA9,2EA9
+1566,1566
+1560,1560
+1565,1565
+1569,1569
+2EAB,2EAB
+2EAC,2EAC
+2EAA,2EAA
+1B8E,1B8E
+1B8F,1B8F
+2EC3,2EC3
+2EC4,2EC4
+2EC5,2EC5
+2EC6,2EC6
+2EC7,2EC7
+2EC8,2EC8
+2EC9,2EC9
+2ECA,2ECA
+2ECB,2ECB
+2E90,2E90
+2E98,2E98
+2E91,2E91
+2E9A,2E9A
+2E9D,2E9D
+2E92,2E92
+2E9C,2E9C
+2E9E,2E9E
+2E99,2E99
+2E93,2E93
+2E95,2E95
+2E96,2E96
+2E9B,2E9B
+2ECC,2ECC
+2E94,2E94
+2E97,2E97
+2E9F,2E9F
+2EA7,2EA7
+2EA8,2EA8
+2EC0,2EC0
+2EC1,2EC1
+2EC2,2EC2
+444E,444E
+444F,444F
+4450,4450
+4451,4451
+4452,4452
+4453,4453
+151F,151F
+4441,4441
+4442,4442
+4443,4443
+4447,4447
+1599,1599
+4444,4444
+4445,4445
+4446,4446
+4448,4448
+151A,151A
+1518,1518
+1517,1517
+1598,1598
+159B,159B
+1596,1596
+1520,1520
+1519,1519
+4449,4449
+1516,1516
+151E,151E
+1581,1581
+1582,1582
+1583,1583
+1584,1584
+157C,157C
+15BB,15BB
+15BC,15BC
+1585,1585
+1586,1586
+15BD,15BD
+1587,1587
+1A45,1A45
+15B1,15B1
+157D,157D
+158C,158C
+158D,158D
+158E,158E
+158F,158F
+1500,1500
+157E,157E
+1593,1593
+1594,1594
+14F7,14F7
+1595,1595
+14F8,14F8
+14FE,14FE
+15C0,15C0
+15C1,15C1
+15C2,15C2
+15C3,15C3
+15C4,15C4
+1591,1591
+1509,1509
+1504,1504
+1592,1592
+1580,1580
+15BF,15BF
+1588,1588
+1589,1589
+158A,158A
+15BE,15BE
+158B,158B
+1525,1525
+1590,1590
+14FF,14FF
+15B3,15B3
+15B2,15B2
+159E,159E
+284C,284C
+150C,150C
+1A54,1A54
+3A18,3A18
+14FB,14FB
+1A56,1A56
+1A55,1A55
+14F9,14F9
+48CB,47B1
+48D4,47BA
+48D5,47BB
+48E7,47CD
+48FF,47E5
+490C,47F2
+4934,481A
+4963,4849
+4968,484E
+496D,4853
+497F,4865
+4987,486D
+499F,4885
+4711,4711
+48C9,47AF
+476D,14F9
+480A,1509
+4880,1A56
+4CB8,4BA3
+4CBF,4BAA
+4F03,4DED
+4F05,4DEF
+4F0E,4DF8
+4F10,4DFA
+4F12,4DFC
+4A7F,4965
+4F1E,4E08
+4F26,4E10
+4F36,4E20
+4F41,4E2B
+4F57,4E41
+4F5C,4E46
+4F6E,4E58
+4F02,4441
+527C,5166
+5290,517A
+529F,5189
+52A4,518E
+5529,541C
+5006,4EF0
+4FF9,4EE3
+5534,5427
+554E,5441
+5557,544A
+555F,5452
+556D,5460
+2A76,2A76
+5578,546B
+5492,5380
+57DF,56DA
diff --git a/ForgeMapFixer/MainForm.Designer.cs b/ForgeMapFixer/MainForm.Designer.cs
new file mode 100644
index 0000000..cddf36d
--- /dev/null
+++ b/ForgeMapFixer/MainForm.Designer.cs
@@ -0,0 +1,97 @@
+namespace ForgeMapFixer
+{
+ partial class MainForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.statusStrip1 = new System.Windows.Forms.StatusStrip();
+ this.statusLabel = new System.Windows.Forms.ToolStripStatusLabel();
+ this.progressBar = new System.Windows.Forms.ProgressBar();
+ this.worker = new System.ComponentModel.BackgroundWorker();
+ this.statusStrip1.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // statusStrip1
+ //
+ this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.statusLabel});
+ this.statusStrip1.Location = new System.Drawing.Point(0, 48);
+ this.statusStrip1.Name = "statusStrip1";
+ this.statusStrip1.Size = new System.Drawing.Size(393, 22);
+ this.statusStrip1.TabIndex = 0;
+ this.statusStrip1.Text = "statusStrip1";
+ //
+ // statusLabel
+ //
+ this.statusLabel.Name = "statusLabel";
+ this.statusLabel.Size = new System.Drawing.Size(39, 17);
+ this.statusLabel.Text = "Ready";
+ //
+ // progressBar
+ //
+ this.progressBar.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.progressBar.Location = new System.Drawing.Point(13, 13);
+ this.progressBar.Name = "progressBar";
+ this.progressBar.Size = new System.Drawing.Size(368, 23);
+ this.progressBar.TabIndex = 1;
+ //
+ // worker
+ //
+ this.worker.WorkerReportsProgress = true;
+ this.worker.DoWork += new System.ComponentModel.DoWorkEventHandler(this.worker_DoWork);
+ this.worker.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(this.worker_ProgressChanged);
+ this.worker.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.worker_RunWorkerCompleted);
+ //
+ // MainForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(393, 70);
+ this.Controls.Add(this.progressBar);
+ this.Controls.Add(this.statusStrip1);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
+ this.Name = "MainForm";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+ this.Text = "ElDewrito Forge Map Fixer";
+ this.Load += new System.EventHandler(this.MainForm_Load);
+ this.statusStrip1.ResumeLayout(false);
+ this.statusStrip1.PerformLayout();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.StatusStrip statusStrip1;
+ private System.Windows.Forms.ToolStripStatusLabel statusLabel;
+ private System.Windows.Forms.ProgressBar progressBar;
+ private System.ComponentModel.BackgroundWorker worker;
+ }
+}
+
diff --git a/ForgeMapFixer/MainForm.cs b/ForgeMapFixer/MainForm.cs
new file mode 100644
index 0000000..bfd8bb6
--- /dev/null
+++ b/ForgeMapFixer/MainForm.cs
@@ -0,0 +1,186 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Diagnostics;
+using System.Drawing;
+using System.Globalization;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using Microsoft.Win32;
+
+namespace ForgeMapFixer
+{
+ public partial class MainForm : Form
+ {
+ private const string MapDir = @"mods\maps";
+
+ private readonly List _fixedMaps = new List();
+
+ public MainForm()
+ {
+ InitializeComponent();
+ }
+
+ private void MainForm_Load(object sender, EventArgs e)
+ {
+ if (!VerifyInstall())
+ {
+ MessageBox.Show("Please place ForgeMapFixer.exe in the same folder as your ElDewrito 0.5.0.2 install.",
+ Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
+ Close();
+ return;
+ }
+ worker.RunWorkerAsync();
+ }
+
+ private void worker_DoWork(object sender, DoWorkEventArgs e)
+ {
+ worker.ReportProgress(0, "Initializing...");
+ var tagMap = LoadTagMap();
+
+ worker.ReportProgress(0, "Searching for map files...");
+ var files = FindMaps();
+
+ _fixedMaps.Clear();
+ for (var i = 0; i < files.Length; i++)
+ {
+ try
+ {
+ var file = files[i];
+ worker.ReportProgress(i * 100 / files.Length, "Fixing " + file + "...");
+ if (FixMap(file, tagMap))
+ _fixedMaps.Add(file);
+ }
+ catch
+ {
+ // TODO: Error handling...
+ }
+ }
+
+ worker.ReportProgress(100, "Invalidating cached maps...");
+ InvalidatePreferences();
+
+ worker.ReportProgress(100, "Done!");
+ }
+
+ private void worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
+ {
+ progressBar.Value = e.ProgressPercentage;
+ statusLabel.Text = e.UserState.ToString();
+ }
+
+ private void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
+ {
+ if (e.Error != null)
+ {
+ MessageBox.Show(e.Error.Message, Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ else if (_fixedMaps.Count > 0)
+ {
+ var message = $"Successfully fixed {_fixedMaps.Count} map(s):\n";
+ message = _fixedMaps.Aggregate(message, (current, map) => current + $"\n{map}");
+ MessageBox.Show(message, Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
+ }
+ else
+ {
+ MessageBox.Show("No Forge maps seem to be installed.", Text, MessageBoxButtons.OK,
+ MessageBoxIcon.Information);
+ }
+ Close();
+ }
+
+ private static bool VerifyInstall()
+ {
+ if (!File.Exists("eldorado.exe") || !File.Exists("mtndew.dll"))
+ return false;
+
+ // Check that version >= 0.5.0.1
+ var version = FileVersionInfo.GetVersionInfo("mtndew.dll");
+ return version.FileMajorPart > 0 || version.FileMinorPart > 5 ||
+ (version.FileMinorPart == 5 && (version.FileBuildPart > 0 || version.FilePrivatePart >= 1));
+ }
+
+ private static string[] FindMaps()
+ {
+ return Directory.Exists(MapDir)
+ ? Directory.GetFiles(MapDir, "*.map", SearchOption.AllDirectories)
+ : new string[0];
+ }
+
+ private static Dictionary LoadTagMap()
+ {
+ var tagMap = Properties.Resources.ForgeTagMap;
+ var result = new Dictionary();
+ using (var reader = new StringReader(tagMap))
+ {
+ while (true)
+ {
+ var line = reader.ReadLine();
+ if (line == null)
+ break;
+ line = line.Trim();
+ var parts = line.Split(',');
+ if (parts.Length < 2)
+ continue;
+ int oldIndex, newIndex;
+ if (!int.TryParse(parts[0].Trim(), NumberStyles.HexNumber, null, out oldIndex))
+ continue;
+ if (!int.TryParse(parts[1].Trim(), NumberStyles.HexNumber, null, out newIndex))
+ continue;
+ result[oldIndex] = newIndex;
+ }
+ }
+ return result;
+ }
+
+ private static bool FixMap(string path, IReadOnlyDictionary tagMap)
+ {
+ using (var stream = File.Open(path, FileMode.Open, FileAccess.ReadWrite))
+ {
+ // Check that the file is valid
+ // I'm just using hardcoded offsets here; this should work for most stuff...
+ if (stream.Length < 0xE1E0)
+ return false;
+ var reader = new BinaryReader(stream);
+ var writer = new BinaryWriter(stream);
+ if (new string(reader.ReadChars(4)) != "_blf")
+ return false;
+ stream.Position = 0x138;
+ if (new string(reader.ReadChars(4)) != "mapv")
+ return false;
+
+ // Go to the tag table and replace all of the indices
+ for (var i = 0; i < 256; i++)
+ {
+ stream.Position = 0xD498 + i * 0xC;
+ var tagIndex = reader.ReadInt32();
+ if (tagIndex < 0)
+ continue;
+ int newIndex;
+ if (!tagMap.TryGetValue(tagIndex, out newIndex))
+ continue;
+ stream.Position -= 4;
+ writer.Write(newIndex);
+ }
+ }
+ return true;
+ }
+
+ private static void InvalidatePreferences()
+ {
+ if (!File.Exists("preferences.dat"))
+ return;
+ using (var writer = new BinaryWriter(File.Open("preferences.dat", FileMode.Open, FileAccess.Write)))
+ {
+ writer.BaseStream.Position = 0x378; // "multiplayer valid" flag
+ writer.Write(0);
+ writer.BaseStream.Position = 0xEA90; // "forge valid" flag
+ writer.Write(0);
+ }
+ }
+ }
+}
diff --git a/ForgeMapFixer/MainForm.resx b/ForgeMapFixer/MainForm.resx
new file mode 100644
index 0000000..6daa248
--- /dev/null
+++ b/ForgeMapFixer/MainForm.resx
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 17, 17
+
+
+ 133, 17
+
+
\ No newline at end of file
diff --git a/ForgeMapFixer/Program.cs b/ForgeMapFixer/Program.cs
new file mode 100644
index 0000000..6a09b66
--- /dev/null
+++ b/ForgeMapFixer/Program.cs
@@ -0,0 +1,22 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace ForgeMapFixer
+{
+ static class Program
+ {
+ ///
+ /// The main entry point for the application.
+ ///
+ [STAThread]
+ static void Main()
+ {
+ Application.EnableVisualStyles();
+ Application.SetCompatibleTextRenderingDefault(false);
+ Application.Run(new MainForm());
+ }
+ }
+}
diff --git a/ForgeMapFixer/Properties/AssemblyInfo.cs b/ForgeMapFixer/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..b637288
--- /dev/null
+++ b/ForgeMapFixer/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("ForgeMapFixer")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("ForgeMapFixer")]
+[assembly: AssemblyCopyright("Copyright © 2016")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("126b8b10-18a0-4dae-affb-0271fb5289f6")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/ForgeMapFixer/Properties/Resources.Designer.cs b/ForgeMapFixer/Properties/Resources.Designer.cs
new file mode 100644
index 0000000..fafabce
--- /dev/null
+++ b/ForgeMapFixer/Properties/Resources.Designer.cs
@@ -0,0 +1,118 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace ForgeMapFixer.Properties {
+ using System;
+
+
+ ///
+ /// A strongly-typed resource class, for looking up localized strings, etc.
+ ///
+ // This class was auto-generated by the StronglyTypedResourceBuilder
+ // class via a tool like ResGen or Visual Studio.
+ // To add or remove a member, edit your .ResX file then rerun ResGen
+ // with the /str option, or rebuild your VS project.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Resources {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources() {
+ }
+
+ ///
+ /// Returns the cached ResourceManager instance used by this class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if (object.ReferenceEquals(resourceMan, null)) {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ForgeMapFixer.Properties.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Overrides the current thread's CurrentUICulture property for all
+ /// resource lookups using this strongly typed resource class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture {
+ get {
+ return resourceCulture;
+ }
+ set {
+ resourceCulture = value;
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to 34A4,34A4
+ ///2EB3,2EB3
+ ///2EB4,2EB4
+ ///2EBC,2EBC
+ ///34A5,34A5
+ ///34C1,34C1
+ ///2EB1,2EB1
+ ///2EAF,2EAF
+ ///34A7,34A7
+ ///34A8,34A8
+ ///34A9,34A9
+ ///4225,4225
+ ///34AB,34AB
+ ///2EBF,2EBF
+ ///2EBE,2EBE
+ ///34A6,34A6
+ ///2EBA,2EBA
+ ///2EBB,2EBB
+ ///2EB5,2EB5
+ ///2EB6,2EB6
+ ///2EB2,2EB2
+ ///2EBD,2EBD
+ ///2EB0,2EB0
+ ///2EB8,2EB8
+ ///2EB9,2EB9
+ ///444A,444A
+ ///34C0,34C0
+ ///34C2,34C2
+ ///27EF,27EF
+ ///34C5,34C5
+ ///444B,444B
+ ///34AA,34AA
+ ///3FD4,3FD4
+ ///4221,4221
+ ///444C,444C
+ ///4226,4226
+ ///4224,4224
+ ///3FD3,3FD3
+ ///4220,4220
+ ///4223,4223
+ ///3FD6,3FD6
+ ///3FD5,3FD5
+ ///3A94,3A94
+ ///2EE5,2EE5
+ ///3A9E,3A9E
+ ///4222,4222
+ ///2EB7,2 [rest of string was truncated]";.
+ ///
+ internal static string ForgeTagMap {
+ get {
+ return ResourceManager.GetString("ForgeTagMap", resourceCulture);
+ }
+ }
+ }
+}
diff --git a/ForgeMapFixer/Properties/Resources.resx b/ForgeMapFixer/Properties/Resources.resx
new file mode 100644
index 0000000..c32f6f9
--- /dev/null
+++ b/ForgeMapFixer/Properties/Resources.resx
@@ -0,0 +1,124 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+ ..\ForgeTagMap.csv;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252
+
+
\ No newline at end of file
diff --git a/ForgeMapFixer/Properties/Settings.Designer.cs b/ForgeMapFixer/Properties/Settings.Designer.cs
new file mode 100644
index 0000000..d55481e
--- /dev/null
+++ b/ForgeMapFixer/Properties/Settings.Designer.cs
@@ -0,0 +1,26 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace ForgeMapFixer.Properties {
+
+
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")]
+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
+
+ private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+ public static Settings Default {
+ get {
+ return defaultInstance;
+ }
+ }
+ }
+}
diff --git a/ForgeMapFixer/Properties/Settings.settings b/ForgeMapFixer/Properties/Settings.settings
new file mode 100644
index 0000000..3964565
--- /dev/null
+++ b/ForgeMapFixer/Properties/Settings.settings
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+