From 853e7dee44883cb457c0f187daf4c97dbbd3277a Mon Sep 17 00:00:00 2001 From: cadon Date: Fri, 17 Nov 2023 23:34:47 +0100 Subject: [PATCH 1/9] support for the ASA export gun mod --- ARKBreedingStats/Form1.collection.cs | 21 +++- ARKBreedingStats/Form1.cs | 1 + ARKBreedingStats/Form1.extractor.cs | 1 + ARKBreedingStats/Form1.importExported.cs | 119 ++++++++++-------- .../importExportGun/ExportGunServerFile.cs | 5 + .../importExportGun/ImportExportGun.cs | 33 ++++- ARKBreedingStats/settings/Settings.cs | 1 + 7 files changed, 124 insertions(+), 57 deletions(-) diff --git a/ARKBreedingStats/Form1.collection.cs b/ARKBreedingStats/Form1.collection.cs index b63ec454..570dd3cf 100644 --- a/ARKBreedingStats/Form1.collection.cs +++ b/ARKBreedingStats/Form1.collection.cs @@ -800,6 +800,7 @@ private bool ImportExportGunFiles(string[] filePaths, out bool creatureAdded, ou bool? multipliersImportSuccessful = null; string serverImportResult = null; bool creatureAlreadyExists = false; + var gameSettingBefore = _creatureCollection.Game; foreach (var filePath in filePaths) { @@ -826,13 +827,29 @@ private bool ImportExportGunFiles(string[] filePaths, out bool creatureAdded, ou } } - if (!string.IsNullOrEmpty(serverMultipliersHash) && _creatureCollection.ServerMultipliersHash != serverMultipliersHash) + if (lastCreatureFilePath != null && !string.IsNullOrEmpty(serverMultipliersHash) && _creatureCollection.ServerMultipliersHash != serverMultipliersHash) { // current server multipliers might be outdated, import them again - var serverMultiplierFilePath = Path.Combine(Path.GetDirectoryName(lastCreatureFilePath), "Servers", serverMultipliersHash + ".sav"); + // for ASE the export gun create a .sav file containing a json, for ASA directly a .json file + var serverMultiplierFilePath = Path.Combine(Path.GetDirectoryName(lastCreatureFilePath), "Servers", serverMultipliersHash + ".json"); + if (!File.Exists(serverMultiplierFilePath)) + serverMultiplierFilePath = Path.Combine(Path.GetDirectoryName(lastCreatureFilePath), "Servers", serverMultipliersHash + ".sav"); + multipliersImportSuccessful = ImportExportGun.ImportServerMultipliers(_creatureCollection, serverMultiplierFilePath, serverMultipliersHash, out serverImportResult); } + if (multipliersImportSuccessful == true) + { + if (_creatureCollection.Game != gameSettingBefore) + { + // ASA setting changed + var loadAsa = gameSettingBefore != Ark.Asa; + ReloadModValuesOfCollectionIfNeeded(loadAsa, false, false); + } + + ApplySettingsToValues(); + } + lastAddedCreature = newCreatures.LastOrDefault(); if (lastAddedCreature != null) { diff --git a/ARKBreedingStats/Form1.cs b/ARKBreedingStats/Form1.cs index 79caa3de..62744d0f 100644 --- a/ARKBreedingStats/Form1.cs +++ b/ARKBreedingStats/Form1.cs @@ -3349,6 +3349,7 @@ private void ProcessDroppedFiles(string[] files) _exportedCreatureList.LoadFiles(files); break; case ".sav": + case ".json": ImportExportGunFiles(files, out _, out _); break; case ".asb": diff --git a/ARKBreedingStats/Form1.extractor.cs b/ARKBreedingStats/Form1.extractor.cs index d3d8e40f..efc2db3a 100644 --- a/ARKBreedingStats/Form1.extractor.cs +++ b/ARKBreedingStats/Form1.extractor.cs @@ -9,6 +9,7 @@ using System.Linq; using System.Threading; using System.Windows.Forms; +using ARKBreedingStats.importExportGun; using ARKBreedingStats.utils; using ARKBreedingStats.ocr; diff --git a/ARKBreedingStats/Form1.importExported.cs b/ARKBreedingStats/Form1.importExported.cs index ea63f8c1..9df18172 100644 --- a/ARKBreedingStats/Form1.importExported.cs +++ b/ARKBreedingStats/Form1.importExported.cs @@ -70,62 +70,78 @@ private void btImportLastExported_Click(object sender, EventArgs e) /// private void ImportLastExportedCreature() { - if (Utils.GetFirstImportExportFolder(out string folder)) + if (!Utils.GetFirstImportExportFolder(out string folder)) { - var files = Directory.GetFiles(folder); - if (files.Length == 0) + if (MessageBox.Show("There is no folder set where the exported creatures are located, or the set folder does not exist. Set this folder in the settings. " + + "Usually the folder path ends with\n" + @"…\ARK\ShooterGame\Saved\DinoExports\" + "\n\nOpen the settings-page?", + $"No default export-folder set - {Utils.ApplicationNameVersion}", MessageBoxButtons.YesNo, MessageBoxIcon.Error) == DialogResult.Yes) { - // some users forget to select the id folder where the export files are located. Check if that's the case - FileInfo lastExportFile = null; - if (Path.GetFileName(folder) == "DinoExports") - { - // check subfolders for export files - var subFolders = Directory.GetDirectories(folder); - foreach (var sf in subFolders) - { - var d = new DirectoryInfo(sf); - var fs = d.GetFiles("*.ini"); - if (!fs.Any()) continue; - var expFile = fs.OrderByDescending(f => f.LastWriteTime).First(); - if (lastExportFile == null || expFile.LastWriteTime > lastExportFile.LastWriteTime) - lastExportFile = expFile; - } - } + OpenSettingsDialog(Settings.SettingsTabPages.ExportedImport); + } + return; + } - if (lastExportFile == null) + var files = Directory.GetFiles(folder); + if (files.Length == 0) + { + // some users forget to select the id folder where the export files are located. Check if that's the case + FileInfo lastExportFile = null; + if (Path.GetFileName(folder) == "DinoExports") + { + // check subfolders for export files + var subFolders = Directory.GetDirectories(folder); + foreach (var sf in subFolders) { - MessageBoxes.ShowMessageBox( - $"No exported creature-file found in the set folder\n{folder}\nYou have to export a creature first ingame.\n\n" + - "You may also want to check the set folder in the settings. Usually the folder path ends with\n" + - @"…\ARK\ShooterGame\Saved\DinoExports\", - $"No files found"); - return; + var d = new DirectoryInfo(sf); + var fs = d.GetFiles("*.ini"); + if (!fs.Any()) continue; + var expFile = fs.OrderByDescending(f => f.LastWriteTime).First(); + if (lastExportFile == null || expFile.LastWriteTime > lastExportFile.LastWriteTime) + lastExportFile = expFile; } + } - if (MessageBox.Show( - $"No exported creature-file found in the set folder\n{folder}\n\nThere seems to be an export file in a subfolder, do you want to use this folder instead?\n{lastExportFile.DirectoryName}", - $"Use subfolder with export file? - {Utils.ApplicationNameVersion}", - MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes) - { - var exportFolders = Properties.Settings.Default.ExportCreatureFolders; - var firstExportFolder = ATImportExportedFolderLocation.CreateFromString(exportFolders[0]); - firstExportFolder.FolderPath = lastExportFile.DirectoryName; - exportFolders[0] = firstExportFolder.ToString(); - - ExtractExportedFileInExtractor(lastExportFile.FullName); - } + if (lastExportFile == null) + { + MessageBoxes.ShowMessageBox( + $"No exported creature-file found in the set folder\n{folder}\nYou have to export a creature first ingame.\n\n" + + "You may also want to check the set folder in the settings. Usually the folder path ends with\n" + + @"…\ARK\ShooterGame\Saved\DinoExports\", + $"No files found"); return; } - ExtractExportedFileInExtractor(files.OrderByDescending(File.GetLastWriteTime).First()); + if (MessageBox.Show( + $"No exported creature-file found in the set folder\n{folder}\n\nThere seems to be an export file in a subfolder, do you want to use this folder instead?\n{lastExportFile.DirectoryName}", + $"Use subfolder with export file? - {Utils.ApplicationNameVersion}", + MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes) + { + var exportFolders = Properties.Settings.Default.ExportCreatureFolders; + var firstExportFolder = ATImportExportedFolderLocation.CreateFromString(exportFolders[0]); + firstExportFolder.FolderPath = lastExportFile.DirectoryName; + exportFolders[0] = firstExportFolder.ToString(); + + ExtractExportedFileInExtractor(lastExportFile.FullName); + } return; } - if (MessageBox.Show("There is no folder set where the exported creatures are located, or the set folder does not exist. Set this folder in the settings. " + - "Usually the folder path ends with\n" + @"…\ARK\ShooterGame\Saved\DinoExports\" + "\n\nOpen the settings-page?", - $"No default export-folder set - {Utils.ApplicationNameVersion}", MessageBoxButtons.YesNo, MessageBoxIcon.Error) == DialogResult.Yes) + var newestExportFile = files.OrderByDescending(File.GetLastWriteTime).First(); + + switch (Path.GetExtension(newestExportFile)) { - OpenSettingsDialog(Settings.SettingsTabPages.ExportedImport); + case ".ini": + // ini files need to be processed by the extractor + ExtractExportedFileInExtractor(newestExportFile); + return; + case ".sav": + case ".json": + // export gun mod creature exports can be just added + var creature = ImportExportedAddIfPossible(newestExportFile); + // display imported creature in the extractor to allow adjustments + _ignoreNextMessageLabel = true; + EditCreatureInTester(creature); + return; } } @@ -165,10 +181,9 @@ private void ImportExportedAddIfPossible_WatcherThread(string filePath, importEx } /// - /// Import exported file. Used by a fileWatcher. + /// Import exported file. Used by a fileWatcher. Returns creature if added successfully. /// - /// - private void ImportExportedAddIfPossible(string filePath) + private Creature ImportExportedAddIfPossible(string filePath) { bool alreadyExists; bool addedToLibrary = false; @@ -181,7 +196,7 @@ private void ImportExportedAddIfPossible(string filePath) { case ".ini": var loadResult = ExtractExportedFileInExtractor(filePath); - if (loadResult == null) return; + if (loadResult == null) return null; alreadyExists = loadResult.Value; uniqueExtraction = _extractor.UniqueResults @@ -201,11 +216,11 @@ private void ImportExportedAddIfPossible(string filePath) || Properties.Settings.Default.applyNamePatternOnImportIfEmptyName || (!alreadyExists && Properties.Settings.Default.applyNamePatternOnAutoImportForNewCreatures) ); - break; case ".sav": + case ".json": alreadyExists = ImportExportGunFiles(new[] { filePath }, out addedToLibrary, out creature); - if (!addedToLibrary || creature == null) return; + if (!addedToLibrary || creature == null) return null; uniqueExtraction = true; if (Properties.Settings.Default.applyNamePatternOnAutoImportAlways @@ -231,7 +246,7 @@ private void ImportExportedAddIfPossible(string filePath) } break; - default: return; + default: return null; } if (creature == null) @@ -262,7 +277,7 @@ private void ImportExportedAddIfPossible(string filePath) && !FileService.TryCreateDirectory(newPath, out string errorMessage)) { MessageBoxes.ShowMessageBox($"Subfolder\n{newPath}\ncould not be created.\n{errorMessage}"); - return; + return null; } string namePattern = Properties.Settings.Default.AutoImportedExportFileRenamePattern; @@ -325,6 +340,8 @@ private void ImportExportedAddIfPossible(string filePath) TopMost = true; TopMost = false; } + + return addedToLibrary ? creature : null; } /// diff --git a/ARKBreedingStats/importExportGun/ExportGunServerFile.cs b/ARKBreedingStats/importExportGun/ExportGunServerFile.cs index 3f33a259..4697ea9b 100644 --- a/ARKBreedingStats/importExportGun/ExportGunServerFile.cs +++ b/ARKBreedingStats/importExportGun/ExportGunServerFile.cs @@ -8,6 +8,7 @@ namespace ARKBreedingStats.importExportGun [JsonObject] internal class ExportGunServerFile { + public int Version { get; set; } public double[] WildLevel { get; set; } public double[] TameLevel { get; set; } public double[] TameAdd { get; set; } @@ -29,5 +30,9 @@ internal class ExportGunServerFile public bool AllowSpeedLeveling { get; set; } public bool AllowFlyerSpeedLeveling { get; set; } public bool UseSingleplayerSettings { get; set; } + /// + /// ASE or ASA + /// + public string Game { get; set; } } } diff --git a/ARKBreedingStats/importExportGun/ImportExportGun.cs b/ARKBreedingStats/importExportGun/ImportExportGun.cs index 7dc6c3c4..831afa42 100644 --- a/ARKBreedingStats/importExportGun/ImportExportGun.cs +++ b/ARKBreedingStats/importExportGun/ImportExportGun.cs @@ -23,8 +23,18 @@ public static Creature ImportCreature(string filePath, out string resultText, ou try { - var jsonText = ReadExportFile.ReadFile(filePath, "DinoExportGunSave_C", out resultText); - if (jsonText == null) + string jsonText = null; + switch (Path.GetExtension(filePath)) + { + case ".sav": + jsonText = ReadExportFile.ReadFile(filePath, "DinoExportGunSave_C", out resultText); + break; + case ".json": + jsonText = File.ReadAllText(filePath); + break; + } + + if (string.IsNullOrEmpty(jsonText)) { resultText = $"Error when importing file {filePath}: {resultText}"; return null; @@ -134,7 +144,19 @@ internal static ExportGunServerFile ReadServerMultipliers(string filePath, out s try { - var jsonText = ReadExportFile.ReadFile(filePath, "DinoExportGunServerSave_C", out resultText); + string jsonText = null; + string game = null; + switch (Path.GetExtension(filePath)) + { + case ".sav": + jsonText = ReadExportFile.ReadFile(filePath, "DinoExportGunServerSave_C", out resultText); + game = "ASE"; + break; + case ".json": + jsonText = File.ReadAllText(filePath); + game = "ASA"; + break; + } if (jsonText == null) { resultText = $"Error when importing file {filePath}: {resultText}"; @@ -142,12 +164,13 @@ internal static ExportGunServerFile ReadServerMultipliers(string filePath, out s } var exportedServerMultipliers = JsonConvert.DeserializeObject(jsonText); - if (exportedServerMultipliers == null) + if (exportedServerMultipliers?.WildLevel == null) { resultText = $"Unknown error when importing file {filePath}"; return null; } + exportedServerMultipliers.Game = game; resultText = $"Server multipliers imported from {filePath}"; return exportedServerMultipliers; } @@ -185,8 +208,10 @@ internal static bool SetServerMultipliers(CreatureCollection cc, ExportGunServer cc.serverMultipliers.BabyImprintingStatScaleMultiplier = Math.Round(esm.BabyImprintingStatScaleMultiplier, roundToDigits); cc.serverMultipliers.BabyFoodConsumptionSpeedMultiplier = Math.Round(esm.BabyFoodConsumptionSpeedMultiplier, roundToDigits); cc.serverMultipliers.TamedDinoCharacterFoodDrainMultiplier = Math.Round(esm.TamedDinoCharacterFoodDrainMultiplier, roundToDigits); + cc.serverMultipliers.AllowSpeedLeveling = esm.AllowSpeedLeveling; cc.serverMultipliers.AllowFlyerSpeedLeveling = esm.AllowFlyerSpeedLeveling; cc.singlePlayerSettings = esm.UseSingleplayerSettings; + cc.Game = esm.Game; cc.ServerMultipliersHash = newServerMultipliersHash; diff --git a/ARKBreedingStats/settings/Settings.cs b/ARKBreedingStats/settings/Settings.cs index d550408e..839df0da 100644 --- a/ARKBreedingStats/settings/Settings.cs +++ b/ARKBreedingStats/settings/Settings.cs @@ -726,6 +726,7 @@ private void tabPage2_DragDrop(object sender, DragEventArgs e) switch (Path.GetExtension(filePath)) { case ".sav": + case ".json": LoadServerMultipliersFromSavFile(filePath); break; default: From 80c8861a4dac698b2bd36bbd33caf81de659a27d Mon Sep 17 00:00:00 2001 From: cadon Date: Fri, 17 Nov 2023 23:44:08 +0100 Subject: [PATCH 2/9] option to not keep the current multipliers for new library --- ARKBreedingStats/App.config | 3 +++ ARKBreedingStats/Form1.collection.cs | 12 +++++++++-- .../Properties/Settings.Designer.cs | 12 +++++++++++ ARKBreedingStats/Properties/Settings.settings | 3 +++ .../settings/Settings.Designer.cs | 21 +++++++++++++++---- ARKBreedingStats/settings/Settings.cs | 4 ++++ 6 files changed, 49 insertions(+), 6 deletions(-) diff --git a/ARKBreedingStats/App.config b/ARKBreedingStats/App.config index ce0ef17d..574e253b 100644 --- a/ARKBreedingStats/App.config +++ b/ARKBreedingStats/App.config @@ -502,6 +502,9 @@ True + + True + diff --git a/ARKBreedingStats/Form1.collection.cs b/ARKBreedingStats/Form1.collection.cs index 570dd3cf..1b7a23f8 100644 --- a/ARKBreedingStats/Form1.collection.cs +++ b/ARKBreedingStats/Form1.collection.cs @@ -50,10 +50,18 @@ private void NewCollection(bool resetCollection = false) } // use previously used multipliers again in the new file - var oldMultipliers = _creatureCollection.serverMultipliers - ?? Values.V.serverMultipliersPresets.GetPreset(ServerMultipliersPresets.Official); + var oldMultipliers = _creatureCollection.serverMultipliers; var asaMode = _creatureCollection.Game == Ark.Asa; + if (!Properties.Settings.Default.KeepMultipliersForNewLibrary) + { + oldMultipliers = null; + asaMode = true; // default to ASA + } + + if (oldMultipliers == null) + oldMultipliers = Values.V.serverMultipliersPresets.GetPreset(ServerMultipliersPresets.Official); + _creatureCollection = new CreatureCollection { serverMultipliers = oldMultipliers, diff --git a/ARKBreedingStats/Properties/Settings.Designer.cs b/ARKBreedingStats/Properties/Settings.Designer.cs index 56df2bd7..b57dfe60 100644 --- a/ARKBreedingStats/Properties/Settings.Designer.cs +++ b/ARKBreedingStats/Properties/Settings.Designer.cs @@ -2242,5 +2242,17 @@ public bool AskSaveSettingsOnClose { this["AskSaveSettingsOnClose"] = value; } } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("True")] + public bool KeepMultipliersForNewLibrary { + get { + return ((bool)(this["KeepMultipliersForNewLibrary"])); + } + set { + this["KeepMultipliersForNewLibrary"] = value; + } + } } } diff --git a/ARKBreedingStats/Properties/Settings.settings b/ARKBreedingStats/Properties/Settings.settings index 7fdcb01a..da0f382f 100644 --- a/ARKBreedingStats/Properties/Settings.settings +++ b/ARKBreedingStats/Properties/Settings.settings @@ -563,5 +563,8 @@ True + + True + \ No newline at end of file diff --git a/ARKBreedingStats/settings/Settings.Designer.cs b/ARKBreedingStats/settings/Settings.Designer.cs index 7e8720ab..72d90f79 100644 --- a/ARKBreedingStats/settings/Settings.Designer.cs +++ b/ARKBreedingStats/settings/Settings.Designer.cs @@ -345,6 +345,7 @@ private void InitializeComponent() this.label1 = new System.Windows.Forms.Label(); this.panel1 = new System.Windows.Forms.Panel(); this.colorDialog1 = new System.Windows.Forms.ColorDialog(); + this.CbKeepMultipliersForNewLibrary = new System.Windows.Forms.CheckBox(); this.groupBoxMultiplier.SuspendLayout(); this.groupBox2.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.nudTamedDinoCharacterFoodDrain)).BeginInit(); @@ -1788,6 +1789,7 @@ private void InitializeComponent() // this.tabPageMultipliers.AllowDrop = true; this.tabPageMultipliers.AutoScroll = true; + this.tabPageMultipliers.Controls.Add(this.CbKeepMultipliersForNewLibrary); this.tabPageMultipliers.Controls.Add(this.BtAutoImportLocalSettings); this.tabPageMultipliers.Controls.Add(this.panel3); this.tabPageMultipliers.Controls.Add(this.BtImportSettingsSelectFile); @@ -3639,7 +3641,7 @@ private void InitializeComponent() this.customSCCustom.Location = new System.Drawing.Point(6, 139); this.customSCCustom.Name = "customSCCustom"; this.customSCCustom.Size = new System.Drawing.Size(401, 23); - this.customSCCustom.SoundFile = null; + this.customSCCustom.SoundFile = ""; this.customSCCustom.TabIndex = 4; // // customSCWakeup @@ -3647,7 +3649,7 @@ private void InitializeComponent() this.customSCWakeup.Location = new System.Drawing.Point(6, 81); this.customSCWakeup.Name = "customSCWakeup"; this.customSCWakeup.Size = new System.Drawing.Size(401, 23); - this.customSCWakeup.SoundFile = ""; + this.customSCWakeup.SoundFile = null; this.customSCWakeup.TabIndex = 2; // // customSCBirth @@ -3655,7 +3657,7 @@ private void InitializeComponent() this.customSCBirth.Location = new System.Drawing.Point(6, 110); this.customSCBirth.Name = "customSCBirth"; this.customSCBirth.Size = new System.Drawing.Size(401, 23); - this.customSCBirth.SoundFile = ""; + this.customSCBirth.SoundFile = null; this.customSCBirth.TabIndex = 3; // // customSCStarving @@ -3663,7 +3665,7 @@ private void InitializeComponent() this.customSCStarving.Location = new System.Drawing.Point(6, 52); this.customSCStarving.Name = "customSCStarving"; this.customSCStarving.Size = new System.Drawing.Size(401, 23); - this.customSCStarving.SoundFile = null; + this.customSCStarving.SoundFile = ""; this.customSCStarving.TabIndex = 1; // // label20 @@ -4382,6 +4384,16 @@ private void InitializeComponent() this.panel1.Size = new System.Drawing.Size(758, 30); this.panel1.TabIndex = 12; // + // CbKeepMultipliersForNewLibrary + // + this.CbKeepMultipliersForNewLibrary.AutoSize = true; + this.CbKeepMultipliersForNewLibrary.Location = new System.Drawing.Point(6, 699); + this.CbKeepMultipliersForNewLibrary.Name = "CbKeepMultipliersForNewLibrary"; + this.CbKeepMultipliersForNewLibrary.Size = new System.Drawing.Size(231, 17); + this.CbKeepMultipliersForNewLibrary.TabIndex = 18; + this.CbKeepMultipliersForNewLibrary.Text = "Keep multipliers when creating a new library"; + this.CbKeepMultipliersForNewLibrary.UseVisualStyleBackColor = true; + // // Settings // this.AcceptButton = this.buttonOK; @@ -4863,5 +4875,6 @@ private void InitializeComponent() private System.Windows.Forms.Button BtAutoImportLocalSettings; private System.Windows.Forms.CheckBox CbDisplayLibraryCreatureIndex; private System.Windows.Forms.CheckBox CbAskSaveSettingsOnClose; + private System.Windows.Forms.CheckBox CbKeepMultipliersForNewLibrary; } } \ No newline at end of file diff --git a/ARKBreedingStats/settings/Settings.cs b/ARKBreedingStats/settings/Settings.cs index 839df0da..407f422c 100644 --- a/ARKBreedingStats/settings/Settings.cs +++ b/ARKBreedingStats/settings/Settings.cs @@ -267,6 +267,8 @@ private void LoadSettings(CreatureCollection cc) CbbAppDefaultFontName.Text = Properties.Settings.Default.DefaultFontName; nudDefaultFontSize.Value = (decimal)Properties.Settings.Default.DefaultFontSize; + CbKeepMultipliersForNewLibrary.Checked = Properties.Settings.Default.KeepMultipliersForNewLibrary; + GbImgCacheLocalAppData.Visible = !Updater.Updater.IsProgramInstalled; // setting is only relevant for portable app CbImgCacheUseLocalAppData.Checked = Properties.Settings.Default.ImgCacheUseLocalAppData || Updater.Updater.IsProgramInstalled; @@ -484,6 +486,8 @@ private void SaveSettings() _cc.maxBreedingSuggestions = (int)numericUpDownMaxBreedingSug.Value; Properties.Settings.Default.IgnoreSexInBreedingPlan = cbIgnoreSexInBreedingPlan.Checked; + Properties.Settings.Default.KeepMultipliersForNewLibrary = CbKeepMultipliersForNewLibrary.Checked; + #region non-event-multiplier _cc.serverMultipliers.TamingSpeedMultiplier = (double)nudTamingSpeed.Value; _cc.serverMultipliers.DinoCharacterFoodDrainMultiplier = (double)nudDinoCharacterFoodDrain.Value; From 262d6ffaf0db2068e6575745e16b0f99610971e3 Mon Sep 17 00:00:00 2001 From: cadon Date: Sat, 18 Nov 2023 11:31:53 +0100 Subject: [PATCH 3/9] delete creatures when loading a synced library --- ARKBreedingStats/Form1.collection.cs | 2 +- ARKBreedingStats/Form1.cs | 2 +- ARKBreedingStats/Form1.library.cs | 2 +- .../library/CreatureCollection.cs | 32 +++++++++++-------- 4 files changed, 21 insertions(+), 17 deletions(-) diff --git a/ARKBreedingStats/Form1.collection.cs b/ARKBreedingStats/Form1.collection.cs index 1b7a23f8..f3f54933 100644 --- a/ARKBreedingStats/Form1.collection.cs +++ b/ARKBreedingStats/Form1.collection.cs @@ -522,7 +522,7 @@ private bool LoadCollectionFile(string filePath, bool keepCurrentCreatures = fal if (keepCurrentCreatures) { - creatureWasAdded = previouslyLoadedCreatureCollection.MergeCreatureList(_creatureCollection.creatures); + creatureWasAdded = previouslyLoadedCreatureCollection.MergeCreatureList(_creatureCollection.creatures, removeCreatures: _creatureCollection.DeletedCreatureGuids); _creatureCollection = previouslyLoadedCreatureCollection; } else diff --git a/ARKBreedingStats/Form1.cs b/ARKBreedingStats/Form1.cs index 62744d0f..fb3be0ce 100644 --- a/ARKBreedingStats/Form1.cs +++ b/ARKBreedingStats/Form1.cs @@ -1871,7 +1871,7 @@ private void SetCreatureStatus(IEnumerable cs, CreatureStatus s) if (s.HasFlag(CreatureStatus.Dead) ^ deadStatusWasSet) { LibraryInfo.ClearInfo(); - _creatureCollection.ResetExistingColors(speciesIfOnlyOne); + _creatureCollection.ResetExistingColors(speciesIfOnlyOne?.blueprintPath); } FilterLibRecalculate(); UpdateStatusBar(); diff --git a/ARKBreedingStats/Form1.library.cs b/ARKBreedingStats/Form1.library.cs index ebdc4a1c..dbe0b1bc 100644 --- a/ARKBreedingStats/Form1.library.cs +++ b/ARKBreedingStats/Form1.library.cs @@ -58,7 +58,7 @@ private Creature AddCreatureToCollection(bool fromExtractor = true, long motherA && _creatureCollection.DeletedCreatureGuids.Contains(creature.guid)) _creatureCollection.DeletedCreatureGuids.RemoveAll(guid => guid == creature.guid); - _creatureCollection.MergeCreatureList(new List { creature }); + _creatureCollection.MergeCreatureList(new[] { creature }); // set status of exportedCreatureControl if available _exportedCreatureControl?.setStatus(importExported.ExportedCreatureControl.ImportStatus.JustImported, DateTime.Now); diff --git a/ARKBreedingStats/library/CreatureCollection.cs b/ARKBreedingStats/library/CreatureCollection.cs index 4b816cb3..dad0e9a9 100644 --- a/ARKBreedingStats/library/CreatureCollection.cs +++ b/ARKBreedingStats/library/CreatureCollection.cs @@ -147,7 +147,7 @@ public CreatureCollection() [JsonProperty] public Dictionary CustomSpeciesStats; - public Dictionary _creatureCountBySpecies; + private Dictionary _creatureCountBySpecies; /// /// Calculates a hashcode for a list of mods and their order. Can be used to check for changes. @@ -202,23 +202,28 @@ public List ModList /// List of creatures to add /// If true creatures will be added even if they were just deleted. /// True if creatures were added or updated - public bool MergeCreatureList(IEnumerable creaturesToMerge, bool addPreviouslyDeletedCreatures = false) + public bool MergeCreatureList(IEnumerable creaturesToMerge, bool addPreviouslyDeletedCreatures = false, List removeCreatures = null) { bool creaturesWereAddedOrUpdated = false; - Species onlyThisSpeciesAdded = null; + string onlyThisSpeciesBlueprintAdded = null; bool onlyOneSpeciesAdded = true; var guidDict = creatures.ToDictionary(c => c.guid); + if (removeCreatures != null) + { + creaturesWereAddedOrUpdated = creatures.RemoveAll(c => removeCreatures.Contains(c.guid)) > 0; + } + foreach (Creature creatureNew in creaturesToMerge) { if (!addPreviouslyDeletedCreatures && DeletedCreatureGuids != null && DeletedCreatureGuids.Contains(creatureNew.guid)) continue; if (onlyOneSpeciesAdded) { - if (onlyThisSpeciesAdded == null || onlyThisSpeciesAdded == creatureNew.Species) - onlyThisSpeciesAdded = creatureNew.Species; - else + if (onlyThisSpeciesBlueprintAdded == null) + onlyThisSpeciesBlueprintAdded = creatureNew.speciesBlueprint; + else if (onlyThisSpeciesBlueprintAdded != creatureNew.speciesBlueprint) onlyOneSpeciesAdded = false; } @@ -347,7 +352,7 @@ void UpdateString(ref string oldCreatureValue, ref string newCreatureValue) if (creaturesWereAddedOrUpdated) { - ResetExistingColors(onlyOneSpeciesAdded ? onlyThisSpeciesAdded : null); + ResetExistingColors(onlyOneSpeciesAdded ? onlyThisSpeciesBlueprintAdded : null); _creatureCountBySpecies = null; } @@ -357,7 +362,6 @@ void UpdateString(ref string oldCreatureValue, ref string newCreatureValue) /// /// Removes creature from library and adds its guid to the deleted creatures. /// - /// internal void DeleteCreature(Creature c) { if (!creatures.Remove(c)) return; @@ -365,7 +369,7 @@ internal void DeleteCreature(Creature c) if (DeletedCreatureGuids == null) DeletedCreatureGuids = new List(); DeletedCreatureGuids.Add(c.guid); - ResetExistingColors(c.Species); + ResetExistingColors(c.Species.blueprintPath); _creatureCountBySpecies = null; } @@ -478,14 +482,14 @@ private void InitializeProperties(StreamingContext ct) /// /// Reset the lists of available color ids. Call this method after a creature was added or removed from the collection. + /// If null, the color info of all species is cleared, else only the matching one. /// - /// - internal void ResetExistingColors(Species species = null) + internal void ResetExistingColors(string speciesBlueprintPath = null) { - if (species == null) + if (speciesBlueprintPath == null) _existingColors.Clear(); - else if (!string.IsNullOrEmpty(species.blueprintPath)) - _existingColors.Remove(species.blueprintPath); + else if (!string.IsNullOrEmpty(speciesBlueprintPath)) + _existingColors.Remove(speciesBlueprintPath); } /// From 4a17025f37d84518bf24c0bf08dce10e9e2e71b6 Mon Sep 17 00:00:00 2001 From: cadon Date: Sat, 18 Nov 2023 23:01:56 +0100 Subject: [PATCH 4/9] removed top most of export folder dialog --- .../settings/ATImportExportedFolderLoactionDialog.Designer.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/ARKBreedingStats/settings/ATImportExportedFolderLoactionDialog.Designer.cs b/ARKBreedingStats/settings/ATImportExportedFolderLoactionDialog.Designer.cs index 75c1e5b6..afed7e05 100644 --- a/ARKBreedingStats/settings/ATImportExportedFolderLoactionDialog.Designer.cs +++ b/ARKBreedingStats/settings/ATImportExportedFolderLoactionDialog.Designer.cs @@ -144,7 +144,6 @@ private void InitializeComponent() this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; this.Text = "Edit File Location"; - this.TopMost = true; this.ResumeLayout(false); this.PerformLayout(); From 96db781c34f12451392bfb2dc62166262b3fac7a Mon Sep 17 00:00:00 2001 From: cadon Date: Sun, 19 Nov 2023 13:22:14 +0100 Subject: [PATCH 5/9] select cretaure in library after export gun import --- ARKBreedingStats/CreatureBox.cs | 4 ++-- ARKBreedingStats/Form1.importExported.cs | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/ARKBreedingStats/CreatureBox.cs b/ARKBreedingStats/CreatureBox.cs index 6f21d96e..990d73c1 100644 --- a/ARKBreedingStats/CreatureBox.cs +++ b/ARKBreedingStats/CreatureBox.cs @@ -139,11 +139,11 @@ void SetParentLabel(Label l, string lbText = null, bool clickable = false) } else if (_creature.isDomesticated) { - SetParentLabel(LbMotherAndWildInfo, "found wild " + _creature.levelFound + (_creature.tamingEff >= 0 ? ", tamed with TE: " + (_creature.tamingEff * 100).ToString("N1") + "%" : ", TE unknown.")); + SetParentLabel(LbMotherAndWildInfo, "was level " + _creature.levelFound + " when wild" + (_creature.tamingEff >= 0 ? ", tamed with TE: " + (_creature.tamingEff * 100).ToString("N1") + "%" : ", TE unknown.")); } else { - SetParentLabel(LbMotherAndWildInfo, "found wild " + _creature.levelFound); + SetParentLabel(LbMotherAndWildInfo, "is wild level " + _creature.levelFound); } statsDisplay1.SetCreatureValues(_creature); labelNotes.Text = _creature.note; diff --git a/ARKBreedingStats/Form1.importExported.cs b/ARKBreedingStats/Form1.importExported.cs index 9df18172..10a67891 100644 --- a/ARKBreedingStats/Form1.importExported.cs +++ b/ARKBreedingStats/Form1.importExported.cs @@ -245,6 +245,8 @@ private Creature ImportExportedAddIfPossible(string filePath) } } + SelectCreatureInLibrary(creature); + break; default: return null; } From e1332e444a219f20d9aafb8d5142c4546c68dff3 Mon Sep 17 00:00:00 2001 From: cadon Date: Sun, 19 Nov 2023 14:24:17 +0100 Subject: [PATCH 6/9] added WildDinoTorporDrainMultiplier --- ARKBreedingStats/Form1.cs | 9 +- ARKBreedingStats/Taming.cs | 30 +++--- ARKBreedingStats/TamingControl.cs | 26 +++--- .../importExportGun/ExportGunServerFile.cs | 3 + .../importExportGun/ImportExportGun.cs | 1 + .../settings/Settings.Designer.cs | 91 ++++++++++++++----- ARKBreedingStats/settings/Settings.cs | 10 +- ARKBreedingStats/values/ServerMultipliers.cs | 42 +++------ 8 files changed, 124 insertions(+), 88 deletions(-) diff --git a/ARKBreedingStats/Form1.cs b/ARKBreedingStats/Form1.cs index fb3be0ce..cd04422f 100644 --- a/ARKBreedingStats/Form1.cs +++ b/ARKBreedingStats/Form1.cs @@ -737,8 +737,7 @@ private void ApplySettingsToValues() { // apply multipliers Values.V.ApplyMultipliers(_creatureCollection, cbEventMultipliers.Checked); - tamingControl1.SetTamingMultipliers(Values.V.currentServerMultipliers.TamingSpeedMultiplier, - Values.V.currentServerMultipliers.DinoCharacterFoodDrainMultiplier); + tamingControl1.SetServerMultipliers(Values.V.currentServerMultipliers); ColorModeColors.SetColors((ColorModeColors.AsbColorMode)Properties.Settings.Default.ColorMode); RecalculateAllCreaturesValues(); @@ -2581,8 +2580,7 @@ private void ShowLevelsInOverlay() Values.V.currentServerMultipliers.TamingSpeedMultiplier, foodName, speciesSelector1.SelectedSpecies.taming.nonViolent); Taming.TamingTimes(speciesSelector1.SelectedSpecies, levelWild, - Values.V.currentServerMultipliers.TamingSpeedMultiplier, - Values.V.currentServerMultipliers.DinoCharacterFoodDrainMultiplier, foodName, foodNeeded, out _, + Values.V.currentServerMultipliers, foodName, foodNeeded, out _, out TimeSpan duration, out int narcoBerries, out int ascerbicMushrooms, out int narcotics, out int bioToxines, out double te, out _, out int bonusLevel, out _); extraText += $"\nTaming takes {(int)duration.TotalHours}:{duration:mm':'ss} with {foodNeeded} × {foodName}" @@ -2852,8 +2850,7 @@ private void ApplyEvolutionMultipliers() { Values.V.ApplyMultipliers(_creatureCollection, cbEventMultipliers.Checked, false); - tamingControl1.SetTamingMultipliers(Values.V.currentServerMultipliers.TamingSpeedMultiplier, - Values.V.currentServerMultipliers.DinoCharacterFoodDrainMultiplier); + tamingControl1.SetServerMultipliers(Values.V.currentServerMultipliers); breedingPlan1.UpdateBreedingData(); raisingControl1.UpdateRaisingData(); } diff --git a/ARKBreedingStats/Taming.cs b/ARKBreedingStats/Taming.cs index d59ac33f..9daeabdc 100644 --- a/ARKBreedingStats/Taming.cs +++ b/ARKBreedingStats/Taming.cs @@ -15,7 +15,7 @@ public static class Taming /// private const int HardCodedTamingMultiplier = 4; - public static void TamingTimes(Species species, int level, double tamingSpeedMultiplier, double tamingFoodRateMultiplier, + public static void TamingTimes(Species species, int level, ServerMultipliers serverMultipliers, List usedFood, List foodAmount, out List foodAmountUsed, out TimeSpan duration, out int neededNarcoberries, out int neededAscerbicMushrooms, out int neededNarcotics, out int neededBioToxins, out double te, out double hunger, out int bonusLevel, out bool enoughFood, bool useSanguineElixir = false) { @@ -49,7 +49,7 @@ public static void TamingTimes(Species species, int level, double tamingSpeedMul //total torpor for level totalTorpor = species.stats[Stats.Torpidity].BaseValue * (1 + species.stats[Stats.Torpidity].IncPerWildLevel * (level - 1)); // torpor depletion per second for level - torporDepletionPerSecond = TorporDepletionPS(species.taming.torporDepletionPS0, level); + torporDepletionPerSecond = TorporDepletionPerSecond(species.taming.torporDepletionPS0, level, serverMultipliers.WildDinoTorporDrainMultiplier); } double foodByAffinity = 0; // needed for the effectiveness calculation @@ -73,7 +73,7 @@ public static void TamingTimes(Species species, int level, double tamingSpeedMul foodValue = foodValue * species.taming.wakeFoodDeplMult; } - foodAffinity *= tamingSpeedMultiplier * HardCodedTamingMultiplier; + foodAffinity *= serverMultipliers.TamingSpeedMultiplier * HardCodedTamingMultiplier; if (foodAffinity > 0 && foodValue > 0) { @@ -91,7 +91,7 @@ public static void TamingTimes(Species species, int level, double tamingSpeedMul if (species.name == "Mantis") seconds = foodPiecesNeeded * 180; else - seconds = (int)Math.Ceiling(foodPiecesNeeded * foodValue / (species.taming.foodConsumptionBase * species.taming.foodConsumptionMult * tamingFoodRateMultiplier)); + seconds = (int)Math.Ceiling(foodPiecesNeeded * foodValue / (species.taming.foodConsumptionBase * species.taming.foodConsumptionMult * serverMultipliers.DinoCharacterFoodDrainMultiplier)); affinityNeeded -= foodPiecesNeeded * foodAffinity; // new approach with 1/(1 + IM*IA*N/AO + ID*D) from https://forums.unrealengine.com/development-discussion/modding/ark-survival-evolved/56959-tutorial-dinosaur-taming-parameters?85457-Tutorial-Dinosaur-Taming-Parameters= @@ -144,12 +144,12 @@ public static void TamingTimes(Species species, int level, double tamingSpeedMul /// /// Use this function if only one kind of food is fed /// - public static void TamingTimes(Species species, int level, double tamingSpeedMultiplier, double tamingFoodRateMultiplier, + public static void TamingTimes(Species species, int level, ServerMultipliers serverMultipliers, string usedFood, int foodAmount, out List foodAmountUsed, out TimeSpan duration, out int neededNarcoberries, out int neededAscerbicMushrooms, out int neededNarcotics, out int neededBioToxins, out double te, out double hunger, out int bonusLevel, out bool enoughFood, bool useSanguineElixir = false) { - TamingTimes(species, level, tamingSpeedMultiplier, tamingFoodRateMultiplier, + TamingTimes(species, level, serverMultipliers, new List { usedFood }, new List { foodAmount }, out foodAmountUsed, out duration, out neededNarcoberries, out neededAscerbicMushrooms, out neededNarcotics, out neededBioToxins, out te, out hunger, out bonusLevel, out enoughFood, useSanguineElixir); @@ -182,19 +182,19 @@ public static int FoodAmountNeeded(Species species, int level, double tamingSpee return 0; } - public static int SecondsUntilWakingUp(Species species, int level, double currentTorpor) + public static int SecondsUntilWakingUp(Species species, ServerMultipliers serverMultipliers, int level, double currentTorpor) { int seconds = 0; if (species != null && species.taming.torporDepletionPS0 > 0) { // torpor depletion per second for level // here the linear approach of 0.01819 * baseTorporDepletion / level is used. Data shows, it's actual an exponential increase - seconds = (int)Math.Floor(currentTorpor / TorporDepletionPS(species.taming.torporDepletionPS0, level)); + seconds = (int)Math.Floor(currentTorpor / TorporDepletionPerSecond(species.taming.torporDepletionPS0, level, serverMultipliers.WildDinoTorporDrainMultiplier)); } return seconds; } - private static double TorporDepletionPS(double torporDepletionPS0, int level) + private static double TorporDepletionPerSecond(double torporDepletionPS0, int level, double wildDinoTorporDrainMultiplier) { // torpor depletion per second for level @@ -203,7 +203,7 @@ private static double TorporDepletionPS(double torporDepletionPS0, int level) // using a more precise approach with an exponential increase, based on http://ark.crumplecorn.com/taming/controller.js?d=20160821 if (torporDepletionPS0 > 0) - return torporDepletionPS0 + Math.Pow(level - 1, 0.800403041) / (22.39671632 / torporDepletionPS0); + return (torporDepletionPS0 + Math.Pow(level - 1, 0.800403041) / (22.39671632 / torporDepletionPS0)) * wildDinoTorporDrainMultiplier; return 0; } @@ -230,7 +230,7 @@ public static TimeSpan TamingDuration(Species species, int foodQuantity, string return new TimeSpan(0, 0, seconds); } - public static string KnockoutInfo(Species species, int level, double longneck, double crossbow, double bow, double slingshot, + public static string KnockoutInfo(Species species, ServerMultipliers serverMultipliers, int level, double longneck, double crossbow, double bow, double slingshot, double club, double prod, double harpoon, double boneDamageAdjuster, out bool knockoutNeeded, out string koNumbers) { koNumbers = string.Empty; @@ -240,7 +240,7 @@ public static string KnockoutInfo(Species species, int level, double longneck, d //total torpor for level double totalTorpor = species.stats[Stats.Torpidity].BaseValue * (1 + species.stats[Stats.Torpidity].IncPerWildLevel * (level - 1)); // torpor depletion per second for level - double torporDeplPS = TorporDepletionPS(species.taming.torporDepletionPS0, level); + double torporDeplPS = TorporDepletionPerSecond(species.taming.torporDepletionPS0, level, serverMultipliers.WildDinoTorporDrainMultiplier); knockoutNeeded = species.taming.violent; string warning = string.Empty; @@ -280,10 +280,10 @@ public static string KnockoutInfo(Species species, int level, double longneck, d return string.Empty; } - public static string QuickInfoOneFood(Species species, int level, double tamingSpeedMultiplier, double tamingFoodRateMultiplier, + public static string QuickInfoOneFood(Species species, int level, ServerMultipliers serverMultipliers, string foodName, int foodAmount, string foodDisplayName) { - TamingTimes(species, level, tamingSpeedMultiplier, tamingFoodRateMultiplier, foodName, foodAmount, + TamingTimes(species, level, serverMultipliers, foodName, foodAmount, out List foodAmountUsed, out TimeSpan duration, out _, out _, out int narcotics, out _, out double te, out double hunger, out int bonusLevel, out _); return $"{string.Format(Loc.S("WithXFoodTamingTakesTime"), foodAmountUsed[0], foodDisplayName, Utils.DurationUntil(duration))}\n" + @@ -304,7 +304,7 @@ public static string BoneDamageAdjustersImmobilization(Species species, out Dict boneDamageAdjusters = species.boneDamageAdjusters; foreach (KeyValuePair bd in boneDamageAdjusters) { - text += (text.Length > 0 ? "\n" : string.Empty) + bd.Key + ": × " + bd.Value.ToString(); + text += (text.Length > 0 ? "\n" : string.Empty) + bd.Key + ": × " + bd.Value; } } if (species.immobilizedBy != null && species.immobilizedBy.Any()) diff --git a/ARKBreedingStats/TamingControl.cs b/ARKBreedingStats/TamingControl.cs index e55a42ec..4cd3fc1a 100644 --- a/ARKBreedingStats/TamingControl.cs +++ b/ARKBreedingStats/TamingControl.cs @@ -18,8 +18,7 @@ public partial class TamingControl : UserControl public event TimerControl.CreateTimerEventHandler CreateTimer; private DateTime _wakeUpTime; private DateTime _starvingTime; - private double _tamingSpeedMultiplier = 1; - private double _tamingFoodRateMultiplier = 1; + private ServerMultipliers _serverMultipliers =new ServerMultipliers(); private string _koNumbers; private string _boneDamageAdjustersImmobilization; public string quickTamingInfos; @@ -120,7 +119,7 @@ public void SetSpecies(Species species, bool forceRefresh = false) } } - _foodDepletion = td.foodConsumptionBase * td.foodConsumptionMult * _tamingFoodRateMultiplier; + _foodDepletion = td.foodConsumptionBase * td.foodConsumptionMult * _serverMultipliers.DinoCharacterFoodDrainMultiplier; SetTamingFoodControls(species); @@ -191,7 +190,7 @@ private void SetTamingFoodControls(Species species) } if (i > 0) - _foodControls[0].amount = Taming.FoodAmountNeeded(species, (int)nudLevel.Value, _tamingSpeedMultiplier, _foodControls[0].FoodName, td.nonViolent, CbSanguineElixir.Checked); + _foodControls[0].amount = Taming.FoodAmountNeeded(species, (int)nudLevel.Value, _serverMultipliers.TamingSpeedMultiplier, _foodControls[0].FoodName, td.nonViolent, CbSanguineElixir.Checked); } /// @@ -274,10 +273,10 @@ private void UpdateTamingData() usedFood.Add(tfc.FoodName); foodAmount.Add(tfc.amount); - tfc.maxFood = Taming.FoodAmountNeeded(_selectedSpecies, level, _tamingSpeedMultiplier, tfc.FoodName, _selectedSpecies.taming.nonViolent, CbSanguineElixir.Checked); - tfc.tamingDuration = Taming.TamingDuration(_selectedSpecies, tfc.maxFood, tfc.FoodName, _tamingFoodRateMultiplier, _selectedSpecies.taming.nonViolent); + tfc.maxFood = Taming.FoodAmountNeeded(_selectedSpecies, level, _serverMultipliers.TamingSpeedMultiplier, tfc.FoodName, _selectedSpecies.taming.nonViolent, CbSanguineElixir.Checked); + tfc.tamingDuration = Taming.TamingDuration(_selectedSpecies, tfc.maxFood, tfc.FoodName, _serverMultipliers.DinoCharacterFoodDrainMultiplier, _selectedSpecies.taming.nonViolent); } - Taming.TamingTimes(_selectedSpecies, level, _tamingSpeedMultiplier, _tamingFoodRateMultiplier, usedFood, foodAmount, + Taming.TamingTimes(_selectedSpecies, level, _serverMultipliers, usedFood, foodAmount, out foodAmountUsed, out duration, out narcoBerries, out ascerbicMushrooms, out narcotics, out bioToxines, out te, out _neededHunger, out bonusLevel, out enoughFood, CbSanguineElixir.Checked); for (int f = 0; f < foodAmountUsed.Count; f++) @@ -319,13 +318,13 @@ private void UpdateTamingData() //// quickTame infos if (foodAmountUsed.Any()) { - quickTamingInfos = Taming.QuickInfoOneFood(_selectedSpecies, level, _tamingSpeedMultiplier, _tamingFoodRateMultiplier, _foodControls[0].FoodName, _foodControls[0].maxFood, _foodControls[0].foodNameDisplay); + quickTamingInfos = Taming.QuickInfoOneFood(_selectedSpecies, level, _serverMultipliers, _foodControls[0].FoodName, _foodControls[0].maxFood, _foodControls[0].foodNameDisplay); // show raw meat or mejoberries as alternative (often used) for (int i = 1; i < usedFood.Count; i++) { if (usedFood[i] == "Raw Meat" || usedFood[i] == "Mejoberry") { - quickTamingInfos += "\n\n" + Taming.QuickInfoOneFood(_selectedSpecies, level, _tamingSpeedMultiplier, _tamingFoodRateMultiplier, _foodControls[i].FoodName, _foodControls[i].maxFood, _foodControls[i].foodNameDisplay); + quickTamingInfos += "\n\n" + Taming.QuickInfoOneFood(_selectedSpecies, level, _serverMultipliers, _foodControls[i].FoodName, _foodControls[i].maxFood, _foodControls[i].foodNameDisplay); break; } } @@ -390,7 +389,7 @@ private void OnlyOneFood(string food) private void numericUpDownCurrentTorpor_ValueChanged(object sender, EventArgs e) { - var duration = new TimeSpan(0, 0, Taming.SecondsUntilWakingUp(_selectedSpecies, (int)nudLevel.Value, (double)numericUpDownCurrentTorpor.Value)); + var duration = new TimeSpan(0, 0, Taming.SecondsUntilWakingUp(_selectedSpecies, _serverMultipliers, (int)nudLevel.Value, (double)numericUpDownCurrentTorpor.Value)); lbTimeUntilWakingUp.Text = string.Format(Loc.S("lbTimeUntilWakingUp"), Utils.Duration(duration)); if (duration.TotalSeconds < 30) lbTimeUntilWakingUp.ForeColor = Color.DarkRed; else if (duration.TotalSeconds < 120) lbTimeUntilWakingUp.ForeColor = Color.DarkGoldenrod; @@ -417,7 +416,7 @@ private void UpdateKOCounting(double boneDamageAdjuster = 0) { if (boneDamageAdjuster == 0) boneDamageAdjuster = _currentBoneDamageAdjuster; - lbKOInfo.Text = Taming.KnockoutInfo(_selectedSpecies, (int)nudLevel.Value, + lbKOInfo.Text = Taming.KnockoutInfo(_selectedSpecies, _serverMultipliers, (int)nudLevel.Value, chkbDmLongneck.Checked ? (double)nudWDmLongneck.Value / 100 : 0, chkbDmCrossbow.Checked ? (double)nudWDmCrossbow.Value / 100 : 0, chkbDmBow.Checked ? (double)nudWDmBow.Value / 100 : 0, @@ -483,10 +482,9 @@ private void btnAddStarvingTimer_Click(object sender, EventArgs e) CreateTimer(Loc.S("timerStarvingOf") + " " + _selectedSpecies.name, _starvingTime, null, TimerControl.TimerGroups.Starving.ToString()); } - public void SetTamingMultipliers(double tamingSpeedMultiplier, double tamingFoodRateMultiplier) + public void SetServerMultipliers(ServerMultipliers serverMultipliers) { - _tamingSpeedMultiplier = tamingSpeedMultiplier; - _tamingFoodRateMultiplier = tamingFoodRateMultiplier; + _serverMultipliers = serverMultipliers; UpdateTamingData(); } diff --git a/ARKBreedingStats/importExportGun/ExportGunServerFile.cs b/ARKBreedingStats/importExportGun/ExportGunServerFile.cs index 4697ea9b..f0a94202 100644 --- a/ARKBreedingStats/importExportGun/ExportGunServerFile.cs +++ b/ARKBreedingStats/importExportGun/ExportGunServerFile.cs @@ -17,6 +17,7 @@ internal class ExportGunServerFile public int MaxWildLevel { get; set; } public int DestroyTamesOverLevelClamp { get; set; } public double TamingSpeedMultiplier { get; set; } + public double WildDinoTorporDrainMultiplier { get; set; } public double DinoCharacterFoodDrainMultiplier { get; set; } public double MatingSpeedMultiplier { get; set; } public double MatingIntervalMultiplier { get; set; } @@ -30,6 +31,8 @@ internal class ExportGunServerFile public bool AllowSpeedLeveling { get; set; } public bool AllowFlyerSpeedLeveling { get; set; } public bool UseSingleplayerSettings { get; set; } + public string SessionName { get; set; } + /// /// ASE or ASA /// diff --git a/ARKBreedingStats/importExportGun/ImportExportGun.cs b/ARKBreedingStats/importExportGun/ImportExportGun.cs index 831afa42..0dc1776b 100644 --- a/ARKBreedingStats/importExportGun/ImportExportGun.cs +++ b/ARKBreedingStats/importExportGun/ImportExportGun.cs @@ -199,6 +199,7 @@ internal static bool SetServerMultipliers(CreatureCollection cc, ExportGunServer cc.maxServerLevel = esm.DestroyTamesOverLevelClamp; cc.serverMultipliers.TamingSpeedMultiplier = Math.Round(esm.TamingSpeedMultiplier, roundToDigits); cc.serverMultipliers.DinoCharacterFoodDrainMultiplier = Math.Round(esm.DinoCharacterFoodDrainMultiplier, roundToDigits); + cc.serverMultipliers.WildDinoTorporDrainMultiplier = Math.Round(esm.WildDinoTorporDrainMultiplier, roundToDigits); cc.serverMultipliers.MatingSpeedMultiplier = Math.Round(esm.MatingSpeedMultiplier, roundToDigits); cc.serverMultipliers.MatingIntervalMultiplier = Math.Round(esm.MatingIntervalMultiplier, roundToDigits); cc.serverMultipliers.EggHatchSpeedMultiplier = Math.Round(esm.EggHatchSpeedMultiplier, roundToDigits); diff --git a/ARKBreedingStats/settings/Settings.Designer.cs b/ARKBreedingStats/settings/Settings.Designer.cs index 72d90f79..f2180cfa 100644 --- a/ARKBreedingStats/settings/Settings.Designer.cs +++ b/ARKBreedingStats/settings/Settings.Designer.cs @@ -120,6 +120,7 @@ private void InitializeComponent() this.checkBoxDisplayHiddenStats = new System.Windows.Forms.CheckBox(); this.tabControlSettings = new System.Windows.Forms.TabControl(); this.tabPageMultipliers = new System.Windows.Forms.TabPage(); + this.CbKeepMultipliersForNewLibrary = new System.Windows.Forms.CheckBox(); this.BtAutoImportLocalSettings = new System.Windows.Forms.Button(); this.panel3 = new System.Windows.Forms.Panel(); this.RbGameAsa = new System.Windows.Forms.RadioButton(); @@ -345,7 +346,8 @@ private void InitializeComponent() this.label1 = new System.Windows.Forms.Label(); this.panel1 = new System.Windows.Forms.Panel(); this.colorDialog1 = new System.Windows.Forms.ColorDialog(); - this.CbKeepMultipliersForNewLibrary = new System.Windows.Forms.CheckBox(); + this.label67 = new System.Windows.Forms.Label(); + this.NudWildDinoTorporDrainMultiplier = new ARKBreedingStats.uiControls.Nud(); this.groupBoxMultiplier.SuspendLayout(); this.groupBox2.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.nudTamedDinoCharacterFoodDrain)).BeginInit(); @@ -453,6 +455,7 @@ private void InitializeComponent() ((System.ComponentModel.ISupportInitialize)(this.nudWaitBeforeScreenCapture)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.nudWhiteThreshold)).BeginInit(); this.panel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.NudWildDinoTorporDrainMultiplier)).BeginInit(); this.SuspendLayout(); // // groupBoxMultiplier @@ -623,7 +626,7 @@ private void InitializeComponent() this.groupBox2.Controls.Add(this.nudBabyImprintingStatScale); this.groupBox2.Controls.Add(this.label8); this.groupBox2.Controls.Add(this.nudEggHatchSpeed); - this.groupBox2.Location = new System.Drawing.Point(394, 241); + this.groupBox2.Location = new System.Drawing.Point(394, 263); this.groupBox2.Name = "groupBox2"; this.groupBox2.Size = new System.Drawing.Size(346, 255); this.groupBox2.TabIndex = 7; @@ -1479,15 +1482,17 @@ private void InitializeComponent() // // groupBox5 // + this.groupBox5.Controls.Add(this.label67); + this.groupBox5.Controls.Add(this.NudWildDinoTorporDrainMultiplier); this.groupBox5.Controls.Add(this.nudDinoCharacterFoodDrainEvent); this.groupBox5.Controls.Add(this.nudTamingSpeedEvent); this.groupBox5.Controls.Add(this.label7); this.groupBox5.Controls.Add(this.label14); this.groupBox5.Controls.Add(this.nudDinoCharacterFoodDrain); this.groupBox5.Controls.Add(this.nudTamingSpeed); - this.groupBox5.Location = new System.Drawing.Point(394, 163); + this.groupBox5.Location = new System.Drawing.Point(394, 158); this.groupBox5.Name = "groupBox5"; - this.groupBox5.Size = new System.Drawing.Size(345, 72); + this.groupBox5.Size = new System.Drawing.Size(345, 99); this.groupBox5.TabIndex = 6; this.groupBox5.TabStop = false; this.groupBox5.Text = "Taming-Multiplier"; @@ -1608,7 +1613,7 @@ private void InitializeComponent() // // label15 // - this.label15.Location = new System.Drawing.Point(451, 532); + this.label15.Location = new System.Drawing.Point(451, 554); this.label15.Name = "label15"; this.label15.Size = new System.Drawing.Size(289, 77); this.label15.TabIndex = 9; @@ -1819,10 +1824,20 @@ private void InitializeComponent() this.tabPageMultipliers.DragDrop += new System.Windows.Forms.DragEventHandler(this.tabPage2_DragDrop); this.tabPageMultipliers.DragEnter += new System.Windows.Forms.DragEventHandler(this.tabPage2_DragEnter); // + // CbKeepMultipliersForNewLibrary + // + this.CbKeepMultipliersForNewLibrary.AutoSize = true; + this.CbKeepMultipliersForNewLibrary.Location = new System.Drawing.Point(6, 699); + this.CbKeepMultipliersForNewLibrary.Name = "CbKeepMultipliersForNewLibrary"; + this.CbKeepMultipliersForNewLibrary.Size = new System.Drawing.Size(231, 17); + this.CbKeepMultipliersForNewLibrary.TabIndex = 18; + this.CbKeepMultipliersForNewLibrary.Text = "Keep multipliers when creating a new library"; + this.CbKeepMultipliersForNewLibrary.UseVisualStyleBackColor = true; + // // BtAutoImportLocalSettings // this.BtAutoImportLocalSettings.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192))))); - this.BtAutoImportLocalSettings.Location = new System.Drawing.Point(407, 599); + this.BtAutoImportLocalSettings.Location = new System.Drawing.Point(407, 621); this.BtAutoImportLocalSettings.Name = "BtAutoImportLocalSettings"; this.BtAutoImportLocalSettings.Size = new System.Drawing.Size(152, 23); this.BtAutoImportLocalSettings.TabIndex = 17; @@ -1864,7 +1879,7 @@ private void InitializeComponent() // // BtImportSettingsSelectFile // - this.BtImportSettingsSelectFile.Location = new System.Drawing.Point(565, 599); + this.BtImportSettingsSelectFile.Location = new System.Drawing.Point(565, 621); this.BtImportSettingsSelectFile.Name = "BtImportSettingsSelectFile"; this.BtImportSettingsSelectFile.Size = new System.Drawing.Size(167, 23); this.BtImportSettingsSelectFile.TabIndex = 15; @@ -1884,7 +1899,7 @@ private void InitializeComponent() // // BtSettingsToClipboard // - this.BtSettingsToClipboard.Location = new System.Drawing.Point(600, 670); + this.BtSettingsToClipboard.Location = new System.Drawing.Point(600, 692); this.BtSettingsToClipboard.Name = "BtSettingsToClipboard"; this.BtSettingsToClipboard.Size = new System.Drawing.Size(142, 23); this.BtSettingsToClipboard.TabIndex = 13; @@ -1926,7 +1941,7 @@ private void InitializeComponent() // // label34 // - this.label34.Location = new System.Drawing.Point(404, 633); + this.label34.Location = new System.Drawing.Point(404, 655); this.label34.Name = "label34"; this.label34.Size = new System.Drawing.Size(338, 34); this.label34.TabIndex = 10; @@ -1935,7 +1950,7 @@ private void InitializeComponent() // // btExportMultipliers // - this.btExportMultipliers.Location = new System.Drawing.Point(407, 670); + this.btExportMultipliers.Location = new System.Drawing.Point(407, 692); this.btExportMultipliers.Name = "btExportMultipliers"; this.btExportMultipliers.Size = new System.Drawing.Size(187, 23); this.btExportMultipliers.TabIndex = 11; @@ -1977,7 +1992,7 @@ private void InitializeComponent() // this.label27.AutoSize = true; this.label27.Font = new System.Drawing.Font("Microsoft Sans Serif", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label27.Location = new System.Drawing.Point(408, 533); + this.label27.Location = new System.Drawing.Point(408, 555); this.label27.Name = "label27"; this.label27.Size = new System.Drawing.Size(37, 26); this.label27.TabIndex = 12; @@ -2056,7 +2071,7 @@ private void InitializeComponent() // // buttonEventToDefault // - this.buttonEventToDefault.Location = new System.Drawing.Point(604, 502); + this.buttonEventToDefault.Location = new System.Drawing.Point(604, 524); this.buttonEventToDefault.Name = "buttonEventToDefault"; this.buttonEventToDefault.Size = new System.Drawing.Size(136, 23); this.buttonEventToDefault.TabIndex = 8; @@ -2067,7 +2082,7 @@ private void InitializeComponent() // labelEvent // this.labelEvent.AutoSize = true; - this.labelEvent.Location = new System.Drawing.Point(654, 147); + this.labelEvent.Location = new System.Drawing.Point(654, 142); this.labelEvent.Name = "labelEvent"; this.labelEvent.Size = new System.Drawing.Size(78, 13); this.labelEvent.TabIndex = 9; @@ -3641,7 +3656,7 @@ private void InitializeComponent() this.customSCCustom.Location = new System.Drawing.Point(6, 139); this.customSCCustom.Name = "customSCCustom"; this.customSCCustom.Size = new System.Drawing.Size(401, 23); - this.customSCCustom.SoundFile = ""; + this.customSCCustom.SoundFile = null; this.customSCCustom.TabIndex = 4; // // customSCWakeup @@ -3649,7 +3664,7 @@ private void InitializeComponent() this.customSCWakeup.Location = new System.Drawing.Point(6, 81); this.customSCWakeup.Name = "customSCWakeup"; this.customSCWakeup.Size = new System.Drawing.Size(401, 23); - this.customSCWakeup.SoundFile = null; + this.customSCWakeup.SoundFile = ""; this.customSCWakeup.TabIndex = 2; // // customSCBirth @@ -3657,7 +3672,7 @@ private void InitializeComponent() this.customSCBirth.Location = new System.Drawing.Point(6, 110); this.customSCBirth.Name = "customSCBirth"; this.customSCBirth.Size = new System.Drawing.Size(401, 23); - this.customSCBirth.SoundFile = null; + this.customSCBirth.SoundFile = ""; this.customSCBirth.TabIndex = 3; // // customSCStarving @@ -3665,7 +3680,7 @@ private void InitializeComponent() this.customSCStarving.Location = new System.Drawing.Point(6, 52); this.customSCStarving.Name = "customSCStarving"; this.customSCStarving.Size = new System.Drawing.Size(401, 23); - this.customSCStarving.SoundFile = ""; + this.customSCStarving.SoundFile = null; this.customSCStarving.TabIndex = 1; // // label20 @@ -4384,15 +4399,38 @@ private void InitializeComponent() this.panel1.Size = new System.Drawing.Size(758, 30); this.panel1.TabIndex = 12; // - // CbKeepMultipliersForNewLibrary + // label67 // - this.CbKeepMultipliersForNewLibrary.AutoSize = true; - this.CbKeepMultipliersForNewLibrary.Location = new System.Drawing.Point(6, 699); - this.CbKeepMultipliersForNewLibrary.Name = "CbKeepMultipliersForNewLibrary"; - this.CbKeepMultipliersForNewLibrary.Size = new System.Drawing.Size(231, 17); - this.CbKeepMultipliersForNewLibrary.TabIndex = 18; - this.CbKeepMultipliersForNewLibrary.Text = "Keep multipliers when creating a new library"; - this.CbKeepMultipliersForNewLibrary.UseVisualStyleBackColor = true; + this.label67.AutoSize = true; + this.label67.Location = new System.Drawing.Point(10, 73); + this.label67.Name = "label67"; + this.label67.Size = new System.Drawing.Size(147, 13); + this.label67.TabIndex = 5; + this.label67.Text = "WildDinoTorporDrainMultiplier"; + // + // NudWildDinoTorporDrainMultiplier + // + this.NudWildDinoTorporDrainMultiplier.DecimalPlaces = 6; + this.NudWildDinoTorporDrainMultiplier.ForeColor = System.Drawing.SystemColors.WindowText; + this.NudWildDinoTorporDrainMultiplier.Location = new System.Drawing.Point(183, 71); + this.NudWildDinoTorporDrainMultiplier.Maximum = new decimal(new int[] { + 10000, + 0, + 0, + 0}); + this.NudWildDinoTorporDrainMultiplier.Name = "NudWildDinoTorporDrainMultiplier"; + this.NudWildDinoTorporDrainMultiplier.NeutralNumber = new decimal(new int[] { + 0, + 0, + 0, + 0}); + this.NudWildDinoTorporDrainMultiplier.Size = new System.Drawing.Size(72, 20); + this.NudWildDinoTorporDrainMultiplier.TabIndex = 4; + this.NudWildDinoTorporDrainMultiplier.Value = new decimal(new int[] { + 1, + 0, + 0, + 0}); // // Settings // @@ -4554,6 +4592,7 @@ private void InitializeComponent() ((System.ComponentModel.ISupportInitialize)(this.nudWaitBeforeScreenCapture)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.nudWhiteThreshold)).EndInit(); this.panel1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.NudWildDinoTorporDrainMultiplier)).EndInit(); this.ResumeLayout(false); } @@ -4876,5 +4915,7 @@ private void InitializeComponent() private System.Windows.Forms.CheckBox CbDisplayLibraryCreatureIndex; private System.Windows.Forms.CheckBox CbAskSaveSettingsOnClose; private System.Windows.Forms.CheckBox CbKeepMultipliersForNewLibrary; + private System.Windows.Forms.Label label67; + private uiControls.Nud NudWildDinoTorporDrainMultiplier; } } \ No newline at end of file diff --git a/ARKBreedingStats/settings/Settings.cs b/ARKBreedingStats/settings/Settings.cs index 407f422c..f4059994 100644 --- a/ARKBreedingStats/settings/Settings.cs +++ b/ARKBreedingStats/settings/Settings.cs @@ -99,6 +99,7 @@ private void InitializeData() } nudTamingSpeed.NeutralNumber = 1; nudDinoCharacterFoodDrain.NeutralNumber = 1; + NudWildDinoTorporDrainMultiplier.NeutralNumber = 1; nudTamedDinoCharacterFoodDrain.NeutralNumber = 1; nudMatingInterval.NeutralNumber = 1; nudMatingSpeed.NeutralNumber = 1; @@ -225,7 +226,6 @@ private void LoadSettings(CreatureCollection cc) if (multipliers == null) { multipliers = new ServerMultipliers(); - multipliers.SetDefaultValues(new StreamingContext()); } nudMatingSpeed.ValueSave = (decimal)multipliers.MatingSpeedMultiplier; nudMatingInterval.ValueSave = (decimal)multipliers.MatingIntervalMultiplier; @@ -236,6 +236,7 @@ private void LoadSettings(CreatureCollection cc) nudBabyImprintAmount.ValueSave = (decimal)multipliers.BabyImprintAmountMultiplier; nudTamingSpeed.ValueSave = (decimal)multipliers.TamingSpeedMultiplier; nudDinoCharacterFoodDrain.ValueSave = (decimal)multipliers.DinoCharacterFoodDrainMultiplier; + NudWildDinoTorporDrainMultiplier.ValueSave = (decimal)multipliers.WildDinoTorporDrainMultiplier; nudTamedDinoCharacterFoodDrain.ValueSave = (decimal)multipliers.TamedDinoCharacterFoodDrainMultiplier; nudBabyFoodConsumptionSpeed.ValueSave = (decimal)multipliers.BabyFoodConsumptionSpeedMultiplier; #endregion @@ -491,6 +492,7 @@ private void SaveSettings() #region non-event-multiplier _cc.serverMultipliers.TamingSpeedMultiplier = (double)nudTamingSpeed.Value; _cc.serverMultipliers.DinoCharacterFoodDrainMultiplier = (double)nudDinoCharacterFoodDrain.Value; + _cc.serverMultipliers.WildDinoTorporDrainMultiplier = (double)NudWildDinoTorporDrainMultiplier.Value; _cc.serverMultipliers.TamedDinoCharacterFoodDrainMultiplier = (double)nudTamedDinoCharacterFoodDrain.Value; _cc.serverMultipliers.MatingSpeedMultiplier = (double)nudMatingSpeed.Value; _cc.serverMultipliers.MatingIntervalMultiplier = (double)nudMatingInterval.Value; @@ -839,6 +841,8 @@ void ParseAndSetStatMultiplier(int multiplierIndex, string regexPattern) // GameUserSettings.ini ParseAndSetValue(nudTamingSpeed, @"TamingSpeedMultiplier ?= ?(\d*\.?\d+)"); ParseAndSetValue(nudDinoCharacterFoodDrain, @"DinoCharacterFoodDrainMultiplier ?= ?(\d*\.?\d+)"); + // Game.ini + ParseAndSetValue(NudWildDinoTorporDrainMultiplier, @"WildDinoTorporDrainMultiplier ?= ?(\d*\.?\d+)"); //// the settings below don't appear in ARK server config files directly or not at all and are used only in ASB // max levels @@ -940,6 +944,7 @@ private void LoadServerMultipliersFromSavFile(string filePath) nudMaxServerLevel.ValueSave = esm.DestroyTamesOverLevelClamp; nudTamingSpeed.ValueSaveDouble = Math.Round(esm.TamingSpeedMultiplier, roundToDigits); nudDinoCharacterFoodDrain.ValueSaveDouble = Math.Round(esm.DinoCharacterFoodDrainMultiplier, roundToDigits); + NudWildDinoTorporDrainMultiplier.ValueSaveDouble = Math.Round(esm.WildDinoTorporDrainMultiplier, roundToDigits); nudMatingSpeed.ValueSaveDouble = Math.Round(esm.MatingSpeedMultiplier, roundToDigits); nudMatingInterval.ValueSaveDouble = Math.Round(esm.MatingIntervalMultiplier, roundToDigits); nudEggHatchSpeed.ValueSaveDouble = Math.Round(esm.EggHatchSpeedMultiplier, roundToDigits); @@ -1100,6 +1105,7 @@ private void ApplyMultiplierPreset(ServerMultipliers sm, bool onlyStatMultiplier { nudTamingSpeed.ValueSave = (decimal)sm.TamingSpeedMultiplier; nudDinoCharacterFoodDrain.ValueSave = (decimal)sm.DinoCharacterFoodDrainMultiplier; + NudWildDinoTorporDrainMultiplier.ValueSave = (decimal)sm.WildDinoTorporDrainMultiplier; nudTamedDinoCharacterFoodDrain.ValueSave = (decimal)sm.TamedDinoCharacterFoodDrainMultiplier; nudEggHatchSpeed.ValueSave = (decimal)sm.EggHatchSpeedMultiplier; nudBabyMatureSpeed.ValueSave = (decimal)sm.BabyMatureSpeedMultiplier; @@ -1216,6 +1222,7 @@ private string GetMultiplierSettings() // taming multipliers sb.AppendLine($"TamingSpeedMultiplier = {nudTamingSpeed.Value.ToString(cultureForStrings)}"); sb.AppendLine($"DinoCharacterFoodDrainMultiplier = {nudDinoCharacterFoodDrain.Value.ToString(cultureForStrings)}"); + sb.AppendLine($"WildDinoTorporDrainMultiplier = {NudWildDinoTorporDrainMultiplier.Value.ToString(cultureForStrings)}"); //// the settings below are not settings that appear in ARK server config files and are used only in ASB // max levels @@ -1423,6 +1430,7 @@ private void CbHighlightAdjustedMultipliers_CheckedChanged(object sender, EventA _multSetter[s].SetHighlighted(highlight); nudTamingSpeed.SetExtraHighlightNonDefault(highlight); nudDinoCharacterFoodDrain.SetExtraHighlightNonDefault(highlight); + NudWildDinoTorporDrainMultiplier.SetExtraHighlightNonDefault(highlight); nudMatingSpeed.SetExtraHighlightNonDefault(highlight); nudMatingInterval.SetExtraHighlightNonDefault(highlight); nudEggHatchSpeed.SetExtraHighlightNonDefault(highlight); diff --git a/ARKBreedingStats/values/ServerMultipliers.cs b/ARKBreedingStats/values/ServerMultipliers.cs index 2ea7ca0b..bc7ac54f 100644 --- a/ARKBreedingStats/values/ServerMultipliers.cs +++ b/ARKBreedingStats/values/ServerMultipliers.cs @@ -16,50 +16,36 @@ public class ServerMultipliers public double[][] statMultipliers; [JsonProperty] - public double TamingSpeedMultiplier { get; set; } + public double TamingSpeedMultiplier { get; set; } = 1; [JsonProperty] - public double DinoCharacterFoodDrainMultiplier { get; set; } + public double WildDinoTorporDrainMultiplier { get; set; } = 1; [JsonProperty] - public double TamedDinoCharacterFoodDrainMultiplier { get; set; } + public double DinoCharacterFoodDrainMultiplier { get; set; } = 1; + [JsonProperty] + public double TamedDinoCharacterFoodDrainMultiplier { get; set; } = 1; [JsonProperty] - public double MatingSpeedMultiplier { get; set; } + public double MatingSpeedMultiplier { get; set; } = 1; [JsonProperty] - public double MatingIntervalMultiplier { get; set; } + public double MatingIntervalMultiplier { get; set; } = 1; [JsonProperty] - public double EggHatchSpeedMultiplier { get; set; } + public double EggHatchSpeedMultiplier { get; set; } = 1; [JsonProperty] - public double BabyMatureSpeedMultiplier { get; set; } + public double BabyMatureSpeedMultiplier { get; set; } = 1; [JsonProperty] - public double BabyFoodConsumptionSpeedMultiplier { get; set; } + public double BabyFoodConsumptionSpeedMultiplier { get; set; } = 1; [JsonProperty] - public double BabyCuddleIntervalMultiplier { get; set; } + public double BabyCuddleIntervalMultiplier { get; set; } = 1; [JsonProperty] - public double BabyImprintingStatScaleMultiplier { get; set; } + public double BabyImprintingStatScaleMultiplier { get; set; } = 1; [JsonProperty] - public double BabyImprintAmountMultiplier { get; set; } + public double BabyImprintAmountMultiplier { get; set; } = 1; [JsonProperty] public bool AllowSpeedLeveling { get; set; } [JsonProperty] public bool AllowFlyerSpeedLeveling { get; set; } - [OnDeserializing] - internal void SetDefaultValues(StreamingContext _) - { - TamingSpeedMultiplier = 1; - DinoCharacterFoodDrainMultiplier = 1; - TamedDinoCharacterFoodDrainMultiplier = 1; - MatingIntervalMultiplier = 1; - EggHatchSpeedMultiplier = 1; - MatingSpeedMultiplier = 1; - BabyMatureSpeedMultiplier = 1; - BabyFoodConsumptionSpeedMultiplier = 1; - BabyCuddleIntervalMultiplier = 1; - BabyImprintingStatScaleMultiplier = 1; - BabyImprintAmountMultiplier = 1; - } - /// /// Fix any null values /// @@ -84,6 +70,7 @@ public ServerMultipliers Copy(bool withStatMultipliers) var sm = new ServerMultipliers { TamingSpeedMultiplier = TamingSpeedMultiplier, + WildDinoTorporDrainMultiplier = WildDinoTorporDrainMultiplier, DinoCharacterFoodDrainMultiplier = DinoCharacterFoodDrainMultiplier, TamedDinoCharacterFoodDrainMultiplier = TamedDinoCharacterFoodDrainMultiplier, MatingIntervalMultiplier = MatingIntervalMultiplier, @@ -118,6 +105,7 @@ public ServerMultipliers Copy(bool withStatMultipliers) public void FixZeroValues() { if (TamingSpeedMultiplier == 0) TamingSpeedMultiplier = 1; + if (WildDinoTorporDrainMultiplier == 0) WildDinoTorporDrainMultiplier = 1; if (MatingIntervalMultiplier == 0) MatingIntervalMultiplier = 1; if (EggHatchSpeedMultiplier == 0) EggHatchSpeedMultiplier = 1; if (MatingSpeedMultiplier == 0) MatingSpeedMultiplier = 1; From f7566c1a0582603a20fd8b845bbb10c7d789b9b0 Mon Sep 17 00:00:00 2001 From: cadon Date: Sun, 19 Nov 2023 14:31:03 +0100 Subject: [PATCH 7/9] note on no ASA save import --- ARKBreedingStats/Form1.Designer.cs | 2 +- .../settings/Settings.Designer.cs | 111 ++++++++++-------- 2 files changed, 63 insertions(+), 50 deletions(-) diff --git a/ARKBreedingStats/Form1.Designer.cs b/ARKBreedingStats/Form1.Designer.cs index b7e2a462..1fd74aa8 100644 --- a/ARKBreedingStats/Form1.Designer.cs +++ b/ARKBreedingStats/Form1.Designer.cs @@ -530,7 +530,7 @@ private void InitializeComponent() this.importingFromSavegameEmptyToolStripMenuItem}); this.importingFromSavegameToolStripMenuItem.Name = "importingFromSavegameToolStripMenuItem"; this.importingFromSavegameToolStripMenuItem.Size = new System.Drawing.Size(277, 22); - this.importingFromSavegameToolStripMenuItem.Text = "Importing from savegame"; + this.importingFromSavegameToolStripMenuItem.Text = "Importing from savegame (only ASE)"; // // importingFromSavegameEmptyToolStripMenuItem // diff --git a/ARKBreedingStats/settings/Settings.Designer.cs b/ARKBreedingStats/settings/Settings.Designer.cs index f2180cfa..6f338223 100644 --- a/ARKBreedingStats/settings/Settings.Designer.cs +++ b/ARKBreedingStats/settings/Settings.Designer.cs @@ -98,6 +98,8 @@ private void InitializeComponent() this.label12 = new System.Windows.Forms.Label(); this.numericUpDownMaxBreedingSug = new ARKBreedingStats.uiControls.Nud(); this.groupBox5 = new System.Windows.Forms.GroupBox(); + this.label67 = new System.Windows.Forms.Label(); + this.NudWildDinoTorporDrainMultiplier = new ARKBreedingStats.uiControls.Nud(); this.nudDinoCharacterFoodDrainEvent = new ARKBreedingStats.uiControls.Nud(); this.nudTamingSpeedEvent = new ARKBreedingStats.uiControls.Nud(); this.label7 = new System.Windows.Forms.Label(); @@ -346,8 +348,7 @@ private void InitializeComponent() this.label1 = new System.Windows.Forms.Label(); this.panel1 = new System.Windows.Forms.Panel(); this.colorDialog1 = new System.Windows.Forms.ColorDialog(); - this.label67 = new System.Windows.Forms.Label(); - this.NudWildDinoTorporDrainMultiplier = new ARKBreedingStats.uiControls.Nud(); + this.label68 = new System.Windows.Forms.Label(); this.groupBoxMultiplier.SuspendLayout(); this.groupBox2.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.nudTamedDinoCharacterFoodDrain)).BeginInit(); @@ -380,6 +381,7 @@ private void InitializeComponent() ((System.ComponentModel.ISupportInitialize)(this.nudChartLevelEvenMin)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDownMaxBreedingSug)).BeginInit(); this.groupBox5.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.NudWildDinoTorporDrainMultiplier)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.nudDinoCharacterFoodDrainEvent)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.nudTamingSpeedEvent)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.nudDinoCharacterFoodDrain)).BeginInit(); @@ -455,7 +457,6 @@ private void InitializeComponent() ((System.ComponentModel.ISupportInitialize)(this.nudWaitBeforeScreenCapture)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.nudWhiteThreshold)).BeginInit(); this.panel1.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.NudWildDinoTorporDrainMultiplier)).BeginInit(); this.SuspendLayout(); // // groupBoxMultiplier @@ -1497,6 +1498,39 @@ private void InitializeComponent() this.groupBox5.TabStop = false; this.groupBox5.Text = "Taming-Multiplier"; // + // label67 + // + this.label67.AutoSize = true; + this.label67.Location = new System.Drawing.Point(10, 73); + this.label67.Name = "label67"; + this.label67.Size = new System.Drawing.Size(147, 13); + this.label67.TabIndex = 5; + this.label67.Text = "WildDinoTorporDrainMultiplier"; + // + // NudWildDinoTorporDrainMultiplier + // + this.NudWildDinoTorporDrainMultiplier.DecimalPlaces = 6; + this.NudWildDinoTorporDrainMultiplier.ForeColor = System.Drawing.SystemColors.WindowText; + this.NudWildDinoTorporDrainMultiplier.Location = new System.Drawing.Point(183, 71); + this.NudWildDinoTorporDrainMultiplier.Maximum = new decimal(new int[] { + 10000, + 0, + 0, + 0}); + this.NudWildDinoTorporDrainMultiplier.Name = "NudWildDinoTorporDrainMultiplier"; + this.NudWildDinoTorporDrainMultiplier.NeutralNumber = new decimal(new int[] { + 0, + 0, + 0, + 0}); + this.NudWildDinoTorporDrainMultiplier.Size = new System.Drawing.Size(72, 20); + this.NudWildDinoTorporDrainMultiplier.TabIndex = 4; + this.NudWildDinoTorporDrainMultiplier.Value = new decimal(new int[] { + 1, + 0, + 0, + 0}); + // // nudDinoCharacterFoodDrainEvent // this.nudDinoCharacterFoodDrainEvent.DecimalPlaces = 6; @@ -2828,6 +2862,7 @@ private void InitializeComponent() // // groupBox12 // + this.groupBox12.Controls.Add(this.label68); this.groupBox12.Controls.Add(this.CbImportUnclaimedBabies); this.groupBox12.Controls.Add(this.cbSaveImportCryo); this.groupBox12.Controls.Add(this.cbIgnoreUnknownBPOnSaveImport); @@ -2847,7 +2882,7 @@ private void InitializeComponent() // CbImportUnclaimedBabies // this.CbImportUnclaimedBabies.AutoSize = true; - this.CbImportUnclaimedBabies.Location = new System.Drawing.Point(9, 160); + this.CbImportUnclaimedBabies.Location = new System.Drawing.Point(9, 176); this.CbImportUnclaimedBabies.Name = "CbImportUnclaimedBabies"; this.CbImportUnclaimedBabies.Size = new System.Drawing.Size(140, 17); this.CbImportUnclaimedBabies.TabIndex = 8; @@ -2857,7 +2892,7 @@ private void InitializeComponent() // cbSaveImportCryo // this.cbSaveImportCryo.AutoSize = true; - this.cbSaveImportCryo.Location = new System.Drawing.Point(9, 137); + this.cbSaveImportCryo.Location = new System.Drawing.Point(9, 153); this.cbSaveImportCryo.Name = "cbSaveImportCryo"; this.cbSaveImportCryo.Size = new System.Drawing.Size(216, 17); this.cbSaveImportCryo.TabIndex = 3; @@ -2867,7 +2902,7 @@ private void InitializeComponent() // cbIgnoreUnknownBPOnSaveImport // this.cbIgnoreUnknownBPOnSaveImport.AutoSize = true; - this.cbIgnoreUnknownBPOnSaveImport.Location = new System.Drawing.Point(9, 114); + this.cbIgnoreUnknownBPOnSaveImport.Location = new System.Drawing.Point(9, 130); this.cbIgnoreUnknownBPOnSaveImport.Name = "cbIgnoreUnknownBPOnSaveImport"; this.cbIgnoreUnknownBPOnSaveImport.Size = new System.Drawing.Size(334, 17); this.cbIgnoreUnknownBPOnSaveImport.TabIndex = 2; @@ -2876,7 +2911,7 @@ private void InitializeComponent() // // textBoxImportTribeNameFilter // - this.textBoxImportTribeNameFilter.Location = new System.Drawing.Point(3, 199); + this.textBoxImportTribeNameFilter.Location = new System.Drawing.Point(3, 215); this.textBoxImportTribeNameFilter.Name = "textBoxImportTribeNameFilter"; this.textBoxImportTribeNameFilter.Size = new System.Drawing.Size(730, 20); this.textBoxImportTribeNameFilter.TabIndex = 5; @@ -2884,7 +2919,7 @@ private void InitializeComponent() // label_Filter // this.label_Filter.AutoSize = true; - this.label_Filter.Location = new System.Drawing.Point(3, 183); + this.label_Filter.Location = new System.Drawing.Point(3, 199); this.label_Filter.Name = "label_Filter"; this.label_Filter.Size = new System.Drawing.Size(487, 13); this.label_Filter.TabIndex = 4; @@ -2893,7 +2928,7 @@ private void InitializeComponent() // // cbImportUpdateCreatureStatus // - this.cbImportUpdateCreatureStatus.Location = new System.Drawing.Point(9, 71); + this.cbImportUpdateCreatureStatus.Location = new System.Drawing.Point(9, 87); this.cbImportUpdateCreatureStatus.Name = "cbImportUpdateCreatureStatus"; this.cbImportUpdateCreatureStatus.Size = new System.Drawing.Size(727, 37); this.cbImportUpdateCreatureStatus.TabIndex = 1; @@ -2907,7 +2942,7 @@ private void InitializeComponent() this.groupBox15.Controls.Add(this.dataGridView_FileLocations); this.groupBox15.Controls.Add(this.btAddSavegameFileLocation); this.groupBox15.Controls.Add(this.labelSavegameFileLocationHint); - this.groupBox15.Location = new System.Drawing.Point(6, 278); + this.groupBox15.Location = new System.Drawing.Point(6, 302); this.groupBox15.Name = "groupBox15"; this.groupBox15.Size = new System.Drawing.Size(730, 386); this.groupBox15.TabIndex = 7; @@ -3024,7 +3059,7 @@ private void InitializeComponent() // groupBox14 // this.groupBox14.Controls.Add(this.fileSelectorExtractedSaveFolder); - this.groupBox14.Location = new System.Drawing.Point(6, 225); + this.groupBox14.Location = new System.Drawing.Point(6, 249); this.groupBox14.Name = "groupBox14"; this.groupBox14.Size = new System.Drawing.Size(730, 47); this.groupBox14.TabIndex = 6; @@ -3043,9 +3078,9 @@ private void InitializeComponent() // // label24 // - this.label24.Location = new System.Drawing.Point(6, 16); + this.label24.Location = new System.Drawing.Point(6, 52); this.label24.Name = "label24"; - this.label24.Size = new System.Drawing.Size(730, 40); + this.label24.Size = new System.Drawing.Size(730, 38); this.label24.TabIndex = 0; this.label24.Text = resources.GetString("label24.Text"); // @@ -3656,7 +3691,7 @@ private void InitializeComponent() this.customSCCustom.Location = new System.Drawing.Point(6, 139); this.customSCCustom.Name = "customSCCustom"; this.customSCCustom.Size = new System.Drawing.Size(401, 23); - this.customSCCustom.SoundFile = null; + this.customSCCustom.SoundFile = ""; this.customSCCustom.TabIndex = 4; // // customSCWakeup @@ -3664,7 +3699,7 @@ private void InitializeComponent() this.customSCWakeup.Location = new System.Drawing.Point(6, 81); this.customSCWakeup.Name = "customSCWakeup"; this.customSCWakeup.Size = new System.Drawing.Size(401, 23); - this.customSCWakeup.SoundFile = ""; + this.customSCWakeup.SoundFile = null; this.customSCWakeup.TabIndex = 2; // // customSCBirth @@ -3672,7 +3707,7 @@ private void InitializeComponent() this.customSCBirth.Location = new System.Drawing.Point(6, 110); this.customSCBirth.Name = "customSCBirth"; this.customSCBirth.Size = new System.Drawing.Size(401, 23); - this.customSCBirth.SoundFile = ""; + this.customSCBirth.SoundFile = null; this.customSCBirth.TabIndex = 3; // // customSCStarving @@ -3680,7 +3715,7 @@ private void InitializeComponent() this.customSCStarving.Location = new System.Drawing.Point(6, 52); this.customSCStarving.Name = "customSCStarving"; this.customSCStarving.Size = new System.Drawing.Size(401, 23); - this.customSCStarving.SoundFile = null; + this.customSCStarving.SoundFile = ""; this.customSCStarving.TabIndex = 1; // // label20 @@ -4399,38 +4434,15 @@ private void InitializeComponent() this.panel1.Size = new System.Drawing.Size(758, 30); this.panel1.TabIndex = 12; // - // label67 - // - this.label67.AutoSize = true; - this.label67.Location = new System.Drawing.Point(10, 73); - this.label67.Name = "label67"; - this.label67.Size = new System.Drawing.Size(147, 13); - this.label67.TabIndex = 5; - this.label67.Text = "WildDinoTorporDrainMultiplier"; - // - // NudWildDinoTorporDrainMultiplier + // label68 // - this.NudWildDinoTorporDrainMultiplier.DecimalPlaces = 6; - this.NudWildDinoTorporDrainMultiplier.ForeColor = System.Drawing.SystemColors.WindowText; - this.NudWildDinoTorporDrainMultiplier.Location = new System.Drawing.Point(183, 71); - this.NudWildDinoTorporDrainMultiplier.Maximum = new decimal(new int[] { - 10000, - 0, - 0, - 0}); - this.NudWildDinoTorporDrainMultiplier.Name = "NudWildDinoTorporDrainMultiplier"; - this.NudWildDinoTorporDrainMultiplier.NeutralNumber = new decimal(new int[] { - 0, - 0, - 0, - 0}); - this.NudWildDinoTorporDrainMultiplier.Size = new System.Drawing.Size(72, 20); - this.NudWildDinoTorporDrainMultiplier.TabIndex = 4; - this.NudWildDinoTorporDrainMultiplier.Value = new decimal(new int[] { - 1, - 0, - 0, - 0}); + this.label68.AutoSize = true; + this.label68.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label68.Location = new System.Drawing.Point(6, 16); + this.label68.Name = "label68"; + this.label68.Size = new System.Drawing.Size(506, 20); + this.label68.TabIndex = 1; + this.label68.Text = "Only ARK: Survival Evolved is support, no support for ASA yet."; // // Settings // @@ -4485,6 +4497,7 @@ private void InitializeComponent() ((System.ComponentModel.ISupportInitialize)(this.numericUpDownMaxBreedingSug)).EndInit(); this.groupBox5.ResumeLayout(false); this.groupBox5.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.NudWildDinoTorporDrainMultiplier)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.nudDinoCharacterFoodDrainEvent)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.nudTamingSpeedEvent)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.nudDinoCharacterFoodDrain)).EndInit(); @@ -4592,7 +4605,6 @@ private void InitializeComponent() ((System.ComponentModel.ISupportInitialize)(this.nudWaitBeforeScreenCapture)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.nudWhiteThreshold)).EndInit(); this.panel1.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)(this.NudWildDinoTorporDrainMultiplier)).EndInit(); this.ResumeLayout(false); } @@ -4917,5 +4929,6 @@ private void InitializeComponent() private System.Windows.Forms.CheckBox CbKeepMultipliersForNewLibrary; private System.Windows.Forms.Label label67; private uiControls.Nud NudWildDinoTorporDrainMultiplier; + private System.Windows.Forms.Label label68; } } \ No newline at end of file From fa47279c81d632af8eb7341d09094f06cceb92f7 Mon Sep 17 00:00:00 2001 From: cadon Date: Sun, 19 Nov 2023 14:35:28 +0100 Subject: [PATCH 8/9] missing loc starvingOf --- ARKBreedingStats/local/strings.de.resx | 3 +++ ARKBreedingStats/local/strings.resx | 3 +++ 2 files changed, 6 insertions(+) diff --git a/ARKBreedingStats/local/strings.de.resx b/ARKBreedingStats/local/strings.de.resx index b5f06f95..7759a37b 100644 --- a/ARKBreedingStats/local/strings.de.resx +++ b/ARKBreedingStats/local/strings.de.resx @@ -1325,4 +1325,7 @@ Es ist auch möglich Tiere mit einer Farbe in mehreren möglichen Regionen zu fi Dieser Name existiert bereits in der Bibliothek + + Verhungern von + \ No newline at end of file diff --git a/ARKBreedingStats/local/strings.resx b/ARKBreedingStats/local/strings.resx index a62fa970..d012cb52 100644 --- a/ARKBreedingStats/local/strings.resx +++ b/ARKBreedingStats/local/strings.resx @@ -1337,4 +1337,7 @@ It's also possible to filter for creatures with a color in one of multiple possi This name already exists in the library + + Starving of + \ No newline at end of file From 3bb7d9b3f4592fa8cad659c714e61e11c090744a Mon Sep 17 00:00:00 2001 From: cadon Date: Sun, 19 Nov 2023 14:45:33 +0100 Subject: [PATCH 9/9] ver --- ARKBreedingStats/Properties/AssemblyInfo.cs | 2 +- ARKBreedingStats/_manifest.json | 2 +- ARKBreedingStats/json/values/ASA-values.json | 1686 ++++++++++++++++++ ARKBreedingStats/json/values/_manifest.json | 6 +- 4 files changed, 1691 insertions(+), 5 deletions(-) create mode 100644 ARKBreedingStats/json/values/ASA-values.json diff --git a/ARKBreedingStats/Properties/AssemblyInfo.cs b/ARKBreedingStats/Properties/AssemblyInfo.cs index 8da2005d..f6d6e117 100644 --- a/ARKBreedingStats/Properties/AssemblyInfo.cs +++ b/ARKBreedingStats/Properties/AssemblyInfo.cs @@ -30,6 +30,6 @@ // Revision // [assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("0.57.2.0")] +[assembly: AssemblyFileVersion("0.58.0.0")] [assembly: NeutralResourcesLanguage("en")] diff --git a/ARKBreedingStats/_manifest.json b/ARKBreedingStats/_manifest.json index f89fa24d..79800d7c 100644 --- a/ARKBreedingStats/_manifest.json +++ b/ARKBreedingStats/_manifest.json @@ -4,7 +4,7 @@ "ARK Smart Breeding": { "Id": "ARK Smart Breeding", "Category": "main", - "version": "0.57.2.0" + "version": "0.58.0.0" }, "SpeciesColorImages": { "Id": "SpeciesColorImages", diff --git a/ARKBreedingStats/json/values/ASA-values.json b/ARKBreedingStats/json/values/ASA-values.json new file mode 100644 index 00000000..e9728414 --- /dev/null +++ b/ARKBreedingStats/json/values/ASA-values.json @@ -0,0 +1,1686 @@ +{ + "version": "25.53.449746", + "format": "1.15-asa", + "mod": { + "id": "ASA", + "tag": "", + "title": "Ark: Survival Ascended", + "shortTitle": "ASA", + "official": true + }, + "species": [ + { + "blueprintPath": "/Game/Aberration/Dinos/Basilisk/Basilisk_Character_BP.Basilisk_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Aberration/Dinos/Basilisk/Ghost_Basilisk_Character_BP.Ghost_Basilisk_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Aberration/Dinos/CaveWolf/CaveWolf_Character_BP.CaveWolf_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Aberration/Dinos/Crab/Crab_Character_BP.Crab_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Aberration/Dinos/Lamprey/Lamprey_Character.Lamprey_Character", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/Aberration/Dinos/LanternBird/LanternBird_Character_BP.LanternBird_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Aberration/Dinos/LanternGoat/LanternGoat_Character_BP.LanternGoat_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Aberration/Dinos/LanternLizard/LanternLizard_Character_BP.LanternLizard_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Aberration/Dinos/LanternPug/Ghost_LanternPug_Character_BP.Ghost_LanternPug_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Aberration/Dinos/LanternPug/LanternPug_Character_BP.LanternPug_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Aberration/Dinos/MoleRat/MoleRat_Character_BP.MoleRat_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Aberration/Dinos/Nameless/Ghost_Xenomorph_Character_BP_Male_Surface.Ghost_Xenomorph_Character_BP_Male_Surface", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Aberration/Dinos/Nameless/Xenomorph_Character_BP_Female.Xenomorph_Character_BP_Female", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Aberration/Dinos/Nameless/Xenomorph_Character_BP_Male_Lunar.Xenomorph_Character_BP_Male_Lunar", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Aberration/Dinos/Nameless/Xenomorph_Character_BP_Male_Minion.Xenomorph_Character_BP_Male_Minion", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Aberration/Dinos/Nameless/Xenomorph_Character_BP_Male_Surface.Xenomorph_Character_BP_Male_Surface", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Aberration/Dinos/Nameless/Xenomorph_Character_BP_Male_Tamed.Xenomorph_Character_BP_Male_Tamed", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Aberration/Dinos/Pteroteuthis/Pteroteuthis_Char_BP.Pteroteuthis_Char_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Aberration/Dinos/RockDrake/RockDrake_Character_BP.RockDrake_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Extinction/Dinos/DesertKaiju/DesertKaiju_Character_BP.DesertKaiju_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Extinction/Dinos/DesertKaiju/DesertKaiju_FirstFlockChar_BP.DesertKaiju_FirstFlockChar_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Extinction/Dinos/Enforcer/Enforcer_Character_BP.Enforcer_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Extinction/Dinos/ForestKaiju/ForestKaiju_Character_BP.ForestKaiju_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Extinction/Dinos/ForestKaiju/Minion/Wyvern_Character_BP_Fire_Minion.Wyvern_Character_BP_Fire_Minion", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Extinction/Dinos/Gacha/Gacha_Character_BP.Gacha_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Extinction/Dinos/Gacha/Gacha_Claus_Character_BP.Gacha_Claus_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Extinction/Dinos/GasBag/GasBags_Character_BP.GasBags_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Extinction/Dinos/IceJumper/IceJumper_Character_BP.IceJumper_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Extinction/Dinos/IceKaiju/IceKaiju_Character_BP.IceKaiju_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Extinction/Dinos/Mek/MegaMek_Character_BP.MegaMek_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Extinction/Dinos/Mek/Mek_Character_BP.Mek_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Extinction/Dinos/Owl/Ghost_Owl_Character_BP.Ghost_Owl_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Extinction/Dinos/Owl/Owl_Character_BP.Owl_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Extinction/Dinos/Scout/Scout_Character_BP.Scout_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Extinction/Dinos/Spindles/Spindles_Character_BP.Spindles_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Fjordur/Dinos/Andrewsarchus/Andrewsarchus_Character_BP.Andrewsarchus_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Fjordur/Dinos/Desmodus/Desmodus_Character_BP.Desmodus_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis/Dinos/BiomeVariants/BogPara/Bog_Para_Character_BP.Bog_Para_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis/Dinos/BiomeVariants/BogParaceratherium/Bog_Paracer_Character_BP.Bog_Paracer_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis/Dinos/BiomeVariants/Bog_Raptor/Bog_Raptor_Character_BP.Bog_Raptor_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis/Dinos/BiomeVariants/Bog_Spino/Bog_Spino_Character_BP.Bog_Spino_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis/Dinos/BiomeVariants/Lunar_Salmon/Lunar_Salmon_Character_BP.Lunar_Salmon_Character_BP", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/Genesis/Dinos/BiomeVariants/Ocean_Basilosaurus/Ocean_Basilosaurus_Character_BP.Ocean_Basilosaurus_Character_BP", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/Genesis/Dinos/BiomeVariants/Ocean_Dolphin/Ocean_Dolphin_Character_BP.Ocean_Dolphin_Character_BP", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/Genesis/Dinos/BiomeVariants/Ocean_Dunkleosteus/Ocean_Dunkle_Character_BP.Ocean_Dunkle_Character_BP", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/Genesis/Dinos/BiomeVariants/Ocean_Megalodon/Ocean_Megalodon_Character_BP.Ocean_Megalodon_Character_BP", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/Genesis/Dinos/BiomeVariants/Ocean_Mosasaurus/Ocean_Mosa_Character_BP.Ocean_Mosa_Character_BP", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/Genesis/Dinos/BiomeVariants/Snow_Argentavis/Snow_Argent_Character_BP.Snow_Argent_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis/Dinos/BiomeVariants/Snow_Otter/Snow_Otter_Character_BP.Snow_Otter_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis/Dinos/BiomeVariants/Snow_Saber/Snow_Saber_Character_BP.Snow_Saber_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis/Dinos/BiomeVariants/Snow_WoollyRhino/Snow_Rhino_Character_BP.Snow_Rhino_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis/Dinos/BiomeVariants/Snow_Yutyrannus/Snow_Yutyrannus_Character_BP.Snow_Yutyrannus_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis/Dinos/BiomeVariants/VR/VRDaeodon_Character_BP.VRDaeodon_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis/Dinos/BiomeVariants/VR/VREndDrone_Character_BP.VREndDrone_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis/Dinos/BiomeVariants/VR/VRGigant_Character_BP.VRGigant_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis/Dinos/BiomeVariants/VR/VRRaptor_Character_BP.VRRaptor_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis/Dinos/BiomeVariants/VR/VRRex_Character_BP.VRRex_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis/Dinos/BiomeVariants/VR/VRTrike_Character_BP.VRTrike_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis/Dinos/BiomeVariants/VR/VRXenomorph_Character_BP_Male_Minion.VRXenomorph_Character_BP_Male_Minion", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis/Dinos/BiomeVariants/VR/VRYutyrannus_Character_BP.VRYutyrannus_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis/Dinos/BogSpider/BogSpider_Character_BP.BogSpider_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis/Dinos/Bots/Bot_Character_BP.Bot_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis/Dinos/Bots/Bot_WithBow_BP.Bot_WithBow_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis/Dinos/Bots/Bot_WithSpear_BP.Bot_WithSpear_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis/Dinos/Bots/Bot_WithTekGrenades_BP.Bot_WithTekGrenades_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis/Dinos/Bots/Bot_WithTekRifle_BP.Bot_WithTekRifle_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis/Dinos/Cherufe/Cherufe_Character_BP.Cherufe_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis/Dinos/GiantTurtle/GiantTurtle_Character_BP.GiantTurtle_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis/Dinos/Shapeshifter/Shapeshifter_Large/Shapeshifter_Large_Character_BP.Shapeshifter_Large_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis/Dinos/Shapeshifter/Shapeshifter_Small/Shapeshifter_Small_Character_BP.Shapeshifter_Small_Character_BP", + "fullStatsRaw": [ + [ 55, 0.2, 0.27, 0.5, 0 ], + [ 100, 0.1, 0.1, 0, 0 ], + [ 30, 0.06, 0, 0.5, 0 ], + [ 150, 0.1, 0.1, 0, 0 ], + [ 450, 0.1, 0.1, 0, 0.15 ], + null, + null, + [ 55, 0.02, 0.04, 0, 0 ], + [ 1, 0.05, 0.1, 1, 0.4 ], + [ 1, 0, 0.01, 0.5, 0 ], + null, + null + ], + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis/Dinos/SpaceWhale/SpaceWhale_Character_BP.SpaceWhale_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis/Dinos/Swarms/InsectSwarmChar_BP.InsectSwarmChar_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis/Dinos/Swarms/MicrobeSwarmChar_BP.MicrobeSwarmChar_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis/Dinos/VRMainBoss/VRMainBoss_Character_Easy.VRMainBoss_Character_Easy", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis/Dinos/VRMainBoss/VRMainBoss_Character_Hard.VRMainBoss_Character_Hard", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis/Dinos/VRMainBoss/VRMainBoss_Character_Medium.VRMainBoss_Character_Medium", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/BiomeVariants/Allo_Character_BP_Rockwell.Allo_Character_BP_Rockwell", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/BiomeVariants/Carno_Character_BP_Rockwell.Carno_Character_BP_Rockwell", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/BiomeVariants/Daeodon_Character_BP_Eden.Daeodon_Character_BP_Eden", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/BiomeVariants/Dilo_Character_BP_Rockwell.Dilo_Character_BP_Rockwell", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/BiomeVariants/Direbear_Character_BP_Rockwell.Direbear_Character_BP_Rockwell", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/BiomeVariants/Direwolf_Character_BP_Eden.Direwolf_Character_BP_Eden", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/BiomeVariants/Equus_Character_BP_Eden.Equus_Character_BP_Eden", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/BiomeVariants/GasBags_Character_BP_Eden.GasBags_Character_BP_Eden", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/BiomeVariants/Gigant_Character_BP_Rockwell.Gigant_Character_BP_Rockwell", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/BiomeVariants/Megatherium_Character_BP_Eden.Megatherium_Character_BP_Eden", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/BiomeVariants/Owl_Character_BP_Eden.Owl_Character_BP_Eden", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/BiomeVariants/Para_Character_BP_Eden.Para_Character_BP_Eden", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/BiomeVariants/Procoptodon_Character_BP_Eden.Procoptodon_Character_BP_Eden", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/BiomeVariants/Quetz_Character_BP_Rockwell.Quetz_Character_BP_Rockwell", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/BiomeVariants/Sauropod_Character_BP_Rockwell.Sauropod_Character_BP_Rockwell", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/BiomeVariants/Spindles_Character_BP_Rockwell.Spindles_Character_BP_Rockwell", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/BiomeVariants/Thylacoleo_Character_BP_Eden.Thylacoleo_Character_BP_Eden", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/BiomeVariants/Turtle_Character_BP_Rockwell.Turtle_Character_BP_Rockwell", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/BiomeVariants/Xenomorph_Character_BP_Female_Gen2.Xenomorph_Character_BP_Female_Gen2", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/BiomeVariants/Xenomorph_Character_BP_Male_Gen2.Xenomorph_Character_BP_Male_Gen2", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/BiomeVariants/Xenomorph_Character_BP_Male_Tamed_Gen2.Xenomorph_Character_BP_Male_Tamed_Gen2", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/BrainSlug/BrainSlug_Character_BP.BrainSlug_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/LionfishLion/LionfishLion_Character_BP.LionfishLion_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/LionfishLion/LionfishLion_Character_BP_Female.LionfishLion_Character_BP_Female", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/MilkGlider/MilkGlider_Character_BP.MilkGlider_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/SpaceDolphin/SpaceDolphin_Character_BP.SpaceDolphin_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/Summoner/SummonedDinos/Allo_Character_BP_Rockwell_Summoned.Allo_Character_BP_Rockwell_Summoned", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/Summoner/SummonedDinos/Argent_Character_BP_Summoned.Argent_Character_BP_Summoned", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/Summoner/SummonedDinos/Arthro_Character_BP_Aberrant_Summoned.Arthro_Character_BP_Aberrant_Summoned", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/Summoner/SummonedDinos/Baryonyx_Character_BP_Summoned.Baryonyx_Character_BP_Summoned", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/Summoner/SummonedDinos/Basilisk_Character_BP_Summoned.Basilisk_Character_BP_Summoned", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/Summoner/SummonedDinos/Bat_Character_BP_Summoned.Bat_Character_BP_Summoned", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/Summoner/SummonedDinos/BoaFrill_Character_BP_Summoned.BoaFrill_Character_BP_Summoned", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/Summoner/SummonedDinos/BogSpider_Character_BP_Summoned.BogSpider_Character_BP_Summoned", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/Summoner/SummonedDinos/Carno_Character_BP_Rockwell_Summoned.Carno_Character_BP_Rockwell_Summoned", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/Summoner/SummonedDinos/CaveWolf_Character_BP_Summoned.CaveWolf_Character_BP_Summoned", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/Summoner/SummonedDinos/Cherufe_Character_BP_Summoned.Cherufe_Character_BP_Summoned", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/Summoner/SummonedDinos/Crab_Character_BP_Summoned.Crab_Character_BP_Summoned", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/Summoner/SummonedDinos/Daeodon_Character_BP_Eden_Summoned.Daeodon_Character_BP_Eden_Summoned", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/Summoner/SummonedDinos/Dilo_Character_BP_Rockwell_Summoned.Dilo_Character_BP_Rockwell_Summoned", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/Summoner/SummonedDinos/Direbear_Character_BP_Summoned.Direbear_Character_BP_Summoned", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/Summoner/SummonedDinos/Direwolf_Character_BP_Eden_Summoned.Direwolf_Character_BP_Eden_Summoned", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/Summoner/SummonedDinos/IceJumper_Character_BP_Summoned.IceJumper_Character_BP_Summoned", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/Summoner/SummonedDinos/Kaprosuchus_Character_BP_Summoned.Kaprosuchus_Character_BP_Summoned", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/Summoner/SummonedDinos/LionfishLion_Character_BP_Summoned.LionfishLion_Character_BP_Summoned", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/Summoner/SummonedDinos/Mantis_Character_BP_Summoned.Mantis_Character_BP_Summoned", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/Summoner/SummonedDinos/Megatherium_Character_BP_Eden_Summoned.Megatherium_Character_BP_Eden_Summoned", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/Summoner/SummonedDinos/Microraptor_Character_BP_Summoned.Microraptor_Character_BP_Summoned", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/Summoner/SummonedDinos/Owl_Character_BP_Eden_Summoned.Owl_Character_BP_Eden_Summoned", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/Summoner/SummonedDinos/Paracer_Character_BP_Summoned.Paracer_Character_BP_Summoned", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/Summoner/SummonedDinos/Ptero_Character_BP_Summoned.Ptero_Character_BP_Summoned", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/Summoner/SummonedDinos/Purlovia_Character_BP_Summoned.Purlovia_Character_BP_Summoned", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/Summoner/SummonedDinos/Quetz_Character_BP_Rockwell_Summoned.Quetz_Character_BP_Rockwell_Summoned", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/Summoner/SummonedDinos/Rex_Character_BP_Summoned.Rex_Character_BP_Summoned", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/Summoner/SummonedDinos/RockDrake_Character_BP_Summoned.RockDrake_Character_BP_Summoned", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/Summoner/SummonedDinos/RockGolem_Character_BP_Summoned.RockGolem_Character_BP_Summoned", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/Summoner/SummonedDinos/Saber_Character_BP_Summoned.Saber_Character_BP_Summoned", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/Summoner/SummonedDinos/Sarco_Character_BP_Summoned.Sarco_Character_BP_Summoned", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/Summoner/SummonedDinos/Sauropod_Character_BP_Rockwell_Summoned.Sauropod_Character_BP_Rockwell_Summoned", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/Summoner/SummonedDinos/Shapeshifter_Large_Character_BP_Summoned.Shapeshifter_Large_Character_BP_Summoned", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/Summoner/SummonedDinos/SpiderS_Character_BP_Summoned.SpiderS_Character_BP_Summoned", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/Summoner/SummonedDinos/Spindles_Character_BP_Rockwell_Summoned.Spindles_Character_BP_Rockwell_Summoned", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/Summoner/SummonedDinos/SpineyLizard_Character_BP_Summoned.SpineyLizard_Character_BP_Summoned", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/Summoner/SummonedDinos/Spino_Character_BP_Summoned.Spino_Character_BP_Summoned", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/Summoner/SummonedDinos/Stego_Character_BP_Summoned.Stego_Character_BP_Summoned", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/Summoner/SummonedDinos/TerrorBird_Character_BP_Summoned.TerrorBird_Character_BP_Summoned", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/Summoner/SummonedDinos/Therizino_Character_BP_Summoned.Therizino_Character_BP_Summoned", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/Summoner/SummonedDinos/Thylacoleo_Character_BP_Eden_Summoned.Thylacoleo_Character_BP_Eden_Summoned", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/Summoner/SummonedDinos/Trike_Character_BP_Summoned.Trike_Character_BP_Summoned", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/Summoner/SummonedDinos/Xenomorph_Character_BP_Male_Gen2_Summoned.Xenomorph_Character_BP_Male_Gen2_Summoned", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/Summoner/SummonedDinos/Yutyrannus_Character_BP_Summoned.Yutyrannus_Character_BP_Summoned", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/Summoner/Summoner_Character_BP.Summoner_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/TekStrider/TekStrider_Character_BP.TekStrider_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/Genesis2/Dinos/TekWyvern/TekWyvern_Character_BP.TekWyvern_Character_BP", + "fullStatsRaw": [ + [ 1575, 0.15, 0.162, -960, 0 ], + [ 415, 0.05, 0.05, 0, 0 ], + [ 725, 0.06, 0, 0.5, 0 ], + [ 150, 0.1, 0.1, 0, 0 ], + [ 1800, 0.1, 0.1, 0, 0 ], + null, + null, + [ 400, 0.02, 0.04, 0, 0 ], + [ 1, 0.05, 0.1, -0.25, 0.4 ], + [ 1, 0, 0.01, 0, 0 ], + null, + null + ], + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/LostIsland/Dinos/Amargasaurus/Amargasaurus_Character_BP.Amargasaurus_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/LostIsland/Dinos/Dinopithecus/Dinopithecus_Character_BP.Dinopithecus_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/LostIsland/Dinos/Sinomacrops/Sinomacrops_Character_BP.Sinomacrops_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Achatina/Achatina_Character_BP.Achatina_Character_BP", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Achatina/Achatina_Character_BP_Aberrant.Achatina_Character_BP_Aberrant", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Allosaurus/Allo_Character_BP.Allo_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Ammonite/Ammonite_Character.Ammonite_Character", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Anglerfish/Angler_Character_BP.Angler_Character_BP", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Anglerfish/Angler_Character_BP_Aberrant.Angler_Character_BP_Aberrant", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Ankylo/Ankylo_Character_BP.Ankylo_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Ankylo/Ankylo_Character_BP_Aberrant.Ankylo_Character_BP_Aberrant", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Ant/Ant_Character_BP.Ant_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Ant/FlyingAnt_Character_BP.FlyingAnt_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Archaeopteryx/Archa_Character_BP.Archa_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Argentavis/Argent_Character_BP.Argent_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Arthropluera/Arthro_Character_BP.Arthro_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Arthropluera/Arthro_Character_BP_Aberrant.Arthro_Character_BP_Aberrant", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Baryonyx/Baryonyx_Character_BP.Baryonyx_Character_BP", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Baryonyx/Baryonyx_Character_BP_Aberrant.Baryonyx_Character_BP_Aberrant", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Basilosaurus/Basilosaurus_Character_BP.Basilosaurus_Character_BP", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Bat/Bat_Character_BP.Bat_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Beaver/Beaver_Character_BP.Beaver_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Bee/Bee_Character_BP.Bee_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Bee/Bee_Queen_Character_BP.Bee_Queen_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Bigfoot/Bigfoot_Character_BP.Bigfoot_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Bigfoot/Bigfoot_Character_BP_Aberrant.Bigfoot_Character_BP_Aberrant", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Bigfoot/Bigfoot_Character_BP_Aggressive.Bigfoot_Character_BP_Aggressive", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Bigfoot/Bigfoot_Character_BP_Aggressive_Hard.Bigfoot_Character_BP_Aggressive_Hard", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Bigfoot/Bigfoot_Character_BP_Aggressive_Med.Bigfoot_Character_BP_Aggressive_Med", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Bigfoot/Yeti_Character_BP.Yeti_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/BoaFrill/BoaFrill_Character_BP.BoaFrill_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/BoaFrill/BoaFrill_Character_BP_Aberrant.BoaFrill_Character_BP_Aberrant", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Carcharodontosaurus/Carcha_Character_BP.Carcha_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Carno/Bone_MegaCarno_Character_BP.Bone_MegaCarno_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Carno/Carno_Character_BP.Carno_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Carno/Carno_Character_BP_Aberrant.Carno_Character_BP_Aberrant", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Carno/MegaCarno_Character_BP.MegaCarno_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Chalicotherium/Chalico_Character_BP.Chalico_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Cnidaria/Cnidaria_Character_BP.Cnidaria_Character_BP", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Cnidaria/Cnidaria_Character_BP_Aberrant.Cnidaria_Character_BP_Aberrant", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Coelacanth/Coel_Character_BP.Coel_Character_BP", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Coelacanth/Coel_Character_BP_Aberrant.Coel_Character_BP_Aberrant", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Coelacanth/Coel_Character_BP_Ocean.Coel_Character_BP_Ocean", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Coelacanth/Coel_Character_BP_VDay.Coel_Character_BP_VDay", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Coelacanth/Coel_Character_BP_VDay_Aberrant.Coel_Character_BP_VDay_Aberrant", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Coelacanth/Coel_Character_BP_VDay_Ocean.Coel_Character_BP_VDay_Ocean", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Compy/Compy_Character_BP.Compy_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/CrystalWyvern/CrystalWyvern_Character_BP_Blood.CrystalWyvern_Character_BP_Blood", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/CrystalWyvern/CrystalWyvern_Character_BP_Ember.CrystalWyvern_Character_BP_Ember", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/CrystalWyvern/CrystalWyvern_Character_BP_WS.CrystalWyvern_Character_BP_WS", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Daeodon/Daeodon_Character_BP.Daeodon_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Dilo/Dilo_Character_BP.Dilo_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Dimetrodon/Dimetro_Character_BP.Dimetro_Character_BP", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Dimetrodon/Dimetro_Character_BP_Aberrant.Dimetro_Character_BP_Aberrant", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Dimorphodon/Dimorph_Character_BP.Dimorph_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Dimorphodon/Dimorph_Character_BP_Aberrant.Dimorph_Character_BP_Aberrant", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Dimorphodon/Dimorph_Character_BP_Aggressive_DragonBoss.Dimorph_Character_BP_Aggressive_DragonBoss", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Dimorphodon/Dimorph_Character_BP_Aggressive_DragonBoss_Hard.Dimorph_Character_BP_Aggressive_DragonBoss_Hard", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Dimorphodon/Dimorph_Character_BP_Aggressive_DragonBoss_Med.Dimorph_Character_BP_Aggressive_DragonBoss_Med", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Diplocaulus/Diplocaulus_Character_BP.Diplocaulus_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Diplocaulus/Diplocaulus_Character_BP_Aberrant.Diplocaulus_Character_BP_Aberrant", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Diplodocus/Diplodocus_Character_BP.Diplodocus_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Diplodocus/Diplodocus_Character_BP_Aberrant.Diplodocus_Character_BP_Aberrant", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Direbear/Direbear_Character_BP.Direbear_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Direbear/Direbear_Character_BP_Aberrant.Direbear_Character_BP_Aberrant", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Direbear/Direbear_Character_Polar.Direbear_Character_Polar", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Direwolf/Direwolf_Character_BP.Direwolf_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Direwolf/Ghost_Direwolf_Character_BP.Ghost_Direwolf_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Dodo/Dodo_Character_BP.Dodo_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Dodo/Dodo_Character_BP_Aberrant.Dodo_Character_BP_Aberrant", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Dodo/Dodo_Character_BP_Bunny.Dodo_Character_BP_Bunny", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Dodo/Turkey_Character_BP.Turkey_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Doedicurus/Doed_Character_BP.Doed_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Doedicurus/Doed_Character_BP_Aberrant.Doed_Character_BP_Aberrant", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Dolphin/Dolphin_Character_BP.Dolphin_Character_BP", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Dragon/Dragon_Character_BP_Boss_Easy.Dragon_Character_BP_Boss_Easy", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Dragon/Dragon_Character_BP_Boss_Hard.Dragon_Character_BP_Boss_Hard", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Dragon/Dragon_Character_BP_Boss_Medium.Dragon_Character_BP_Boss_Medium", + "fullStatsRaw": [ + [ 864000, 0.2, 0.2, 0.3, 0 ], + [ 10000, 0.1, 0.1, 0, 0 ], + [ 350, 0.06, 0, 0.5, 0 ], + [ 2000, 0.1, 0.1, 0, 0 ], + [ 2600, 0.1, 0.1, 0, 0 ], + null, + null, + [ 4000, 0.02, 0.02, 0, 0 ], + [ 1, 0.05, 0.04, 0.3, 0.3 ], + [ 1, 0, 0, 0, 0 ], + null, + null + ], + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Dragonfly/Dragonfly_Character_BP.Dragonfly_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Dragonfly/Dragonfly_Character_BP_Aberrant.Dragonfly_Character_BP_Aberrant", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/DungBeetle/DungBeetle_Character_BP.DungBeetle_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/DungBeetle/DungBeetle_Character_BP_Aberrant.DungBeetle_Character_BP_Aberrant", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Dunkleosteus/Dunkle_Character_BP.Dunkle_Character_BP", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Eel/Eel_Character_BP.Eel_Character_BP", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Eel/Eel_Character_BP_Aberrant.Eel_Character_BP_Aberrant", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Equus/Equus_Character_BP.Equus_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Equus/Equus_Character_BP_Aberrant.Equus_Character_BP_Aberrant", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Equus/Equus_Character_BP_Unicorn.Equus_Character_BP_Unicorn", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Eurypterid/Euryp_Character.Euryp_Character", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Gallimimus/Galli_Character_BP.Galli_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Giganotosaurus/BionicGigant_Character_BP.BionicGigant_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Giganotosaurus/Bone_Gigant_Character_BP.Bone_Gigant_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Giganotosaurus/Gigant_Character_BP.Gigant_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Giganotosaurus/Gigant_Character_BP_TekCave.Gigant_Character_BP_TekCave", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Gorilla/Gorilla_Character_BP_Easy.Gorilla_Character_BP_Easy", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Gorilla/Gorilla_Character_BP_Hard.Gorilla_Character_BP_Hard", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Gorilla/Gorilla_Character_BP_Medium.Gorilla_Character_BP_Medium", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Griffin/Griffin_Character_BP.Griffin_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Hesperornis/Hesperornis_Character_BP.Hesperornis_Character_BP", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Hyaenodon/Hyaenodon_Character_BP.Hyaenodon_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Ichthyornis/Ichthyornis_Character_BP.Ichthyornis_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Iguanodon/Iguanodon_Character_BP.Iguanodon_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Iguanodon/Iguanodon_Character_BP_Aberrant.Iguanodon_Character_BP_Aberrant", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Kairuku/Kairuku_Character_BP.Kairuku_Character_BP", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Kaprosuchus/Kaprosuchus_Character_BP.Kaprosuchus_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Kentrosaurus/Kentro_Character_BP.Kentro_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Leech/Leech_Character.Leech_Character", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Leech/Leech_Character_Diseased.Leech_Character_Diseased", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Leedsichthys/Alpha_Leedsichthys_Character_BP.Alpha_Leedsichthys_Character_BP", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Leedsichthys/Leedsichthys_Character_BP.Leedsichthys_Character_BP", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Liopleurodon/Liopleurodon_Character_BP.Liopleurodon_Character_BP", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Lystrosaurus/Lystro_Character_BP.Lystro_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Lystrosaurus/Lystro_Character_BP_Aberrant.Lystro_Character_BP_Aberrant", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Mammoth/Mammoth_Character_BP.Mammoth_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Manta/Manta_Character_BP.Manta_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Manta/Manta_Character_BP_Aberrant.Manta_Character_BP_Aberrant", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Megalania/Megalania_Character_BP.Megalania_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Megalania/Megalania_Character_BP_Aberrant.Megalania_Character_BP_Aberrant", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Megalodon/MEgaMegalodon_Character_BP.MegaMegalodon_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Megalodon/Megalodon_Character_BP.Megalodon_Character_BP", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Megalosaurus/Megalosaurus_Character_BP.Megalosaurus_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Megalosaurus/Megalosaurus_Character_BP_Aberrant.Megalosaurus_Character_BP_Aberrant", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Megalosaurus/Megalosaurus_Character_BP_TekCave.Megalosaurus_Character_BP_TekCave", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Megatherium/Megatherium_Character_BP.Megatherium_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Microraptor/Microraptor_Character_BP.Microraptor_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Monkey/Monkey_Character_BP.Monkey_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Monkey/Monkey_Character_BP_Aggressive.Monkey_Character_BP_Aggressive", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Monkey/Monkey_Character_BP_Aggressive_Hard.Monkey_Character_BP_Aggressive_Hard", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Monkey/Monkey_Character_BP_Aggressive_Med.Monkey_Character_BP_Aggressive_Med", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Mosasaurus/Mosa_Character_BP.Mosa_Character_BP", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Mosasaurus/Mosa_Character_BP_Cave.Mosa_Character_BP_Cave", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Mosasaurus/Mosa_Character_BP_Mega.Mosa_Character_BP_Mega", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Mosasaurus/Mosa_Character_BP_Mega_Cave.Mosa_Character_BP_Mega_Cave", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Moschops/Moschops_Character_BP.Moschops_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Moschops/Moschops_Character_BP_Aberrant.Moschops_Character_BP_Aberrant", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Otter/Otter_Character_BP.Otter_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Otter/Otter_Character_BP_Aberrant.Otter_Character_BP_Aberrant", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Oviraptor/BunnyOviraptor_Character_BP.BunnyOviraptor_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Oviraptor/Oviraptor_Character_BP.Oviraptor_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Pachy/Pachy_Character_BP.Pachy_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Pachyrhinosaurus/Pachyrhino_Character_BP.Pachyrhino_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Para/BionicPara_Character_BP.BionicPara_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Para/Para_Character_BP.Para_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Para/Para_Character_BP_Aberrant.Para_Character_BP_Aberrant", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Paraceratherium/Paracer_Character_BP.Paracer_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Paraceratherium/Paracer_Character_BP_Aberrant.Paracer_Character_BP_Aberrant", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Pegomastax/Pegomastax_Character_BP.Pegomastax_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Pelagornis/Pela_Character_BP.Pela_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Phiomia/Phiomia_Character_BP.Phiomia_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Piranha/Piranha_Character_BP.Piranha_Character_BP", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Piranha/Piranha_Character_BP_Aberrant.Piranha_Character_BP_Aberrant", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Piranha/Piranha_Character_BP_BreakNet.Piranha_Character_BP_BreakNet", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Plesiosaur/Plesiosaur_Character_BP.Plesiosaur_Character_BP", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Procoptodon/Procoptodon_Character_BP.Procoptodon_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Ptero/Ptero_Character_BP.Ptero_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Ptero/Ptero_Minion_Character_BP.Ptero_Minion_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Ptero/Ptero_Minion_Character_Hard.Ptero_Minion_Character_Hard", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Ptero/Ptero_Minion_Character_Med.Ptero_Minion_Character_Med", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Purlovia/Purlovia_Character_BP.Purlovia_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Purlovia/Purlovia_Character_BP_Aberrant.Purlovia_Character_BP_Aberrant", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Purlovia/Purlovia_Character_BP_Polar.Purlovia_Character_BP_Polar", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Quetzalcoatlus/Bone_Quetz_Character_BP.Bone_Quetz_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Quetzalcoatlus/Quetz_Character_BP.Quetz_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Raptor/Bone_MegaRaptor_Character_BP.Bone_MegaRaptor_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Raptor/MegaRaptor_Character_BP.MegaRaptor_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Raptor/Raptor_Character_BP.Raptor_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Raptor/Raptor_Character_BP_Aberrant.Raptor_Character_BP_Aberrant", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Raptor/Uberraptor/Deinonychus_Character_BP.Deinonychus_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Rex/Bone_MegaRex_Character_BP.Bone_MegaRex_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Rex/Ghost_Rex_Character_BP.Ghost_Rex_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Rex/MegaRex_Character_BP.MegaRex_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Rex/Rex_Character_BP.Rex_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Rhyniognatha/Rhynio_Character_BP.Rhynio_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Saber/Saber_Character_BP.Saber_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Salmon/Salmon_Character_Aberrant.Salmon_Character_Aberrant", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Salmon/Salmon_Character_BP.Salmon_Character_BP", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Salmon/Salmon_Character_Rare_BP.Salmon_Character_Rare_BP", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Sarco/Sarco_Character_BP.Sarco_Character_BP", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Sarco/Sarco_Character_BP_Aberrant.Sarco_Character_BP_Aberrant", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Sauropod/Bone_Sauropod_Character_BP.Bone_Sauropod_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Sauropod/Sauropod_Character_BP.Sauropod_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Scorpion/Scorpion_Character_BP.Scorpion_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Scorpion/Scorpion_Character_BP_Aberrant.Scorpion_Character_BP_Aberrant", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Sheep/Sheep_Character_BP.Sheep_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Sheep/Sheep_Character_BP_Aberrant.Sheep_Character_BP_Aberrant", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Spider-Large/SpiderL_Character_BP_Easy.SpiderL_Character_BP_Easy", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Spider-Large/SpiderL_Character_BP_Hard.SpiderL_Character_BP_Hard", + "fullStatsRaw": [ + [ 972000, 0.25, 0.27, 0.5, 0 ], + [ 150, 0.1, 0.1, 0, 0 ], + [ 100000, 0.06, 0, 0.5, 0 ], + [ 150, 0.1, 0.1, 0, 0 ], + [ 1500, 0.1, 0.1, 0, 0 ], + null, + null, + [ 4000, 0.02, 0.04, 0, 0 ], + [ 1, 0.075, 0.1, 0.5, 0.4 ], + [ 1, 0, 0.01, 0.151, 0 ], + null, + null + ], + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Spider-Large/SpiderL_Character_BP_Medium.SpiderL_Character_BP_Medium", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Spider-Small/SpiderS_Character_BP.SpiderS_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Spider-Small/SpiderS_Character_BP_Aberrant.SpiderS_Character_BP_Aberrant", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Spider-Small/SpiderS_Character_BP_Aggressive.SpiderS_Character_BP_Aggressive", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Spider-Small/SpiderS_Character_BP_Aggressive_Hard.SpiderS_Character_BP_Aggressive_Hard", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Spider-Small/SpiderS_Character_BP_Aggressive_Med.SpiderS_Character_BP_Aggressive_Med", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Spino/Spino_Character_BP.Spino_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Spino/Spino_Character_BP_Aberrant.Spino_Character_BP_Aberrant", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Stag/Stag_Character_BP.Stag_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Stego/Bone_Stego_Character_BP.Bone_Stego_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Stego/Stego_Character_BP.Stego_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Stego/Stego_Character_BP_Aberrant.Stego_Character_BP_Aberrant", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Tapejara/Tapejara_Character_BP.Tapejara_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/TerrorBird/TerrorBird_Character_BP.TerrorBird_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Therizinosaurus/Therizino_Character_BP.Therizino_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Thylacoleo/Thylacoleo_Character_BP.Thylacoleo_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Titanosaur/Titanosaur_Character_BP.Titanosaur_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Toad/Toad_Character_BP.Toad_Character_BP", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Toad/Toad_Character_BP_Aberrant.Toad_Character_BP_Aberrant", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Trike/BionicTrike_Character_BP.BionicTrike_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Trike/Bone_Trike_Character_BP.Bone_Trike_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Trike/Trike_Character_BP.Trike_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Trike/Trike_Character_BP_Aberrant.Trike_Character_BP_Aberrant", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Trilobite/Trilobite_Character.Trilobite_Character", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Trilobite/Trilobite_Character_Aberrant.Trilobite_Character_Aberrant", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Troodon/Troodon_Character_BP.Troodon_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Tropeognathus/Tropeognathus_Character_BP.Tropeognathus_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Turtle/Turtle_Character_BP.Turtle_Character_BP", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Turtle/Turtle_Character_BP_Aberrant.Turtle_Character_BP_Aberrant", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Tusoteuthis/Mega_Tusoteuthis_Character_BP.Mega_Tusoteuthis_Character_BP", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Tusoteuthis/Tusoteuthis_Character_BP.Tusoteuthis_Character_BP", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Tusoteuthis/Tusoteuthis_Character_BP_Caves.Tusoteuthis_Character_BP_Caves", + "skipWildLevelStats": 520 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/WoollyRhino/Rhino_Character_BP.Rhino_Character_BP", + "skipWildLevelStats": 512 + }, + { + "blueprintPath": "/Game/PrimalEarth/Dinos/Yutyrannus/Yutyrannus_Character_BP.Yutyrannus_Character_BP", + "skipWildLevelStats": 512 + } + ], + "dyeStartIndex": 128, + "dyeDefinitions": [ + [ "Burn Coloring", [ 0.033105, 0.0, 0.0, 1.0 ] ], + [ "Scab Coloring", [ 0.132868, 0.0, 0.0, 1.0 ] ], + [ "Gore Coloring", [ 0.450786, 0.0, 0.0, 1.0 ] ], + [ "Red Coloring", [ 1.0, 0.0, 0.0, 1.0 ] ], + [ "Tulip Coloring", [ 1.0, 0.171441, 0.171441, 1.0 ] ], + [ "Salmon Coloring", [ 1.0, 0.520996, 0.520996, 1.0 ] ], + [ "Incense Coloring", [ 0.693872, 0.266356, 0.266356, 1.0 ] ], + [ "Edocha Coloring", [ 0.381326, 0.0865, 0.0865, 1.0 ] ], + [ "Bronze Coloring", [ 0.033105, 0.009721, 0.0, 1.0 ] ], + [ "Terracotta Coloring", [ 0.132868, 0.033105, 0.0, 1.0 ] ], + [ "Windsor Coloring", [ 0.450786, 0.099899, 0.0, 1.0 ] ], + [ "Orange Coloring", [ 1.0, 0.212231, 0.0, 1.0 ] ], + [ "Cantaloupe Coloring", [ 1.0, 0.48515, 0.171441, 1.0 ] ], + [ "Peach Coloring", [ 1.0, 0.737911, 0.520996, 1.0 ] ], + [ "Latte Coloring", [ 0.693872, 0.450786, 0.266356, 1.0 ] ], + [ "Dirt Coloring", [ 0.381326, 0.201556, 0.0865, 1.0 ] ], + [ "Drab Coloring", [ 0.033105, 0.033105, 0.0, 1.0 ] ], + [ "Olive Coloring", [ 0.132868, 0.132868, 0.0, 1.0 ] ], + [ "Citron Coloring", [ 0.445201, 0.450786, 0.0, 1.0 ] ], + [ "Yellow Coloring", [ 1.0, 1.0, 0.0, 1.0 ] ], + [ "Canary Coloring", [ 1.0, 1.0, 0.171441, 1.0 ] ], + [ "Buttermilk Coloring", [ 1.0, 1.0, 0.520996, 1.0 ] ], + [ "Khaki Coloring", [ 0.693872, 0.693872, 0.266356, 1.0 ] ], + [ "Mold Coloring", [ 0.381326, 0.381326, 0.0865, 1.0 ] ], + [ "Swamp Coloring", [ 0.009721, 0.033105, 0.0, 1.0 ] ], + [ "Avocado Coloring", [ 0.033105, 0.132868, 0.0, 1.0 ] ], + [ "Orc Coloring", [ 0.099899, 0.450786, 0.0, 1.0 ] ], + [ "Chartreuse Coloring", [ 0.215861, 1.0, 0.0, 1.0 ] ], + [ "Menthol Coloring", [ 0.48515, 1.0, 0.171441, 1.0 ] ], + [ "Nyanza Coloring", [ 0.737911, 1.0, 0.520996, 1.0 ] ], + [ "Putrescence Coloring", [ 0.450786, 0.693872, 0.266356, 1.0 ] ], + [ "Filth Coloring", [ 0.201556, 0.381326, 0.0865, 1.0 ] ], + [ "Nori Coloring", [ 0.0, 0.033105, 0.0, 1.0 ] ], + [ "Hunter Coloring", [ 0.0, 0.132868, 0.0, 1.0 ] ], + [ "Emerald Coloring", [ 0.0, 0.450786, 0.0, 1.0 ] ], + [ "Green Coloring", [ 0.0, 1.0, 0.0, 1.0 ] ], + [ "Mint Coloring", [ 0.171441, 1.0, 0.171441, 1.0 ] ], + [ "Pistachio Coloring", [ 0.520996, 1.0, 0.520996, 1.0 ] ], + [ "Celadon Coloring", [ 0.266356, 0.693872, 0.266356, 1.0 ] ], + [ "Chateau Coloring", [ 0.0865, 0.381326, 0.0865, 1.0 ] ], + [ "Jungle Coloring", [ 0.0, 0.033105, 0.01033, 1.0 ] ], + [ "Forest Coloring", [ 0.0, 0.132868, 0.033105, 1.0 ] ], + [ "Lagoon Coloring", [ 0.0, 0.450786, 0.099899, 1.0 ] ], + [ "Spring Coloring", [ 0.0, 1.0, 0.215861, 1.0 ] ], + [ "Aquamarine Coloring", [ 0.171441, 1.0, 0.48515, 1.0 ] ], + [ "Seafoam Coloring", [ 0.520996, 1.0, 0.737911, 1.0 ] ], + [ "Turquoise Coloring", [ 0.266356, 0.693872, 0.450786, 1.0 ] ], + [ "Shamrock Coloring", [ 0.0865, 0.381326, 0.201556, 1.0 ] ], + [ "Mariana Coloring", [ 0.0, 0.033105, 0.033105, 1.0 ] ], + [ "Skobeloff Coloring", [ 0.0, 0.132868, 0.132868, 1.0 ] ], + [ "Teal Coloring", [ 0.0, 0.450786, 0.450786, 1.0 ] ], + [ "Cyan Coloring", [ 0.0, 1.0, 1.0, 1.0 ] ], + [ "Electricity Coloring", [ 0.171441, 1.0, 1.0, 1.0 ] ], + [ "Celeste Coloring", [ 0.520996, 1.0, 1.0, 1.0 ] ], + [ "Crystal Coloring", [ 0.266356, 0.693872, 0.693872, 1.0 ] ], + [ "Ocean Coloring", [ 0.0865, 0.381326, 0.381326, 1.0 ] ], + [ "Cetecean Coloring", [ 0.0, 0.01033, 0.033105, 1.0 ] ], + [ "Prussian Coloring", [ 0.0, 0.033105, 0.132868, 1.0 ] ], + [ "Sapphire Coloring", [ 0.0, 0.099899, 0.450786, 1.0 ] ], + [ "Azure Coloring", [ 0.0, 0.212231, 1.0, 1.0 ] ], + [ "Babyblue Coloring", [ 0.171441, 0.48515, 1.0, 1.0 ] ], + [ "Cornflower Coloring", [ 0.520996, 0.737911, 1.0, 1.0 ] ], + [ "Overcast Coloring", [ 0.262251, 0.445201, 0.693872, 1.0 ] ], + [ "Moonstone Coloring", [ 0.0865, 0.201556, 0.381326, 1.0 ] ], + [ "Midnight Coloring", [ 0.0, 0.0, 0.033105, 1.0 ] ], + [ "Navy Coloring", [ 0.0, 0.0, 0.132868, 1.0 ] ], + [ "Cobalt Coloring", [ 0.0, 0.0, 0.450786, 1.0 ] ], + [ "Blue Coloring", [ 0.0, 0.0, 1.0, 1.0 ] ], + [ "Denim Coloring", [ 0.171441, 0.171441, 1.0, 1.0 ] ], + [ "Ice Coloring", [ 0.520996, 0.520996, 1.0, 1.0 ] ], + [ "Frost Coloring", [ 0.262251, 0.262251, 0.693872, 1.0 ] ], + [ "Deepfreeze Coloring", [ 0.0865, 0.0865, 0.381326, 1.0 ] ], + [ "Twilight Coloring", [ 0.009721, 0.0, 0.033105, 1.0 ] ], + [ "Eminence Coloring", [ 0.033105, 0.0, 0.132868, 1.0 ] ], + [ "Indigo Coloring", [ 0.099899, 0.0, 0.450786, 1.0 ] ], + [ "Violet Coloring", [ 0.215861, 0.0, 1.0, 1.0 ] ], + [ "Lilac Coloring", [ 0.48515, 0.171441, 1.0, 1.0 ] ], + [ "Lavender Coloring", [ 0.737911, 0.520996, 1.0, 1.0 ] ], + [ "Mauve Coloring", [ 0.450786, 0.266356, 0.693872, 1.0 ] ], + [ "Royalty Coloring", [ 0.201556, 0.0865, 0.381326, 1.0 ] ], + [ "Eggplant Coloring", [ 0.033105, 0.0, 0.033105, 1.0 ] ], + [ "Plum Coloring", [ 0.132868, 0.0, 0.132868, 1.0 ] ], + [ "Purple Coloring", [ 0.445201, 0.0, 0.450786, 1.0 ] ], + [ "Magenta Coloring", [ 1.0, 0.0, 1.0, 1.0 ] ], + [ "Pink Coloring", [ 1.0, 0.171441, 1.0, 1.0 ] ], + [ "Cottoncandy Coloring", [ 1.0, 0.520996, 1.0, 1.0 ] ], + [ "Orchid Coloring", [ 0.693872, 0.266356, 0.693872, 1.0 ] ], + [ "Bruise Coloring", [ 0.381326, 0.0865, 0.381326, 1.0 ] ], + [ "Raisin Coloring", [ 0.033105, 0.0, 0.009721, 1.0 ] ], + [ "Tyrian Coloring", [ 0.132868, 0.0, 0.033105, 1.0 ] ], + [ "Lust Coloring", [ 0.450786, 0.0, 0.099899, 1.0 ] ], + [ "Fuschia Coloring", [ 1.0, 0.0, 0.212231, 1.0 ] ], + [ "Flamingo Coloring", [ 1.0, 0.171441, 0.48515, 1.0 ] ], + [ "Valentine Coloring", [ 1.0, 0.520996, 0.737911, 1.0 ] ], + [ "Kobi Coloring", [ 0.693872, 0.266356, 0.450786, 1.0 ] ], + [ "Rouge Coloring", [ 0.381326, 0.0865, 0.201556, 1.0 ] ], + [ "Black Coloring", [ 0.01, 0.01, 0.01, 1.0 ] ], + [ "Shadow Coloring", [ 0.033105, 0.033105, 0.033105, 1.0 ] ], + [ "Charcoal Coloring", [ 0.074214, 0.074214, 0.074214, 1.0 ] ], + [ "Gunmetal Coloring", [ 0.132868, 0.132868, 0.132868, 1.0 ] ], + [ "Slate Coloring", [ 0.215861, 0.215861, 0.215861, 1.0 ] ], + [ "Steel Coloring", [ 0.318547, 0.318547, 0.318547, 1.0 ] ], + [ "Grey Coloring", [ 0.450786, 0.450786, 0.450786, 1.0 ] ], + [ "Silver Coloring", [ 0.603828, 0.603828, 0.603828, 1.0 ] ], + [ "Wisp Coloring", [ 0.791298, 0.791298, 0.791298, 1.0 ] ], + [ "White Coloring", [ 1.0, 1.0, 1.0, 1.0 ] ], + [ "Mud Coloring", [ 0.05098, 0.035294, 0.015686, 1.0 ] ], + [ "Bark Coloring", [ 0.099899, 0.06301, 0.017642, 1.0 ] ], + [ "Brown Coloring", [ 0.215861, 0.127438, 0.026241, 1.0 ] ], + [ "Leather Coloring", [ 0.318547, 0.223228, 0.046665, 1.0 ] ], + [ "Camel Coloring", [ 0.450786, 0.332452, 0.099899, 1.0 ] ], + [ "Tan Coloring", [ 0.603828, 0.445201, 0.132868, 1.0 ] ], + [ "Sand Coloring", [ 0.791298, 0.584079, 0.171441, 1.0 ] ], + [ "Parchment Coloring", [ 1.0, 0.863157, 0.520996, 1.0 ] ], + [ "Cream Coloring", [ 0.913099, 0.913099, 0.715694, 1.0 ] ], + [ "Brick Coloring", [ 0.318547, 0.056128, 0.019382, 1.0 ] ], + [ "Tangerine Coloring", [ 1.0, 0.371238, 0.017642, 1.0 ] ], + [ "Gold Coloring", [ 1.0, 0.527115, 0.0, 1.0 ] ], + [ "Mustard Coloring", [ 0.871367, 0.871367, 0.031896, 1.0 ] ], + [ + "Craggy-Dew Coloring", + [ 0.450786, 0.814847, 0.006049, 1.0 ] + ], + [ "Grass Coloring", [ 0.015996, 0.171441, 0.029557, 1.0 ] ], + [ "Stream Coloring", [ 0.023153, 0.564712, 0.467784, 1.0 ] ], + [ "Marine Coloring", [ 0.0, 0.165132, 0.250158, 1.0 ] ], + [ "Haze Coloring", [ 0.0865, 0.097587, 0.168269, 1.0 ] ], + [ "Dusk Coloring", [ 0.274677, 0.076185, 0.376262, 1.0 ] ], + [ "Thistle Coloring", [ 0.791298, 0.545725, 0.723055, 1.0 ] ], + [ "Bubblegum Coloring", [ 1.0, 0.520996, 0.623961, 1.0 ] ] + ] +} \ No newline at end of file diff --git a/ARKBreedingStats/json/values/_manifest.json b/ARKBreedingStats/json/values/_manifest.json index 465d6041..e0e605bb 100644 --- a/ARKBreedingStats/json/values/_manifest.json +++ b/ARKBreedingStats/json/values/_manifest.json @@ -6,7 +6,7 @@ "mod": { "id": "1083349027", "tag": "SpeedyFlyers", "title": "Najs Speedy Flyers" } }, "1090809604-Pyria.json": { - "version": "358.17.1697371762", + "version": "358.17.1700355701", "mod": { "id": "1090809604", "tag": "Pyria", "title": "Pyria: Mythos Evolved" } }, "1092784125-Gryphons.json": { @@ -67,7 +67,7 @@ "mod": { "id": "1356703358", "tag": "Primal_Fear_Noxious_Creatures", "title": "Primal Fear Noxious Creatures" } }, "1373744537-AC2.json": { - "version": "358.17.1696878102", + "version": "358.17.1700355462", "mod": { "id": "1373744537", "tag": "AC2", "title": "Additional Creatures 2: Wild Ark" } }, "1379111008-RealismPlus.json": { @@ -168,7 +168,7 @@ "mod": { "id": "1696957410", "tag": "MarniimodsTest", "title": "Marnii's Equines" } }, "1729386191-BonusDinoMod.json": { - "version": "357.18.1683922895", + "version": "358.17.1699996351", "mod": { "id": "1729386191", "tag": "BonusDinoMod", "title": "AC: Kami Creations" } }, "1729512589-Brachiosaurus.json": {