diff --git a/ARKBreedingStats/AboutBox1.cs b/ARKBreedingStats/AboutBox1.cs index 74856090..4b4964ca 100644 --- a/ARKBreedingStats/AboutBox1.cs +++ b/ARKBreedingStats/AboutBox1.cs @@ -107,7 +107,7 @@ private void linkLabel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs Translations: * French by Vykan and Yanuut -* Italian by Zaffira +* Italian by Zaffira and Spit-Biago * German by cadon * Spanish by KRIPT4"; } diff --git a/ARKBreedingStats/Form1.Designer.cs b/ARKBreedingStats/Form1.Designer.cs index f38cf9a0..d8a9eb39 100644 --- a/ARKBreedingStats/Form1.Designer.cs +++ b/ARKBreedingStats/Form1.Designer.cs @@ -2631,7 +2631,7 @@ private void InitializeComponent() this.tamingControl1.Name = "tamingControl1"; this.tamingControl1.Size = new System.Drawing.Size(1218, 684); this.tamingControl1.TabIndex = 0; - this.tamingControl1.weaponDamages = new double[] { + this.tamingControl1.WeaponDamages = new double[] { 100D, 100D, 100D, @@ -2639,7 +2639,7 @@ private void InitializeComponent() 100D, 100D, 100D}; - this.tamingControl1.weaponDamagesEnabled = 3; + this.tamingControl1.WeaponDamagesEnabled = 3; // // tabPageBreedingPlan // diff --git a/ARKBreedingStats/Form1.collection.cs b/ARKBreedingStats/Form1.collection.cs index 141dcf8b..78a5843b 100644 --- a/ARKBreedingStats/Form1.collection.cs +++ b/ARKBreedingStats/Form1.collection.cs @@ -418,7 +418,7 @@ private bool LoadCollectionFile(string filePath, bool keepCurrentCreatures = fal // set global species that was set before loading if (selectedSpecies != null - && creatureCollection.creatures.Any(c => c.Species.Equals(selectedSpecies)) + && creatureCollection.creatures.Any(c => c.Species != null && c.Species.Equals(selectedSpecies)) ) { speciesSelector1.SetSpecies(selectedSpecies); @@ -428,7 +428,7 @@ private bool LoadCollectionFile(string filePath, bool keepCurrentCreatures = fal // set library species to what it was before loading if (selectedlibrarySpecies == null - || !creatureCollection.creatures.Any(c => c.Species.Equals(selectedlibrarySpecies)) + || !creatureCollection.creatures.Any(c => c.Species != null && c.Species.Equals(selectedlibrarySpecies)) ) selectedlibrarySpecies = speciesSelector1.SelectedSpecies; if (selectedlibrarySpecies != null) diff --git a/ARKBreedingStats/Form1.cs b/ARKBreedingStats/Form1.cs index 8785d5a4..bb836766 100644 --- a/ARKBreedingStats/Form1.cs +++ b/ARKBreedingStats/Form1.cs @@ -130,7 +130,7 @@ public Form1() breedingPlan1.ExportToClipboard += ExportAsTextToClipboard; breedingPlan1.SetMessageLabelText += SetMessageLabelText; breedingPlan1.SetGlobalSpecies += SetSpecies; - timerList1.onTimerChange += SetCollectionChanged; + timerList1.OnTimerChange += SetCollectionChanged; breedingPlan1.BindChildrenControlEvents(); raisingControl1.onChange += SetCollectionChanged; tamingControl1.CreateTimer += CreateTimer; @@ -156,13 +156,6 @@ public Form1() timerGlobal.Tick += TimerGlobal_Tick; reactOnSelectionChange = true; - - // TODO temporary fix if importExportWindow.Location was set to an invalid value - if (Properties.Settings.Default.importExportedLocation.X < 0) - { - Properties.Settings.Default.importExportedLocation = new Point(0, 0); - Properties.Settings.Default.importExportedSize = new Size(800, 800); - } } private void Form1_Load(object sender, EventArgs e) @@ -267,8 +260,8 @@ private void Form1_Load(object sender, EventArgs e) autoSaveMinutes = Properties.Settings.Default.autosaveMinutes; // load weapondamages - tamingControl1.weaponDamages = Properties.Settings.Default.weaponDamages; - tamingControl1.weaponDamagesEnabled = Properties.Settings.Default.weaponDamagesEnabled; + tamingControl1.WeaponDamages = Properties.Settings.Default.weaponDamages; + tamingControl1.WeaponDamagesEnabled = Properties.Settings.Default.weaponDamagesEnabled; for (int s = 0; s < Values.STATS_COUNT; s++) { @@ -415,7 +408,6 @@ private void Form1_Load(object sender, EventArgs e) creatureInfoInputExtractor.OwnerLock = Properties.Settings.Default.OwnerNameLocked; creatureInfoInputExtractor.TribeLock = Properties.Settings.Default.TribeNameLocked; - ClearAll(); // UI loaded //// initialize controls @@ -458,7 +450,7 @@ private void TellTamingData(string speciesName, int level) speciesSelector1.SelectedSpecies.taming.eats != null && speciesSelector1.SelectedSpecies.taming.eats.Count > 0) { - tamingControl1.setLevel(level, false); + tamingControl1.SetLevel(level, false); tamingControl1.SetSpecies(speciesSelector1.SelectedSpecies); overlay?.setInfoText($"{speciesName} ({Loc.s("Level")} {level}):\n{tamingControl1.quickTamingInfos}"); } @@ -653,7 +645,7 @@ private void ApplySettingsToValues() { // apply multipliers Values.V.ApplyMultipliers(creatureCollection, cbEventMultipliers.Checked); - tamingControl1.setTamingMultipliers(Values.V.currentServerMultipliers.TamingSpeedMultiplier, + tamingControl1.SetTamingMultipliers(Values.V.currentServerMultipliers.TamingSpeedMultiplier, Values.V.currentServerMultipliers.DinoCharacterFoodDrainMultiplier); RecalculateAllCreaturesValues(); @@ -1137,8 +1129,8 @@ private void Form1_FormClosed(object sender, FormClosedEventArgs e) Properties.Settings.Default.customStatWeightNames = custWs.ToArray(); // save weapondamages for ko-calculation - Properties.Settings.Default.weaponDamages = tamingControl1.weaponDamages; - Properties.Settings.Default.weaponDamagesEnabled = tamingControl1.weaponDamagesEnabled; + Properties.Settings.Default.weaponDamages = tamingControl1.WeaponDamages; + Properties.Settings.Default.weaponDamagesEnabled = tamingControl1.WeaponDamagesEnabled; // save last selected species in combobox Properties.Settings.Default.lastSpecies = speciesSelector1.LastSpecies; @@ -1619,27 +1611,7 @@ private void numericUpDownImprintingBonusExtractor_ValueChanged(object sender, E private void checkBoxQuickWildCheck_CheckedChanged(object sender, EventArgs e) { - bool enabled = !cbQuickWildCheck.Checked; - if (!enabled) - { - ClearAll(); - - for (int s = 0; s < Values.STATS_COUNT; s++) - { - int lvlWild = (int)Math.Round((statIOs[s].Input - speciesSelector1.SelectedSpecies.stats[s].BaseValue) / (speciesSelector1.SelectedSpecies.stats[s].BaseValue * speciesSelector1.SelectedSpecies.stats[s].IncPerWildLevel)); - statIOs[s].LevelWild = lvlWild < 0 ? 0 : lvlWild; - statIOs[s].LevelDom = 0; - } - - tamingControl1.setLevel(statIOs[(int)StatNames.Torpidity].LevelWild + 1, false); - tamingControl1.SetSpecies(speciesSelector1.SelectedSpecies); - labelTamingInfo.Text = tamingControl1.quickTamingInfos; - } - panelWildTamedBred.Enabled = enabled; - groupBoxDetailsExtractor.Enabled = enabled; - numericUpDownLevel.Enabled = enabled; - button2TamingCalc.Visible = !enabled; - groupBoxTamingInfo.Visible = !enabled; + UpdateQuickTamingInfo(); } private void onlinehelpToolStripMenuItem_Click(object sender, EventArgs e) @@ -2009,9 +1981,7 @@ private void StatIOQuickWildLevelCheck(StatIO sIO) sIO.LevelDom = 0; if (sIO.statIndex == (int)StatNames.Torpidity) { - tamingControl1.setLevel(statIOs[(int)StatNames.Torpidity].LevelWild + 1, false); - tamingControl1.SetSpecies(speciesSelector1.SelectedSpecies); - labelTamingInfo.Text = tamingControl1.quickTamingInfos; + SetQuickTamingInfo(statIOs[(int)StatNames.Torpidity].LevelWild + 1); } } } @@ -2067,7 +2037,7 @@ private void wildValuesToolStripMenuItem_Click(object sender, EventArgs e) private void CreateTimer(string name, DateTime time, Creature c, string group) { - timerList1.addTimer(name, time, c, group); + timerList1.AddTimer(name, time, c, group); } private void TestEnteredDragData(object sender, DragEventArgs e) @@ -2433,6 +2403,7 @@ private void toolStripButtonCopy2Extractor_Click(object sender, EventArgs e) creatureInfoInputExtractor.CreatureSex = creatureInfoInputTester.CreatureSex; creatureInfoInputExtractor.RegionColors = creatureInfoInputTester.RegionColors; + tabControlMain.SelectedTab = tabPageExtractor; } @@ -2537,9 +2508,9 @@ private void button2TamingCalc_Click(object sender, EventArgs e) { tamingControl1.SetSpecies(speciesSelector1.SelectedSpecies); if (cbQuickWildCheck.Checked) - tamingControl1.setLevel(statIOs[(int)StatNames.Torpidity].LevelWild + 1); + tamingControl1.SetLevel(statIOs[(int)StatNames.Torpidity].LevelWild + 1); else - tamingControl1.setLevel((int)numericUpDownLevel.Value); + tamingControl1.SetLevel((int)numericUpDownLevel.Value); tabControlMain.SelectedTab = tabPageTaming; } @@ -2711,7 +2682,7 @@ private void ApplyEvolutionMultipliers() { Values.V.ApplyMultipliers(creatureCollection, cbEventMultipliers.Checked, false); - tamingControl1.setTamingMultipliers(Values.V.currentServerMultipliers.TamingSpeedMultiplier, + tamingControl1.SetTamingMultipliers(Values.V.currentServerMultipliers.TamingSpeedMultiplier, Values.V.currentServerMultipliers.DinoCharacterFoodDrainMultiplier); breedingPlan1.UpdateBreedingData(); raisingControl1.UpdateRaisingData(); @@ -2722,7 +2693,7 @@ private void toolStripButtonDeleteExpiredIncubationTimers_Click(object sender, E if (tabControlMain.SelectedTab == tabPageRaising) raisingControl1.DeleteAllExpiredIncubationTimers(); else if (tabControlMain.SelectedTab == tabPageTimer) - timerList1.deleteAllExpiredTimers(); + timerList1.DeleteAllExpiredTimers(); } private void OcrupdateWhiteThreshold(int value) diff --git a/ARKBreedingStats/Form1.extractor.cs b/ARKBreedingStats/Form1.extractor.cs index ecf8e413..f6668c82 100644 --- a/ARKBreedingStats/Form1.extractor.cs +++ b/ARKBreedingStats/Form1.extractor.cs @@ -140,20 +140,22 @@ private void ClearAll(bool clearExtraCreatureData = true) statIOs[s].Clear(); } ExtractionFailed(); // set background of controls to neutral - labelFootnote.Text = ""; + labelFootnote.Text = string.Empty; labelFootnote.BackColor = Color.Transparent; - labelTE.Text = ""; + labelTE.Text = string.Empty; activeStatIndex = -1; - lbSumDom.Text = ""; - lbSumWild.Text = ""; - lbSumDomSB.Text = ""; + lbSumDom.Text = string.Empty; + lbSumWild.Text = string.Empty; + lbSumDomSB.Text = string.Empty; updateTorporInTester = true; creatureInfoInputExtractor.ButtonEnabled = false; groupBoxPossibilities.Visible = false; groupBoxRadarChartExtractor.Visible = false; lbInfoYellowStats.Visible = false; button2TamingCalc.Visible = cbQuickWildCheck.Checked; - groupBoxTamingInfo.Visible = false; + groupBoxTamingInfo.Visible = cbQuickWildCheck.Checked; + UpdateQuickTamingInfo(); + labelTamingInfo.Text = string.Empty; SetMessageLabelText(); if (clearExtraCreatureData) { @@ -342,18 +344,43 @@ private bool ExtractLevels(bool autoExtraction = false, bool statInputsHighPreci button2TamingCalc.Visible = true; // display taming info - if (cbQuickWildCheck.Checked) - tamingControl1.setLevel(statIOs[(int)StatNames.Torpidity].LevelWild + 1); - else - tamingControl1.setLevel((int)numericUpDownLevel.Value); - labelTamingInfo.Text = tamingControl1.quickTamingInfos; - groupBoxTamingInfo.Visible = true; + SetQuickTamingInfo(cbQuickWildCheck.Checked + ? statIOs[(int)StatNames.Torpidity].LevelWild + 1 + : (int)numericUpDownLevel.Value); } ResumeLayout(); return true; } + private void UpdateQuickTamingInfo() + { + bool showQuickTamingInfo = cbQuickWildCheck.Checked; + if (showQuickTamingInfo) + { + for (int s = 0; s < Values.STATS_COUNT; s++) + { + int lvlWild = (int)Math.Round((statIOs[s].Input - speciesSelector1.SelectedSpecies.stats[s].BaseValue) / (speciesSelector1.SelectedSpecies.stats[s].BaseValue * speciesSelector1.SelectedSpecies.stats[s].IncPerWildLevel)); + statIOs[s].LevelWild = lvlWild < 0 ? 0 : lvlWild; + statIOs[s].LevelDom = 0; + } + SetQuickTamingInfo(statIOs[(int)StatNames.Torpidity].LevelWild + 1); + } + panelWildTamedBred.Enabled = !showQuickTamingInfo; + groupBoxDetailsExtractor.Enabled = !showQuickTamingInfo; + numericUpDownLevel.Enabled = !showQuickTamingInfo; + button2TamingCalc.Visible = showQuickTamingInfo; + groupBoxTamingInfo.Visible = showQuickTamingInfo; + } + + private void SetQuickTamingInfo(int level) + { + tamingControl1.SetSpecies(speciesSelector1.SelectedSpecies); + tamingControl1.SetLevel(level); + labelTamingInfo.Text = tamingControl1.quickTamingInfos; + groupBoxTamingInfo.Visible = true; + } + /// /// Call this method if an extraction failed. Possible causes of the failure are displayed for the user. /// diff --git a/ARKBreedingStats/Program.cs b/ARKBreedingStats/Program.cs index 986fa75d..41a77195 100644 --- a/ARKBreedingStats/Program.cs +++ b/ARKBreedingStats/Program.cs @@ -58,10 +58,12 @@ private static void unhandledExceptionHandler(object sender, UnhandledExceptionE { if (System.Diagnostics.Debugger.IsAttached) throw e; string message = e.Message + + "\n\nException in " + e.Source + "\n\nMethod throwing the error: " + e.TargetSite.DeclaringType.FullName + "." + e.TargetSite.Name + "\n\nStackTrace:\n" + e.StackTrace - + (e.InnerException != null ? "\n\nInner Exception:\n" + e.InnerException.Message : string.Empty); - MessageBox.Show("Unhandled Exception:\n\n" + message, "Error in " + e.Source, MessageBoxButtons.OK, MessageBoxIcon.Error); + + (e.InnerException != null ? "\n\nInner Exception:\n" + e.InnerException.Message : string.Empty) + ; + MessageBox.Show(message, "Unhandled Exception in ARK Smart Breeding " + Application.ProductVersion, MessageBoxButtons.OK, MessageBoxIcon.Error); } } } diff --git a/ARKBreedingStats/Properties/AssemblyInfo.cs b/ARKBreedingStats/Properties/AssemblyInfo.cs index a005eae2..6b3e4c65 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.34.2.0")] +[assembly: AssemblyFileVersion("0.34.4.0")] [assembly: NeutralResourcesLanguage("en")] diff --git a/ARKBreedingStats/Stats.cs b/ARKBreedingStats/Stats.cs index 84338459..894c26cf 100644 --- a/ARKBreedingStats/Stats.cs +++ b/ARKBreedingStats/Stats.cs @@ -42,7 +42,7 @@ public static double CalculateValue(Species species, int stat, int levelWild, in // adding an epsilon to handle rounding-errors double result = (species.stats[stat].BaseValue * tamedBaseHP * (1 + species.stats[stat].IncPerWildLevel * levelWild) * imprintingM + add) * - domMult + ROUND_UP_DELTA; + domMult + (Utils.precision(stat) == 3 ? ROUND_UP_DELTA * 0.01 : ROUND_UP_DELTA); if (result <= 0) return 0; diff --git a/ARKBreedingStats/TamingControl.cs b/ARKBreedingStats/TamingControl.cs index a4e8ebcd..4bffef17 100644 --- a/ARKBreedingStats/TamingControl.cs +++ b/ARKBreedingStats/TamingControl.cs @@ -41,225 +41,230 @@ public TamingControl() }; } - public void setLevel(int level, bool updateTamingData = true) + public void SetLevel(int level, bool updateTamingData = true) { + if (nudLevel.Value == level) return; + bool updateKeeper = updateCalculation; updateCalculation = updateTamingData; - if (level >= nudLevel.Minimum && level <= nudLevel.Maximum) - nudLevel.Value = level; + nudLevel.ValueSave = level; updateCalculation = updateKeeper; } public void SetSpecies(Species species) { - if (species != null && selectedSpecies != species) - { + if (species == null || selectedSpecies == species) + return; - selectedSpecies = species; + selectedSpecies = species; - if (species.taming == null) - { - noTamingData(); - return; - } + if (species.taming == null) + { + NoTamingData(); + return; + } - SuspendLayout(); + SuspendLayout(); - string speciesName = species.name; - linkLabelWikiPage.Text = "Wiki: " + speciesName; - linkLabelWikiPage.Tag = speciesName; + string speciesName = species.name; + linkLabelWikiPage.Text = "Wiki: " + speciesName; + linkLabelWikiPage.Tag = speciesName; - // bone damage adjusters - boneDamageAdjustersImmobilization = Taming.boneDamageAdjustersImmobilization(selectedSpecies, - out Dictionary boneDamageAdjusters); + // bone damage adjusters + boneDamageAdjustersImmobilization = Taming.boneDamageAdjustersImmobilization(selectedSpecies, + out Dictionary boneDamageAdjusters); - int ib = 0; - foreach (KeyValuePair bd in boneDamageAdjusters) + int ib = 0; + foreach (KeyValuePair bd in boneDamageAdjusters) + { + ib++; + if (ib >= rbBoneDamageAdjusters.Count) { - ib++; - if (ib >= rbBoneDamageAdjusters.Count) - { - RadioButton rbBD = new RadioButton(); - gbWeaponDamage.Controls.Add(rbBD); - rbBD.Location = new Point(6, 199 + 19 * ib); - rbBD.AutoSize = false; - rbBD.Size = new Size(194, 17); - - rbBoneDamageAdjusters.Add(rbBD); - rbBoneDamageAdjusterValues.Add(1); - rbBD.CheckedChanged += rbBoneDamage_CheckedChanged; - } - rbBoneDamageAdjusterValues[ib] = bd.Value; - rbBoneDamageAdjusters[ib].Text = $"{Loc.s(bd.Key)} (× {bd.Value})"; - rbBoneDamageAdjusters[ib].Visible = true; + RadioButton rbBD = new RadioButton(); + gbWeaponDamage.Controls.Add(rbBD); + rbBD.Location = new Point(6, 199 + 19 * ib); + rbBD.AutoSize = false; + rbBD.Size = new Size(194, 17); + + rbBoneDamageAdjusters.Add(rbBD); + rbBoneDamageAdjusterValues.Add(1); + rbBD.CheckedChanged += rbBoneDamage_CheckedChanged; } - for (int j = ib + 1; j < rbBoneDamageAdjusters.Count; j++) - rbBoneDamageAdjusters[j].Visible = false; - rbBoneDamageAdjusters[0].Checked = true; - // bone damage adjusters adjusted + rbBoneDamageAdjusterValues[ib] = bd.Value; + rbBoneDamageAdjusters[ib].Text = $"{Loc.s(bd.Key)} (× {bd.Value})"; + rbBoneDamageAdjusters[ib].Visible = true; + } + for (int j = ib + 1; j < rbBoneDamageAdjusters.Count; j++) + rbBoneDamageAdjusters[j].Visible = false; + rbBoneDamageAdjusters[0].Checked = true; + // bone damage adjusters adjusted - updateCalculation = false; - TamingData td = species.taming; - kibbleRecipe = ""; + updateCalculation = false; + TamingData td = species.taming; + kibbleRecipe = ""; - // TODO replace with new kibble recipes - //if (td.favoriteKibble != null && Kibbles.K.kibble.ContainsKey(td.favoriteKibble)) - //{ - // kibbleRecipe = "\n\nKibble:" + Kibbles.K.kibble[td.favoriteKibble].RecipeAsText(); - //} + // TODO replace with new kibble recipes + //if (td.favoriteKibble != null && Kibbles.K.kibble.ContainsKey(td.favoriteKibble)) + //{ + // kibbleRecipe = "\n\nKibble:" + Kibbles.K.kibble[td.favoriteKibble].RecipeAsText(); + //} - foodDepletion = td.foodConsumptionBase * td.foodConsumptionMult * tamingFoodRateMultiplier; + foodDepletion = td.foodConsumptionBase * td.foodConsumptionMult * tamingFoodRateMultiplier; - int i = 0; - if (td.eats != null) + int i = 0; + if (td.eats != null) + { + for (i = 0; i < td.eats.Count; i++) { - for (i = 0; i < td.eats.Count; i++) + string f = td.eats[i]; + TamingFoodControl tf; + if (i >= foodControls.Count) + { + tf = new TamingFoodControl(f); + tf.valueChanged += UpdateTamingData; + tf.Clicked += OnlyOneFood; + foodControls.Add(tf); + flpTamingFood.Controls.Add(tf); + } + else { - string f = td.eats[i]; - TamingFoodControl tf; - if (i >= foodControls.Count) - { - tf = new TamingFoodControl(f); - tf.valueChanged += updateTamingData; - tf.Clicked += onlyOneFood; - foodControls.Add(tf); - flpTamingFood.Controls.Add(tf); - } - else - { - tf = foodControls[i]; - tf.FoodName = f; - tf.Show(); - } - if (f == "Kibble") - tf.foodNameDisplay = $"Kibble ({td.favoriteKibble} {Loc.s("Egg")})"; - if (td.specialFoodValues != null && td.specialFoodValues.ContainsKey(f) && td.specialFoodValues[f].quantity > 1) - tf.foodNameDisplay = td.specialFoodValues[f].quantity + "× " + tf.foodNameDisplay; + tf = foodControls[i]; + tf.FoodName = f; + tf.Show(); } + if (f == "Kibble") + tf.foodNameDisplay = $"Kibble ({td.favoriteKibble} {Loc.s("Egg")})"; + if (td.specialFoodValues != null && td.specialFoodValues.ContainsKey(f) && td.specialFoodValues[f].quantity > 1) + tf.foodNameDisplay = td.specialFoodValues[f].quantity + "× " + tf.foodNameDisplay; } + } - for (int fci = foodControls.Count - 1; fci >= i; fci--) - { - foodControls[fci].Hide(); - } + for (int fci = foodControls.Count - 1; fci >= i; fci--) + { + foodControls[fci].Hide(); + } - if (i > 0) - foodControls[0].amount = Taming.foodAmountNeeded(species, (int)nudLevel.Value, tamingSpeedMultiplier, foodControls[0].FoodName, td.nonViolent); + if (i > 0) + foodControls[0].amount = Taming.foodAmountNeeded(species, (int)nudLevel.Value, tamingSpeedMultiplier, foodControls[0].FoodName, td.nonViolent); - updateCalculation = true; - updateFirstFeedingWaiting(); - updateTamingData(); + updateCalculation = true; + UpdateFirstFeedingWaiting(); + UpdateTamingData(); - ResumeLayout(); - } + ResumeLayout(); } private void nudLevel_ValueChanged(object sender, EventArgs e) { - updateFirstFeedingWaiting(); - updateTamingData(); + UpdateFirstFeedingWaiting(); + UpdateTamingData(); } - private void updateTamingData() + private void UpdateTamingData() { - if (updateCalculation && selectedSpecies != null) + if (!updateCalculation || selectedSpecies == null) { - if (selectedSpecies.taming == null) - { - noTamingData(); - return; - } + return; + } + if (selectedSpecies.taming == null) + { + NoTamingData(); + return; + } - this.Enabled = true; - updateKOCounting(); + this.Enabled = true; + UpdateKOCounting(); - TimeSpan duration = new TimeSpan(); - int narcoBerries = 0, narcotics = 0, bioToxines = 0, bonusLevel = 0; - double te = 0, hunger = 0; - bool enoughFood = false; - var usedFood = new List(); - var foodAmount = new List(); - var foodAmountUsed = new List(); - quickTamingInfos = "n/a"; - int level = (int)nudLevel.Value; + TimeSpan duration = new TimeSpan(); + int narcoBerries = 0, narcotics = 0, bioToxines = 0, bonusLevel = 0; + double te = 0, hunger = 0; + bool enoughFood = false; + var usedFood = new List(); + var foodAmount = new List(); + var foodAmountUsed = new List(); + quickTamingInfos = "n/a"; + int level = (int)nudLevel.Value; - if (selectedSpecies.taming.eats != null) + if (selectedSpecies.taming.eats != null) + { + int foodCounter = selectedSpecies.taming.eats.Count; + foreach (TamingFoodControl tfc in foodControls) { - int foodCounter = selectedSpecies.taming.eats.Count; - foreach (TamingFoodControl tfc in foodControls) - { - if (foodCounter == 0) - break; - foodCounter--; - - usedFood.Add(tfc.FoodName); - foodAmount.Add(tfc.amount); - tfc.maxFood = Taming.foodAmountNeeded(selectedSpecies, level, tamingSpeedMultiplier, tfc.FoodName, selectedSpecies.taming.nonViolent); - tfc.tamingDuration = Taming.tamingDuration(selectedSpecies, tfc.maxFood, tfc.FoodName, tamingFoodRateMultiplier, selectedSpecies.taming.nonViolent); - } - Taming.tamingTimes(selectedSpecies, level, tamingSpeedMultiplier, tamingFoodRateMultiplier, usedFood, foodAmount, out foodAmountUsed, out duration, out narcoBerries, out narcotics, out bioToxines, out te, out hunger, out bonusLevel, out enoughFood); - - for (int f = 0; f < foodAmountUsed.Count; f++) - { - foodControls[f].foodUsed = foodAmountUsed[f]; - } + if (foodCounter == 0) + break; + foodCounter--; + + usedFood.Add(tfc.FoodName); + foodAmount.Add(tfc.amount); + tfc.maxFood = Taming.foodAmountNeeded(selectedSpecies, level, tamingSpeedMultiplier, tfc.FoodName, selectedSpecies.taming.nonViolent); + tfc.tamingDuration = Taming.tamingDuration(selectedSpecies, tfc.maxFood, tfc.FoodName, tamingFoodRateMultiplier, selectedSpecies.taming.nonViolent); } + Taming.tamingTimes(selectedSpecies, level, tamingSpeedMultiplier, tamingFoodRateMultiplier, usedFood, foodAmount, out foodAmountUsed, out duration, out narcoBerries, out narcotics, out bioToxines, out te, out hunger, out bonusLevel, out enoughFood); - if (enoughFood) + for (int f = 0; f < foodAmountUsed.Count; f++) { - labelResult.Text = $"It takes {Utils.durationUntil(duration)} to tame the {selectedSpecies.name}.\n\n" + - $"Taming Effectiveness: {Math.Round(100 * te, 1)} %\n" + - $"Bonus-Level: +{bonusLevel} (total level after Taming: {(nudLevel.Value + bonusLevel)})\n\n" + - $"Food has to drop by {hunger:F1} units.\n\n" + - $"{narcoBerries} Narcoberries or\n" + - $"{narcotics} Narcotics or\n" + - $"{bioToxines} Bio Toxines are needed{firstFeedingWaiting}"; - - if (foodAmountUsed.Count > 0) - { - quickTamingInfos = Taming.quickInfoOneFood(selectedSpecies, level, tamingSpeedMultiplier, tamingFoodRateMultiplier, 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); - break; - } - } - - quickTamingInfos += "\n\n" + koNumbers - + "\n\n" + boneDamageAdjustersImmobilization - + firstFeedingWaiting - + kibbleRecipe; - } - - labelResult.Text += kibbleRecipe; + foodControls[f].foodUsed = foodAmountUsed[f]; } - else if (foodAmountUsed.Count == 0) - labelResult.Text = Loc.s("noTamingData"); - else - labelResult.Text = Loc.s("notEnoughFoodToTame"); + } + + if (enoughFood) + { + labelResult.Text = $"It takes {Utils.durationUntil(duration)} to tame the {selectedSpecies.name}.\n\n" + + $"Taming Effectiveness: {Math.Round(100 * te, 1)} %\n" + + $"Bonus-Level: +{bonusLevel} (total level after Taming: {(nudLevel.Value + bonusLevel)})\n\n" + + $"Food has to drop by {hunger:F1} units.\n\n" + + $"{narcoBerries} Narcoberries or\n" + + $"{narcotics} Narcotics or\n" + + $"{bioToxines} Bio Toxines are needed{firstFeedingWaiting}"; + + labelResult.Text += kibbleRecipe; + } + else if (foodAmountUsed.Count == 0) + labelResult.Text = Loc.s("noTamingData"); + else + labelResult.Text = Loc.s("notEnoughFoodToTame"); + + numericUpDownCurrentTorpor.ValueSave = (decimal)(selectedSpecies.stats[(int)StatNames.Torpidity].BaseValue * (1 + selectedSpecies.stats[(int)StatNames.Torpidity].IncPerWildLevel * (level - 1))); + + // displays the time until the food has decreased enough to tame the creature in one go. + var durationStarving = new TimeSpan(0, 0, (int)(hunger / foodDepletion)); + lbTimeUntilStarving.Text = (enoughFood ? $"{Loc.s("TimeUntilFeedingAllFood")}: {Utils.duration(durationStarving)}" : ""); + nudCurrentFood.Value = (decimal)(selectedSpecies.stats[(int)StatNames.Food].BaseValue * (1 + selectedSpecies.stats[(int)StatNames.Food].IncPerWildLevel * (level / 7))); // approximating the food level + if ((double)nudCurrentFood.Value < hunger) + { + lbTimeUntilStarving.Text += (lbTimeUntilStarving.Text.Length > 0 ? "\n" : "") + $"{Loc.s("WarningMoreStarvingThanFood")}"; + lbTimeUntilStarving.ForeColor = Color.DarkRed; + } + else lbTimeUntilStarving.ForeColor = SystemColors.ControlText; - numericUpDownCurrentTorpor.ValueSave = (decimal)(selectedSpecies.stats[(int)StatNames.Torpidity].BaseValue * (1 + selectedSpecies.stats[(int)StatNames.Torpidity].IncPerWildLevel * (level - 1))); + starvingTime = DateTime.Now.Add(durationStarving); - // displays the time until the food has decreased enough to tame the creature in one go. - var durationStarving = new TimeSpan(0, 0, (int)(hunger / foodDepletion)); - lbTimeUntilStarving.Text = (enoughFood ? $"{Loc.s("TimeUntilFeedingAllFood")}: {Utils.duration(durationStarving)}" : ""); - nudCurrentFood.Value = (decimal)(selectedSpecies.stats[(int)StatNames.Food].BaseValue * (1 + selectedSpecies.stats[(int)StatNames.Food].IncPerWildLevel * (level / 7))); // approximating the food level - if ((double)nudCurrentFood.Value < hunger) + //// quicktame infos + if (foodAmountUsed.Count > 0) + { + quickTamingInfos = Taming.quickInfoOneFood(selectedSpecies, level, tamingSpeedMultiplier, tamingFoodRateMultiplier, 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++) { - lbTimeUntilStarving.Text += (lbTimeUntilStarving.Text.Length > 0 ? "\n" : "") + $"{Loc.s("WarningMoreStarvingThanFood")}"; - lbTimeUntilStarving.ForeColor = Color.DarkRed; + 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); + break; + } } - else lbTimeUntilStarving.ForeColor = SystemColors.ControlText; - starvingTime = DateTime.Now.Add(durationStarving); + quickTamingInfos += "\n\n" + koNumbers + + "\n\n" + boneDamageAdjustersImmobilization + + firstFeedingWaiting + + kibbleRecipe; } } - private void noTamingData() + /// + /// Displays infos that no taming data is available. + /// + private void NoTamingData() { // clear text fields labelResult.Text = Loc.s("noTamingData"); @@ -269,18 +274,23 @@ private void noTamingData() this.Enabled = false; } - private void onlyOneFood(string food) + /// + /// Only use the passed food for taming, set all other foods to zero. + /// + /// + private void OnlyOneFood(string food) { - if (selectedSpecies != null) + if (selectedSpecies == null) { - updateCalculation = false; - foreach (TamingFoodControl tfc in foodControls) - { - tfc.amount = tfc.FoodName == food ? tfc.maxFood : 0; - } - updateCalculation = true; - updateTamingData(); + return; } + updateCalculation = false; + foreach (TamingFoodControl tfc in foodControls) + { + tfc.amount = tfc.FoodName == food ? tfc.maxFood : 0; + } + updateCalculation = true; + UpdateTamingData(); } private void numericUpDownCurrentTorpor_ValueChanged(object sender, EventArgs e) @@ -300,15 +310,15 @@ private void nudCurrentFood_ValueChanged(object sender, EventArgs e) private void nudWDm_ValueChanged(object sender, EventArgs e) { - updateKOCounting(); + UpdateKOCounting(); } private void chkbDm_CheckedChanged(object sender, EventArgs e) { - updateKOCounting(); + UpdateKOCounting(); } - private void updateKOCounting(double boneDamageAdjuster = 0) + private void UpdateKOCounting(double boneDamageAdjuster = 0) { if (boneDamageAdjuster == 0) boneDamageAdjuster = currentBoneDamageAdjuster; @@ -327,7 +337,7 @@ private void updateKOCounting(double boneDamageAdjuster = 0) koNumbers = ""; } - public double[] weaponDamages + public double[] WeaponDamages { get => new[] { (double)nudWDmLongneck.Value, (double)nudWDmCrossbow.Value, (double)nudWDmBow.Value, (double)nudWDmSlingshot.Value, (double)nudWDmClub.Value, (double)nudWDmProd.Value, (double)nudWDmHarpoon.Value }; set @@ -343,7 +353,7 @@ public double[] weaponDamages } } - public int weaponDamagesEnabled + public int WeaponDamagesEnabled { set { @@ -377,11 +387,11 @@ 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 SetTamingMultipliers(double tamingSpeedMultiplier, double tamingFoodRateMultiplier) { this.tamingSpeedMultiplier = tamingSpeedMultiplier; this.tamingFoodRateMultiplier = tamingFoodRateMultiplier; - updateTamingData(); + UpdateTamingData(); } private void rbBoneDamage_CheckedChanged(object sender, EventArgs e) @@ -394,11 +404,14 @@ private void rbBoneDamage_CheckedChanged(object sender, EventArgs e) currentBoneDamageAdjuster = rbBoneDamageAdjusterValues[i]; else currentBoneDamageAdjuster = 1; - updateKOCounting(); + UpdateKOCounting(); } } - private void updateFirstFeedingWaiting() + /// + /// Calculate the waiting time after the first feeding, which is different to the other times. + /// + private void UpdateFirstFeedingWaiting() { int s = Taming.durationAfterFirstFeeding(selectedSpecies, (int)nudLevel.Value, foodDepletion); if (s > 0) diff --git a/ARKBreedingStats/TimerControl.Designer.cs b/ARKBreedingStats/TimerControl.Designer.cs index 4fe22d83..7d244248 100644 --- a/ARKBreedingStats/TimerControl.Designer.cs +++ b/ARKBreedingStats/TimerControl.Designer.cs @@ -40,6 +40,7 @@ private void InitializeComponent() this.removeAllExpiredTimersToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); this.groupBoxAddTimer = new System.Windows.Forms.GroupBox(); + this.btOpenSoundFolder = new System.Windows.Forms.Button(); this.SoundListBox = new System.Windows.Forms.ComboBox(); this.SoundLabel = new System.Windows.Forms.Label(); this.groupBox1 = new System.Windows.Forms.GroupBox(); @@ -51,7 +52,7 @@ private void InitializeComponent() this.dateTimePickerTimerFinish = new System.Windows.Forms.DateTimePicker(); this.textBoxTimerName = new System.Windows.Forms.TextBox(); this.buttonAddTimer = new System.Windows.Forms.Button(); - this.btOpenSoundFolder = new System.Windows.Forms.Button(); + this.btPlaySelectedSound = new System.Windows.Forms.Button(); this.contextMenuStrip1.SuspendLayout(); this.tableLayoutPanel1.SuspendLayout(); this.groupBoxAddTimer.SuspendLayout(); @@ -146,6 +147,7 @@ private void InitializeComponent() // // groupBoxAddTimer // + this.groupBoxAddTimer.Controls.Add(this.btPlaySelectedSound); this.groupBoxAddTimer.Controls.Add(this.btOpenSoundFolder); this.groupBoxAddTimer.Controls.Add(this.SoundListBox); this.groupBoxAddTimer.Controls.Add(this.SoundLabel); @@ -162,6 +164,16 @@ private void InitializeComponent() this.groupBoxAddTimer.TabStop = false; this.groupBoxAddTimer.Text = "Add Manual Timer"; // + // btOpenSoundFolder + // + this.btOpenSoundFolder.Location = new System.Drawing.Point(72, 97); + this.btOpenSoundFolder.Name = "btOpenSoundFolder"; + this.btOpenSoundFolder.Size = new System.Drawing.Size(156, 23); + this.btOpenSoundFolder.TabIndex = 15; + this.btOpenSoundFolder.Text = "Open custom sounds folder"; + this.btOpenSoundFolder.UseVisualStyleBackColor = true; + this.btOpenSoundFolder.Click += new System.EventHandler(this.btOpenSoundFolder_Click); + // // SoundListBox // this.SoundListBox.FormattingEnabled = true; @@ -263,15 +275,15 @@ private void InitializeComponent() this.buttonAddTimer.UseVisualStyleBackColor = true; this.buttonAddTimer.Click += new System.EventHandler(this.buttonAddTimer_Click); // - // btOpenSoundFolder + // btPlaySelectedSound // - this.btOpenSoundFolder.Location = new System.Drawing.Point(72, 97); - this.btOpenSoundFolder.Name = "btOpenSoundFolder"; - this.btOpenSoundFolder.Size = new System.Drawing.Size(156, 23); - this.btOpenSoundFolder.TabIndex = 15; - this.btOpenSoundFolder.Text = "Open custom sounds folder"; - this.btOpenSoundFolder.UseVisualStyleBackColor = true; - this.btOpenSoundFolder.Click += new System.EventHandler(this.btOpenSoundFolder_Click); + this.btPlaySelectedSound.Location = new System.Drawing.Point(6, 97); + this.btPlaySelectedSound.Name = "btPlaySelectedSound"; + this.btPlaySelectedSound.Size = new System.Drawing.Size(60, 23); + this.btPlaySelectedSound.TabIndex = 16; + this.btPlaySelectedSound.Text = "⏵"; + this.btPlaySelectedSound.UseVisualStyleBackColor = true; + this.btPlaySelectedSound.Click += new System.EventHandler(this.btPlaySelectedSound_Click); // // TimerControl // @@ -315,5 +327,6 @@ private void InitializeComponent() private System.Windows.Forms.ComboBox SoundListBox; private System.Windows.Forms.Label SoundLabel; private System.Windows.Forms.Button btOpenSoundFolder; + private System.Windows.Forms.Button btPlaySelectedSound; } } diff --git a/ARKBreedingStats/TimerControl.cs b/ARKBreedingStats/TimerControl.cs index 167bbab9..b2f6f2e8 100644 --- a/ARKBreedingStats/TimerControl.cs +++ b/ARKBreedingStats/TimerControl.cs @@ -18,7 +18,7 @@ public partial class TimerControl : UserControl public bool updateTimer; private List timerListEntries; - public event Form1.collectionChangedEventHandler onTimerChange; + public event Form1.collectionChangedEventHandler OnTimerChange; private List creatures; public SoundPlayer[] sounds; private List timerAlerts; @@ -46,12 +46,14 @@ public TimerControl() int i = 0; foreach (KeyValuePair ts in times) { - var bta = new uiControls.ButtonAddTime(); - bta.timeSpan = ts.Value; - bta.Text = ts.Key; + var bta = new uiControls.ButtonAddTime + { + timeSpan = ts.Value, + Text = ts.Key, + Size = new Size(54, 23), + Location = new Point(6 + i % 3 * 60, 48 + i / 3 * 29) + }; bta.addTimer += buttonAddTime_addTimer; - bta.Size = new Size(54, 23); - bta.Location = new Point(6 + i % 3 * 60, 48 + i / 3 * 29); groupBox1.Controls.Add(bta); i++; } @@ -74,7 +76,7 @@ private void TimerControl_Load(object sender, EventArgs e) SoundListBox.SelectedIndex = 0; } - public void addTimer(string name, DateTime finishTime, Creature c, string group = "Custom") + public void AddTimer(string name, DateTime finishTime, Creature c, string group = "Custom") { TimerListEntry tle = new TimerListEntry { @@ -86,7 +88,7 @@ public void addTimer(string name, DateTime finishTime, Creature c, string group ? null : SoundListBox.SelectedItem as string }; - tle.lvi = createLvi(name, finishTime, tle); + tle.lvi = CreateLvi(name, finishTime, tle); int i = 0; while (i < listViewTimer.Items.Count && ((TimerListEntry)listViewTimer.Items[i].Tag).time < finishTime) { @@ -94,18 +96,18 @@ public void addTimer(string name, DateTime finishTime, Creature c, string group } listViewTimer.Items.Insert(i, tle.lvi); timerListEntries.Add(tle); - onTimerChange?.Invoke(); + OnTimerChange?.Invoke(); } - private void removeTimer(TimerListEntry timerEntry, bool invokeChange = true) + private void RemoveTimer(TimerListEntry timerEntry, bool invokeChange = true) { timerEntry.lvi.Remove(); timerListEntries.Remove(timerEntry); if (invokeChange) - onTimerChange?.Invoke(); + OnTimerChange?.Invoke(); } - private ListViewItem createLvi(string name, DateTime finishTime, TimerListEntry tle) + private ListViewItem CreateLvi(string name, DateTime finishTime, TimerListEntry tle) { // check if group of timers exists ListViewGroup g = null; @@ -155,7 +157,7 @@ public void Tick() { if (diff.TotalSeconds < timerAlerts[i] + 0.8 && diff.TotalSeconds > timerAlerts[i] - 0.8) { - playSound(t.@group, i, "", t.sound); + PlaySound(t.@group, i, "", t.sound); break; } } @@ -164,35 +166,23 @@ public void Tick() } } - public void playSound(string group, int alert, string speakText = "", string customSoundFile = null) + public void PlaySound(string group, int alert, string speakText = "", string customSoundFile = null) { - string soundPath = null; - if (!string.IsNullOrEmpty(customSoundFile)) - { - soundPath = Path.Combine(FileService.GetPath("sounds"), customSoundFile); - if (!File.Exists(soundPath)) - soundPath = null; - } - if (!string.IsNullOrEmpty(soundPath)) - { - using (var sp = new SoundPlayer(soundPath)) - playSoundFile(sp); - } - else if (string.IsNullOrEmpty(speakText)) + if (!PlayCustomSound(customSoundFile) && string.IsNullOrEmpty(speakText)) { switch (group) { case "Starving": - playSoundFile(sounds[0]); + PlaySoundFile(sounds[0]); break; case "Wakeup": - playSoundFile(sounds[1]); + PlaySoundFile(sounds[1]); break; case "Birth": - playSoundFile(sounds[2]); + PlaySoundFile(sounds[2]); break; case "Custom": - playSoundFile(sounds[3]); + PlaySoundFile(sounds[3]); break; default: SystemSounds.Hand.Play(); @@ -209,7 +199,7 @@ public void playSound(string group, int alert, string speakText = "", string cus } } - private void playSoundFile(SoundPlayer sound) + private void PlaySoundFile(SoundPlayer sound) { if (sound == null) SystemSounds.Hand.Play(); else sound.Play(); @@ -266,7 +256,7 @@ public CreatureCollection CreatureCollection foreach (TimerListEntry tle in timerListEntries) { - tle.lvi = createLvi(tle.name, tle.time, tle); + tle.lvi = CreateLvi(tle.name, tle.time, tle); int i = 0; while (i < listViewTimer.Items.Count && ((TimerListEntry)listViewTimer.Items[i].Tag).time < tle.time) { @@ -308,16 +298,16 @@ private void removeSelectedEntry() , "Remove Timer?", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK) { for (int t = listViewTimer.SelectedIndices.Count - 1; t >= 0; t--) - removeTimer((TimerListEntry)listViewTimer.SelectedItems[t].Tag, false); + RemoveTimer((TimerListEntry)listViewTimer.SelectedItems[t].Tag, false); - refreshOverlayTimers(); - onTimerChange?.Invoke(); + RefreshOverlayTimers(); + OnTimerChange?.Invoke(); } } private void buttonAddTimer_Click(object sender, EventArgs e) { - addTimer(textBoxTimerName.Text, dateTimePickerTimerFinish.Value, null); + AddTimer(textBoxTimerName.Text, dateTimePickerTimerFinish.Value, null); } private void bSetTimerNow_Click(object sender, EventArgs e) @@ -344,11 +334,11 @@ private void addToOverlayToolStripMenuItem_Click(object sender, EventArgs e) bool show = !((TimerListEntry)listViewTimer.SelectedItems[0].Tag).showInOverlay; for (int i = 0; i < listViewTimer.SelectedIndices.Count; i++) ((TimerListEntry)listViewTimer.SelectedItems[i].Tag).showInOverlay = show; - refreshOverlayTimers(); + RefreshOverlayTimers(); } } - private void refreshOverlayTimers() + private void RefreshOverlayTimers() { if (ARKOverlay.theOverlay != null) { @@ -381,24 +371,24 @@ public enum TimerGroups Starving } - internal void deleteAllExpiredTimers() + internal void DeleteAllExpiredTimers() { if (MessageBox.Show("Delete all expired timers?", "Delete?", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { for (int i = 0; i < timerListEntries.Count; i++) { if (timerListEntries[i].time < DateTime.Now) - removeTimer(timerListEntries[i--], false); + RemoveTimer(timerListEntries[i--], false); } - refreshOverlayTimers(); + RefreshOverlayTimers(); - onTimerChange?.Invoke(); + OnTimerChange?.Invoke(); } } private void removeAllExpiredTimersToolStripMenuItem_Click(object sender, EventArgs e) { - deleteAllExpiredTimers(); + DeleteAllExpiredTimers(); } private void btOpenSoundFolder_Click(object sender, EventArgs e) @@ -416,5 +406,42 @@ private void btOpenSoundFolder_Click(object sender, EventArgs e) if (Directory.Exists(soundPath)) System.Diagnostics.Process.Start(soundPath); } + + private void btPlaySelectedSound_Click(object sender, EventArgs e) + { + string customSoundfile = SoundListBox.SelectedItem?.ToString(); + if (customSoundfile == DefaultSoundName) + { + SystemSounds.Hand.Play(); + return; + } + + PlayCustomSound(customSoundfile); + } + + /// + /// Plays a custom sound file at a specific folder. Returns false if the file wasn't found. + /// + /// + /// + private bool PlayCustomSound(string fileName) + { + string soundPath = null; + if (!string.IsNullOrEmpty(fileName)) + { + soundPath = Path.Combine(FileService.GetPath("sounds"), fileName); + if (!File.Exists(soundPath)) + soundPath = null; + } + if (!string.IsNullOrEmpty(soundPath)) + { + using (var sp = new SoundPlayer(soundPath)) + { + PlaySoundFile(sp); + return true; + } + } + return false; + } } } diff --git a/ARKBreedingStats/importExported/ExportedCreatureList.cs b/ARKBreedingStats/importExported/ExportedCreatureList.cs index 4eb3992b..ce697e1f 100644 --- a/ARKBreedingStats/importExported/ExportedCreatureList.cs +++ b/ARKBreedingStats/importExported/ExportedCreatureList.cs @@ -39,7 +39,7 @@ public ExportedCreatureList() private void ExportedCreatureList_FormClosing(object sender, FormClosingEventArgs e) { // if window is not minimized - if (Location.X >= 0) + if (this.WindowState == FormWindowState.Normal) { Properties.Settings.Default.importExportedLocation = Location; Properties.Settings.Default.importExportedSize = Size; diff --git a/ARKBreedingStats/json/values/values.json b/ARKBreedingStats/json/values/values.json index 379d4c8e..381f7052 100644 --- a/ARKBreedingStats/json/values/values.json +++ b/ARKBreedingStats/json/values/values.json @@ -1,6 +1,6 @@ { "format": "1.12", - "version": "298.41.4205769", + "version": "300.0.4310275", "species": [ { "name": "Rockwell", @@ -10566,6 +10566,84 @@ "doesNotUseOxygen": true, "displayedStats": 919 }, + { + "name": "Skeletal Carnotaurus", + "blueprintPath": "/Game/PrimalEarth/Dinos/Carno/Bone_MegaCarno_Character_BP.Bone_MegaCarno_Character_BP", + "fullStatsRaw": [ + [ 6400, 0.2, 0.27, 0.5, 0 ], + [ 300, 0.1, 0.1, 0, 0 ], + [ 350, 0.06, 0, 0.5, 0 ], + [ 150, 0.1, 0.1, 0, 0 ], + [ 2000, 0.1, 0.1, 0, 0.15 ], + null, + null, + [ 300, 0.02, 0.04, 0, 0 ], + [ 1, 0.05, 0.1, 0.5, 0.4 ], + [ 1, 0, 0.01, 0.085, 0 ], + null, + null + ], + "immobilizedBy": [ + "Chain Bola" + ], + "breeding": { + "gestationTime": 0, + "incubationTime": 0, + "maturationTime": 166666.66666666666, + "matingCooldownMin": 64800, + "matingCooldownMax": 172800 + }, + "colors": [ + { + "name": "Unknown", + "colors": [ + "Black", + "Dark Red", + "Dino Albino", + "Red" + ] + }, + { + "name": "Unknown", + "colors": [ + "Black", + "Dark Red", + "Dino Albino", + "Red" + ] + }, + { "name": null }, + { "name": null }, + { "name": null }, + { + "name": "Unknown", + "colors": [ + "Black", + "Dark Red", + "Dino Albino", + "Red" + ] + } + ], + "taming": { + "nonViolent": false, + "violent": false, + "tamingIneffectiveness": 1.875, + "affinityNeeded0": 2000, + "affinityIncreasePL": 100, + "foodConsumptionBase": 0.001852, + "foodConsumptionMult": 199.983994 + }, + "boneDamageAdjusters": { + "Cnt_Head_JNT_SKL": 3.0, + "Cnt_Neck_002_JNT_SKL": 3.0, + "Cnt_Neck_000_JNT_SKL": 3.0 + }, + "TamedBaseHealthMultiplier": 1, + "NoImprintingForSpeed": false, + "doesNotUseOxygen": true, + "displayedStats": 919 + }, { "name": "Carnotaurus", "blueprintPath": "/Game/PrimalEarth/Dinos/Carno/Carno_Character_BP.Carno_Character_BP", @@ -14326,6 +14404,40 @@ "doesNotUseOxygen": true, "displayedStats": 919 }, + { + "name": "DodoRex", + "blueprintPath": "/Game/PrimalEarth/Dinos/DodoRex/DodoRex_Character_BP.DodoRex_Character_BP", + "fullStatsRaw": [ + [ 666666, 0.2, 0.27, 0, 0 ], + [ 1666, 0.1, 0.1, 0, 0 ], + [ 1550, 0.06, 0, 0.5, 0 ], + [ 150, 0.1, 0.1, 0, 0 ], + [ 3000, 0.1, 0.1, 0, 0 ], + null, + null, + [ 500, 0.02, 0.04, 0, 0 ], + [ 1, 0.05, 0.1, 0, 0.4 ], + [ 1, 0, 0.01, 0, 0 ], + null, + null + ], + "immobilizedBy": [ + "Large Bear Trap" + ], + "taming": { + "nonViolent": false, + "violent": false, + "tamingIneffectiveness": 1.25, + "affinityNeeded0": 3450, + "affinityIncreasePL": 150, + "foodConsumptionBase": 0.002314, + "foodConsumptionMult": 180.063385 + }, + "TamedBaseHealthMultiplier": 1, + "NoImprintingForSpeed": false, + "doesNotUseOxygen": true, + "displayedStats": 919 + }, { "name": "Doedicurus", "blueprintPath": "/Game/PrimalEarth/Dinos/Doedicurus/Doed_Character_BP.Doed_Character_BP", @@ -16121,6 +16233,98 @@ "doesNotUseOxygen": false, "displayedStats": 927 }, + { + "name": "Skeletal Giganotosaurus", + "blueprintPath": "/Game/PrimalEarth/Dinos/Giganotosaurus/Bone_Gigant_Character_BP.Bone_Gigant_Character_BP", + "fullStatsRaw": [ + [ 80000, 0.0005, 0.002, -63000, 0 ], + [ 400, 0.0005, 0.01, 0, 0 ], + [ 10000, 0.06, 0, 0, 0 ], + [ 150, 0.0025, 0.025, 0, 0 ], + [ 4000, 0.0025, 0.025, 0, 0 ], + null, + null, + [ 700, 0.01, 0.01, 0, 0 ], + [ 1, 0.05, 0.05, -0.8, 0 ], + [ 1, 0, 0.0031, 0, 0 ], + null, + null + ], + "immobilizedBy": [ + "Large Bear Trap" + ], + "breeding": { + "gestationTime": 0, + "incubationTime": 179985.60115190782, + "eggTempMin": 43, + "eggTempMax": 44, + "maturationTime": 1010101.01010101, + "matingCooldownMin": 64800, + "matingCooldownMax": 172800 + }, + "colors": [ + { + "name": "Unknown", + "colors": [ + "Black", + "Dark Grey", + "Dino Dark Brown", + "Dino Dark Green", + "Dino Dark Red", + "Dino Dark Yellow", + "Dino Darker Grey", + "Dino Light Brown", + "Dino Light Green", + "Dino Light Yellow", + "Dino Medium Brown", + "Dino Medium Green", + "Light Grey" + ] + }, + { "name": null }, + { "name": null }, + { "name": null }, + { + "name": "Unknown", + "colors": [ + "Black", + "Dino Dark Red", + "Dino Light Brown", + "Dino Light Green", + "Dino Light Yellow", + "Dino Medium Brown", + "Dino Medium Green", + "Light Grey" + ] + }, + { + "name": "Unknown", + "colors": [ + "Black", + "Dark Grey", + "Dino Dark Brown", + "Dino Dark Green", + "Dino Dark Red", + "Dino Darker Grey", + "Dino Medium Brown", + "Dino Medium Green" + ] + } + ], + "taming": { + "nonViolent": false, + "violent": false, + "tamingIneffectiveness": 1.25, + "affinityNeeded0": 5000, + "affinityIncreasePL": 160, + "foodConsumptionBase": 0.002314, + "foodConsumptionMult": 160.056335 + }, + "TamedBaseHealthMultiplier": 1, + "NoImprintingForSpeed": false, + "doesNotUseOxygen": false, + "displayedStats": 927 + }, { "name": "Giganotosaurus", "blueprintPath": "/Game/PrimalEarth/Dinos/Giganotosaurus/Gigant_Character_BP.Gigant_Character_BP", @@ -23813,19 +24017,19 @@ "displayedStats": 927 }, { - "name": "Quetzal", - "blueprintPath": "/Game/PrimalEarth/Dinos/Quetzalcoatlus/Quetz_Character_BP.Quetz_Character_BP", + "name": "Skeletal Quetzal", + "blueprintPath": "/Game/PrimalEarth/Dinos/Quetzalcoatlus/Bone_Quetz_Character_BP.Bone_Quetz_Character_BP", "fullStatsRaw": [ - [ 1200, 0.2, 0.108, 0.5, 0 ], - [ 800, 0.05, 0.05, 0, 0 ], + [ 18000, 0.2, 0.27, 0.5, 0 ], + [ 750, 0.1, 0.1, 0, 0 ], [ 1850, 0.06, 0, 0.5, 0 ], [ 150, 0.1, 0.1, 0, 0 ], [ 1200, 0.1, 0.1, 0, 0.15 ], null, null, - [ 800, 0.02, 0.05, 0, 0 ], + [ 780, 0.02, 0.04, 0, 0 ], [ 1, 0.04, 0.1, 0.4, 0.4 ], - [ 1, 0, 0.0, 0.365, 0 ], + [ 1, 0, 0.01, 0.365, 0 ], null, null ], @@ -23847,7 +24051,7 @@ }, "colors": [ { - "name": "Wing Membrane", + "name": "Unknown", "colors": [ "Black", "Dark Grey", @@ -23868,7 +24072,7 @@ ] }, { - "name": "Crest", + "name": "Unknown", "colors": [ "Black", "Dino Light Blue", @@ -23884,7 +24088,7 @@ ] }, { - "name": "Skins", + "name": "Unknown", "colors": [ "Black", "Dark Grey", @@ -23901,7 +24105,7 @@ ] }, { - "name": "Freckles", + "name": "Unknown", "colors": [ "Black", "Dino Light Blue", @@ -23931,7 +24135,7 @@ ] }, { - "name": "Body Feathers", + "name": "Unknown", "colors": [ "Black", "Dark Grey", @@ -23948,11 +24152,10 @@ ], "taming": { "nonViolent": false, - "violent": true, + "violent": false, "tamingIneffectiveness": 0.9375, "affinityNeeded0": 6850, "affinityIncreasePL": 300, - "torporDepletionPS0": 3.4000000000000004, "foodConsumptionBase": 0.0035, "foodConsumptionMult": 140 }, @@ -23965,51 +24168,203 @@ "displayedStats": 927 }, { - "name": "Tek Raptor", - "blueprintPath": "/Game/PrimalEarth/Dinos/Raptor/BionicRaptor_Character_BP.BionicRaptor_Character_BP", + "name": "Quetzal", + "blueprintPath": "/Game/PrimalEarth/Dinos/Quetzalcoatlus/Quetz_Character_BP.Quetz_Character_BP", "fullStatsRaw": [ - [ 200, 0.2, 0.27, 0.5, 0 ], - [ 150, 0.1, 0.1, 0, 0 ], - [ 180, 0.06, 0, 0.5, 0 ], + [ 1200, 0.2, 0.108, 0.5, 0 ], + [ 800, 0.05, 0.05, 0, 0 ], + [ 1850, 0.06, 0, 0.5, 0 ], [ 150, 0.1, 0.1, 0, 0 ], - [ 1200, 0.1, 0.1, 0, 0 ], + [ 1200, 0.1, 0.1, 0, 0.15 ], null, null, - [ 140, 0.02, 0.04, 0, 0 ], - [ 1, 0.05, 0.1, 0.5, 0.4 ], - [ 1, 0, 0.015, 0.2, 0 ], + [ 800, 0.02, 0.05, 0, 0 ], + [ 1, 0.04, 0.1, 0.4, 0.4 ], + [ 1, 0, 0.0, 0.365, 0 ], null, null ], + "statImprintMult": [ 0.2, 0, 0.2, 0, 0.2, 0.2, 0, 0.2, 0.2, 0, 0, 0 ], "immobilizedBy": [ - "Bola", + "Chain Bola", "Bear Trap", "Large Bear Trap", "Plant Species Y" ], "breeding": { "gestationTime": 0, - "incubationTime": 7199.424046076313, - "eggTempMin": 20, - "eggTempMax": 28, - "maturationTime": 133333.3333333333, + "incubationTime": 59995.20038396928, + "eggTempMin": 5, + "eggTempMax": 6, + "maturationTime": 666666.6666666666, "matingCooldownMin": 64800, "matingCooldownMax": 172800 }, "colors": [ { - "name": "Inner Body", + "name": "Wing Membrane", "colors": [ + "Black", "Dark Grey", - "Dark Red", "Dino Dark Brown", + "Dino Dark Green", "Dino Dark Orange", - "Dino Light Blue", - "Dino Light Yellow", - "DragonBase0", - "DragonBase1", - "DragonFire", - "Light Brown", + "Dino Dark Red", + "Dino Dark Yellow", + "Dino Darker Grey", + "Dino Light Brown", + "Dino Light Green", + "Dino Light Orange", + "Dino Light Red", + "Dino Light Yellow", + "Dino Medium Brown", + "Dino Medium Green", + "Light Grey" + ] + }, + { + "name": "Crest", + "colors": [ + "Black", + "Dino Light Blue", + "Dino Light Brown", + "Dino Light Green", + "Dino Light Orange", + "Dino Light Purple", + "Dino Light Red", + "Dino Light Yellow", + "Dino Medium Brown", + "Dino Medium Green", + "Light Grey" + ] + }, + { + "name": "Skins", + "colors": [ + "Black", + "Dark Grey", + "Dino Dark Blue", + "Dino Dark Brown", + "Dino Dark Green", + "Dino Dark Orange", + "Dino Dark Purple", + "Dino Dark Red", + "Dino Dark Yellow", + "Dino Darker Grey", + "Dino Medium Brown", + "Dino Medium Green" + ] + }, + { + "name": "Freckles", + "colors": [ + "Black", + "Dino Light Blue", + "Dino Light Brown", + "Dino Light Green", + "Dino Light Orange", + "Dino Light Purple", + "Dino Light Red", + "Dino Light Yellow", + "Dino Medium Brown", + "Dino Medium Green", + "Light Grey" + ] + }, + { + "name": "Beak", + "colors": [ + "Black", + "Dark Grey", + "Dino Dark Brown", + "Dino Dark Orange", + "Dino Darker Grey", + "Dino Light Brown", + "Dino Light Orange", + "Dino Medium Brown", + "Light Grey" + ] + }, + { + "name": "Body Feathers", + "colors": [ + "Black", + "Dark Grey", + "Dino Dark Brown", + "Dino Dark Green", + "Dino Dark Orange", + "Dino Dark Red", + "Dino Dark Yellow", + "Dino Darker Grey", + "Dino Medium Brown", + "Dino Medium Green" + ] + } + ], + "taming": { + "nonViolent": false, + "violent": true, + "tamingIneffectiveness": 0.9375, + "affinityNeeded0": 6850, + "affinityIncreasePL": 300, + "torporDepletionPS0": 3.4000000000000004, + "foodConsumptionBase": 0.0035, + "foodConsumptionMult": 140 + }, + "boneDamageAdjusters": { + "c_head": 3.0 + }, + "TamedBaseHealthMultiplier": 0.85, + "NoImprintingForSpeed": true, + "doesNotUseOxygen": false, + "displayedStats": 927 + }, + { + "name": "Tek Raptor", + "blueprintPath": "/Game/PrimalEarth/Dinos/Raptor/BionicRaptor_Character_BP.BionicRaptor_Character_BP", + "fullStatsRaw": [ + [ 200, 0.2, 0.27, 0.5, 0 ], + [ 150, 0.1, 0.1, 0, 0 ], + [ 180, 0.06, 0, 0.5, 0 ], + [ 150, 0.1, 0.1, 0, 0 ], + [ 1200, 0.1, 0.1, 0, 0 ], + null, + null, + [ 140, 0.02, 0.04, 0, 0 ], + [ 1, 0.05, 0.1, 0.5, 0.4 ], + [ 1, 0, 0.015, 0.2, 0 ], + null, + null + ], + "immobilizedBy": [ + "Bola", + "Bear Trap", + "Large Bear Trap", + "Plant Species Y" + ], + "breeding": { + "gestationTime": 0, + "incubationTime": 7199.424046076313, + "eggTempMin": 20, + "eggTempMax": 28, + "maturationTime": 133333.3333333333, + "matingCooldownMin": 64800, + "matingCooldownMax": 172800 + }, + "colors": [ + { + "name": "Inner Body", + "colors": [ + "Dark Grey", + "Dark Red", + "Dino Dark Brown", + "Dino Dark Orange", + "Dino Light Blue", + "Dino Light Yellow", + "DragonBase0", + "DragonBase1", + "DragonFire", + "Light Brown", "Light Grey", "Light Orange", "Light Red", @@ -24130,6 +24485,92 @@ "doesNotUseOxygen": false, "displayedStats": 927 }, + { + "name": "Skeletal Raptor", + "blueprintPath": "/Game/PrimalEarth/Dinos/Raptor/Bone_MegaRaptor_Character_BP.Bone_MegaRaptor_Character_BP", + "fullStatsRaw": [ + [ 3600, 0.2, 0.27, 0.5, 0 ], + [ 150, 0.1, 0.1, 0, 0 ], + [ 180, 0.06, 0, 0.5, 0 ], + [ 150, 0.1, 0.1, 0, 0 ], + [ 1200, 0.1, 0.1, 0, 0 ], + null, + null, + [ 140, 0.02, 0.04, 0, 0 ], + [ 1, 0.05, 0.1, 0.5, 0.4 ], + [ 1, 0, 0.015, 0.2, 0 ], + null, + null + ], + "immobilizedBy": [ + "Chain Bola" + ], + "breeding": { + "gestationTime": 0, + "incubationTime": 0, + "maturationTime": 133333.3333333333, + "matingCooldownMin": 64800, + "matingCooldownMax": 172800 + }, + "colors": [ + { + "name": "Unknown", + "colors": [ + "Black", + "Dark Red", + "Dino Albino", + "Dino Dark Orange" + ] + }, + { + "name": "Unknown", + "colors": [ + "Black", + "Dark Red", + "Dino Albino", + "Dino Dark Orange" + ] + }, + { "name": null }, + { + "name": "Unknown", + "colors": [ + "Black", + "Dark Red", + "Dino Albino", + "Dino Dark Orange" + ] + }, + { "name": null }, + { + "name": "Unknown", + "colors": [ + "Black", + "Dark Red", + "Dino Albino", + "Dino Dark Orange" + ] + } + ], + "taming": { + "nonViolent": false, + "violent": false, + "tamingIneffectiveness": 3.125, + "affinityNeeded0": 1200, + "affinityIncreasePL": 60, + "foodConsumptionBase": 0.001543, + "foodConsumptionMult": 648.088135 + }, + "boneDamageAdjusters": { + "Cnt_Head_JNT_SKL": 3.0, + "Cnt_Neck_002_JNT_SKL": 3.0, + "Cnt_Neck_000_JNT_SKL": 3.0 + }, + "TamedBaseHealthMultiplier": 1, + "NoImprintingForSpeed": false, + "doesNotUseOxygen": true, + "displayedStats": 919 + }, { "name": "Alpha Raptor", "blueprintPath": "/Game/PrimalEarth/Dinos/Raptor/MegaRaptor_Character_BP.MegaRaptor_Character_BP", @@ -24776,6 +25217,105 @@ "doesNotUseOxygen": false, "displayedStats": 927 }, + { + "name": "Skeletal Rex", + "blueprintPath": "/Game/PrimalEarth/Dinos/Rex/Bone_MegaRex_Character_BP.Bone_MegaRex_Character_BP", + "fullStatsRaw": [ + [ 17500, 0.2, 0.27, 0.5, 0 ], + [ 420, 0.1, 0.1, 0, 0 ], + [ 1550, 0.06, 0, 0.5, 0 ], + [ 150, 0.1, 0.1, 0, 0 ], + [ 3000, 0.1, 0.1, 0, 0 ], + null, + null, + [ 500, 0.02, 0.04, 0, 0 ], + [ 1, 0.05, 0.1, 0.5, 0.4 ], + [ 1, 0, 0.01, 0, 0 ], + null, + null + ], + "immobilizedBy": [ + "Chain Bola" + ], + "breeding": { + "gestationTime": 0, + "incubationTime": 17998.560115190783, + "eggTempMin": 32, + "eggTempMax": 34, + "maturationTime": 333333.3333333333, + "matingCooldownMin": 64800, + "matingCooldownMax": 172800 + }, + "colors": [ + { + "name": "Unknown", + "colors": [ + "Black", + "Dark Red", + "Dino Albino", + "Red" + ] + }, + { + "name": "Unknown", + "colors": [ + "Black", + "Dark Red", + "Dino Albino", + "Red" + ] + }, + { + "name": "Unknown", + "colors": [ + "Black", + "Dark Red", + "Dino Albino", + "Red" + ] + }, + { + "name": "Unknown", + "colors": [ + "Black", + "Dark Red", + "Dino Albino", + "Red" + ] + }, + { + "name": "Unknown", + "colors": [ + "Black", + "Dark Red", + "Dino Albino", + "Red" + ] + }, + { + "name": "Unknown", + "colors": [ + "Black", + "Dark Red", + "Dino Albino", + "Red" + ] + } + ], + "taming": { + "nonViolent": false, + "violent": false, + "tamingIneffectiveness": 1.25, + "affinityNeeded0": 3450, + "affinityIncreasePL": 150, + "foodConsumptionBase": 0.002314, + "foodConsumptionMult": 180.063385 + }, + "TamedBaseHealthMultiplier": 1, + "NoImprintingForSpeed": false, + "doesNotUseOxygen": true, + "displayedStats": 919 + }, { "name": "Alpha T-Rex", "blueprintPath": "/Game/PrimalEarth/Dinos/Rex/MegaRex_Character_BP.MegaRex_Character_BP", @@ -25401,26 +25941,141 @@ [ 450, 0.1, 0.1, 0, 0 ], [ 400, 0.06, 0, 0.5, 0 ], [ 150, 0.1, 0.1, 0, 0 ], - [ 1500, 0.1, 0.1, 0, 0 ], + [ 1500, 0.1, 0.1, 0, 0 ], + null, + null, + [ 300, 0.02, 0.04, 0, 0 ], + [ 1, 0.05, 0.1, 0.8, 0.5 ], + [ 1, 0, 0.01, 0.6, 0 ], + null, + null + ], + "immobilizedBy": [ + "Chain Bola", + "Large Bear Trap", + "Plant Species Y" + ], + "breeding": { + "gestationTime": 0, + "incubationTime": 8999.280057595392, + "eggTempMin": 30, + "eggTempMax": 34, + "maturationTime": 166666.66666666666, + "matingCooldownMin": 64800, + "matingCooldownMax": 172800 + }, + "colors": [ + { + "name": "Unknown", + "colors": [ + "Black", + "Dark Grey", + "Dino Dark Brown", + "Dino Dark Green", + "Dino Dark Yellow", + "Dino Darker Grey", + "Dino Light Yellow", + "Dino Medium Brown", + "Dino Medium Green" + ] + }, + { "name": null }, + { + "name": "Unknown", + "colors": [ + "Black", + "Dark Grey", + "Dino Dark Brown", + "Dino Dark Green", + "Dino Dark Yellow", + "Dino Darker Grey", + "Dino Light Yellow", + "Dino Medium Brown", + "Dino Medium Green" + ] + }, + { + "name": "Unknown", + "colors": [ + "Black", + "Dark Grey", + "Dino Dark Brown", + "Dino Dark Green", + "Dino Dark Yellow", + "Dino Darker Grey", + "Dino Light Yellow", + "Dino Medium Brown", + "Dino Medium Green" + ] + }, + { + "name": "Unknown", + "colors": [ + "Black", + "Dark Grey", + "Dino Dark Brown", + "Dino Dark Green", + "Dino Dark Yellow", + "Dino Darker Grey", + "Dino Light Yellow", + "Dino Medium Brown", + "Dino Medium Green" + ] + }, + { + "name": "Unknown", + "colors": [ + "Black", + "Dark Grey", + "Dino Dark Brown", + "Dino Dark Green", + "Dino Dark Yellow", + "Dino Darker Grey", + "Dino Light Yellow", + "Dino Medium Brown", + "Dino Medium Green" + ] + } + ], + "taming": { + "nonViolent": false, + "violent": true, + "tamingIneffectiveness": 2.5, + "affinityNeeded0": 2000, + "affinityIncreasePL": 75, + "torporDepletionPS0": 0.30000000000000004, + "foodConsumptionBase": 0.001578, + "foodConsumptionMult": 211.237854 + }, + "TamedBaseHealthMultiplier": 0.96, + "NoImprintingForSpeed": false, + "doesNotUseOxygen": true, + "displayedStats": 919 + }, + { + "name": "Skeletal Bronto", + "blueprintPath": "/Game/PrimalEarth/Dinos/Sauropod/Bone_Sauropod_Character_BP.Bone_Sauropod_Character_BP", + "fullStatsRaw": [ + [ 34500, 0.2, 0.19, 0.5, 0 ], + [ 240, 0.1, 0.1, 0, 0 ], + [ 2000, 0.06, 0, 0.5, 0 ], + [ 150, 0.1, 0.1, 0, 0 ], + [ 10000, 0.1, 0.1, 0, 0 ], null, null, - [ 300, 0.02, 0.04, 0, 0 ], - [ 1, 0.05, 0.1, 0.8, 0.5 ], - [ 1, 0, 0.01, 0.6, 0 ], + [ 1600, 0.02, 0.04, 0, 0 ], + [ 1, 0.05, 0.1, 0.5, 0.4 ], + [ 1, 0, 0.01, 0, 0 ], null, null ], "immobilizedBy": [ - "Chain Bola", - "Large Bear Trap", - "Plant Species Y" + "Large Bear Trap" ], "breeding": { "gestationTime": 0, - "incubationTime": 8999.280057595392, - "eggTempMin": 30, - "eggTempMax": 34, - "maturationTime": 166666.66666666666, + "incubationTime": 0, + "maturationTime": 333333.3333333333, "matingCooldownMin": 64800, "matingCooldownMax": 172800 }, @@ -25432,24 +26087,10 @@ "Dark Grey", "Dino Dark Brown", "Dino Dark Green", + "Dino Dark Orange", + "Dino Dark Red", "Dino Dark Yellow", "Dino Darker Grey", - "Dino Light Yellow", - "Dino Medium Brown", - "Dino Medium Green" - ] - }, - { "name": null }, - { - "name": "Unknown", - "colors": [ - "Black", - "Dark Grey", - "Dino Dark Brown", - "Dino Dark Green", - "Dino Dark Yellow", - "Dino Darker Grey", - "Dino Light Yellow", "Dino Medium Brown", "Dino Medium Green" ] @@ -25461,13 +26102,16 @@ "Dark Grey", "Dino Dark Brown", "Dino Dark Green", + "Dino Dark Orange", + "Dino Dark Red", "Dino Dark Yellow", "Dino Darker Grey", - "Dino Light Yellow", "Dino Medium Brown", "Dino Medium Green" ] }, + { "name": null }, + { "name": null }, { "name": "Unknown", "colors": [ @@ -25475,9 +26119,10 @@ "Dark Grey", "Dino Dark Brown", "Dino Dark Green", + "Dino Dark Orange", + "Dino Dark Red", "Dino Dark Yellow", "Dino Darker Grey", - "Dino Light Yellow", "Dino Medium Brown", "Dino Medium Green" ] @@ -25486,31 +26131,29 @@ "name": "Unknown", "colors": [ "Black", - "Dark Grey", - "Dino Dark Brown", - "Dino Dark Green", - "Dino Dark Yellow", - "Dino Darker Grey", + "Dino Light Brown", + "Dino Light Green", + "Dino Light Orange", "Dino Light Yellow", "Dino Medium Brown", - "Dino Medium Green" + "Dino Medium Green", + "Light Grey" ] } ], "taming": { "nonViolent": false, - "violent": true, - "tamingIneffectiveness": 2.5, - "affinityNeeded0": 2000, - "affinityIncreasePL": 75, - "torporDepletionPS0": 0.30000000000000004, - "foodConsumptionBase": 0.001578, - "foodConsumptionMult": 211.237854 + "violent": false, + "tamingIneffectiveness": 0.06, + "affinityNeeded0": 10000, + "affinityIncreasePL": 500, + "foodConsumptionBase": 0.007716, + "foodConsumptionMult": 180.001144 }, - "TamedBaseHealthMultiplier": 0.96, + "TamedBaseHealthMultiplier": 0.9, "NoImprintingForSpeed": false, - "doesNotUseOxygen": true, - "displayedStats": 919 + "doesNotUseOxygen": false, + "displayedStats": 927 }, { "name": "Brontosaurus", @@ -27484,7 +28127,192 @@ null, [ 500, 0.02, 0.04, 0, 0 ], [ 1, 0.05, 0.1, 0.5, 0.4 ], - [ 1, 0, 0.02, 0.964, 0 ], + [ 1, 0, 0.02, 0.964, 0 ], + null, + null + ], + "immobilizedBy": [ + "Chain Bola", + "Large Bear Trap", + "Plant Species Y" + ], + "breeding": { + "gestationTime": 0, + "incubationTime": 9999.20006399488, + "eggTempMin": 22, + "eggTempMax": 28, + "maturationTime": 185185.18518518517, + "matingCooldownMin": 64800, + "matingCooldownMax": 172800 + }, + "colors": [ + { + "name": "Inner Body", + "colors": [ + "Dark Green", + "Dino Dark Brown", + "Dino Dark Green", + "Dino Dark Yellow", + "Dino Darker Grey", + "Dino Light Blue", + "Dino Light Brown", + "Dino Light Green", + "Dino Light Yellow", + "Dino Medium Brown", + "Dino Medium Green", + "DragonGreen0", + "DragonGreen1", + "GragonGreen2", + "Light Green", + "Light Yellow", + "NearBlack", + "NearWhite" + ] + }, + { + "name": "Spine", + "colors": [ + "Dark Green", + "Dino Dark Brown", + "Dino Dark Green", + "Dino Dark Yellow", + "Dino Darker Grey", + "Dino Light Blue", + "Dino Light Brown", + "Dino Light Green", + "Dino Light Yellow", + "Dino Medium Brown", + "Dino Medium Green", + "DragonGreen0", + "DragonGreen1", + "GragonGreen2", + "Light Green", + "Light Yellow", + "NearBlack", + "NearWhite" + ] + }, + { + "name": "Body", + "colors": [ + "Dark Green", + "Dino Dark Brown", + "Dino Dark Green", + "Dino Dark Yellow", + "Dino Darker Grey", + "Dino Light Blue", + "Dino Light Brown", + "Dino Light Green", + "Dino Light Yellow", + "Dino Medium Brown", + "Dino Medium Green", + "DragonGreen0", + "DragonGreen1", + "GragonGreen2", + "Light Green", + "Light Yellow", + "NearBlack", + "NearWhite" + ] + }, + { + "name": "Legs and Head", + "colors": [ + "Dark Green", + "Dino Dark Brown", + "Dino Dark Green", + "Dino Dark Yellow", + "Dino Darker Grey", + "Dino Light Blue", + "Dino Light Brown", + "Dino Light Green", + "Dino Light Yellow", + "Dino Medium Brown", + "Dino Medium Green", + "DragonGreen0", + "DragonGreen1", + "GragonGreen2", + "Light Green", + "Light Yellow", + "NearBlack", + "NearWhite" + ] + }, + { + "name": "Leg Tops and Spike Plate", + "colors": [ + "Dark Green", + "Dino Dark Brown", + "Dino Dark Green", + "Dino Dark Yellow", + "Dino Darker Grey", + "Dino Light Blue", + "Dino Light Brown", + "Dino Light Green", + "Dino Light Yellow", + "Dino Medium Brown", + "Dino Medium Green", + "DragonGreen0", + "DragonGreen1", + "GragonGreen2", + "Light Green", + "Light Yellow", + "NearBlack", + "NearWhite" + ] + }, + { + "name": "Emissive and Spike Tops", + "colors": [ + "Dino Albino", + "Dino Light Blue", + "Dino Light Purple", + "Light Green", + "Light Orange", + "Light Red", + "Light Yellow" + ] + } + ], + "taming": { + "nonViolent": false, + "violent": true, + "tamingIneffectiveness": 0.1, + "affinityNeeded0": 6000, + "affinityIncreasePL": 300, + "torporDepletionPS0": 0.30000000000000004, + "foodConsumptionBase": 0.005341, + "foodConsumptionMult": 208.034286 + }, + "boneDamageAdjusters": { + "Cnt_Head_JNT_SKL": 1.6699999570846558, + "Cnt_Jaw_JNT_SKL": 1.6699999570846558, + "Cnt_Neck_004_JNT_SKL": 1.6699999570846558, + "Cnt_Spine_002_JNT_SKL": 0.699999988079071, + "Cnt_Spine_001_JNT_SKL": 0.699999988079071, + "Cnt_Spine_000_JNT_SKL": 0.699999988079071, + "Cnt_Spine_003_JNT_SKL": 0.699999988079071, + "Cnt_Tail_000_JNT_SKL": 0.699999988079071 + }, + "TamedBaseHealthMultiplier": 1, + "NoImprintingForSpeed": false, + "doesNotUseOxygen": false, + "displayedStats": 927 + }, + { + "name": "Skeletal Stego", + "blueprintPath": "/Game/PrimalEarth/Dinos/Stego/Bone_Stego_Character_BP.Bone_Stego_Character_BP", + "fullStatsRaw": [ + [ 8550, 0.2, 0.27, 0.5, 0 ], + [ 300, 0.1, 0.1, 0, 0 ], + [ 500, 0.06, 0, 0.5, 0 ], + [ 150, 0.1, 0.1, 0, 0 ], + [ 6000, 0.1, 0.1, 0, 0 ], + null, + null, + [ 440, 0.02, 0.04, 0, 0 ], + [ 1, 0.05, 0.1, 0.5, 0.4 ], + [ 1, 0, 0.01, 0.964, 0 ], null, null ], @@ -27495,149 +28323,112 @@ ], "breeding": { "gestationTime": 0, - "incubationTime": 9999.20006399488, - "eggTempMin": 22, - "eggTempMax": 28, + "incubationTime": 0, "maturationTime": 185185.18518518517, "matingCooldownMin": 64800, "matingCooldownMax": 172800 }, "colors": [ { - "name": "Inner Body", + "name": "Unknown", "colors": [ - "Dark Green", + "Black", + "Dark Grey", "Dino Dark Brown", "Dino Dark Green", + "Dino Dark Orange", + "Dino Dark Red", "Dino Dark Yellow", "Dino Darker Grey", - "Dino Light Blue", - "Dino Light Brown", - "Dino Light Green", - "Dino Light Yellow", "Dino Medium Brown", - "Dino Medium Green", - "DragonGreen0", - "DragonGreen1", - "GragonGreen2", - "Light Green", - "Light Yellow", - "NearBlack", - "NearWhite" + "Dino Medium Green" ] }, { - "name": "Spine", + "name": "Unknown", "colors": [ - "Dark Green", + "Black", + "Dark Grey", + "Dino Dark Blue", "Dino Dark Brown", "Dino Dark Green", + "Dino Dark Orange", + "Dino Dark Purple", + "Dino Dark Red", "Dino Dark Yellow", "Dino Darker Grey", - "Dino Light Blue", - "Dino Light Brown", - "Dino Light Green", - "Dino Light Yellow", "Dino Medium Brown", - "Dino Medium Green", - "DragonGreen0", - "DragonGreen1", - "GragonGreen2", - "Light Green", - "Light Yellow", - "NearBlack", - "NearWhite" + "Dino Medium Green" ] }, { - "name": "Body", + "name": "Unknown", "colors": [ - "Dark Green", + "Black", + "Dark Grey", + "Dino Dark Blue", "Dino Dark Brown", "Dino Dark Green", + "Dino Dark Orange", + "Dino Dark Purple", + "Dino Dark Red", "Dino Dark Yellow", "Dino Darker Grey", - "Dino Light Blue", - "Dino Light Brown", - "Dino Light Green", - "Dino Light Yellow", "Dino Medium Brown", - "Dino Medium Green", - "DragonGreen0", - "DragonGreen1", - "GragonGreen2", - "Light Green", - "Light Yellow", - "NearBlack", - "NearWhite" + "Dino Medium Green" ] }, { - "name": "Legs and Head", + "name": "Unknown", "colors": [ - "Dark Green", + "Black", + "Dark Grey", "Dino Dark Brown", "Dino Dark Green", + "Dino Dark Orange", + "Dino Dark Red", "Dino Dark Yellow", "Dino Darker Grey", - "Dino Light Blue", - "Dino Light Brown", - "Dino Light Green", - "Dino Light Yellow", "Dino Medium Brown", - "Dino Medium Green", - "DragonGreen0", - "DragonGreen1", - "GragonGreen2", - "Light Green", - "Light Yellow", - "NearBlack", - "NearWhite" + "Dino Medium Green" ] }, { - "name": "Leg Tops and Spike Plate", + "name": "Unknown", "colors": [ - "Dark Green", - "Dino Dark Brown", - "Dino Dark Green", - "Dino Dark Yellow", - "Dino Darker Grey", + "Black", "Dino Light Blue", "Dino Light Brown", "Dino Light Green", + "Dino Light Orange", + "Dino Light Purple", + "Dino Light Red", "Dino Light Yellow", "Dino Medium Brown", "Dino Medium Green", - "DragonGreen0", - "DragonGreen1", - "GragonGreen2", - "Light Green", - "Light Yellow", - "NearBlack", - "NearWhite" + "Light Grey" ] }, { - "name": "Emissive and Spike Tops", + "name": "Unknown", "colors": [ - "Dino Albino", - "Dino Light Blue", - "Dino Light Purple", - "Light Green", - "Light Orange", - "Light Red", - "Light Yellow" + "Black", + "Dino Light Brown", + "Dino Light Green", + "Dino Light Orange", + "Dino Light Yellow", + "Dino Medium Brown", + "Dino Medium Green", + "Light Grey" ] } ], "taming": { "nonViolent": false, - "violent": true, + "violent": false, "tamingIneffectiveness": 0.1, "affinityNeeded0": 6000, "affinityIncreasePL": 300, - "torporDepletionPS0": 0.30000000000000004, "foodConsumptionBase": 0.005341, "foodConsumptionMult": 208.034286 }, @@ -28745,8 +29536,140 @@ "Dino Light Red", "Dino Light Yellow", "Dino Medium Brown", - "Dino Medium Green", - "Light Grey" + "Dino Medium Green", + "Light Grey" + ] + }, + { + "name": "Unknown", + "colors": [ + "Black", + "Dark Grey", + "Dino Albino", + "Dino Dark Blue", + "Dino Dark Brown", + "Dino Dark Green", + "Dino Dark Orange", + "Dino Dark Purple", + "Dino Dark Red", + "Dino Dark Yellow", + "Dino Darker Grey", + "Dino Light Blue", + "Dino Light Brown", + "Dino Light Green", + "Dino Light Orange", + "Dino Light Purple", + "Dino Light Red", + "Dino Light Yellow", + "Dino Medium Brown", + "Dino Medium Green", + "Light Grey" + ] + }, + { "name": null }, + { "name": null }, + { + "name": "Unknown", + "colors": [ + "Black", + "Dark Grey", + "Dino Dark Blue", + "Dino Dark Brown", + "Dino Dark Green", + "Dino Dark Orange", + "Dino Dark Purple", + "Dino Dark Red", + "Dino Dark Yellow", + "Dino Darker Grey", + "Dino Medium Brown", + "Dino Medium Green" + ] + }, + { + "name": "Unknown", + "colors": [ + "Black", + "Dark Grey", + "Dino Albino", + "Dino Dark Blue", + "Dino Dark Brown", + "Dino Dark Green", + "Dino Dark Orange", + "Dino Dark Purple", + "Dino Dark Red", + "Dino Dark Yellow", + "Dino Darker Grey", + "Dino Light Blue", + "Dino Light Brown", + "Dino Light Green", + "Dino Light Orange", + "Dino Light Purple", + "Dino Light Red", + "Dino Light Yellow", + "Dino Medium Brown", + "Dino Medium Green", + "Light Grey" + ] + } + ], + "taming": { + "nonViolent": false, + "violent": true, + "tamingIneffectiveness": 0.4, + "affinityNeeded0": 1800, + "affinityIncreasePL": 75, + "torporDepletionPS0": 0.6666000000000001, + "foodConsumptionBase": 0.001929, + "foodConsumptionMult": 648.00415 + }, + "TamedBaseHealthMultiplier": 0.96, + "NoImprintingForSpeed": false, + "doesNotUseOxygen": true, + "displayedStats": 919 + }, + { + "name": "Skeletal Trike", + "blueprintPath": "/Game/PrimalEarth/Dinos/Trike/Bone_Trike_Character_BP.Bone_Trike_Character_BP", + "fullStatsRaw": [ + [ 5625, 0.2, 0.27, 0.5, 0 ], + [ 150, 0.1, 0.1, 0, 0 ], + [ 250, 0.06, 0, 0.5, 0 ], + [ 150, 0.1, 0.1, 0, 0 ], + [ 3000, 0.1, 0.1, 0, 0 ], + null, + null, + [ 365, 0.02, 0.04, 0, 0 ], + [ 1, 0.05, 0.1, 0.5, 0.4 ], + [ 1, 0, 0.01, 1.226, 0 ], + null, + null + ], + "immobilizedBy": [ + "Chain Bola", + "Large Bear Trap", + "Plant Species Y" + ], + "breeding": { + "gestationTime": 0, + "incubationTime": 0, + "maturationTime": 166666.66666666666, + "matingCooldownMin": 64800, + "matingCooldownMax": 172800 + }, + "colors": [ + { + "name": "Unknown", + "colors": [ + "Black", + "Dark Grey", + "Dino Dark Brown", + "Dino Dark Green", + "Dino Dark Orange", + "Dino Dark Red", + "Dino Dark Yellow", + "Dino Darker Grey", + "Dino Medium Brown", + "Dino Medium Green" ] }, { @@ -28754,7 +29677,6 @@ "colors": [ "Black", "Dark Grey", - "Dino Albino", "Dino Dark Blue", "Dino Dark Brown", "Dino Dark Green", @@ -28763,30 +29685,19 @@ "Dino Dark Red", "Dino Dark Yellow", "Dino Darker Grey", - "Dino Light Blue", - "Dino Light Brown", - "Dino Light Green", - "Dino Light Orange", - "Dino Light Purple", - "Dino Light Red", - "Dino Light Yellow", "Dino Medium Brown", - "Dino Medium Green", - "Light Grey" + "Dino Medium Green" ] }, { "name": null }, - { "name": null }, { "name": "Unknown", "colors": [ "Black", "Dark Grey", - "Dino Dark Blue", "Dino Dark Brown", "Dino Dark Green", "Dino Dark Orange", - "Dino Dark Purple", "Dino Dark Red", "Dino Dark Yellow", "Dino Darker Grey", @@ -28799,7 +29710,6 @@ "colors": [ "Black", "Dark Grey", - "Dino Albino", "Dino Dark Blue", "Dino Dark Brown", "Dino Dark Green", @@ -28808,12 +29718,17 @@ "Dino Dark Red", "Dino Dark Yellow", "Dino Darker Grey", - "Dino Light Blue", + "Dino Medium Brown", + "Dino Medium Green" + ] + }, + { + "name": "Unknown", + "colors": [ + "Black", "Dino Light Brown", "Dino Light Green", "Dino Light Orange", - "Dino Light Purple", - "Dino Light Red", "Dino Light Yellow", "Dino Medium Brown", "Dino Medium Green", @@ -28823,18 +29738,21 @@ ], "taming": { "nonViolent": false, - "violent": true, - "tamingIneffectiveness": 0.4, - "affinityNeeded0": 1800, - "affinityIncreasePL": 75, - "torporDepletionPS0": 0.6666000000000001, - "foodConsumptionBase": 0.001929, - "foodConsumptionMult": 648.00415 + "violent": false, + "tamingIneffectiveness": 0.2, + "affinityNeeded0": 3000, + "affinityIncreasePL": 150, + "foodConsumptionBase": 0.003156, + "foodConsumptionMult": 352.06308 }, - "TamedBaseHealthMultiplier": 0.96, + "boneDamageAdjusters": { + "c_head": 0.15000000596046448, + "c_jaw": 0.15000000596046448 + }, + "TamedBaseHealthMultiplier": 1, "NoImprintingForSpeed": false, - "doesNotUseOxygen": true, - "displayedStats": 919 + "doesNotUseOxygen": false, + "displayedStats": 927 }, { "name": "Triceratops", @@ -30341,34 +31259,242 @@ { "name": "Lateral Horns", "colors": [ - "Black", - "Brown", - "Dino Dark Brown", + "Black", + "Brown", + "Dino Dark Brown", + "Dino Dark Orange", + "Dino Darker Grey", + "Light Brown", + "None" + ] + }, + { + "name": "Hair", + "colors": [ + "BigFoot5", + "Black", + "Dino Dark Orange", + "Dino Light Brown", + "Dino Light Orange", + "Dino Medium Brown" + ] + }, + { + "name": "Belly", + "colors": [ + "BigFoot0", + "BigFoot5", + "Dino Light Brown", + "Dino Light Orange", + "Dino Medium Brown" + ] + } + ], + "taming": { + "nonViolent": false, + "violent": false, + "tamingIneffectiveness": 1.5, + "affinityNeeded0": 8500, + "affinityIncreasePL": 150, + "foodConsumptionBase": 0.01, + "foodConsumptionMult": 0.05 + }, + "TamedBaseHealthMultiplier": 1, + "NoImprintingForSpeed": false, + "doesNotUseOxygen": true, + "displayedStats": 919 + }, + { + "name": "Alpha Deathworm", + "blueprintPath": "/Game/ScorchedEarth/Dinos/Deathworm/MegaDeathworm_Character_BP.MegaDeathworm_Character_BP", + "fullStatsRaw": [ + [ 27000, 0.002, 0.27, 0.5, 0 ], + [ 100, 0.1, 0.1, 0, 0 ], + [ 100, 0.06, 0, 0.5, 0 ], + [ 150, 0.1, 0.1, 0, 0 ], + [ 100, 0.1, 0.1, 0, 0 ], + null, + null, + [ 100, 0.02, 0.04, 0, 0 ], + [ 1, 0.05, 0.1, 0.5, 0.4 ], + [ 1, 0, 0.01, 0, 0 ], + null, + null + ], + "immobilizedBy": [], + "colors": [ + { + "name": "Body", + "colors": [ + "BigFoot0", + "BigFoot5", + "Dino Dark Orange", + "Dino Light Brown", + "Dino Light Orange", + "Dino Medium Brown" + ] + }, + { + "name": "UpperShell", + "colors": [ + "BigFoot0", + "BigFoot5", + "Dino Dark Brown", + "Dino Dark Orange", + "Dino Dark Red", + "Dino Medium Brown" + ] + }, + { + "name": "Claws", + "colors": [ + "BigFoot5", + "Black", + "Dino Dark Orange", + "Dino Light Brown", + "Dino Light Orange", + "Dino Medium Brown" + ] + }, + { + "name": "Lateral Horns", + "colors": [ + "Black", + "Brown", + "Dino Dark Brown", + "Dino Dark Orange", + "Dino Darker Grey", + "Light Brown", + "None" + ] + }, + { + "name": "Hair", + "colors": [ + "BigFoot5", + "Black", + "Dino Dark Orange", + "Dino Light Brown", + "Dino Light Orange", + "Dino Medium Brown" + ] + }, + { + "name": "Belly", + "colors": [ + "BigFoot0", + "BigFoot5", + "Dino Light Brown", + "Dino Light Orange", + "Dino Medium Brown" + ] + } + ], + "taming": { + "nonViolent": false, + "violent": false, + "tamingIneffectiveness": 1.5, + "affinityNeeded0": 8500, + "affinityIncreasePL": 150, + "foodConsumptionBase": 0.01, + "foodConsumptionMult": 0.05 + }, + "TamedBaseHealthMultiplier": 1, + "NoImprintingForSpeed": false, + "doesNotUseOxygen": true, + "displayedStats": 919 + }, + { + "name": "Dodo Wyvern", + "blueprintPath": "/Game/ScorchedEarth/Dinos/DodoWyvern/DodoWyvern_Character_BP.DodoWyvern_Character_BP", + "fullStatsRaw": [ + [ 666666, 0.2, 0.2, 0.3, 0 ], + [ 400, 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, + [ 3000, 0.02, 0.02, 0, 0 ], + [ 1, 0.05, 0.04, 0.3, 0.3 ], + [ 1, 0, 0, 0, 0 ], + null, + null + ], + "statImprintMult": [ 0.2, 0, 0.2, 0, 0.2, 0.2, 0, 0.2, 0.2, 0, 0, 0 ], + "immobilizedBy": [], + "breeding": { + "gestationTime": 0, + "incubationTime": 17998.560115190783, + "eggTempMin": 80, + "eggTempMax": 90, + "maturationTime": 333333.3333333333, + "matingCooldownMin": 64800, + "matingCooldownMax": 172800 + }, + "colors": [ + { + "name": "Body Main", + "colors": [ + "BigFoot4", + "BigFoot5", + "Dark Grey", + "DarkWolfFur", + "Dino Dark Orange", + "Dino Darker Grey", + "Dragon Base 0", + "DragonBase1", + "WolfFur" + ] + }, + null, + { + "name": "Scales Main", + "colors": [ + "BigFoot5", + "Dark Grey", + "DarkWolfFur", + "Dino Dark Orange", + "Dino Light Orange", + "Dino Medium Brown", + "DragonBase0", + "DragonBase1" + ] + }, + { + "name": "Wings Main", + "colors": [ + "BigFoot4", + "BigFoot5", + "Dark Grey", + "DarkWolfFur", "Dino Dark Orange", "Dino Darker Grey", - "Light Brown", - "None" + "Dragon Base 0", + "DragonBase1", + "WolfFur" ] }, { - "name": "Hair", + "name": "Fins Highlight", "colors": [ - "BigFoot5", - "Black", - "Dino Dark Orange", - "Dino Light Brown", + "Dino Dark Red", + "Dino Darker Grey", "Dino Light Orange", - "Dino Medium Brown" + "DragonBase0", + "DragonFire", + "Light Orange" ] }, { - "name": "Belly", + "name": "Body Highlights", "colors": [ - "BigFoot0", - "BigFoot5", - "Dino Light Brown", "Dino Light Orange", - "Dino Medium Brown" + "Dino Medium Brown", + "DragonBase0", + "DragonBase1", + "DragonFire", + "Light Orange" ] } ], @@ -30378,113 +31504,116 @@ "tamingIneffectiveness": 1.5, "affinityNeeded0": 8500, "affinityIncreasePL": 150, - "foodConsumptionBase": 0.01, - "foodConsumptionMult": 0.05 + "foodConsumptionBase": 0.002066, + "foodConsumptionMult": 150 }, "TamedBaseHealthMultiplier": 1, - "NoImprintingForSpeed": false, - "doesNotUseOxygen": true, - "displayedStats": 919 + "NoImprintingForSpeed": true, + "doesNotUseOxygen": false, + "displayedStats": 927 }, { - "name": "Alpha Deathworm", - "blueprintPath": "/Game/ScorchedEarth/Dinos/Deathworm/MegaDeathworm_Character_BP.MegaDeathworm_Character_BP", + "name": "Jerboa", + "blueprintPath": "/Game/ScorchedEarth/Dinos/Jerboa/Bone_Jerboa_Character_BP.Bone_Jerboa_Character_BP", "fullStatsRaw": [ - [ 27000, 0.002, 0.27, 0.5, 0 ], + [ 825, 0.2, 0.27, 0.5, 0 ], [ 100, 0.1, 0.1, 0, 0 ], - [ 100, 0.06, 0, 0.5, 0 ], + [ 1000, 0.06, 0, 0.5, 0 ], [ 150, 0.1, 0.1, 0, 0 ], - [ 100, 0.1, 0.1, 0, 0 ], + [ 450, 0.1, 0.1, 0, 0.15 ], null, null, - [ 100, 0.02, 0.04, 0, 0 ], - [ 1, 0.05, 0.1, 0.5, 0.4 ], - [ 1, 0, 0.01, 0, 0 ], + [ 55, 0.02, 0.04, 0, 0 ], + [ 1, 0.05, 0.1, 1, 0.4 ], + [ 1, 0, 0.01, 0.5, 0 ], null, null ], - "immobilizedBy": [], + "immobilizedBy": [ + "Bola", + "Bear Trap", + "Plant Species Y" + ], + "breeding": { + "gestationTime": 9523.809523809525, + "incubationTime": 0, + "maturationTime": 111111.11111111111, + "matingCooldownMin": 64800, + "matingCooldownMax": 172800 + }, "colors": [ { - "name": "Body", - "colors": [ - "BigFoot0", - "BigFoot5", - "Dino Dark Orange", - "Dino Light Brown", - "Dino Light Orange", - "Dino Medium Brown" - ] - }, - { - "name": "UpperShell", + "name": "Paws and Back", "colors": [ "BigFoot0", "BigFoot5", - "Dino Dark Brown", - "Dino Dark Orange", - "Dino Dark Red", - "Dino Medium Brown" - ] - }, - { - "name": "Claws", - "colors": [ - "BigFoot5", - "Black", - "Dino Dark Orange", - "Dino Light Brown", - "Dino Light Orange", - "Dino Medium Brown" - ] - }, - { - "name": "Lateral Horns", - "colors": [ "Black", "Brown", + "Dark Grey", + "DarkWolfFur", "Dino Dark Brown", "Dino Dark Orange", + "Dino Dark Red", "Dino Darker Grey", - "Light Brown", - "None" + "NearBlack", + "NearWhite", + "WolfFur" ] }, + null, + null, + null, { - "name": "Hair", + "name": "Stripes", "colors": [ - "BigFoot5", "Black", + "Dark Grey", + "Dark Red", + "Dino Albino", "Dino Dark Orange", - "Dino Light Brown", - "Dino Light Orange", - "Dino Medium Brown" + "Dino Dark Purple", + "Dino Dark Red", + "Dino Darker Grey", + "Dino Medium Brown", + "Light Brown", + "Light Grey", + "Light Orange", + "NearBlack", + "NearWhite" ] }, { - "name": "Belly", + "name": "Belly and Highlights", "colors": [ "BigFoot0", "BigFoot5", - "Dino Light Brown", - "Dino Light Orange", - "Dino Medium Brown" + "Dark Grey", + "DarkWolfFur", + "Dino Medium Brown", + "Light Brown", + "NearBlack", + "NearWhite", + "WolfFur" ] } ], "taming": { "nonViolent": false, "violent": false, - "tamingIneffectiveness": 1.5, - "affinityNeeded0": 8500, - "affinityIncreasePL": 150, - "foodConsumptionBase": 0.01, - "foodConsumptionMult": 0.05 + "tamingIneffectiveness": 1.333333, + "affinityNeeded0": 1350, + "affinityIncreasePL": 22.5, + "foodConsumptionBase": 0.000868, + "foodConsumptionMult": 2880.184326 + }, + "boneDamageAdjusters": { + "c_head": 3.0, + "c_neck3": 3.0 }, "TamedBaseHealthMultiplier": 1, "NoImprintingForSpeed": false, - "doesNotUseOxygen": true, - "displayedStats": 919 + "doesNotUseOxygen": false, + "displayedStats": 927 }, { "name": "Jerboa", @@ -31702,6 +32831,98 @@ "doesNotUseOxygen": false, "displayedStats": 927 }, + { + "name": "Bone Fire Wyvern", + "blueprintPath": "/Game/ScorchedEarth/Dinos/Wyvern/Bone_MegaWyvern_Character_BP_Fire.Bone_MegaWyvern_Character_BP_Fire", + "fullStatsRaw": [ + [ 8000, 0.15, 0.2025, -1050, 0 ], + [ 600, 0.05, 0.05, 0, 0 ], + [ 725, 0.06, 0, 0.5, 0 ], + [ 150, 0.1, 0.1, 0, 0 ], + [ 2000, 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.0, 0, 0 ], + null, + null + ], + "statImprintMult": [ 0.2, 0, 0.2, 0, 0.2, 0.2, 0, 0.2, 0.2, 0, 0, 0 ], + "immobilizedBy": [], + "breeding": { + "gestationTime": 0, + "incubationTime": 17998.560115190783, + "eggTempMin": 80, + "eggTempMax": 90, + "maturationTime": 333333.3333333333, + "matingCooldownMin": 64800, + "matingCooldownMax": 172800 + }, + "colors": [ + { + "name": "Body Main", + "colors": [ + "Black", + "Dino Albino", + "Dino Dark Red" + ] + }, + null, + { + "name": "Scales Main", + "colors": [ + "Black", + "Dino Dark Orange", + "Dino Dark Red", + "Dino Light Orange", + "Dino Medium Brown" + ] + }, + { + "name": "Wings Main", + "colors": [ + "Dino Dark Orange", + "Dino Dark Red", + "DragonBase1", + "DragonFire" + ] + }, + { + "name": "Fins Highlight", + "colors": [ + "Dino Dark Red", + "Dino Light Orange", + "DragonFire", + "Light Orange" + ] + }, + { + "name": "Body Highlights", + "colors": [ + "Black", + "Dino Albino", + "Dino Dark Red", + "Dino Light Orange", + "DragonFire", + "Light Orange" + ] + } + ], + "taming": { + "nonViolent": false, + "violent": false, + "tamingIneffectiveness": 1.5, + "affinityNeeded0": 8500, + "affinityIncreasePL": 150, + "foodConsumptionBase": 0.000185, + "foodConsumptionMult": 199.983994 + }, + "TamedBaseHealthMultiplier": 1, + "NoImprintingForSpeed": true, + "doesNotUseOxygen": false, + "displayedStats": 927 + }, { "name": "Alpha Fire Wyvern", "blueprintPath": "/Game/ScorchedEarth/Dinos/Wyvern/MegaWyvern_Character_BP_Fire.MegaWyvern_Character_BP_Fire", diff --git a/ARKBreedingStats/library/Creature.cs b/ARKBreedingStats/library/Creature.cs index 9d6c6ac0..8c58b9c7 100644 --- a/ARKBreedingStats/library/Creature.cs +++ b/ARKBreedingStats/library/Creature.cs @@ -206,6 +206,7 @@ public void CalculateLevelFound(int? levelStep) public void RecalculateAncestorGenerations() { generation = AncestorGenerations(); + if (generation < 0) generation = 0; } /// @@ -216,13 +217,23 @@ private int AncestorGenerations(int g = 0) { // to detect loop (if a creature is falsely listed as its own ancestor) if (g > 99) - return 0; + { + return -1; + } int mgen = 0, fgen = 0; if (mother != null) + { mgen = mother.AncestorGenerations(g + 1) + 1; + if (mgen == 0) + return -1; + } if (father != null) + { fgen = father.AncestorGenerations(g + 1) + 1; + if (fgen == 0) + return -1; + } if (isBred && mgen == 0 && fgen == 0) return 1; return mgen > fgen ? mgen : fgen; diff --git a/ARKBreedingStats/library/CreatureCollection.cs b/ARKBreedingStats/library/CreatureCollection.cs index c4b3531b..bcb4fc3a 100644 --- a/ARKBreedingStats/library/CreatureCollection.cs +++ b/ARKBreedingStats/library/CreatureCollection.cs @@ -386,6 +386,21 @@ public void RemoveUnlinkedPlaceholders() private void InitializeProperties(StreamingContext ct) { if (tags == null) tags = new List(); + + // convert DateTimes to local times + foreach (var tle in timerListEntries) + tle.time = tle.time.ToLocalTime(); + + foreach (var ile in incubationListEntries) + ile.incubationEnd = ile.incubationEnd.ToLocalTime(); + + foreach (var c in creatures) + { + c.cooldownUntil = c.cooldownUntil?.ToLocalTime(); + c.growingUntil = c.growingUntil?.ToLocalTime(); + c.domesticatedAt = c.domesticatedAt?.ToLocalTime(); + c.addedToLibrary = c.addedToLibrary?.ToLocalTime(); + } } } } diff --git a/ARKBreedingStats/local/strings.it.resx b/ARKBreedingStats/local/strings.it.resx index 5c604596..b3c2cb43 100644 --- a/ARKBreedingStats/local/strings.it.resx +++ b/ARKBreedingStats/local/strings.it.resx @@ -1,4 +1,4 @@ - +