From aede7354c5f34cabf03e080b1e7cfd4ca719730d Mon Sep 17 00:00:00 2001 From: cadon Date: Mon, 30 Nov 2015 14:45:55 +0100 Subject: [PATCH] * creature-stats update * fix for negative taming-bonus-values (Giganotosaur) + xp for 59th level * warning when TE differs in chosen possibilities --- ARKBreedingStats/ARKBreedingStats.csproj | 4 +- ARKBreedingStats/Form1.Designer.cs | 63 ++++----- ARKBreedingStats/Form1.cs | 165 +++++++++++++--------- ARKBreedingStats/level.txt | 3 +- ARKBreedingStats/{stats.csv => stats.txt} | 23 +-- 5 files changed, 143 insertions(+), 115 deletions(-) rename ARKBreedingStats/{stats.csv => stats.txt} (96%) diff --git a/ARKBreedingStats/ARKBreedingStats.csproj b/ARKBreedingStats/ARKBreedingStats.csproj index dc304f6a..54b747d5 100644 --- a/ARKBreedingStats/ARKBreedingStats.csproj +++ b/ARKBreedingStats/ARKBreedingStats.csproj @@ -85,9 +85,9 @@ Settings.settings True - + PreserveNewest - + diff --git a/ARKBreedingStats/Form1.Designer.cs b/ARKBreedingStats/Form1.Designer.cs index f7a50b2f..49e4e1e4 100644 --- a/ARKBreedingStats/Form1.Designer.cs +++ b/ARKBreedingStats/Form1.Designer.cs @@ -66,6 +66,7 @@ private void InitializeComponent() this.labelSumDomSB = new System.Windows.Forms.Label(); this.labelSumWildSB = new System.Windows.Forms.Label(); this.labelSumSB = new System.Windows.Forms.Label(); + this.panelSums = new System.Windows.Forms.Panel(); this.statIOSpeed = new ARKBreedingStats.StatIO(); this.statIOTorpor = new ARKBreedingStats.StatIO(); this.statIODamage = new ARKBreedingStats.StatIO(); @@ -74,7 +75,6 @@ private void InitializeComponent() this.statIOHealth = new ARKBreedingStats.StatIO(); this.statIOOxygen = new ARKBreedingStats.StatIO(); this.statIOStamina = new ARKBreedingStats.StatIO(); - this.panelSums = new System.Windows.Forms.Panel(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDownLowerTEffBound)).BeginInit(); this.groupBoxTE.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDownUpperTEffBound)).BeginInit(); @@ -88,9 +88,9 @@ private void InitializeComponent() // // buttonCalculate // - this.buttonCalculate.Location = new System.Drawing.Point(313, 175); + this.buttonCalculate.Location = new System.Drawing.Point(313, 188); this.buttonCalculate.Name = "buttonCalculate"; - this.buttonCalculate.Size = new System.Drawing.Size(154, 45); + this.buttonCalculate.Size = new System.Drawing.Size(154, 50); this.buttonCalculate.TabIndex = 14; this.buttonCalculate.Text = "Extract Level Distribution"; this.buttonCalculate.UseVisualStyleBackColor = true; @@ -134,21 +134,20 @@ private void InitializeComponent() this.groupBoxTE.Controls.Add(this.numericUpDownUpperTEffBound); this.groupBoxTE.Controls.Add(this.label1); this.groupBoxTE.Controls.Add(this.numericUpDownLowerTEffBound); - this.groupBoxTE.Location = new System.Drawing.Point(313, 58); + this.groupBoxTE.Location = new System.Drawing.Point(313, 60); this.groupBoxTE.Name = "groupBoxTE"; - this.groupBoxTE.Size = new System.Drawing.Size(154, 65); + this.groupBoxTE.Size = new System.Drawing.Size(154, 76); this.groupBoxTE.TabIndex = 11; this.groupBoxTE.TabStop = false; this.groupBoxTE.Text = "TamingEfficiency Range"; // // labelTE // - this.labelTE.AutoSize = true; - this.labelTE.Location = new System.Drawing.Point(6, 45); + this.labelTE.Location = new System.Drawing.Point(6, 42); this.labelTE.Name = "labelTE"; - this.labelTE.Size = new System.Drawing.Size(55, 13); + this.labelTE.Size = new System.Drawing.Size(142, 31); this.labelTE.TabIndex = 4; - this.labelTE.Text = "Extracted:"; + this.labelTE.Text = "TE differs in chosen possibilities"; // // label3 // @@ -265,7 +264,7 @@ private void InitializeComponent() // // labelDoc // - this.labelDoc.Location = new System.Drawing.Point(313, 223); + this.labelDoc.Location = new System.Drawing.Point(313, 241); this.labelDoc.Name = "labelDoc"; this.labelDoc.Size = new System.Drawing.Size(154, 198); this.labelDoc.TabIndex = 24; @@ -274,9 +273,9 @@ private void InitializeComponent() // buttonCopyClipboard // this.buttonCopyClipboard.Enabled = false; - this.buttonCopyClipboard.Location = new System.Drawing.Point(313, 447); + this.buttonCopyClipboard.Location = new System.Drawing.Point(313, 463); this.buttonCopyClipboard.Name = "buttonCopyClipboard"; - this.buttonCopyClipboard.Size = new System.Drawing.Size(154, 55); + this.buttonCopyClipboard.Size = new System.Drawing.Size(154, 39); this.buttonCopyClipboard.TabIndex = 15; this.buttonCopyClipboard.Text = "Copy retrieved Values to Clipboard"; this.buttonCopyClipboard.UseVisualStyleBackColor = true; @@ -340,7 +339,7 @@ private void InitializeComponent() // this.groupBox1.Controls.Add(this.labelDomLevel); this.groupBox1.Controls.Add(this.numericUpDownXP); - this.groupBox1.Location = new System.Drawing.Point(313, 6); + this.groupBox1.Location = new System.Drawing.Point(313, 12); this.groupBox1.Name = "groupBox1"; this.groupBox1.Size = new System.Drawing.Size(154, 42); this.groupBox1.TabIndex = 10; @@ -359,7 +358,7 @@ private void InitializeComponent() // checkBoxAlreadyBred // this.checkBoxAlreadyBred.AutoSize = true; - this.checkBoxAlreadyBred.Location = new System.Drawing.Point(313, 129); + this.checkBoxAlreadyBred.Location = new System.Drawing.Point(313, 142); this.checkBoxAlreadyBred.Name = "checkBoxAlreadyBred"; this.checkBoxAlreadyBred.Size = new System.Drawing.Size(109, 17); this.checkBoxAlreadyBred.TabIndex = 12; @@ -370,7 +369,7 @@ private void InitializeComponent() // radioButtonOutputTable // this.radioButtonOutputTable.AutoSize = true; - this.radioButtonOutputTable.Location = new System.Drawing.Point(313, 424); + this.radioButtonOutputTable.Location = new System.Drawing.Point(313, 442); this.radioButtonOutputTable.Name = "radioButtonOutputTable"; this.radioButtonOutputTable.Size = new System.Drawing.Size(52, 17); this.radioButtonOutputTable.TabIndex = 21; @@ -381,7 +380,7 @@ private void InitializeComponent() // this.radioButtonOutputRow.AutoSize = true; this.radioButtonOutputRow.Checked = true; - this.radioButtonOutputRow.Location = new System.Drawing.Point(371, 424); + this.radioButtonOutputRow.Location = new System.Drawing.Point(371, 442); this.radioButtonOutputRow.Name = "radioButtonOutputRow"; this.radioButtonOutputRow.Size = new System.Drawing.Size(47, 17); this.radioButtonOutputRow.TabIndex = 22; @@ -393,7 +392,7 @@ private void InitializeComponent() // checkBoxOutputRowHeader // this.checkBoxOutputRowHeader.AutoSize = true; - this.checkBoxOutputRowHeader.Location = new System.Drawing.Point(424, 425); + this.checkBoxOutputRowHeader.Location = new System.Drawing.Point(424, 443); this.checkBoxOutputRowHeader.Name = "checkBoxOutputRowHeader"; this.checkBoxOutputRowHeader.Size = new System.Drawing.Size(40, 17); this.checkBoxOutputRowHeader.TabIndex = 23; @@ -403,7 +402,7 @@ private void InitializeComponent() // checkBoxJustTamed // this.checkBoxJustTamed.AutoSize = true; - this.checkBoxJustTamed.Location = new System.Drawing.Point(313, 152); + this.checkBoxJustTamed.Location = new System.Drawing.Point(313, 165); this.checkBoxJustTamed.Name = "checkBoxJustTamed"; this.checkBoxJustTamed.Size = new System.Drawing.Size(139, 17); this.checkBoxJustTamed.TabIndex = 13; @@ -413,7 +412,7 @@ private void InitializeComponent() // // buttonClear // - this.buttonClear.Location = new System.Drawing.Point(12, 36); + this.buttonClear.Location = new System.Drawing.Point(11, 34); this.buttonClear.Name = "buttonClear"; this.buttonClear.Size = new System.Drawing.Size(57, 23); this.buttonClear.TabIndex = 28; @@ -475,6 +474,19 @@ private void InitializeComponent() this.labelSumSB.TabIndex = 32; this.labelSumSB.Text = "Should be"; // + // panelSums + // + this.panelSums.Controls.Add(this.labelSum); + this.panelSums.Controls.Add(this.labelSumDomSB); + this.panelSums.Controls.Add(this.labelSumWild); + this.panelSums.Controls.Add(this.labelSumWildSB); + this.panelSums.Controls.Add(this.labelSumDom); + this.panelSums.Controls.Add(this.labelSumSB); + this.panelSums.Location = new System.Drawing.Point(12, 460); + this.panelSums.Name = "panelSums"; + this.panelSums.Size = new System.Drawing.Size(295, 32); + this.panelSums.TabIndex = 35; + // // statIOSpeed // this.statIOSpeed.BackColor = System.Drawing.SystemColors.Control; @@ -586,19 +598,6 @@ private void InitializeComponent() this.statIOStamina.TabIndex = 3; this.statIOStamina.Click += new System.EventHandler(this.statIO_Click); // - // panelSums - // - this.panelSums.Controls.Add(this.labelSum); - this.panelSums.Controls.Add(this.labelSumDomSB); - this.panelSums.Controls.Add(this.labelSumWild); - this.panelSums.Controls.Add(this.labelSumWildSB); - this.panelSums.Controls.Add(this.labelSumDom); - this.panelSums.Controls.Add(this.labelSumSB); - this.panelSums.Location = new System.Drawing.Point(12, 460); - this.panelSums.Name = "panelSums"; - this.panelSums.Size = new System.Drawing.Size(295, 32); - this.panelSums.TabIndex = 35; - // // Form1 // this.AcceptButton = this.buttonCalculate; diff --git a/ARKBreedingStats/Form1.cs b/ARKBreedingStats/Form1.cs index 295b95f6..8a460ade 100644 --- a/ARKBreedingStats/Form1.cs +++ b/ARKBreedingStats/Form1.cs @@ -24,7 +24,8 @@ public partial class Form1 : Form private List statWithEff = new List(); private List chosenResults = new List(); private int[] precisions = new int[] { 1, 1, 1, 1, 1, 3, 3, 1 }; // damage and speed are percentagevalues, need more precision - private int levelFromXP = 0, maxWildLevelFromTorpor; + private int levelFromXP = 0, maxWildLevelsFromTorpor; + private bool[] activeStats = new bool[] { true, true, true, true, true, true, true, true }; public Form1() { @@ -49,12 +50,12 @@ private void Form1_Load(object sender, EventArgs e) } loadFile(); comboBoxCreatures.SelectedIndex = 0; - labelVersion.Text = "v0.10.1"; + labelVersion.Text = "v0.10.4"; labelSumDomSB.Text = ""; ToolTip tt = new ToolTip(); - tt.SetToolTip(this.labelDomLevel, "level since domesticated"); + tt.SetToolTip(this.labelDomLevel, "Level since Domesticated"); tt.SetToolTip(this.checkBoxOutputRowHeader, "Include Headerrow"); - tt.SetToolTip(this.checkBoxJustTamed, "Since taming no server-restart"); + tt.SetToolTip(this.checkBoxJustTamed, "Since Taming no Server-Restart"); } private void clearAll() @@ -77,79 +78,92 @@ private void clearAll() this.checkBoxAlreadyBred.BackColor = System.Drawing.Color.Transparent; this.checkBoxJustTamed.BackColor = System.Drawing.Color.Transparent; panelSums.BackColor = SystemColors.Control; + labelTE.BackColor = SystemColors.Control; buttonCopyClipboard.Enabled = false; activeStat = -1; labelTE.Text = "Extracted: n/a"; labelSumDom.Text = ""; labelSumWild.Text = ""; labelSumWildSB.Text = ""; - maxWildLevelFromTorpor = 0; + maxWildLevelsFromTorpor = 0; } private void buttonCalculate_Click(object sender, EventArgs e) { if (numericUpDownXP.Focused) { numericUpDownXP_ValueChanged(sender, e); } + extractStats(); + } + + private void extractStats() + { int activeStatKeeper = activeStat; clearAll(); bool resultsValid = true; - // torpor is directly proportional to wild level (after taming it's a too high estimate, making the upper bound worse) - postTamed = (stats[c][7][0] + stats[c][7][0] * stats[c][7][1] * Math.Round((statIOs[7].Input - stats[c][7][0]) / (stats[c][7][0] * stats[c][7][1])) != statIOs[7].Input); - for (int s = 0; s < statIOs.Count; s++) + // torpor is directly proportional to wild level + postTamed = (numericUpDownXP.Value > 0 || stats[c][7][0] + stats[c][7][0] * stats[c][7][1] * Math.Round((statIOs[7].Input - stats[c][7][0]) / (stats[c][7][0] * stats[c][7][1])) != statIOs[7].Input); + for (int s = 0; s < 8; s++) { results.Add(new List()); - statIOs[s].PostTame = postTamed; - double inputValue = Math.Round(statIOs[s].Input / (precisions[s] == 3 ? 100 : 1), precisions[s]); - double maxLW = 0; - if (stats[c][s][0] > 0 && stats[c][s][1] > 0) - { - maxLW = Math.Round((inputValue - stats[c][s][0]) / (stats[c][s][0] * stats[c][s][1])); // floor is too unprecise - } - double maxLD = 0; - if (stats[c][s][0] > 0 && stats[c][s][2] > 0 && postTamed) - { - maxLD = Math.Round((inputValue - stats[c][s][0]) / (stats[c][s][0] * stats[c][s][2])); //floor is sometimes too unprecise - } - double vWildL = 0; // value with only wild levels - double tamingEfficiency = -1, tEUpperBound = (double)this.numericUpDownUpperTEffBound.Value / 100, tELowerBound = (double)this.numericUpDownLowerTEffBound.Value / 100; - if (checkBoxAlreadyBred.Checked) - { - // bred creatures always have 100% TE - tEUpperBound = 1; - tELowerBound = 1; - } - bool withTEff = (postTamed && stats[c][s][4] > 0); - if (withTEff) { statWithEff.Add(s); } - for (int w = 0; w < maxLW + 1; w++) + if (activeStats[s]) { - for (int d = 0; d < maxLD + 1; d++) + statIOs[s].PostTame = postTamed; + double inputValue = Math.Round(statIOs[s].Input / (precisions[s] == 3 ? 100 : 1), precisions[s]); + double tamingEfficiency = -1, tEUpperBound = (double)this.numericUpDownUpperTEffBound.Value / 100, tELowerBound = (double)this.numericUpDownLowerTEffBound.Value / 100; + double vWildL = 0; // value with only wild levels + if (checkBoxAlreadyBred.Checked) { - vWildL = stats[c][s][0] + stats[c][s][0] * stats[c][s][1] * w + (postTamed ? stats[c][s][3] : 0); - if (withTEff) + // bred creatures always have 100% TE + tEUpperBound = 1; + tELowerBound = 1; + } + bool withTEff = (postTamed && stats[c][s][4] > 0); + if (withTEff) { statWithEff.Add(s); } + double maxLW = 0; + if (stats[c][s][0] > 0 && stats[c][s][1] > 0) + { + maxLW = Math.Round(((inputValue / (postTamed ? 1 + tELowerBound * stats[c][s][4] : 1) - (postTamed ? stats[c][s][3] : 0)) / stats[c][s][0] - 1) / stats[c][s][1]); // floor is too unprecise + } + double maxLD = 0; + if (stats[c][s][0] > 0 && stats[c][s][2] > 0 && postTamed) + { + maxLD = Math.Round((inputValue / ((stats[c][s][0] + stats[c][s][3]) * (1 + tELowerBound * stats[c][s][4])) - 1) / stats[c][s][2]); //floor is sometimes too unprecise + } + for (int w = 0; w < maxLW + 1; w++) + { + for (int d = 0; d < maxLD + 1; d++) { - // taming bonus is percentual, this means the taming-efficiency plays a role - // get tamingEfficiency-possibility - tamingEfficiency = Math.Round((inputValue / (1 + stats[c][s][2] * d) - vWildL) / (vWildL * stats[c][s][4]), 3, MidpointRounding.AwayFromZero); - if (tamingEfficiency >= tELowerBound) + vWildL = stats[c][s][0] + stats[c][s][0] * stats[c][s][1] * w + (postTamed ? stats[c][s][3] : 0); + if (withTEff) { - if (tamingEfficiency <= tEUpperBound) + // taming bonus is percentual, this means the taming-efficiency plays a role + // get tamingEfficiency-possibility + tamingEfficiency = Math.Round((inputValue / (1 + stats[c][s][2] * d) - vWildL) / (vWildL * stats[c][s][4]), 3, MidpointRounding.AwayFromZero); + if (tamingEfficiency >= tELowerBound) { - results[s].Add(new double[] { w, d, tamingEfficiency }); + if (tamingEfficiency <= tEUpperBound) + { + results[s].Add(new double[] { w, d, tamingEfficiency }); + } + else { continue; } + } + else + { + // if tamingEff < lowerBound, break, as in this loop it's getting only smaller + break; } - else { continue; } } - else + else if (Math.Round(vWildL + vWildL * stats[c][s][2] * d, precisions[s]) == inputValue) // rounding maybe with MidpointRounding.AwayFromZero { - // if tamingEff < lowerBound, break, as in this loop it's getting only smaller - break; + results[s].Add(new double[] { w, d, tamingEfficiency }); + break; // no other solution possible } } - else if (Math.Round(vWildL + vWildL * stats[c][s][2] * d, precisions[s], MidpointRounding.AwayFromZero) == inputValue) - { - results[s].Add(new double[] { w, d, tamingEfficiency }); - break; // no other solution possible - } } } + else + { + results[s].Add(new double[] { 0, 0, -1 }); + } } // max level for wild according to torpor (torpor is depending on taming efficiency up to 5/3 times "too high" for level double torporLevelTamingMultMax = 1; @@ -158,7 +172,7 @@ private void buttonCalculate_Click(object sender, EventArgs e) { torporLevelTamingMultMax = (200 + (double)this.numericUpDownUpperTEffBound.Value) / (400 + (double)this.numericUpDownUpperTEffBound.Value); } - maxWildLevelFromTorpor = (int)Math.Round((statIOs[7].Input - (postTamed ? stats[c][7][3] : 0) - stats[c][7][0]) * torporLevelTamingMultMax / (stats[c][7][0] * stats[c][7][1]), 0) - 1; // -1 because creature starts with level 1 + maxWildLevelsFromTorpor = (int)Math.Round((statIOs[7].Input - (postTamed ? stats[c][7][3] : 0) - stats[c][7][0]) * torporLevelTamingMultMax / (stats[c][7][0] * stats[c][7][1]), 0); int levelDom = 0; // lower/upper Bound of each stat (wild has no upper bound as wild-speed is unknown) int[] lowerBoundExtraWs = new int[] { 0, 0, 0, 0, 0, 0, 0 }; @@ -168,7 +182,7 @@ private void buttonCalculate_Click(object sender, EventArgs e) { levelDom = levelFromXP; } - int maxLW2 = maxWildLevelFromTorpor; + int maxLW2 = maxWildLevelsFromTorpor; // substract all uniquely solved stat-levels for (int s = 0; s < 7; s++) { @@ -290,9 +304,9 @@ private void buttonCalculate_Click(object sender, EventArgs e) { if (results[s].Count > 0) { - // display result with most levels in wild (most probable for the stats getting not unique results here) + // display result with most levels in wild, for hp and dm with the most levels in tamed int r = 0; - if (results[s][0][2] == -1) { r = results[s].Count - 1; } + if (s != 0 && s != 5) { r = results[s].Count - 1; } setPossibility(s, r); if (results[s].Count > 1) { @@ -313,6 +327,7 @@ private void buttonCalculate_Click(object sender, EventArgs e) { this.numericUpDownUpperTEffBound.BackColor = Color.LightSalmon; } + this.numericUpDownXP.BackColor = Color.LightSalmon; this.checkBoxAlreadyBred.BackColor = Color.LightSalmon; this.checkBoxJustTamed.BackColor = Color.LightSalmon; } @@ -322,7 +337,7 @@ private void buttonCalculate_Click(object sender, EventArgs e) { // speed gets remaining wild levels if all other are unique bool setSpeed = true; - int wildSpeedLevel = maxWildLevelFromTorpor; + int wildSpeedLevel = maxWildLevelsFromTorpor; for (int s = 0; s < 6; s++) { if (results[s].Count != 1) @@ -345,7 +360,7 @@ private void buttonCalculate_Click(object sender, EventArgs e) setActiveStat(activeStatKeeper); setUniqueTE(); showSumOfChosenLevels(); - labelSumWildSB.Text = "≤" + maxWildLevelFromTorpor.ToString(); + labelSumWildSB.Text = "≤" + maxWildLevelsFromTorpor.ToString(); } if (!postTamed) { @@ -359,10 +374,13 @@ private void setUniqueTE() if (eff >= 0) { labelTE.Text = "Extracted: " + Math.Round(100 * eff, 1) + " %"; + labelTE.BackColor = SystemColors.Control; } else { - labelTE.Text = "Extracted: n/a"; + labelTE.Text = "TE of chosen possibilities is no"; + labelTE.Text = "TE differs in chosen possibilities"; + labelTE.BackColor = Color.LightSalmon; } } @@ -409,7 +427,7 @@ private void setPossibilitiesListbox(int s) private void loadFile() { // read entities from file - string path = "stats.csv"; + string path = "stats.txt"; // check if file exists if (!System.IO.File.Exists(path)) @@ -446,7 +464,7 @@ private void loadFile() { for (int v = 0; v < values.Length; v++) { - if (s == 5 && v == 0) { stats[c][5][0] = 1; } // damage and speed are handled as percentage of a hidden base value + if ((s == 5 || s == 6) && v == 0) { stats[c][s][0] = 1; } // damage and speed are handled as percentage of a hidden base value, this tool uses 100% as base else { double value = 0; @@ -492,7 +510,13 @@ private void comboBoxCreatures_SelectedIndexChanged(object sender, EventArgs e) if (comboBoxCreatures.SelectedIndex >= 0) { c = comboBoxCreatures.SelectedIndex; + for (int s = 0; s < 8; s++) + { + activeStats[s] = (stats[c][s][0] > 0); + statIOs[s].Enabled = activeStats[s]; + } clearAll(); + numericUpDownXP.Value = 0; } } @@ -528,8 +552,8 @@ private void buttonCopyClipboard_Click(object sender, EventArgs e) if (results.Count == 8 && chosenResults.Count == 8) { List tsv = new List(); - int wildLevels = 0; - for (int s = 0; s < 7; s++) { wildLevels += (int)results[s][chosenResults[s]][0]; } + int LevelsWildSpeed = (int)results[7][0][0]; // all wild levels, now subtract all the other levels + for (int s = 0; s < 6; s++) { LevelsWildSpeed -= (int)results[s][chosenResults[s]][0]; } string rowLevel = comboBoxCreatures.SelectedItem.ToString() + "\t\t", rowValues = ""; // if taming efficiency is unique, display it, too string effString = ""; @@ -553,21 +577,24 @@ private void buttonCopyClipboard_Click(object sender, EventArgs e) if (chosenResults[s] < results[s].Count) { string breedingV = ""; - if (precisions[s] == 3) + if (activeStats[s]) { - breedingV = (100 * breedingValue(s, chosenResults[s])).ToString() + "%"; - } - else - { - breedingV = breedingValue(s, chosenResults[s]).ToString(); + if (precisions[s] == 3) + { + breedingV = (100 * breedingValue(s, chosenResults[s])).ToString() + "%"; + } + else + { + breedingV = breedingValue(s, chosenResults[s]).ToString(); + } } if (radioButtonOutputTable.Checked) { - tsv.Add(statNames[s] + "\t" + (s == 6 ? results[7][0][0] - wildLevels : results[s][chosenResults[s]][0]).ToString() + "\t" + results[s][chosenResults[s]][1].ToString() + "\t" + breedingV); + tsv.Add(statNames[s] + "\t" + (activeStats[s] ? (s == 6 ? LevelsWildSpeed : results[s][chosenResults[s]][0]).ToString() : "") + "\t" + (activeStats[s] ? results[s][chosenResults[s]][1].ToString() : "") + "\t" + breedingV); } else { - rowLevel += "\t" + (s == 6 ? results[7][0][0] - wildLevels : results[s][chosenResults[s]][0]).ToString(); + rowLevel += "\t" + (activeStats[s] ? (s == 6 ? LevelsWildSpeed : results[s][chosenResults[s]][0]).ToString() : ""); rowValues += "\t" + breedingV; } } @@ -680,7 +707,7 @@ private void showSumOfChosenLevels() { labelSumWild.Text = sumW.ToString(); labelSumDom.Text = sumD.ToString(); - if (sumW <= maxWildLevelFromTorpor) { labelSumWild.ForeColor = SystemColors.ControlText; } + if (sumW <= maxWildLevelsFromTorpor) { labelSumWild.ForeColor = SystemColors.ControlText; } else { labelSumWild.ForeColor = Color.Red; diff --git a/ARKBreedingStats/level.txt b/ARKBreedingStats/level.txt index 815a2d25..f7440088 100644 --- a/ARKBreedingStats/level.txt +++ b/ARKBreedingStats/level.txt @@ -57,4 +57,5 @@ 98000 120000 150000 -185000 \ No newline at end of file +185000 +225000 \ No newline at end of file diff --git a/ARKBreedingStats/stats.csv b/ARKBreedingStats/stats.txt similarity index 96% rename from ARKBreedingStats/stats.csv rename to ARKBreedingStats/stats.txt index f5c08bc0..ca3e0a3d 100644 --- a/ARKBreedingStats/stats.csv +++ b/ARKBreedingStats/stats.txt @@ -2,6 +2,7 @@ // the other lines are interpreted as follows, where the Inc is always as part of level1 // level1, IncWild, IncDom, TameBonusAdd, TameBonusMult // the order is always: Health, Stamina, Oxygen, Food, Weight, MeleeDamage, Speed, Torpor +// if a creature has no oxygen, set basevalue to 0 Ankylosaurus 700,0.2,0.27,0.5,0 175,0.1,0.1,0,0 @@ -9,7 +10,7 @@ Ankylosaurus 3000,0.1,0.1,0,0.15 250,0.02,0.04,0,0 50,0.05,0.1,1,0.4 -1,0,0.025,1.25,0 +1,0,0.025,.5,0 420,0.06,0,0.5,0 Araneo 150,0.2,0.135,0.5,0 @@ -122,12 +123,12 @@ Doedicurus Giganotosaurus 300000,0.0005,0.0027,-225000,0 400,0.0005,0.01,0,0 -150,0.0025,0.01,0,0 +150,0.0025,0.025,0,0 4000,0.0025,0.025,0,0 700,0.01,0.01,0,0 1200,0.05,0.05,-.5,0 -1,0,0.003,0,0 -10000,0.06,0,0.5,0 +1,0,0.0031,0,0 +10000,0.06,0,0,0 Gigantopithecus 640,0.1,0.27,0.5,0 300,0.1,0.1,0,0 @@ -135,7 +136,7 @@ Gigantopithecus 1500,0.1,0.1,0,0 220,0.02,0.04,0,0 40,0.04,0.1,.5,0.4 -1,0,0.025,6,0 +1,0,0.025,.06,0 1100,0.06,0,0.5,0 Ichthy 275,0.05,0.05,0.5,0 @@ -147,14 +148,14 @@ Ichthy 1,0,0.025,0,0 300,0.06,0,0.5,0 Kairuku -95.5,0.2,0.27,0.5,0 +95,0.2,0.27,0.5,0 200,0.1,0.1,0,0 0,0.1,0.1,0,0 -1035,0.1,0.1,0,0 +900,0.1,0.1,0,.15 70,0.02,0.04,0,0 8,0.05,0.1,.5,0.4 -1,0,0.025,0,0 -300.5,0.06,0,0.5,0 +1,0,0.025,2,0 +300,0.06,0,0.5,0 Mammoth 850,0.2,0.27,0.5,0 330,0.1,0.1,0,0 @@ -184,7 +185,7 @@ Megalodon 800,0.06,0,0.5,0 Mesopithecus 115,0.2,0.27,0.5,0 -10,0.1,0.1,0,0 +100,0.1,0.1,0,0 150,0.1,0.1,0,0 450,0.1,0.1,0,0.15 70,0.02,0.04,0,0 @@ -264,7 +265,7 @@ Pteranodon 1,0,0.025,.365,0 120,0.06,0,0.5,0 Pulmonoscorpius -300,0.2,0.27,0.5,0 +280,0.214285714,0.27,0.5,0 200,0.1,0.1,0,0 150,0.1,0.1,0,0 1500,0.1,0.1,0,0