Browse Source

ModelViewer / MapEditor updated with the latest EQ2Region code / Map code utilized

Image 3 years ago
parent
commit
38929e5c17
51 changed files with 718 additions and 305 deletions
  1. 1 0
      EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/EQ2ModelViewer.csproj
  2. 1 0
      EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/Eq2VpkTool/Eq2VpkTool.csproj
  3. BIN
      EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/Eq2VpkTool/bin/Debug/Eq2VpkTool.exe
  4. BIN
      EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/Eq2VpkTool/bin/Debug/Eq2VpkTool.pdb
  5. BIN
      EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/Eq2VpkTool/bin/Debug/Spart.dll
  6. BIN
      EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/Eq2VpkTool/bin/Debug/Spart.pdb
  7. BIN
      EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/Eq2VpkTool/bin/Debug/libeq2.dll
  8. BIN
      EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/Eq2VpkTool/bin/Debug/libeq2.pdb
  9. BIN
      EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/Eq2VpkTool/bin/Release/Eq2VpkTool.exe
  10. BIN
      EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/Eq2VpkTool/bin/Release/Spart.dll
  11. BIN
      EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/Eq2VpkTool/bin/Release/libeq2.dll
  12. BIN
      EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/Eq2VpkTool/obj/Debug/Eq2VpkTool.exe
  13. BIN
      EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/Eq2VpkTool/obj/Debug/Eq2VpkTool.pdb
  14. BIN
      EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/Eq2VpkTool/obj/Release/Eq2VpkTool.exe
  15. 142 55
      EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/Main.cs
  16. 1 0
      EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/Spart/Spart.csproj
  17. BIN
      EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/Spart/bin/Debug/Spart.dll
  18. BIN
      EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/Spart/bin/Debug/Spart.pdb
  19. BIN
      EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/Spart/bin/Release/Spart.dll
  20. BIN
      EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/Spart/obj/Debug/Spart.dll
  21. BIN
      EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/Spart/obj/Debug/Spart.pdb
  22. BIN
      EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/Spart/obj/Release/Spart.dll
  23. BIN
      EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/bin/Debug/EQ2ModelViewer.exe
  24. BIN
      EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/bin/Debug/EQ2ModelViewer.pdb
  25. BIN
      EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/bin/Debug/Spart.dll
  26. BIN
      EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/bin/Debug/Spart.pdb
  27. BIN
      EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/bin/Debug/libeq2.dll
  28. BIN
      EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/bin/Debug/libeq2.pdb
  29. BIN
      EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/bin/Release/EQ2ModelViewer.exe
  30. BIN
      EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/bin/Release/EQ2ModelViewer.pdb
  31. BIN
      EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/bin/Release/Spart.dll
  32. BIN
      EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/bin/Release/Spart.pdb
  33. BIN
      EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/bin/Release/libeq2.dll
  34. BIN
      EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/bin/Release/libeq2.pdb
  35. 44 250
      EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/bin/Release/loaded.txt
  36. 526 0
      EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/bin/Release/zones.txt.dof
  37. 2 0
      EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/libeq2/Visualization/VeRegion.cs
  38. BIN
      EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/libeq2/bin/Debug/Spart.dll
  39. BIN
      EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/libeq2/bin/Debug/Spart.pdb
  40. BIN
      EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/libeq2/bin/Debug/libeq2.dll
  41. BIN
      EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/libeq2/bin/Debug/libeq2.pdb
  42. BIN
      EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/libeq2/bin/Release/Spart.dll
  43. BIN
      EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/libeq2/bin/Release/libeq2.dll
  44. 1 0
      EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/libeq2/libeq2.csproj
  45. BIN
      EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/libeq2/obj/Debug/libeq2.dll
  46. BIN
      EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/libeq2/obj/Debug/libeq2.pdb
  47. BIN
      EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/libeq2/obj/Release/libeq2.dll
  48. BIN
      EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/obj/Debug/EQ2ModelViewer.exe
  49. BIN
      EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/obj/Debug/EQ2ModelViewer.pdb
  50. BIN
      EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/obj/Release/EQ2ModelViewer.exe
  51. BIN
      EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/obj/Release/EQ2ModelViewer.pdb

+ 1 - 0
EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/EQ2ModelViewer.csproj

@@ -21,6 +21,7 @@
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
+    <UseVSHostingProcess>true</UseVSHostingProcess>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <PlatformTarget>AnyCPU</PlatformTarget>

+ 1 - 0
EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/Eq2VpkTool/Eq2VpkTool.csproj

@@ -25,6 +25,7 @@
     <OutputPath>.\bin\Debug\</OutputPath>
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <PlatformTarget>x64</PlatformTarget>
+    <UseVSHostingProcess>true</UseVSHostingProcess>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugSymbols>false</DebugSymbols>

BIN
EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/Eq2VpkTool/bin/Debug/Eq2VpkTool.exe


BIN
EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/Eq2VpkTool/bin/Debug/Eq2VpkTool.pdb


BIN
EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/Eq2VpkTool/bin/Debug/Spart.dll


BIN
EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/Eq2VpkTool/bin/Debug/Spart.pdb


BIN
EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/Eq2VpkTool/bin/Debug/libeq2.dll


BIN
EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/Eq2VpkTool/bin/Debug/libeq2.pdb


BIN
EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/Eq2VpkTool/bin/Release/Eq2VpkTool.exe


BIN
EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/Eq2VpkTool/bin/Release/Spart.dll


BIN
EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/Eq2VpkTool/bin/Release/libeq2.dll


BIN
EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/Eq2VpkTool/obj/Debug/Eq2VpkTool.exe


BIN
EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/Eq2VpkTool/obj/Debug/Eq2VpkTool.pdb


BIN
EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/Eq2VpkTool/obj/Release/Eq2VpkTool.exe


+ 142 - 55
EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/Main.cs

@@ -4,6 +4,7 @@ using System.Windows.Forms;
 using System.Collections.Generic;
 using System.IO.Compression;
 using System.Xml;
+using System.Text.RegularExpressions;
 
 using SlimDX;
 using SlimDX.D3DCompiler;
@@ -30,10 +31,12 @@ namespace EQ2ModelViewer
         private GraphicClass Graphics = new GraphicClass();
         public Model SelectedModel = null;
         private string ZoneFile;
+        private string AppendFileStr = "";
         private bool Render3DAspect = true;
         private bool AutoExportOnLoad = false;
         private bool AutoExportRegionOnLoad = false;
         private String AutoLoadFileName = "";
+        private bool IsLoaded = false;
         public frmMain()
         {
             InitializeComponent();
@@ -115,6 +118,15 @@ namespace EQ2ModelViewer
                     {
                         AutoExportRegionOnLoad = true;
                     }
+                    else if ( cmd.StartsWith("appendexportfile"))
+                    {
+                        int equalsSign = cmd.IndexOf("=");
+                        if (equalsSign > 0 && (equalsSign+1) < cmd.Length)
+                        {
+                            string appendFileVal = cmd.Substring(equalsSign+1, cmd.Length - equalsSign - 1);
+                            AppendFileStr = appendFileVal;
+                        }
+                    }
                     else
                     {
                         AutoLoadFileName = args[i];
@@ -313,6 +325,8 @@ namespace EQ2ModelViewer
         public static String DirName = "";
         private void LoadZoneFile(String filename="")
         {
+            IsLoaded = false;
+
             bool isDrawFile = false;
 
             string fullName = "";
@@ -389,6 +403,10 @@ namespace EQ2ModelViewer
                 return;
             }
             region_nodes = 0;
+
+            if (!File.Exists(filename))
+                return;
+
             System.IO.BinaryReader reader2 = new System.IO.BinaryReader(new System.IO.FileStream(filename, System.IO.FileMode.Open, System.IO.FileAccess.Read));
                 // Image(2020): Was ReadUint32, qey_harbor.lut however has 00 1F 00 7A, so that as an int32 is a very large number!
                 reader2.ReadUInt32();
@@ -421,18 +439,22 @@ namespace EQ2ModelViewer
                     // 16 bytes between file names, grid id's maybe?
                     reader2.ReadBytes(16);
                 } while (true);
+
+            IsLoaded = true;
             }
 
         float x, y, z = 0;
         float yaw, pitch, roll = 0;
         float scale = 0;
         UInt32 widgetID;
-        UInt32 regionMapVersion = 1;
+        UInt32 regionMapVersion = 2;
         private void toolStripMenuItemExportWater_Click(object sender, EventArgs e)
         {
+            if (!IsLoaded)
+                return;
 
-            StreamWriter swfile = new StreamWriter(ZoneFile + ".regionread");
-            using (BinaryWriter file = new BinaryWriter(File.Open(ZoneFile + ".EQ2Region", FileMode.Create)))
+            StreamWriter swfile = new StreamWriter(ZoneFile + AppendFileStr + ".regionread");
+            using (BinaryWriter file = new BinaryWriter(File.Open(ZoneFile + AppendFileStr + ".EQ2Region", FileMode.Create)))
             {
                 file.Write(ZoneFile);
                 file.Write(regionMapVersion);
@@ -448,6 +470,17 @@ namespace EQ2ModelViewer
                     file.Write(region.position[1]);
                     file.Write(region.position[2]);
                     file.Write(region.splitdistance);
+                    file.Write(region.envFileChosen);
+
+                    String outFile = "";
+
+                    Regex trimmer = new Regex(@"(?!.*\/)(\w|\s|-)+\.region");
+                    Match out_ = trimmer.Match(region.parentNode.regionDefinitionFile);
+                    if (out_.Success && out_.Groups.Count > 0)
+                        outFile = out_.Value;
+
+                    file.Write(outFile);
+                    file.Write(region.GridID);
                     file.Write(region.vert_count);
                     swfile.WriteLine();
                     swfile.WriteLine("REGION: " + region.position[0] + " " + region.position[1] + " " + region.position[2] + " " + region.splitdistance + " - RegionType: " + region.region_type);
@@ -531,15 +564,43 @@ namespace EQ2ModelViewer
 
                 if (item is VeEnvironmentNode)
                 {
+                    String envFile = "";
+                    String writeFileName = "";
                     VeEnvironmentNode env = (VeEnvironmentNode)item;
-                    if (env.regionDefinitionFile != null && env.regionDefinitionFile.Length > 0)
+                    bool noFly = false;
+                    if (env.environmentDefinitions != null)
+                    {
+                        foreach (string str in env.environmentDefinitions)
+                        {
+                            if (str.Contains("no_fly.xml"))
+                            {
+                                /* <VdlFile xmlns="Vdl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="Vdl BaseClasses.xsd">
+                                      <Environment VDLTYPE="OBJECT">
+                                        <iPriority VDLTYPE="INT">1</iPriority>
+                                        <bOverrideZoneAllowFlying VDLTYPE="BOOL">true</bOverrideZoneAllowFlying>
+                                        <bAllowFlying VDLTYPE="BOOL">false</bAllowFlying>
+                                      </Environment>
+                                   </VdlFile>
+                                   */
+                                noFly = true;
+                                break;
+                            }
+                        }
+                    }
+                        if (noFly || env.regionDefinitionFile != null && env.regionDefinitionFile.Length > 0)
                     {
                         int waterType = 0;
-                        String envFile = "";
-                        if (env.environmentDefinitions != null)
+                        if (!noFly && env.environmentDefinitions != null)
                         {
                             foreach (string str in env.environmentDefinitions)
                             {
+                                writeFileName = str;
+
+                                Regex trimmer = new Regex(@"(?!.*\/)(\w|\s|-)+\.xml");
+                                Match out_ = trimmer.Match(writeFileName);
+                                if (out_.Success && out_.Groups.Count > 0)
+                                    writeFileName = out_.Value;
+
                                 envFile = str;
                                 envFile = envFile.Replace("/", "\\");
 
@@ -550,58 +611,81 @@ namespace EQ2ModelViewer
                             }
                         }
 
-                        bool watervol = env.regionDefinitionFile.Contains("watervol");
-                        bool waterregion = env.regionDefinitionFile.Contains("waterregion");
-                        bool waterregion2 = env.regionDefinitionFile.Contains("water_region");
-                        bool iswater = env.regionDefinitionFile.Contains("water");
-                        bool isocean = env.regionDefinitionFile.Contains("ocean");
-                        bool isvolume = env.regionDefinitionFile.Contains("volume");
-                        AppendLoadFile("Region established: " + waterType + ", " + envFile
-                            + " WaterVol: " + watervol + " WaterRegion: " + waterregion +
-                            " WaterRegion2: " + waterregion2 + " IsWater: " + iswater +
-                            " IsOcean: " + isocean + " IsVolume: " + isvolume);
-                        if (waterType > 0)
+                        if (noFly)
                         {
-                            AppendLoadFile("Region accepted: " + waterType + ", " + envFile
-                                + " WaterVol: " + watervol + " WaterRegion: " + waterregion +
-                                " WaterRegion2: " + waterregion2 + " IsWater: " + iswater +
-                                " IsOcean: " + isocean + " IsVolume: " + isvolume);
-                            Eq2Reader reader2 = new Eq2Reader(new System.IO.FileStream(DirName + env.regionDefinitionFile, System.IO.FileMode.Open, System.IO.FileAccess.Read));
-                            VeRegion region = (VeRegion)reader2.ReadObject();
-                            region.parentNode = env;
-                            region.region_type = 0; // default water volume
-
-                            if (waterregion) // 'sea'/ocean/waterregion in tutorial_island02 / qeynos_harbor
-                                region.region_type = 1;
-                            else if (waterregion2)
-                                region.region_type = 0;
-                            else if (isvolume && selectNodeParent)
-                                region.region_type = 4;
-                            else if ((isocean && selectNodeParent)) // ocean in antonica/commonlands/tutorial
-                                region.region_type = 3;
-                            else if (isocean && iswater) // caves in frostfang(halas)
-                                region.region_type = 4;
-                            else if (isocean)
-                                region.region_type = 5;
-
-                            region.special = waterType;
-                            MeshClass tmpMesh = new MeshClass();
-                            region_nodes += region.vert_count;
-                            m_Regions.Add(region);
+                            /* no fly does not have normals in a env.regionDefinitionFile
+                            ** perhaps they expect us to use the VolumeBox at the parent level?
+                            */
                         }
                         else
                         {
-                            if (env.regionDefinitionFile != null)
+                            bool watervol = env.regionDefinitionFile.Contains("watervol");
+                            bool waterregion = env.regionDefinitionFile.Contains("waterregion");
+                            bool waterregion2 = env.regionDefinitionFile.Contains("water_region");
+                            bool iswater = env.regionDefinitionFile.Contains("water");
+                            bool isocean = env.regionDefinitionFile.Contains("ocean");
+                            bool isvolume = env.regionDefinitionFile.Contains("volume");
+                            AppendLoadFile("Region established: " + waterType + ", " + envFile
+                                + " WaterVol: " + watervol + " WaterRegion: " + waterregion +
+                                " WaterRegion2: " + waterregion2 + " IsWater: " + iswater +
+                                " IsOcean: " + isocean + " IsVolume: " + isvolume);
+                            if (waterType == -2 || waterType == -3) // lava
                             {
-                                AppendLoadFile("Region skipped: " + env.regionDefinitionFile);
+                                AppendLoadFile("Lava region accepted: " + waterType + ", " + envFile);
+                                Eq2Reader reader2 = new Eq2Reader(new System.IO.FileStream(DirName + env.regionDefinitionFile, System.IO.FileMode.Open, System.IO.FileAccess.Read));
+                                VeRegion region = (VeRegion)reader2.ReadObject();
+                                region.parentNode = env;
+                                region.region_type = 1; // default 'region' algorithm
+                                region.special = -3;
+                                region.envFileChosen = writeFileName;
+                                region.GridID = GridID;
+                                region_nodes += region.vert_count;
+                                m_Regions.Add(region);
+                            }
+                            else if (waterType > 0)
+                            {
+                                AppendLoadFile("Region accepted: " + waterType + ", " + envFile
+                                    + " WaterVol: " + watervol + " WaterRegion: " + waterregion +
+                                    " WaterRegion2: " + waterregion2 + " IsWater: " + iswater +
+                                    " IsOcean: " + isocean + " IsVolume: " + isvolume);
+                                Eq2Reader reader2 = new Eq2Reader(new System.IO.FileStream(DirName + env.regionDefinitionFile, System.IO.FileMode.Open, System.IO.FileAccess.Read));
+                                VeRegion region = (VeRegion)reader2.ReadObject();
+                                region.parentNode = env;
+                                region.region_type = 0; // default water volume
+
+                                if (waterregion) // 'sea'/ocean/waterregion in tutorial_island02 / qeynos_harbor
+                                    region.region_type = 1;
+                                else if (waterregion2)
+                                    region.region_type = 0;
+                                else if (isvolume && selectNodeParent)
+                                    region.region_type = 4;
+                                else if ((isocean && selectNodeParent)) // ocean in antonica/commonlands/tutorial
+                                    region.region_type = 3;
+                                else if (isocean && iswater) // caves in frostfang(halas)
+                                    region.region_type = 4;
+                                else if (isocean)
+                                    region.region_type = 5;
+
+                                region.special = waterType;
+                                region_nodes += region.vert_count;
+                                region.envFileChosen = writeFileName;
+                                region.GridID = GridID;
+                                m_Regions.Add(region);
                             }
                             else
-                                AppendLoadFile("Region skipped: ???");
-
-                            if (env.environmentDefinitions != null)
                             {
-                                foreach (string str in env.environmentDefinitions)
-                                    AppendLoadFile("EnvDefinition: " + str);
+                                if (env.regionDefinitionFile != null)
+                                {
+                                    AppendLoadFile("Region skipped: " + env.regionDefinitionFile);
+                                }
+                                else
+                                    AppendLoadFile("Region skipped: ???");
+
+                                if (env.environmentDefinitions != null)
+                                {
+                                    foreach (string str in env.environmentDefinitions)
+                                        AppendLoadFile("EnvDefinition: " + str);
+                                }
                             }
                         }
                     }
@@ -805,6 +889,9 @@ namespace EQ2ModelViewer
 
         private void exportToolStripMenuItem_Click(object sender, EventArgs e)
         {
+            if (!IsLoaded)
+                return;
+
             //List<Vector3> MasterVertexList = new List<Vector3>();
             Dictionary<UInt32, List<Vector3>> MasterVertexList = new Dictionary<UInt32, List<Vector3>>();
             foreach (Model model in m_Models)
@@ -863,7 +950,7 @@ namespace EQ2ModelViewer
             }
 
 
-            using (StreamWriter file = new StreamWriter(ZoneFile + ".obj"))
+            using (StreamWriter file = new StreamWriter(ZoneFile + AppendFileStr + ".obj"))
             {
                 //   file.WriteLine(ZoneFile);
                 //  file.WriteLine("Min");
@@ -912,7 +999,7 @@ namespace EQ2ModelViewer
                 file.Close();
             }
 
-            using (BinaryWriter file = new BinaryWriter(File.Open(ZoneFile + ".EQ2Map", FileMode.Create)))
+            using (BinaryWriter file = new BinaryWriter(File.Open(ZoneFile + AppendFileStr + ".EQ2Map", FileMode.Create)))
             {
                 file.Write(ZoneFile);
                 file.Write(minX);
@@ -933,14 +1020,14 @@ namespace EQ2ModelViewer
                 }
                 file.Close();
             }
-            FileInfo fileToCompress = new FileInfo(ZoneFile + ".EQ2Map");
+            FileInfo fileToCompress = new FileInfo(ZoneFile + AppendFileStr + ".EQ2Map");
 
             using (FileStream originalFileStream = fileToCompress.OpenRead())
             {
                 if ((File.GetAttributes(fileToCompress.FullName) &
                    FileAttributes.Hidden) != FileAttributes.Hidden & fileToCompress.Extension != ".gz")
                 {
-                    using (FileStream compressedFileStream = File.Create(ZoneFile + ".EQ2MapDeflated"))
+                    using (FileStream compressedFileStream = File.Create(ZoneFile + AppendFileStr + ".EQ2MapDeflated"))
                     {
                         using (GZipStream compressionStream = new GZipStream(compressedFileStream,
                            CompressionMode.Compress))
@@ -948,7 +1035,7 @@ namespace EQ2ModelViewer
                             originalFileStream.CopyTo(compressionStream);
                         }
                     }
-                    FileInfo info = new FileInfo(ZoneFile + ".EQ2MapDeflated");
+                    FileInfo info = new FileInfo(ZoneFile + AppendFileStr + ".EQ2MapDeflated");
                     Console.WriteLine($"Compressed {fileToCompress.Name} from {fileToCompress.Length.ToString()} to {info.Length.ToString()} bytes.");
                 }
             }

+ 1 - 0
EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/Spart/Spart.csproj

@@ -65,6 +65,7 @@
     <TreatWarningsAsErrors>false</TreatWarningsAsErrors>
     <WarningLevel>1</WarningLevel>
     <PlatformTarget>x64</PlatformTarget>
+    <UseVSHostingProcess>true</UseVSHostingProcess>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <OutputPath>bin\Release\</OutputPath>

BIN
EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/Spart/bin/Debug/Spart.dll


BIN
EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/Spart/bin/Debug/Spart.pdb


BIN
EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/Spart/bin/Release/Spart.dll


BIN
EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/Spart/obj/Debug/Spart.dll


BIN
EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/Spart/obj/Debug/Spart.pdb


BIN
EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/Spart/obj/Release/Spart.dll


BIN
EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/bin/Debug/EQ2ModelViewer.exe


BIN
EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/bin/Debug/EQ2ModelViewer.pdb


BIN
EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/bin/Debug/Spart.dll


BIN
EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/bin/Debug/Spart.pdb


BIN
EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/bin/Debug/libeq2.dll


BIN
EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/bin/Debug/libeq2.pdb


BIN
EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/bin/Release/EQ2ModelViewer.exe


BIN
EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/bin/Release/EQ2ModelViewer.pdb


BIN
EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/bin/Release/Spart.dll


BIN
EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/bin/Release/Spart.pdb


BIN
EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/bin/Release/libeq2.dll


BIN
EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/bin/Release/libeq2.pdb


File diff suppressed because it is too large
+ 44 - 250
EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/bin/Release/loaded.txt


+ 526 - 0
EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/bin/Release/zones.txt.dof

@@ -0,0 +1,526 @@
+D:\github\dofextract\zones\adv02_dun_drowned_caverns\adv02_dun_drowned_caverns.lut
+D:\github\dofextract\zones\adv02_dun_sundered_splitpaw\adv02_dun_sundered_splitpaw.lut
+D:\github\dofextract\zones\adv02_dun_sundered_splitpaw_hub\adv02_dun_sundered_splitpaw_hub.lut
+D:\github\dofextract\zones\adv04_crab_cave\adv04_crab_cave.lut
+D:\github\dofextract\zones\adv04_dun_bird_cage\adv04_dun_bird_cage.lut
+D:\github\dofextract\zones\adv04_dun_drgn_temple\adv04_dun_drgn_temple.lut
+D:\github\dofextract\zones\adv04_dun_endless\adv04_dun_endless.lut
+D:\github\dofextract\zones\adv04_dun_temple\adv04_dun_temple.lut
+D:\github\dofextract\zones\adv04_rgn_mystic_lake\adv04_rgn_mystic_lake.lut
+D:\github\dofextract\zones\adv04_rgn_village\adv04_rgn_village.lut
+D:\github\dofextract\zones\adv04_tower_cave\adv04_tower_cave.lut
+D:\github\dofextract\zones\antonica\antonica.lut
+D:\github\dofextract\zones\antonica_epic01_vale\antonica_epic01_vale.lut
+D:\github\dofextract\zones\antonica_epic01_vale_gu54\antonica_epic01_vale_gu54.lut
+D:\github\dofextract\zones\antonica_epic02_firemyst\antonica_epic02_firemyst.lut
+D:\github\dofextract\zones\antonica_epic03_prelude\antonica_epic03_prelude.lut
+D:\github\dofextract\zones\arena_of_the_gods\arena_of_the_gods.lut
+D:\github\dofextract\zones\avatar_arena\avatar_arena.lut
+D:\github\dofextract\zones\battleground_ctf\battleground_ctf.lut
+D:\github\dofextract\zones\battleground_defense\battleground_defense.lut
+D:\github\dofextract\zones\battleground_lobby\battleground_lobby.lut
+D:\github\dofextract\zones\battleground_nodes\battleground_nodes.lut
+D:\github\dofextract\zones\battleground_relic01\battleground_relic01.lut
+D:\github\dofextract\zones\befallen\befallen.lut
+D:\github\dofextract\zones\befallen_epic01\befallen_epic01.lut
+D:\github\dofextract\zones\blackburrow\blackburrow.lut
+D:\github\dofextract\zones\boat_06p_enchanted\boat_06p_enchanted.lut
+D:\github\dofextract\zones\boat_06p_everfrost\boat_06p_everfrost.lut
+D:\github\dofextract\zones\boat_06p_feerrott\boat_06p_feerrott.lut
+D:\github\dofextract\zones\boat_06p_freeport\boat_06p_freeport.lut
+D:\github\dofextract\zones\boat_06p_hold_of_prexus\boat_06p_hold_of_prexus.lut
+D:\github\dofextract\zones\boat_06p_lavastorm\boat_06p_lavastorm.lut
+D:\github\dofextract\zones\boat_06p_orcishwastes\boat_06p_orcishwastes.lut
+D:\github\dofextract\zones\boat_06p_qeynos\boat_06p_qeynos.lut
+D:\github\dofextract\zones\boat_06p_stormy\boat_06p_stormy.lut
+D:\github\dofextract\zones\boat_06p_tutorial01\boat_06p_tutorial01.lut
+D:\github\dofextract\zones\boat_06p_tutorial02\boat_06p_tutorial02.lut
+D:\github\dofextract\zones\cazicthule\cazicthule.lut
+D:\github\dofextract\zones\cazicthule_epic01_sanctum\cazicthule_epic01_sanctum.lut
+D:\github\dofextract\zones\character_create\character_create.lut
+D:\github\dofextract\zones\cmmn_epic01_orc\cmmn_epic01_orc.lut
+D:\github\dofextract\zones\cmmn_epic02_mage\cmmn_epic02_mage.lut
+D:\github\dofextract\zones\commonlands\commonlands.lut
+D:\github\dofextract\zones\darklight_wood\darklight_wood.lut
+D:\github\dofextract\zones\deathfist\deathfist.lut
+D:\github\dofextract\zones\drafling_tower\drafling_tower.lut
+D:\github\dofextract\zones\dyod_chardok_layout01\dyod_chardok_layout01.lut
+D:\github\dofextract\zones\dyod_crushbone_layout01\dyod_crushbone_layout01.lut
+D:\github\dofextract\zones\dyod_crushbone_layout02\dyod_crushbone_layout02.lut
+D:\github\dofextract\zones\dyod_crushbone_layout03\dyod_crushbone_layout03.lut
+D:\github\dofextract\zones\dyod_crushbone_layout04\dyod_crushbone_layout04.lut
+D:\github\dofextract\zones\dyod_crushbone_layout05\dyod_crushbone_layout05.lut
+D:\github\dofextract\zones\dyod_lairofscale_layout01\dyod_lairofscale_layout01.lut
+D:\github\dofextract\zones\dyod_lairofscale_layout02\dyod_lairofscale_layout02.lut
+D:\github\dofextract\zones\dyod_lairofscale_layout03\dyod_lairofscale_layout03.lut
+D:\github\dofextract\zones\dyod_lairofscale_layout04\dyod_lairofscale_layout04.lut
+D:\github\dofextract\zones\dyod_mistmoore_layout01\dyod_mistmoore_layout01.lut
+D:\github\dofextract\zones\dyod_mistmoore_layout02\dyod_mistmoore_layout02.lut
+D:\github\dofextract\zones\dyod_mistmoore_layout03\dyod_mistmoore_layout03.lut
+D:\github\dofextract\zones\dyod_mistmoore_layout04\dyod_mistmoore_layout04.lut
+D:\github\dofextract\zones\dyod_mistmoore_layout05\dyod_mistmoore_layout05.lut
+D:\github\dofextract\zones\dyod_poets_layout01\dyod_poets_layout01.lut
+D:\github\dofextract\zones\enchanted\enchanted.lut
+D:\github\dofextract\zones\enchanted_mini01\enchanted_mini01.lut
+D:\github\dofextract\zones\everfrost\everfrost.lut
+D:\github\dofextract\zones\everfrost_epic01_menagerie\everfrost_epic01_menagerie.lut
+D:\github\dofextract\zones\everfrost_epic02_icespire\everfrost_epic02_icespire.lut
+D:\github\dofextract\zones\everfrost_frostfell\everfrost_frostfell.lut
+D:\github\dofextract\zones\everfrost_frostfell_new01\everfrost_frostfell_new01.lut
+D:\github\dofextract\zones\exile_city\exile_city.lut
+D:\github\dofextract\zones\exp01_cty_majdul\exp01_cty_majdul.lut
+D:\github\dofextract\zones\exp01_cty_majdul_1r01\exp01_cty_majdul_1r01.lut
+D:\github\dofextract\zones\exp01_cty_majdul_1r02\exp01_cty_majdul_1r02.lut
+D:\github\dofextract\zones\exp01_cty_majdul_2r01\exp01_cty_majdul_2r01.lut
+D:\github\dofextract\zones\exp01_cty_majdul_2r02\exp01_cty_majdul_2r02.lut
+D:\github\dofextract\zones\exp01_cty_majdul_3r01\exp01_cty_majdul_3r01.lut
+D:\github\dofextract\zones\exp01_cty_majdul_3r02\exp01_cty_majdul_3r02.lut
+D:\github\dofextract\zones\exp01_cty_majdul_arena01\exp01_cty_majdul_arena01.lut
+D:\github\dofextract\zones\exp01_cty_majdul_arena02\exp01_cty_majdul_arena02.lut
+D:\github\dofextract\zones\exp01_cty_majdul_blades\exp01_cty_majdul_blades.lut
+D:\github\dofextract\zones\exp01_cty_majdul_coin\exp01_cty_majdul_coin.lut
+D:\github\dofextract\zones\exp01_cty_majdul_library\exp01_cty_majdul_library.lut
+D:\github\dofextract\zones\exp01_cty_majdul_moon\exp01_cty_majdul_moon.lut
+D:\github\dofextract\zones\exp01_cty_majdul_tears\exp01_cty_majdul_tears.lut
+D:\github\dofextract\zones\exp01_cty_majdul_truth\exp01_cty_majdul_truth.lut
+D:\github\dofextract\zones\exp01_dun_clefts_of_rujark\exp01_dun_clefts_of_rujark.lut
+D:\github\dofextract\zones\exp01_dun_living_tombs\exp01_dun_living_tombs.lut
+D:\github\dofextract\zones\exp01_dun_pedestal_of_sky\exp01_dun_pedestal_of_sky.lut
+D:\github\dofextract\zones\exp01_dun_poets_palace\exp01_dun_poets_palace.lut
+D:\github\dofextract\zones\exp01_dun_poets_palace_community\exp01_dun_poets_palace_community.lut
+D:\github\dofextract\zones\exp01_dun_shimmering_citadel\exp01_dun_shimmering_citadel.lut
+D:\github\dofextract\zones\exp01_dun_shimmering_citadel_epic01_bottle\exp01_dun_shimmering_citadel_epic01_bottle.lut
+D:\github\dofextract\zones\exp01_dun_shimmering_citadel_epic02_prism\exp01_dun_shimmering_citadel_epic02_prism.lut
+D:\github\dofextract\zones\exp01_dun_silent_city\exp01_dun_silent_city.lut
+D:\github\dofextract\zones\exp01_dun_silent_city_epic01_temple\exp01_dun_silent_city_epic01_temple.lut
+D:\github\dofextract\zones\exp01_rgn_pillars_of_flame\exp01_rgn_pillars_of_flame.lut
+D:\github\dofextract\zones\exp01_rgn_pillars_of_flame_epic01_cazel\exp01_rgn_pillars_of_flame_epic01_cazel.lut
+D:\github\dofextract\zones\exp01_rgn_pillars_of_flame_epic02_discipline\exp01_rgn_pillars_of_flame_epic02_discipline.lut
+D:\github\dofextract\zones\exp01_rgn_sinking_sands\exp01_rgn_sinking_sands.lut
+D:\github\dofextract\zones\exp01_rgn_sinking_sands_epic01_lockjaw\exp01_rgn_sinking_sands_epic01_lockjaw.lut
+D:\github\dofextract\zones\exp02_dun_dragon_necropolis\exp02_dun_dragon_necropolis.lut
+D:\github\dofextract\zones\exp02_dun_halls_of_fate\exp02_dun_halls_of_fate.lut
+D:\github\dofextract\zones\exp02_dun_halls_of_fate_epic01_sepulcher\exp02_dun_halls_of_fate_epic01_sepulcher.lut
+D:\github\dofextract\zones\exp02_dun_halls_of_fate_epic02_devourer\exp02_dun_halls_of_fate_epic02_devourer.lut
+D:\github\dofextract\zones\exp02_dun_lair_of_scale\exp02_dun_lair_of_scale.lut
+D:\github\dofextract\zones\exp02_dun_lair_of_scale_epic01_seeing\exp02_dun_lair_of_scale_epic01_seeing.lut
+D:\github\dofextract\zones\exp02_dun_lair_of_scale_epic02_hallowed\exp02_dun_lair_of_scale_epic02_hallowed.lut
+D:\github\dofextract\zones\exp02_dun_shrines_of_sky\exp02_dun_shrines_of_sky.lut
+D:\github\dofextract\zones\exp02_dun_shrines_of_sky_epic01_vaults\exp02_dun_shrines_of_sky_epic01_vaults.lut
+D:\github\dofextract\zones\exp02_dun_shrines_of_sky_epic02_nest\exp02_dun_shrines_of_sky_epic02_nest.lut
+D:\github\dofextract\zones\exp02_rgn_realm_of_dawn\exp02_rgn_realm_of_dawn.lut
+D:\github\dofextract\zones\exp02_rgn_realm_of_dawn_arena\exp02_rgn_realm_of_dawn_arena.lut
+D:\github\dofextract\zones\exp02_rgn_realm_of_night\exp02_rgn_realm_of_night.lut
+D:\github\dofextract\zones\exp02_rgn_realm_of_night_epic\exp02_rgn_realm_of_night_epic.lut
+D:\github\dofextract\zones\exp02_rgn_realm_of_twilight\exp02_rgn_realm_of_twilight.lut
+D:\github\dofextract\zones\exp03_dun_castle_mistmoore\exp03_dun_castle_mistmoore.lut
+D:\github\dofextract\zones\exp03_dun_castle_mistmoore_epic01_coffinchamber\exp03_dun_castle_mistmoore_epic01_coffinchamber.lut
+D:\github\dofextract\zones\exp03_dun_crushbone_keep\exp03_dun_crushbone_keep.lut
+D:\github\dofextract\zones\exp03_dun_crushbone_keep_epic01_throne\exp03_dun_crushbone_keep_epic01_throne.lut
+D:\github\dofextract\zones\exp03_dun_crushbone_keep_epic02_boss\exp03_dun_crushbone_keep_epic02_boss.lut
+D:\github\dofextract\zones\exp03_dun_estate_of_unrest\exp03_dun_estate_of_unrest.lut
+D:\github\dofextract\zones\exp03_dun_felwithe\exp03_dun_felwithe.lut
+D:\github\dofextract\zones\exp03_dun_felwithe_epic01_throne\exp03_dun_felwithe_epic01_throne.lut
+D:\github\dofextract\zones\exp03_dun_hollow_stump\exp03_dun_hollow_stump.lut
+D:\github\dofextract\zones\exp03_dun_hollow_stump2\exp03_dun_hollow_stump2.lut
+D:\github\dofextract\zones\exp03_dun_kaladim\exp03_dun_kaladim.lut
+D:\github\dofextract\zones\exp03_dun_kaladim_stormguard_hall\exp03_dun_kaladim_stormguard_hall.lut
+D:\github\dofextract\zones\exp03_dun_klakanon\exp03_dun_klakanon.lut
+D:\github\dofextract\zones\exp03_dun_klakanon_epic01_menace\exp03_dun_klakanon_epic01_menace.lut
+D:\github\dofextract\zones\exp03_dun_klakanon_epic02_court\exp03_dun_klakanon_epic02_court.lut
+D:\github\dofextract\zones\exp03_dun_mistmoore_catacombs\exp03_dun_mistmoore_catacombs.lut
+D:\github\dofextract\zones\exp03_dun_mistmoore_catacombs_epic01_freethinker\exp03_dun_mistmoore_catacombs_epic01_freethinker.lut
+D:\github\dofextract\zones\exp03_dun_mistmoore_catacombs_epic02_oldcatacombs\exp03_dun_mistmoore_catacombs_epic02_oldcatacombs.lut
+D:\github\dofextract\zones\exp03_dun_obelisk_epic01_blight\exp03_dun_obelisk_epic01_blight.lut
+D:\github\dofextract\zones\exp03_rgn_butcherblock\exp03_rgn_butcherblock.lut
+D:\github\dofextract\zones\exp03_rgn_emerald_halls\exp03_rgn_emerald_halls.lut
+D:\github\dofextract\zones\exp03_rgn_emerald_halls_event\exp03_rgn_emerald_halls_event.lut
+D:\github\dofextract\zones\exp03_rgn_emerald_halls_hq\exp03_rgn_emerald_halls_hq.lut
+D:\github\dofextract\zones\exp03_rgn_gf_ph_1room\exp03_rgn_gf_ph_1room.lut
+D:\github\dofextract\zones\exp03_rgn_gf_ph_2room\exp03_rgn_gf_ph_2room.lut
+D:\github\dofextract\zones\exp03_rgn_gf_ph_3room\exp03_rgn_gf_ph_3room.lut
+D:\github\dofextract\zones\exp03_rgn_gf_ph_4room\exp03_rgn_gf_ph_4room.lut
+D:\github\dofextract\zones\exp03_rgn_greater_faydark\exp03_rgn_greater_faydark.lut
+D:\github\dofextract\zones\exp03_rgn_lesser_faydark\exp03_rgn_lesser_faydark.lut
+D:\github\dofextract\zones\exp03_rgn_loping_plains\exp03_rgn_loping_plains.lut
+D:\github\dofextract\zones\exp03_rgn_steamfont\exp03_rgn_steamfont.lut
+D:\github\dofextract\zones\exp03_rgn_steamfont_epic01_mines\exp03_rgn_steamfont_epic01_mines.lut
+D:\github\dofextract\zones\exp04_dun_charasis_epic01_queens\exp04_dun_charasis_epic01_queens.lut
+D:\github\dofextract\zones\exp04_dun_charasis_north\exp04_dun_charasis_north.lut
+D:\github\dofextract\zones\exp04_dun_charasis_south\exp04_dun_charasis_south.lut
+D:\github\dofextract\zones\exp04_dun_charasis_west\exp04_dun_charasis_west.lut
+D:\github\dofextract\zones\exp04_dun_chardok\exp04_dun_chardok.lut
+D:\github\dofextract\zones\exp04_dun_chardok_epic01_throne\exp04_dun_chardok_epic01_throne.lut
+D:\github\dofextract\zones\exp04_dun_chardok_epic02_prison\exp04_dun_chardok_epic02_prison.lut
+D:\github\dofextract\zones\exp04_dun_chelsith\exp04_dun_chelsith.lut
+D:\github\dofextract\zones\exp04_dun_chelsith_epic01_behemoth\exp04_dun_chelsith_epic01_behemoth.lut
+D:\github\dofextract\zones\exp04_dun_droga_nurga\exp04_dun_droga_nurga.lut
+D:\github\dofextract\zones\exp04_dun_karnors_castle\exp04_dun_karnors_castle.lut
+D:\github\dofextract\zones\exp04_dun_karnors_castle_epic01_pawbuster\exp04_dun_karnors_castle_epic01_pawbuster.lut
+D:\github\dofextract\zones\exp04_dun_kurns_tower\exp04_dun_kurns_tower.lut
+D:\github\dofextract\zones\exp04_dun_sebilis\exp04_dun_sebilis.lut
+D:\github\dofextract\zones\exp04_dun_sebilis_epic01_crypt\exp04_dun_sebilis_epic01_crypt.lut
+D:\github\dofextract\zones\exp04_dun_sebilis_epic02_venril\exp04_dun_sebilis_epic02_venril.lut
+D:\github\dofextract\zones\exp04_dun_sebilis_quarters\exp04_dun_sebilis_quarters.lut
+D:\github\dofextract\zones\exp04_dun_veeshans_peak\exp04_dun_veeshans_peak.lut
+D:\github\dofextract\zones\exp04_dun_veeshans_peak_epic01_trakanon\exp04_dun_veeshans_peak_epic01_trakanon.lut
+D:\github\dofextract\zones\exp04_rgn_fens_of_nathsar\exp04_rgn_fens_of_nathsar.lut
+D:\github\dofextract\zones\exp04_rgn_gorowyn_ph_1room\exp04_rgn_gorowyn_ph_1room.lut
+D:\github\dofextract\zones\exp04_rgn_gorowyn_ph_3room\exp04_rgn_gorowyn_ph_3room.lut
+D:\github\dofextract\zones\exp04_rgn_gorowyn_ph_5room\exp04_rgn_gorowyn_ph_5room.lut
+D:\github\dofextract\zones\exp04_rgn_jarsath_wastes\exp04_rgn_jarsath_wastes.lut
+D:\github\dofextract\zones\exp04_rgn_kunzar_jungle\exp04_rgn_kunzar_jungle.lut
+D:\github\dofextract\zones\exp04_rgn_kylong_plains\exp04_rgn_kylong_plains.lut
+D:\github\dofextract\zones\exp04_rgn_timorous_deep\exp04_rgn_timorous_deep.lut
+D:\github\dofextract\zones\exp05_dun_befallen_asylum\exp05_dun_befallen_asylum.lut
+D:\github\dofextract\zones\exp05_dun_befallen_cavern\exp05_dun_befallen_cavern.lut
+D:\github\dofextract\zones\exp05_dun_befallen_forsaken\exp05_dun_befallen_forsaken.lut
+D:\github\dofextract\zones\exp05_dun_guk_lower\exp05_dun_guk_lower.lut
+D:\github\dofextract\zones\exp05_dun_guk_lower_epic01_cave\exp05_dun_guk_lower_epic01_cave.lut
+D:\github\dofextract\zones\exp05_dun_guk_spire\exp05_dun_guk_spire.lut
+D:\github\dofextract\zones\exp05_dun_guk_stronghold\exp05_dun_guk_stronghold.lut
+D:\github\dofextract\zones\exp05_dun_guk_stronghold_raid\exp05_dun_guk_stronghold_raid.lut
+D:\github\dofextract\zones\exp05_dun_guk_upper\exp05_dun_guk_upper.lut
+D:\github\dofextract\zones\exp05_dun_guk_upper_epic01_cave\exp05_dun_guk_upper_epic01_cave.lut
+D:\github\dofextract\zones\exp05_dun_korsha\exp05_dun_korsha.lut
+D:\github\dofextract\zones\exp05_dun_miragul_epic01\exp05_dun_miragul_epic01.lut
+D:\github\dofextract\zones\exp05_dun_miragul_lower\exp05_dun_miragul_lower.lut
+D:\github\dofextract\zones\exp05_dun_miragul_shard\exp05_dun_miragul_shard.lut
+D:\github\dofextract\zones\exp05_dun_miragul_upper\exp05_dun_miragul_upper.lut
+D:\github\dofextract\zones\exp05_dun_mistmoore_abbey\exp05_dun_mistmoore_abbey.lut
+D:\github\dofextract\zones\exp05_dun_mistmoore_dragon\exp05_dun_mistmoore_dragon.lut
+D:\github\dofextract\zones\exp05_dun_mistmoore_manor\exp05_dun_mistmoore_manor.lut
+D:\github\dofextract\zones\exp05_dun_mistmoore_repository\exp05_dun_mistmoore_repository.lut
+D:\github\dofextract\zones\exp05_dun_najena_atheneum\exp05_dun_najena_atheneum.lut
+D:\github\dofextract\zones\exp05_dun_najena_forge\exp05_dun_najena_forge.lut
+D:\github\dofextract\zones\exp05_dun_najena_hollow\exp05_dun_najena_hollow.lut
+D:\github\dofextract\zones\exp05_dun_veksar\exp05_dun_veksar.lut
+D:\github\dofextract\zones\exp05_dun_void_anchor\exp05_dun_void_anchor.lut
+D:\github\dofextract\zones\exp05_dun_void_palace\exp05_dun_void_palace.lut
+D:\github\dofextract\zones\exp05_dun_void_palace_crafter\exp05_dun_void_palace_crafter.lut
+D:\github\dofextract\zones\exp05_dun_void_pit\exp05_dun_void_pit.lut
+D:\github\dofextract\zones\exp05_rgn_innothule\exp05_rgn_innothule.lut
+D:\github\dofextract\zones\exp06_dun_erudin_deathmatch\exp06_dun_erudin_deathmatch.lut
+D:\github\dofextract\zones\exp06_dun_erudin_erudin01\exp06_dun_erudin_erudin01.lut
+D:\github\dofextract\zones\exp06_dun_erudin_erudin02\exp06_dun_erudin_erudin02.lut
+D:\github\dofextract\zones\exp06_dun_erudin_erudin03\exp06_dun_erudin_erudin03.lut
+D:\github\dofextract\zones\exp06_dun_sentinal\exp06_dun_sentinal.lut
+D:\github\dofextract\zones\exp06_dun_thehole\exp06_dun_thehole.lut
+D:\github\dofextract\zones\exp06_dun_thehole_kabor\exp06_dun_thehole_kabor.lut
+D:\github\dofextract\zones\exp06_dun_thehole_raid\exp06_dun_thehole_raid.lut
+D:\github\dofextract\zones\exp06_dun_thehole_wing1\exp06_dun_thehole_wing1.lut
+D:\github\dofextract\zones\exp06_dun_thehole_wing2\exp06_dun_thehole_wing2.lut
+D:\github\dofextract\zones\exp06_dun_thehole_wing3\exp06_dun_thehole_wing3.lut
+D:\github\dofextract\zones\exp06_dun_toxxulia_mound01\exp06_dun_toxxulia_mound01.lut
+D:\github\dofextract\zones\exp06_dun_vastydeep01\exp06_dun_vastydeep01.lut
+D:\github\dofextract\zones\exp06_dun_vastydeep02\exp06_dun_vastydeep02.lut
+D:\github\dofextract\zones\exp06_dun_vastydeep03\exp06_dun_vastydeep03.lut
+D:\github\dofextract\zones\exp06_dun_vastydeep04\exp06_dun_vastydeep04.lut
+D:\github\dofextract\zones\exp06_rgn_odus_north\exp06_rgn_odus_north.lut
+D:\github\dofextract\zones\exp06_rgn_odus_south\exp06_rgn_odus_south.lut
+D:\github\dofextract\zones\exp06_rgn_odus_south_epic01_panda\exp06_rgn_odus_south_epic01_panda.lut
+D:\github\dofextract\zones\exp06_rgn_odus_south_kerra\exp06_rgn_odus_south_kerra.lut
+D:\github\dofextract\zones\exp07_dun_crystalcavern\exp07_dun_crystalcavern.lut
+D:\github\dofextract\zones\exp07_dun_drunder_fortress\exp07_dun_drunder_fortress.lut
+D:\github\dofextract\zones\exp07_dun_drunder_sullon_spire\exp07_dun_drunder_sullon_spire.lut
+D:\github\dofextract\zones\exp07_dun_drunder_tallon_stronghold\exp07_dun_drunder_tallon_stronghold.lut
+D:\github\dofextract\zones\exp07_dun_drunder_vallon_tower\exp07_dun_drunder_vallon_tower.lut
+D:\github\dofextract\zones\exp07_dun_kael_drakkel\exp07_dun_kael_drakkel.lut
+D:\github\dofextract\zones\exp07_dun_kael_drakkel_hub\exp07_dun_kael_drakkel_hub.lut
+D:\github\dofextract\zones\exp07_dun_kael_iceshard_keep\exp07_dun_kael_iceshard_keep.lut
+D:\github\dofextract\zones\exp07_dun_kael_temple_zek\exp07_dun_kael_temple_zek.lut
+D:\github\dofextract\zones\exp07_dun_kael_throne\exp07_dun_kael_throne.lut
+D:\github\dofextract\zones\exp07_dun_kraytocs_fortress\exp07_dun_kraytocs_fortress.lut
+D:\github\dofextract\zones\exp07_dun_plane_of_war\exp07_dun_plane_of_war.lut
+D:\github\dofextract\zones\exp07_dun_toweroffrozenshadow\exp07_dun_toweroffrozenshadow.lut
+D:\github\dofextract\zones\exp07_dun_velks_forgotten_pools\exp07_dun_velks_forgotten_pools.lut
+D:\github\dofextract\zones\exp07_dun_velks_the_ascent\exp07_dun_velks_the_ascent.lut
+D:\github\dofextract\zones\exp07_rgn_eastern_wastes\exp07_rgn_eastern_wastes.lut
+D:\github\dofextract\zones\exp07_rgn_great_divide\exp07_rgn_great_divide.lut
+D:\github\dofextract\zones\exp08_dun_sirensgrotto01\exp08_dun_sirensgrotto01.lut
+D:\github\dofextract\zones\exp08_dun_skyshrine_courtyard01\exp08_dun_skyshrine_courtyard01.lut
+D:\github\dofextract\zones\exp08_dun_skyshrine_courtyard01_scorched\exp08_dun_skyshrine_courtyard01_scorched.lut
+D:\github\dofextract\zones\exp08_dun_skyshrine_courtyard01_scorched_arcane\exp08_dun_skyshrine_courtyard01_scorched_arcane.lut
+D:\github\dofextract\zones\exp08_dun_skyshrine_courtyard01_scorched_capital\exp08_dun_skyshrine_courtyard01_scorched_capital.lut
+D:\github\dofextract\zones\exp08_dun_skyshrine_courtyard01_scorched_market\exp08_dun_skyshrine_courtyard01_scorched_market.lut
+D:\github\dofextract\zones\exp08_dun_skyshrine_lower01\exp08_dun_skyshrine_lower01.lut
+D:\github\dofextract\zones\exp08_dun_skyshrine_top01\exp08_dun_skyshrine_top01.lut
+D:\github\dofextract\zones\exp08_dun_skyshrine_top01_final\exp08_dun_skyshrine_top01_final.lut
+D:\github\dofextract\zones\exp08_dun_sleepers_tomb\exp08_dun_sleepers_tomb.lut
+D:\github\dofextract\zones\exp08_dun_sleepers_tomb_destroyed\exp08_dun_sleepers_tomb_destroyed.lut
+D:\github\dofextract\zones\exp08_dun_sleepers_tomb_epic01_chitari\exp08_dun_sleepers_tomb_epic01_chitari.lut
+D:\github\dofextract\zones\exp08_rgn_velious_cobalt_scar\exp08_rgn_velious_cobalt_scar.lut
+D:\github\dofextract\zones\exp08_rgn_velious_cobalt_scar_combine\exp08_rgn_velious_cobalt_scar_combine.lut
+D:\github\dofextract\zones\exp08_rgn_velious_cobalt_scar_dragon\exp08_rgn_velious_cobalt_scar_dragon.lut
+D:\github\dofextract\zones\exp08_rgn_velious_withered_lands\exp08_rgn_velious_withered_lands.lut
+D:\github\dofextract\zones\exp08_rgn_withered_lands\exp08_rgn_withered_lands.lut
+D:\github\dofextract\zones\exp08_rgn_withered_lands_epic01\exp08_rgn_withered_lands_epic01.lut
+D:\github\dofextract\zones\exp08_rgn_withered_lands_epic02\exp08_rgn_withered_lands_epic02.lut
+D:\github\dofextract\zones\exp09_dun_deepchelsith\exp09_dun_deepchelsith.lut
+D:\github\dofextract\zones\exp09_dun_drinals_castle\exp09_dun_drinals_castle.lut
+D:\github\dofextract\zones\exp09_dun_drinals_ferry\exp09_dun_drinals_ferry.lut
+D:\github\dofextract\zones\exp09_dun_temple_of_faceless\exp09_dun_temple_of_faceless.lut
+D:\github\dofextract\zones\exp09_dun_throne_of_fear\exp09_dun_throne_of_fear.lut
+D:\github\dofextract\zones\exp09_dun_wurmbones_end\exp09_dun_wurmbones_end.lut
+D:\github\dofextract\zones\exp09_dun_wurmbones_end_x2\exp09_dun_wurmbones_end_x2.lut
+D:\github\dofextract\zones\exp09_dun_wurmbone_gulch\exp09_dun_wurmbone_gulch.lut
+D:\github\dofextract\zones\exp09_rgn_eidolon_jungle\exp09_rgn_eidolon_jungle.lut
+D:\github\dofextract\zones\exp09_rgn_plains_of_obol\exp09_rgn_plains_of_obol.lut
+D:\github\dofextract\zones\exp10_dun_bixie_hive\exp10_dun_bixie_hive.lut
+D:\github\dofextract\zones\exp10_dun_highkeep\exp10_dun_highkeep.lut
+D:\github\dofextract\zones\exp10_dun_highkeep_contested\exp10_dun_highkeep_contested.lut
+D:\github\dofextract\zones\exp10_dun_nexus\exp10_dun_nexus.lut
+D:\github\dofextract\zones\exp10_dun_nexus2\exp10_dun_nexus2.lut
+D:\github\dofextract\zones\exp10_dun_pickclaw\exp10_dun_pickclaw.lut
+D:\github\dofextract\zones\exp10_dun_shissarraid01\exp10_dun_shissarraid01.lut
+D:\github\dofextract\zones\exp10_dun_shissarstratum01\exp10_dun_shissarstratum01.lut
+D:\github\dofextract\zones\exp10_dun_shissartemple01\exp10_dun_shissartemple01.lut
+D:\github\dofextract\zones\exp10_dun_shissartemple01_forgotten\exp10_dun_shissartemple01_forgotten.lut
+D:\github\dofextract\zones\exp10_dun_temple_of_veeshan\exp10_dun_temple_of_veeshan.lut
+D:\github\dofextract\zones\exp10_dun_temple_of_veeshan_hub\exp10_dun_temple_of_veeshan_hub.lut
+D:\github\dofextract\zones\exp10_rgn_dragons_realm\exp10_rgn_dragons_realm.lut
+D:\github\dofextract\zones\exp11_dun_cathedral_of_bone\exp11_dun_cathedral_of_bone.lut
+D:\github\dofextract\zones\exp11_dun_cathedral_of_bone_heroic\exp11_dun_cathedral_of_bone_heroic.lut
+D:\github\dofextract\zones\exp11_dun_highhold\exp11_dun_highhold.lut
+D:\github\dofextract\zones\exp11_dun_highhold_action\exp11_dun_highhold_action.lut
+D:\github\dofextract\zones\exp11_dun_highhold_night\exp11_dun_highhold_night.lut
+D:\github\dofextract\zones\exp11_dun_pirate_cove\exp11_dun_pirate_cove.lut
+D:\github\dofextract\zones\exp11_dun_pirate_cove_01\exp11_dun_pirate_cove_01.lut
+D:\github\dofextract\zones\exp11_dun_pirate_cove_02\exp11_dun_pirate_cove_02.lut
+D:\github\dofextract\zones\exp11_dun_pirate_cove_03\exp11_dun_pirate_cove_03.lut
+D:\github\dofextract\zones\exp11_dun_pirate_cove_raid\exp11_dun_pirate_cove_raid.lut
+D:\github\dofextract\zones\exp11_dun_rumcellar_island\exp11_dun_rumcellar_island.lut
+D:\github\dofextract\zones\exp11_dun_rum_cellar\exp11_dun_rum_cellar.lut
+D:\github\dofextract\zones\exp11_dun_rum_cellar_02\exp11_dun_rum_cellar_02.lut
+D:\github\dofextract\zones\exp11_dun_ssraeshza\exp11_dun_ssraeshza.lut
+D:\github\dofextract\zones\exp11_dun_ssraeshza_raid\exp11_dun_ssraeshza_raid.lut
+D:\github\dofextract\zones\exp11_dun_zavithloa\exp11_dun_zavithloa.lut
+D:\github\dofextract\zones\exp11_dun_zavithloa_raid\exp11_dun_zavithloa_raid.lut
+D:\github\dofextract\zones\exp11_rgn_north_seas\exp11_rgn_north_seas.lut
+D:\github\dofextract\zones\exp11_rgn_southseas\exp11_rgn_southseas.lut
+D:\github\dofextract\zones\exp_07_thurgadin_velious\exp_07_thurgadin_velious.lut
+D:\github\dofextract\zones\fallengate\fallengate.lut
+D:\github\dofextract\zones\fallengate_epic01_boss\fallengate_epic01_boss.lut
+D:\github\dofextract\zones\feerrott\feerrott.lut
+D:\github\dofextract\zones\feerrott_epic01_temple\feerrott_epic01_temple.lut
+D:\github\dofextract\zones\feerrott_epic02_froglok\feerrott_epic02_froglok.lut
+D:\github\dofextract\zones\fprt_adv01_sunken\fprt_adv01_sunken.lut
+D:\github\dofextract\zones\fprt_adv02_graveyard\fprt_adv02_graveyard.lut
+D:\github\dofextract\zones\fprt_adv03_sprawl\fprt_adv03_sprawl.lut
+D:\github\dofextract\zones\fprt_adv04_ruins\fprt_adv04_ruins.lut
+D:\github\dofextract\zones\fprt_east\fprt_east.lut
+D:\github\dofextract\zones\fprt_epic01_storeroom01\fprt_epic01_storeroom01.lut
+D:\github\dofextract\zones\fprt_epic02_a01_dungeon01\fprt_epic02_a01_dungeon01.lut
+D:\github\dofextract\zones\fprt_epic03_a01_dungeon02\fprt_epic03_a01_dungeon02.lut
+D:\github\dofextract\zones\fprt_epic04_a04_academy01\fprt_epic04_a04_academy01.lut
+D:\github\dofextract\zones\fprt_epic05_a02_temple01\fprt_epic05_a02_temple01.lut
+D:\github\dofextract\zones\fprt_epic06_new_temple\fprt_epic06_new_temple.lut
+D:\github\dofextract\zones\fprt_epic07_new_jade_tiger\fprt_epic07_new_jade_tiger.lut
+D:\github\dofextract\zones\fprt_guildhall_tier1\fprt_guildhall_tier1.lut
+D:\github\dofextract\zones\fprt_guildhall_tier2\fprt_guildhall_tier2.lut
+D:\github\dofextract\zones\fprt_guildhall_tier3\fprt_guildhall_tier3.lut
+D:\github\dofextract\zones\fprt_guildhall_tier4\fprt_guildhall_tier4.lut
+D:\github\dofextract\zones\fprt_hood01\fprt_hood01.lut
+D:\github\dofextract\zones\fprt_hood02\fprt_hood02.lut
+D:\github\dofextract\zones\fprt_hood03\fprt_hood03.lut
+D:\github\dofextract\zones\fprt_hood04\fprt_hood04.lut
+D:\github\dofextract\zones\fprt_hood05\fprt_hood05.lut
+D:\github\dofextract\zones\fprt_hood06\fprt_hood06.lut
+D:\github\dofextract\zones\fprt_hood_epic01\fprt_hood_epic01.lut
+D:\github\dofextract\zones\fprt_hood_epic02\fprt_hood_epic02.lut
+D:\github\dofextract\zones\fprt_hood_epic03\fprt_hood_epic03.lut
+D:\github\dofextract\zones\fprt_hood_epic04\fprt_hood_epic04.lut
+D:\github\dofextract\zones\fprt_north\fprt_north.lut
+D:\github\dofextract\zones\fprt_ph_1r01\fprt_ph_1r01.lut
+D:\github\dofextract\zones\fprt_ph_1r02\fprt_ph_1r02.lut
+D:\github\dofextract\zones\fprt_ph_2r01\fprt_ph_2r01.lut
+D:\github\dofextract\zones\fprt_ph_2r02\fprt_ph_2r02.lut
+D:\github\dofextract\zones\fprt_ph_3r01\fprt_ph_3r01.lut
+D:\github\dofextract\zones\fprt_ph_3r02\fprt_ph_3r02.lut
+D:\github\dofextract\zones\fprt_ph_3r03\fprt_ph_3r03.lut
+D:\github\dofextract\zones\fprt_ph_5r01\fprt_ph_5r01.lut
+D:\github\dofextract\zones\fprt_ph_5r02\fprt_ph_5r02.lut
+D:\github\dofextract\zones\fprt_sewer01\fprt_sewer01.lut
+D:\github\dofextract\zones\fprt_sewer02\fprt_sewer02.lut
+D:\github\dofextract\zones\fprt_sewer03\fprt_sewer03.lut
+D:\github\dofextract\zones\fprt_sewer_epic01\fprt_sewer_epic01.lut
+D:\github\dofextract\zones\fprt_sewer_epic02\fprt_sewer_epic02.lut
+D:\github\dofextract\zones\fprt_sewer_epic03\fprt_sewer_epic03.lut
+D:\github\dofextract\zones\fprt_sewer_epic04\fprt_sewer_epic04.lut
+D:\github\dofextract\zones\fprt_sewer_epic05\fprt_sewer_epic05.lut
+D:\github\dofextract\zones\fprt_sewer_epic06\fprt_sewer_epic06.lut
+D:\github\dofextract\zones\fprt_sewer_epic07\fprt_sewer_epic07.lut
+D:\github\dofextract\zones\fprt_sewer_epic08\fprt_sewer_epic08.lut
+D:\github\dofextract\zones\fprt_sewer_epic09\fprt_sewer_epic09.lut
+D:\github\dofextract\zones\fprt_south\fprt_south.lut
+D:\github\dofextract\zones\fprt_tradeskill01\fprt_tradeskill01.lut
+D:\github\dofextract\zones\fprt_west\fprt_west.lut
+D:\github\dofextract\zones\fprt_west_militia\fprt_west_militia.lut
+D:\github\dofextract\zones\freeport_combined\freeport_combined.lut
+D:\github\dofextract\zones\guildhall_highkeep\guildhall_highkeep.lut
+D:\github\dofextract\zones\guildhall_highkeep_tier2\guildhall_highkeep_tier2.lut
+D:\github\dofextract\zones\halas\halas.lut
+D:\github\dofextract\zones\halas_epic01_necro\halas_epic01_necro.lut
+D:\github\dofextract\zones\halas_ph_1room\halas_ph_1room.lut
+D:\github\dofextract\zones\halas_ph_3room\halas_ph_3room.lut
+D:\github\dofextract\zones\halas_ph_5room\halas_ph_5room.lut
+D:\github\dofextract\zones\haunted_house\haunted_house.lut
+D:\github\dofextract\zones\highhold_guildhall\highhold_guildhall.lut
+D:\github\dofextract\zones\holdofprexus\holdofprexus.lut
+D:\github\dofextract\zones\home_citadel\home_citadel.lut
+D:\github\dofextract\zones\home_darklightpalace\home_darklightpalace.lut
+D:\github\dofextract\zones\home_enchanted\home_enchanted.lut
+D:\github\dofextract\zones\home_everfrost_menagerie\home_everfrost_menagerie.lut
+D:\github\dofextract\zones\home_fearshard\home_fearshard.lut
+D:\github\dofextract\zones\home_felwithe_throne\home_felwithe_throne.lut
+D:\github\dofextract\zones\home_ferry\home_ferry.lut
+D:\github\dofextract\zones\home_floating_island\home_floating_island.lut
+D:\github\dofextract\zones\home_freeport\home_freeport.lut
+D:\github\dofextract\zones\home_gnome\home_gnome.lut
+D:\github\dofextract\zones\home_kael_iceshard\home_kael_iceshard.lut
+D:\github\dofextract\zones\home_lavastorm\home_lavastorm.lut
+D:\github\dofextract\zones\home_magetower\home_magetower.lut
+D:\github\dofextract\zones\home_majdul_blades\home_majdul_blades.lut
+D:\github\dofextract\zones\home_majdul_bottle\home_majdul_bottle.lut
+D:\github\dofextract\zones\home_majdul_library\home_majdul_library.lut
+D:\github\dofextract\zones\home_majdul_moon\home_majdul_moon.lut
+D:\github\dofextract\zones\home_neriak_opera\home_neriak_opera.lut
+D:\github\dofextract\zones\home_oakmyst\home_oakmyst.lut
+D:\github\dofextract\zones\home_panda\home_panda.lut
+D:\github\dofextract\zones\home_pirate\home_pirate.lut
+D:\github\dofextract\zones\home_poets_pedestal\home_poets_pedestal.lut
+D:\github\dofextract\zones\home_qeynos_dojo\home_qeynos_dojo.lut
+D:\github\dofextract\zones\home_relictinker\home_relictinker.lut
+D:\github\dofextract\zones\home_respite\home_respite.lut
+D:\github\dofextract\zones\home_sentinal\home_sentinal.lut
+D:\github\dofextract\zones\home_sirens\home_sirens.lut
+D:\github\dofextract\zones\home_stormy_isle\home_stormy_isle.lut
+D:\github\dofextract\zones\home_sullon_spire\home_sullon_spire.lut
+D:\github\dofextract\zones\home_tutorial\home_tutorial.lut
+D:\github\dofextract\zones\home_unrest\home_unrest.lut
+D:\github\dofextract\zones\home_vasty_library\home_vasty_library.lut
+D:\github\dofextract\zones\home_void_palace\home_void_palace.lut
+D:\github\dofextract\zones\home_wuoshi\home_wuoshi.lut
+D:\github\dofextract\zones\lavastorm\lavastorm.lut
+D:\github\dofextract\zones\lavastorm_epic01_sanctum\lavastorm_epic01_sanctum.lut
+D:\github\dofextract\zones\lavastorm_epic02_gulch\lavastorm_epic02_gulch.lut
+D:\github\dofextract\zones\live_epic_mystic\live_epic_mystic.lut
+D:\github\dofextract\zones\live_epic_mystic_horde\live_epic_mystic_horde.lut
+D:\github\dofextract\zones\live_epic_mystic_odus\live_epic_mystic_odus.lut
+D:\github\dofextract\zones\live_haunted_cauldroncove\live_haunted_cauldroncove.lut
+D:\github\dofextract\zones\live_haunted_mansion\live_haunted_mansion.lut
+D:\github\dofextract\zones\live_haunted_unrest\live_haunted_unrest.lut
+D:\github\dofextract\zones\live_irontoes\live_irontoes.lut
+D:\github\dofextract\zones\live_ph_skyblade01\live_ph_skyblade01.lut
+D:\github\dofextract\zones\live_rodcet_diety\live_rodcet_diety.lut
+D:\github\dofextract\zones\mistmoore_ph_5r01\mistmoore_ph_5r01.lut
+D:\github\dofextract\zones\mod01_dun_crypt_of_thaen\mod01_dun_crypt_of_thaen.lut
+D:\github\dofextract\zones\mod01_dun_tombs_of_night\mod01_dun_tombs_of_night.lut
+D:\github\dofextract\zones\mystery_crate\mystery_crate.lut
+D:\github\dofextract\zones\nektropos_castle\nektropos_castle.lut
+D:\github\dofextract\zones\nektulos\nektulos.lut
+D:\github\dofextract\zones\nektulos_epic01_cauldroncove\nektulos_epic01_cauldroncove.lut
+D:\github\dofextract\zones\nektulos_mini01\nektulos_mini01.lut
+D:\github\dofextract\zones\nektulos_mini02\nektulos_mini02.lut
+D:\github\dofextract\zones\nektulos_mini03\nektulos_mini03.lut
+D:\github\dofextract\zones\neriak\neriak.lut
+D:\github\dofextract\zones\neriak_ph_1room\neriak_ph_1room.lut
+D:\github\dofextract\zones\neriak_ph_3room\neriak_ph_3room.lut
+D:\github\dofextract\zones\neriak_ph_5room\neriak_ph_5room.lut
+D:\github\dofextract\zones\obelisk_epic01_vestibule\obelisk_epic01_vestibule.lut
+D:\github\dofextract\zones\obelisk_of_lostsouls\obelisk_of_lostsouls.lut
+D:\github\dofextract\zones\orcishwastes\orcishwastes.lut
+D:\github\dofextract\zones\orcishwastes_mini01\orcishwastes_mini01.lut
+D:\github\dofextract\zones\permafrost\permafrost.lut
+D:\github\dofextract\zones\permafrost_epic01_icebound\permafrost_epic01_icebound.lut
+D:\github\dofextract\zones\permafrost_epic02_crypt\permafrost_epic02_crypt.lut
+D:\github\dofextract\zones\permafrost_frostfell\permafrost_frostfell.lut
+D:\github\dofextract\zones\qeynos_combined01\qeynos_combined01.lut
+D:\github\dofextract\zones\qeynos_combined02\qeynos_combined02.lut
+D:\github\dofextract\zones\qey_adv01_oakmyst\qey_adv01_oakmyst.lut
+D:\github\dofextract\zones\qey_adv02_ruins\qey_adv02_ruins.lut
+D:\github\dofextract\zones\qey_adv03_caves\qey_adv03_caves.lut
+D:\github\dofextract\zones\qey_adv04_bog\qey_adv04_bog.lut
+D:\github\dofextract\zones\qey_catacomb01\qey_catacomb01.lut
+D:\github\dofextract\zones\qey_catacomb02\qey_catacomb02.lut
+D:\github\dofextract\zones\qey_catacomb03\qey_catacomb03.lut
+D:\github\dofextract\zones\qey_catacomb_epic01\qey_catacomb_epic01.lut
+D:\github\dofextract\zones\qey_catacomb_epic02\qey_catacomb_epic02.lut
+D:\github\dofextract\zones\qey_catacomb_epic03\qey_catacomb_epic03.lut
+D:\github\dofextract\zones\qey_catacomb_epic04\qey_catacomb_epic04.lut
+D:\github\dofextract\zones\qey_catacomb_epic05\qey_catacomb_epic05.lut
+D:\github\dofextract\zones\qey_catacomb_epic06\qey_catacomb_epic06.lut
+D:\github\dofextract\zones\qey_elddar\qey_elddar.lut
+D:\github\dofextract\zones\qey_epic01_p19_cache\qey_epic01_p19_cache.lut
+D:\github\dofextract\zones\qey_epic02_village02_bank\qey_epic02_village02_bank.lut
+D:\github\dofextract\zones\qey_epic03_village03_ph\qey_epic03_village03_ph.lut
+D:\github\dofextract\zones\qey_epic04_village05_bank\qey_epic04_village05_bank.lut
+D:\github\dofextract\zones\qey_epic05_village06_scribe\qey_epic05_village06_scribe.lut
+D:\github\dofextract\zones\qey_epic06_p12_irontoes\qey_epic06_p12_irontoes.lut
+D:\github\dofextract\zones\qey_epic07_p08_sneeds\qey_epic07_p08_sneeds.lut
+D:\github\dofextract\zones\qey_epic08_p06_voleens\qey_epic08_p06_voleens.lut
+D:\github\dofextract\zones\qey_epic09_l02_steel\qey_epic09_l02_steel.lut
+D:\github\dofextract\zones\qey_epic10_p01_bank\qey_epic10_p01_bank.lut
+D:\github\dofextract\zones\qey_epic11_l10_arbor\qey_epic11_l10_arbor.lut
+D:\github\dofextract\zones\qey_epic12_l08_sanctum\qey_epic12_l08_sanctum.lut
+D:\github\dofextract\zones\qey_epic13_l04_towers\qey_epic13_l04_towers.lut
+D:\github\dofextract\zones\qey_epic14_ratonga\qey_epic14_ratonga.lut
+D:\github\dofextract\zones\qey_epic15_ufo\qey_epic15_ufo.lut
+D:\github\dofextract\zones\qey_guildhall_tier1\qey_guildhall_tier1.lut
+D:\github\dofextract\zones\qey_guildhall_tier2\qey_guildhall_tier2.lut
+D:\github\dofextract\zones\qey_guildhall_tier3\qey_guildhall_tier3.lut
+D:\github\dofextract\zones\qey_guildhall_tier4\qey_guildhall_tier4.lut
+D:\github\dofextract\zones\qey_harbor\qey_harbor.lut
+D:\github\dofextract\zones\qey_north\qey_north.lut
+D:\github\dofextract\zones\qey_ph_1r01\qey_ph_1r01.lut
+D:\github\dofextract\zones\qey_ph_1r02\qey_ph_1r02.lut
+D:\github\dofextract\zones\qey_ph_2r01\qey_ph_2r01.lut
+D:\github\dofextract\zones\qey_ph_2r02\qey_ph_2r02.lut
+D:\github\dofextract\zones\qey_ph_3r01\qey_ph_3r01.lut
+D:\github\dofextract\zones\qey_ph_3r02\qey_ph_3r02.lut
+D:\github\dofextract\zones\qey_ph_3r03\qey_ph_3r03.lut
+D:\github\dofextract\zones\qey_ph_5r01\qey_ph_5r01.lut
+D:\github\dofextract\zones\qey_south\qey_south.lut
+D:\github\dofextract\zones\qey_tradeskill01\qey_tradeskill01.lut
+D:\github\dofextract\zones\qey_village01\qey_village01.lut
+D:\github\dofextract\zones\qey_village01_revamp\qey_village01_revamp.lut
+D:\github\dofextract\zones\qey_village02\qey_village02.lut
+D:\github\dofextract\zones\qey_village02_revamp\qey_village02_revamp.lut
+D:\github\dofextract\zones\qey_village03\qey_village03.lut
+D:\github\dofextract\zones\qey_village03_revamp\qey_village03_revamp.lut
+D:\github\dofextract\zones\qey_village04\qey_village04.lut
+D:\github\dofextract\zones\qey_village04_revamp\qey_village04_revamp.lut
+D:\github\dofextract\zones\qey_village05\qey_village05.lut
+D:\github\dofextract\zones\qey_village05_revamp\qey_village05_revamp.lut
+D:\github\dofextract\zones\qey_village06\qey_village06.lut
+D:\github\dofextract\zones\qey_village06_revamp\qey_village06_revamp.lut
+D:\github\dofextract\zones\rivervale\rivervale.lut
+D:\github\dofextract\zones\rivervale_epic01_ph01\rivervale_epic01_ph01.lut
+D:\github\dofextract\zones\rivervale_epic02_ph02\rivervale_epic02_ph02.lut
+D:\github\dofextract\zones\runnyeye\runnyeye.lut
+D:\github\dofextract\zones\runnyeye_advanced\runnyeye_advanced.lut
+D:\github\dofextract\zones\runnyeye_epic01_eye\runnyeye_epic01_eye.lut
+D:\github\dofextract\zones\runnyeye_epic02_goblin\runnyeye_epic02_goblin.lut
+D:\github\dofextract\zones\shard_of_fear\shard_of_fear.lut
+D:\github\dofextract\zones\shard_of_hate\shard_of_hate.lut
+D:\github\dofextract\zones\shard_of_love\shard_of_love.lut
+D:\github\dofextract\zones\shard_of_love02\shard_of_love02.lut
+D:\github\dofextract\zones\snow_dwelling\snow_dwelling.lut
+D:\github\dofextract\zones\solusekseye\solusekseye.lut
+D:\github\dofextract\zones\solusekseye_epic01_nagafen\solusekseye_epic01_nagafen.lut
+D:\github\dofextract\zones\solusekseye_epic02_bastion\solusekseye_epic02_bastion.lut
+D:\github\dofextract\zones\solusekseye_epic03_thyr\solusekseye_epic03_thyr.lut
+D:\github\dofextract\zones\solusekseye_epic04_elemental_nagafen\solusekseye_epic04_elemental_nagafen.lut
+D:\github\dofextract\zones\steppes\steppes.lut
+D:\github\dofextract\zones\steppes_epic01_cove\steppes_epic01_cove.lut
+D:\github\dofextract\zones\steppes_mini01\steppes_mini01.lut
+D:\github\dofextract\zones\terrain_test\terrain_test.lut
+D:\github\dofextract\zones\thunderdome\thunderdome.lut
+D:\github\dofextract\zones\thurgadin_prestige_home\thurgadin_prestige_home.lut
+D:\github\dofextract\zones\tutorial_island02\tutorial_island02.lut
+D:\github\dofextract\zones\tutorial_island02_epic01\tutorial_island02_epic01.lut
+D:\github\dofextract\zones\tutorial_island02_epic02\tutorial_island02_epic02.lut
+D:\github\dofextract\zones\varsoon\varsoon.lut
+D:\github\dofextract\zones\veteran_ph_mistmoore\veteran_ph_mistmoore.lut
+D:\github\dofextract\zones\vrsn_epic01_boss\vrsn_epic01_boss.lut
+D:\github\dofextract\zones\wailingcaves\wailingcaves.lut

+ 2 - 0
EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/libeq2/Visualization/VeRegion.cs

@@ -96,5 +96,7 @@ namespace Everquest2.Visualization
         float[,] m_center; // 1-3 is vector center, 4th is radius
         public int region_type;
         public int special = 0;
+        public string envFileChosen = "";
+        public uint GridID = 0;
     }
 }

BIN
EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/libeq2/bin/Debug/Spart.dll


BIN
EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/libeq2/bin/Debug/Spart.pdb


BIN
EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/libeq2/bin/Debug/libeq2.dll


BIN
EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/libeq2/bin/Debug/libeq2.pdb


BIN
EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/libeq2/bin/Release/Spart.dll


BIN
EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/libeq2/bin/Release/libeq2.dll


+ 1 - 0
EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/libeq2/libeq2.csproj

@@ -26,6 +26,7 @@
     <DocumentationFile>
     </DocumentationFile>
     <PlatformTarget>x64</PlatformTarget>
+    <UseVSHostingProcess>true</UseVSHostingProcess>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugSymbols>false</DebugSymbols>

BIN
EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/libeq2/obj/Debug/libeq2.dll


BIN
EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/libeq2/obj/Debug/libeq2.pdb


BIN
EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/libeq2/obj/Release/libeq2.dll


BIN
EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/obj/Debug/EQ2ModelViewer.exe


BIN
EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/obj/Debug/EQ2ModelViewer.pdb


BIN
EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/obj/Release/EQ2ModelViewer.exe


BIN
EQ2/devtools/EQ2ModelViewer/EQ2ModelViewer/obj/Release/EQ2ModelViewer.pdb


Some files were not shown because too many files changed in this diff