public AssetDescription GetNullAsset()
        {
            var ret = new AssetDescription();

            ret.AssetPath = "null";
            ret.AssetName = "null";
            ret.AssetArchiveVirtualPath = "null";
            ret.AssetVirtualPath        = "null";
            return(ret);
        }
        public AssetDescription GetDS2ObjInstanceParam(string mapid, bool writemode = false)
        {
            AssetDescription ad = new AssetDescription();
            var path            = $@"Param\mapobjectinstanceparam_{mapid}";

            if (GameModDirectory != null && File.Exists($@"{GameModDirectory}\{path}.param") || (writemode && GameModDirectory != null))
            {
                ad.AssetPath = $@"{GameModDirectory}\{path}.param";
            }
            else if (File.Exists($@"{GameRootDirectory}\{path}.param"))
            {
                ad.AssetPath = $@"{GameRootDirectory}\{path}.param";
            }
            ad.AssetName = mapid + "_object_instance_params";
            return(ad);
        }
        public AssetDescription GetDS2GeneratorRegistParam(string mapid, bool writemode = false)
        {
            AssetDescription ad = new AssetDescription();
            var path            = $@"Param\generatorregistparam_{mapid}";

            if (GameModDirectory != null && File.Exists($@"{GameModDirectory}\{path}.param") || (writemode && GameModDirectory != null))
            {
                ad.AssetPath = $@"{GameModDirectory}\{path}.param";
            }
            else if (File.Exists($@"{GameRootDirectory}\{path}.param"))
            {
                ad.AssetPath = $@"{GameRootDirectory}\{path}.param";
            }
            ad.AssetName = mapid + "_generator_registrations";
            return(ad);
        }
        public AssetDescription GetDS2EventLocationParam(string mapid, bool writemode = false)
        {
            AssetDescription ad = new AssetDescription();
            var path            = $@"Param\eventlocation_{mapid}";

            if (GameModDirectory != null && File.Exists($@"{GameModDirectory}\{path}.param") || (writemode && GameModDirectory != null))
            {
                ad.AssetPath = $@"{GameModDirectory}\{path}.param";
            }
            else if (File.Exists($@"{GameRootDirectory}\{path}.param"))
            {
                ad.AssetPath = $@"{GameRootDirectory}\{path}.param";
            }
            ad.AssetName = mapid + "_event_locations";
            return(ad);
        }
        public AssetDescription GetEnglishItemMsgbnd(bool writemode = false)
        {
            string path = $@"msg\engus\item.msgbnd.dcx";

            if (Type == GameType.DemonsSouls)
            {
                path = $@"msg\na_english\item.msgbnd.dcx";
            }
            else if (Type == GameType.DarkSoulsPTDE)
            {
                path = $@"msg\ENGLISH\item.msgbnd";
            }
            else if (Type == GameType.DarkSoulsRemastered)
            {
                path = $@"msg\ENGLISH\item.msgbnd.dcx";
            }
            else if (Type == GameType.DarkSoulsIISOTFS)
            {
                // DS2 does not have an msgbnd but loose fmg files instead
                path = $@"menu\text\english";
                AssetDescription ad2 = new AssetDescription();
                ad2.AssetPath = writemode ? path : $@"{GameRootDirectory}\{path}";
                return(ad2);
            }
            else if (Type == GameType.DarkSoulsIII)
            {
                path = $@"msg\engus\item_dlc2.msgbnd.dcx";
            }
            AssetDescription ad = new AssetDescription();

            if (writemode)
            {
                ad.AssetPath = path;
                return(ad);
            }
            if (GameModDirectory != null && File.Exists($@"{GameModDirectory}\{path}") || (writemode && GameModDirectory != null))
            {
                ad.AssetPath = $@"{GameModDirectory}\{path}";
            }
            else if (File.Exists($@"{GameRootDirectory}\{path}"))
            {
                ad.AssetPath = $@"{GameRootDirectory}\{path}";
            }
            return(ad);
        }