public BaseItemAccess(IUExport export) : this() { if (export.GetExport <ObjectProperty>("access_item") is ObjectProperty accessItem) { SItem = accessItem.Value.Resource.ObjectName.String; PakPackage p = Utils.GetPropertyPakPackage(accessItem.Value.Resource.OuterIndex.Resource.ObjectName.String); if (p.HasExport() && !p.Equals(default))
public static bool GetDisplayAssetImage(BaseIcon icon, SoftObjectProperty o, string assetName) { string imageType = "DetailsImage"; switch ("DA_Featured_" + assetName) { case "DA_Featured_Glider_ID_141_AshtonBoardwalk.uasset": case "DA_Featured_Glider_ID_150_TechOpsBlue.uasset": case "DA_Featured_Glider_ID_131_SpeedyMidnight.uasset": case "DA_Featured_Pickaxe_ID_178_SpeedyMidnight.uasset": case "DA_Featured_Glider_ID_015_Brite.uasset": case "DA_Featured_Glider_ID_016_Tactical.uasset": case "DA_Featured_Glider_ID_017_Assassin.uasset": case "DA_Featured_Pickaxe_ID_027_Scavenger.uasset": case "DA_Featured_Pickaxe_ID_028_Space.uasset": case "DA_Featured_Pickaxe_ID_029_Assassin.uasset": return(false); case "DA_Featured_Glider_ID_070_DarkViking.uasset": case "DA_Featured_CID_319_Athena_Commando_F_Nautilus.uasset": imageType = "TileImage"; break; } string path = o?.Value.AssetPathName.String; if (string.IsNullOrEmpty(path)) { path = "/Game/Catalog/DisplayAssets/DA_Featured_" + assetName.Substring(0, assetName.LastIndexOf(".")); } PakPackage p = Utils.GetPropertyPakPackage(path); if (p.HasExport() && !p.Equals(default))
public Quest(UObject obj) : this() { if (obj.TryGetValue("Description", out var d) && d is TextProperty description) { Description = Text.GetTextPropertyBase(description); } if (obj.TryGetValue("ObjectiveCompletionCount", out var o) && o is IntProperty objectiveCompletionCount) { Count = objectiveCompletionCount.Value; } if (obj.TryGetValue("Objectives", out var v1) && v1 is ArrayProperty a1 && a1.Value.Length > 0 && a1.Value[0] is StructProperty s && s.Value is UObject objectives) { if (string.IsNullOrEmpty(Description) && objectives.TryGetValue("Description", out var od) && od is TextProperty objectivesDescription) { Description = Text.GetTextPropertyBase(objectivesDescription); } if (Count == 0 && objectives.TryGetValue("Count", out var c) && c is IntProperty count) { Count = count.Value; } } if (obj.TryGetValue("RewardsTable", out var v4) && v4 is ObjectProperty rewardsTable) { PakPackage p = Utils.GetPropertyPakPackage(rewardsTable.Value.Resource.OuterIndex.Resource.ObjectName.String); if (p.HasExport() && !p.Equals(default))
public BaseIcon(IUExport export, string assetName, bool forceHR) : this() { if (export.GetExport <ObjectProperty>("Series") is ObjectProperty series) { Serie.GetRarity(this, series); } else if (Properties.Settings.Default.UseGameColors) // override default green { Rarity.GetInGameRarity(this, export.GetExport <EnumProperty>("Rarity")); // uncommon will be triggered by Rarity being null } else if (export.GetExport <EnumProperty>("Rarity") is EnumProperty rarity) { Rarity.GetHardCodedRarity(this, rarity); } if (export.GetExport <ObjectProperty>("HeroDefinition", "WeaponDefinition") is ObjectProperty itemDef) { LargeSmallImage.GetPreviewImage(this, itemDef, assetName, forceHR); } else if (export.GetExport <SoftObjectProperty>(forceHR ? "LargePreviewImage" : "SmallPreviewImage", forceHR ? "ItemDisplayAsset" : "SmallImage") is SoftObjectProperty previewImage) { LargeSmallImage.GetPreviewImage(this, previewImage); } else if (export.GetExport <ObjectProperty>("access_item") is ObjectProperty accessItem) { PakPackage p = Utils.GetPropertyPakPackage(accessItem.Value.Resource.OuterIndex.Resource.ObjectName.String); if (p.HasExport() && !p.Equals(default))
public Reward(IntProperty quantity, string assetName) : this() { RewardQuantity = quantity.Value; if (assetName.Contains(':')) { string[] parts = assetName.Split(':'); if (parts[0].Equals("HomebaseBannerIcon", StringComparison.CurrentCultureIgnoreCase)) { PakPackage p = Utils.GetPropertyPakPackage("/Game/Banners/BannerIcons"); if (p.HasExport() && !p.Equals(default))
public static void GetPreviewImage(BaseIcon icon, ObjectProperty o, string assetName, bool hightRes) { string path = o.Value.Resource.OuterIndex.Resource.ObjectName.String; if (path.Equals("/Game/Athena/Items/Weapons/WID_Harvest_Pickaxe_STWCosmetic_Tier")) { path += "_" + assetName.Substring(assetName.LastIndexOf(".") - 1, 1); } PakPackage p = Utils.GetPropertyPakPackage(path); if (p.HasExport() && !p.Equals(default))
public static string GetTextPropertyBase(TextProperty t) { if (t.Value is FText text) { if (text.Text is FTextHistory.Base b) { return(b.SourceString.Replace("<Emphasized>", string.Empty).Replace("</>", string.Empty)); } else if (text.Text is FTextHistory.StringTableEntry s) { PakPackage p = Utils.GetPropertyPakPackage(s.TableId.String); if (p.HasExport() && !p.Equals(default))
public BaseBundle(IUExport export, string assetFolder) : this() { if (export.GetExport <StructProperty>("DisplayStyle") is StructProperty displayStyle) { DisplayStyle = new Header(displayStyle, assetFolder); } if (export.GetExport <TextProperty>("DisplayName") is TextProperty displayName) { DisplayName = Text.GetTextPropertyBase(displayName); } if (export.GetExport <ArrayProperty>("CareerQuestBitShifts") is ArrayProperty careerQuestBitShifts) { foreach (SoftObjectProperty questPath in careerQuestBitShifts.Value) { PakPackage p = Utils.GetPropertyPakPackage(questPath.Value.AssetPathName.String); if (p.HasExport() && !p.Equals(default))
internal static void SaveAsset(PakPackage package) { var file = Helpers.ChooseSaveFile("Asset Files (multiple extensions)", "uasset"); if (file == null) { return; } if (file.EndsWith("uasset")) { file = file.Substring(0, file.Length - 6); } if (file.EndsWith(".")) { file = file.Substring(0, file.Length - 1); } foreach (var kv in package.Extensions) { SaveFile(file, kv.Value.Reader.GetPackageStream(kv.Value.Entry), kv.Key); } }
public static void GetAmmoData(BaseIcon icon, SoftObjectProperty ammoData) { PakPackage p = Utils.GetPropertyPakPackage(ammoData.Value.AssetPathName.String); if (p.HasExport() && !p.Equals(default))
public static void GetInGameRarity(BaseIcon icon, EnumProperty e) { PakPackage p = Utils.GetPropertyPakPackage("/Game/Balance/RarityData"); if (p.HasExport() && !p.Equals(default))
private static string GetCosmeticSet(string setName) { PakPackage p = Utils.GetPropertyPakPackage("/Game/Athena/Items/Cosmetics/Metadata/CosmeticSets"); if (p.HasExport() && !p.Equals(default))
public static void GetAmmoData(BaseIcon icon, SoftObjectProperty ammoData) { if (!ammoData.Value.AssetPathName.String.StartsWith("/Game/Athena/Items/Consumables/")) { PakPackage p = Utils.GetPropertyPakPackage(ammoData.Value.AssetPathName.String); if (p.HasExport() && !p.Equals(default))
public FileViewer(string title, PakPackage package, Func <string, PakPackage> packageFunc) { InitializeComponent(); Package = package; ExportPanel.ItemsSource = Exports; Title = title; IniTxt.CurrentHighlighter = new IniParser(); JsonTxt.CurrentHighlighter = new JsonParser(); if (package.Exportable) { try { foreach (var exp in package.Exports) { switch (exp) { case Texture2D tex: var image = tex.GetImage(); Exports.Add(new ExportItem($"{image.Width}x{image.Height}", image, ExportType.IMAGE) { Data = image }); break; case USkeletalMesh mesh: Exports.Add(new ExportItem("Skeletal Mesh", ExportItem.ModelImage, ExportType.OPENGL) { Data = mesh }); ModelInterface = new ModelInterface(mesh, (int)GLPanel.Width, (int)GLPanel.Height, packageFunc); break; case UObject obj: ExtraExports.Add(obj); break; default: ExtraExports.Add(exp); break; } } } catch (Exception e) { Console.WriteLine(e); } } foreach (var kv in package.Extensions) { switch (kv.Key.ToLowerInvariant()) { case "ini": using (var s = kv.Value.Reader.GetPackageStream(kv.Value.Entry)) using (var r = new StreamReader(s)) IniTxt.Text = r.ReadToEnd(); Exports.Add(new ExportItem("Ini File", ExportItem.IniImage, ExportType.INI)); break; case "uproject": using (var s = kv.Value.Reader.GetPackageStream(kv.Value.Entry)) using (var r = new StreamReader(s)) Exports.Add(new ExportItem("Project File", ExportItem.JsonImage, ExportType.JSON) { Data = r.ReadToEnd() }); break; case "uplugin": using (var s = kv.Value.Reader.GetPackageStream(kv.Value.Entry)) using (var r = new StreamReader(s)) Exports.Add(new ExportItem("Plugin File", ExportItem.JsonImage, ExportType.JSON) { Data = r.ReadToEnd() }); break; case "upluginmanifest": using (var s = kv.Value.Reader.GetPackageStream(kv.Value.Entry)) using (var r = new StreamReader(s)) Exports.Add(new ExportItem("Plugin Manifest", ExportItem.JsonImage, ExportType.JSON) { Data = r.ReadToEnd() }); break; case "png": using (var s = kv.Value.Reader.GetPackageStream(kv.Value.Entry)) { var img = SKImage.FromEncodedData(s); Exports.Add(new ExportItem($"PNG ({img.Width}x{img.Height})", img, ExportType.IMAGE) { Data = img }); } break; case "locres": using (var s = kv.Value.Reader.GetPackageStream(kv.Value.Entry)) Exports.Add(new ExportItem($"LocRes File", ExportItem.JsonImage, ExportType.JSON) { Data = JsonConvert.SerializeObject(new LocResFile(s).Entries, Formatting.Indented) }); break; case "locmeta": using (var s = kv.Value.Reader.GetPackageStream(kv.Value.Entry)) Exports.Add(new ExportItem($"LocMeta File", ExportItem.JsonImage, ExportType.JSON) { Data = JsonConvert.SerializeObject(new LocMetaFile(s), Formatting.Indented) }); break; case "udic": using (var s = kv.Value.Reader.GetPackageStream(kv.Value.Entry)) using (var reader = new BinaryReader(s)) { var udic = new UDicFile(reader); Exports.Add(new ExportItem($"Oodle Header", ExportItem.JsonImage, ExportType.JSON) { Data = JsonConvert.SerializeObject(udic.Header, Formatting.Indented) }); Exports.Add(new ExportItem($"Dictionary Data", ExportItem.RawImage, ExportType.RAW) { Data = udic.DictionaryData }); Exports.Add(new ExportItem($"Compressor State", ExportItem.RawImage, ExportType.RAW) { Data = udic.CompressorState }); } break; case "bin": if (!title.Contains("AssetRegistry")) { break; } using (var s = kv.Value.Reader.GetPackageStream(kv.Value.Entry)) using (var reader = new BinaryReader(s)) { Exports.Add(new ExportItem($"AssetRegistry", ExportItem.JsonImage, ExportType.JSON) { Data = JsonConvert.SerializeObject(new AssetRegistryFile(s), Formatting.Indented) }); } break; } using (var s = kv.Value.Reader.GetPackageStream(kv.Value.Entry) as MemoryStream) Exports.Add(new ExportItem($"Raw {kv.Key}", ExportItem.RawImage, ExportType.RAW) { Data = s.ToArray() }); } if (ExtraExports.Count != 0) { Exports.Insert(0, new ExportItem("Encoded Data", ExportItem.JsonImage, ExportType.JSON) { Data = JsonConvert.SerializeObject(ExtraExports, Formatting.Indented) }); } }
public static string GetJsonProperties(FPakEntry entry, string mount, bool loadContent) { PakPackage p = GetPakPackage(entry, mount, loadContent); if (!p.Equals(default))
public static void GetUserFacingFlags(List <string> uffs, BaseIcon icon, string exportType) { if (uffs.Count > 0) { PakPackage p = Utils.GetPropertyPakPackage("/Game/Items/ItemCategories"); //PrimaryCategories - SecondaryCategories - TertiaryCategories if (p.HasExport() && !p.Equals(default))
public static void GetRarity(BaseIcon icon, ObjectProperty o) { PakPackage p = Utils.GetPropertyPakPackage(o.Value.Resource.OuterIndex.Resource.ObjectName.String); if (p.HasExport() && !p.Equals(default))
public static void GetAsset(BaseLabel icon, SoftObjectProperty s) { PakPackage p = Utils.GetPropertyPakPackage(s.Value.AssetPathName.String); if (p.HasExport() && !p.Equals(default))