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