From 808bf543b93ffb7174de4aa17ae4767a76e520ce Mon Sep 17 00:00:00 2001 From: cadaei <cadaei@web.de> Date: Mon, 1 May 2017 20:35:02 +0200 Subject: [PATCH] added event-multipliers for easier switching during an event. crash-fix if no colorinfo is given (unicorn). Improved OCR. OCR can be adjusted with config-files. fix for non-oxygen-species. --- ARKBreedingStats/ARKBreedingStats.csproj | 48 +- ARKBreedingStats/ARKOverlay.cs | 42 +- ARKBreedingStats/App.config | 12 +- ARKBreedingStats/BreedingPlan.Designer.cs | 26 +- ARKBreedingStats/BreedingPlan.cs | 88 +- ARKBreedingStats/CreatureBox.cs | 2 +- ARKBreedingStats/CreatureCollection.cs | 8 + ARKBreedingStats/Extraction.cs | 6 +- ARKBreedingStats/Form1.Designer.cs | 210 ++--- ARKBreedingStats/Form1.cs | 115 ++- ARKBreedingStats/Properties/AssemblyInfo.cs | 2 +- .../Properties/Resources.Designer.cs | 10 + ARKBreedingStats/Properties/Resources.resx | 3 + .../Properties/Settings.Designer.cs | 48 +- ARKBreedingStats/Properties/Settings.settings | 12 +- ARKBreedingStats/Raising.cs | 18 +- ARKBreedingStats/RaisingControl.cs | 26 +- .../Resources/ARKCalibration15.png | Bin 13183 -> 0 bytes .../Resources/ARKCalibration18.png | Bin 16644 -> 0 bytes ARKBreedingStats/Stats.cs | 2 +- ARKBreedingStats/Taming.cs | 26 +- ARKBreedingStats/TamingControl.cs | 34 +- ARKBreedingStats/TribesControl.Designer.cs | 233 +++--- ARKBreedingStats/Values.cs | 34 +- .../{ => json}/classicalFlyers.json | 0 ARKBreedingStats/json/ocr.json | 1 + ARKBreedingStats/json/values.json | 1 + ARKBreedingStats/{ => ocr}/ArkOCR.cs | 457 ++++++----- ARKBreedingStats/ocr/HammingWeight.cs | 45 ++ ARKBreedingStats/ocr/OCRControl.Designer.cs | 759 ++++++++++++++++++ ARKBreedingStats/ocr/OCRControl.cs | 375 +++++++++ ARKBreedingStats/ocr/OCRControl.resx | 125 +++ ARKBreedingStats/ocr/OCRLetterEdit.cs | 132 +++ ARKBreedingStats/ocr/OCRTemplate.cs | 129 +++ .../MultiplierSetting.Designer.cs | 22 +- .../{ => settings}/MultiplierSetting.cs | 11 +- .../{ => settings}/MultiplierSetting.resx | 0 .../{ => settings}/Settings.Designer.cs | 513 ++++++++---- ARKBreedingStats/{ => settings}/Settings.cs | 67 +- ARKBreedingStats/{ => settings}/Settings.resx | 0 .../customSoundChooser.Designer.cs | 10 +- .../customSoundChooser.cs | 2 +- .../customSoundChooser.resx | 0 ARKBreedingStats/uiControls/Trough.cs | 9 +- ARKBreedingStats/uiControls/nud.cs | 18 + ARKBreedingStats/values.json | 1 - ARKBreedingStats/ver.txt | 2 +- 47 files changed, 2717 insertions(+), 967 deletions(-) delete mode 100644 ARKBreedingStats/Resources/ARKCalibration15.png delete mode 100644 ARKBreedingStats/Resources/ARKCalibration18.png rename ARKBreedingStats/{ => json}/classicalFlyers.json (100%) create mode 100644 ARKBreedingStats/json/ocr.json create mode 100644 ARKBreedingStats/json/values.json rename ARKBreedingStats/{ => ocr}/ArkOCR.cs (72%) create mode 100644 ARKBreedingStats/ocr/HammingWeight.cs create mode 100644 ARKBreedingStats/ocr/OCRControl.Designer.cs create mode 100644 ARKBreedingStats/ocr/OCRControl.cs create mode 100644 ARKBreedingStats/ocr/OCRControl.resx create mode 100644 ARKBreedingStats/ocr/OCRLetterEdit.cs create mode 100644 ARKBreedingStats/ocr/OCRTemplate.cs rename ARKBreedingStats/{ => settings}/MultiplierSetting.Designer.cs (84%) rename ARKBreedingStats/{ => settings}/MultiplierSetting.cs (80%) rename ARKBreedingStats/{ => settings}/MultiplierSetting.resx (100%) rename ARKBreedingStats/{ => settings}/Settings.Designer.cs (77%) rename ARKBreedingStats/{ => settings}/Settings.cs (85%) rename ARKBreedingStats/{ => settings}/Settings.resx (100%) rename ARKBreedingStats/{uiControls => settings}/customSoundChooser.Designer.cs (94%) rename ARKBreedingStats/{uiControls => settings}/customSoundChooser.cs (98%) rename ARKBreedingStats/{uiControls => settings}/customSoundChooser.resx (100%) create mode 100644 ARKBreedingStats/uiControls/nud.cs delete mode 100644 ARKBreedingStats/values.json diff --git a/ARKBreedingStats/ARKBreedingStats.csproj b/ARKBreedingStats/ARKBreedingStats.csproj index e32f0820..f4fb17b6 100644 --- a/ARKBreedingStats/ARKBreedingStats.csproj +++ b/ARKBreedingStats/ARKBreedingStats.csproj @@ -60,7 +60,7 @@ <Compile Include="AboutBox1.Designer.cs"> <DependentUpon>AboutBox1.cs</DependentUpon> </Compile> - <Compile Include="ArkOCR.cs" /> + <Compile Include="ocr\ArkOCR.cs" /> <Compile Include="ARKOverlay.cs"> <SubType>Form</SubType> </Compile> @@ -76,6 +76,17 @@ <Compile Include="NotesControl.Designer.cs"> <DependentUpon>NotesControl.cs</DependentUpon> </Compile> + <Compile Include="ocr\HammingWeight.cs" /> + <Compile Include="ocr\OCRControl.cs"> + <SubType>UserControl</SubType> + </Compile> + <Compile Include="ocr\OCRControl.Designer.cs"> + <DependentUpon>OCRControl.cs</DependentUpon> + </Compile> + <Compile Include="ocr\OCRLetterEdit.cs"> + <SubType>Component</SubType> + </Compile> + <Compile Include="ocr\OCRTemplate.cs" /> <Compile Include="Properties\Resources.Designer.cs"> <AutoGen>True</AutoGen> <DesignTime>True</DesignTime> @@ -130,12 +141,15 @@ <Compile Include="species\CreatureStat.cs" /> <Compile Include="species\Species.cs" /> <Compile Include="SpeechRecognition.cs" /> - <Compile Include="uiControls\customSoundChooser.cs"> + <Compile Include="settings\customSoundChooser.cs"> <SubType>UserControl</SubType> </Compile> - <Compile Include="uiControls\customSoundChooser.Designer.cs"> + <Compile Include="settings\customSoundChooser.Designer.cs"> <DependentUpon>customSoundChooser.cs</DependentUpon> </Compile> + <Compile Include="uiControls\nud.cs"> + <SubType>Component</SubType> + </Compile> <Compile Include="uiControls\StatGraphs.cs"> <SubType>Component</SubType> </Compile> @@ -160,10 +174,10 @@ <DependentUpon>Form1.cs</DependentUpon> </Compile> <Compile Include="ListViewColumnSorter.cs" /> - <Compile Include="MultiplierSetting.cs"> + <Compile Include="settings\MultiplierSetting.cs"> <SubType>UserControl</SubType> </Compile> - <Compile Include="MultiplierSetting.Designer.cs"> + <Compile Include="settings\MultiplierSetting.Designer.cs"> <DependentUpon>MultiplierSetting.cs</DependentUpon> </Compile> <Compile Include="uiControls\MultiSetter.cs"> @@ -201,10 +215,10 @@ <DesignTimeSharedInput>True</DesignTimeSharedInput> <DependentUpon>Settings.settings</DependentUpon> </Compile> - <Compile Include="Settings.cs"> + <Compile Include="settings\Settings.cs"> <SubType>Form</SubType> </Compile> - <Compile Include="Settings.Designer.cs"> + <Compile Include="settings\Settings.Designer.cs"> <DependentUpon>Settings.cs</DependentUpon> </Compile> <Compile Include="StatDisplay.cs"> @@ -274,6 +288,9 @@ <EmbeddedResource Include="NotesControl.resx"> <DependentUpon>NotesControl.cs</DependentUpon> </EmbeddedResource> + <EmbeddedResource Include="ocr\OCRControl.resx"> + <DependentUpon>OCRControl.cs</DependentUpon> + </EmbeddedResource> <EmbeddedResource Include="RaisingControl.resx"> <DependentUpon>RaisingControl.cs</DependentUpon> </EmbeddedResource> @@ -283,7 +300,7 @@ <EmbeddedResource Include="OffspringPossibilities.resx"> <DependentUpon>OffspringPossibilities.cs</DependentUpon> </EmbeddedResource> - <EmbeddedResource Include="uiControls\customSoundChooser.resx"> + <EmbeddedResource Include="settings\customSoundChooser.resx"> <DependentUpon>customSoundChooser.cs</DependentUpon> </EmbeddedResource> <EmbeddedResource Include="uiControls\StatPotential.resx"> @@ -307,12 +324,15 @@ <EmbeddedResource Include="uiControls\StatPotentials.resx"> <DependentUpon>StatPotentials.cs</DependentUpon> </EmbeddedResource> - <None Include="classicalFlyers.json" /> + <None Include="json\classicalFlyers.json"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + <None Include="json\ocr.json"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> <None Include="Resources\kofi.png" /> - <None Include="Resources\ARKCalibration18.png" /> <Content Include="Resources\ARKExtractor.ico" /> <Content Include="Resources\lock.png" /> - <Content Include="Resources\ARKCalibration15.png" /> <Content Include="Resources\newPlayer.png" /> <Content Include="Resources\newTribe.png" /> <Content Include="Resources\settings.png" /> @@ -333,7 +353,7 @@ <EmbeddedResource Include="Form1.resx"> <DependentUpon>Form1.cs</DependentUpon> </EmbeddedResource> - <EmbeddedResource Include="MultiplierSetting.resx"> + <EmbeddedResource Include="settings\MultiplierSetting.resx"> <DependentUpon>MultiplierSetting.cs</DependentUpon> </EmbeddedResource> <EmbeddedResource Include="uiControls\MultiSetter.resx"> @@ -353,7 +373,7 @@ <SubType>Designer</SubType> <LastGenOutput>Resources.Designer.cs</LastGenOutput> </EmbeddedResource> - <EmbeddedResource Include="Settings.resx"> + <EmbeddedResource Include="settings\Settings.resx"> <DependentUpon>Settings.cs</DependentUpon> </EmbeddedResource> <EmbeddedResource Include="StatDisplay.resx"> @@ -363,7 +383,7 @@ <DependentUpon>StatIO.cs</DependentUpon> </EmbeddedResource> <Content Include="Resources\pen.png" /> - <None Include="values.json"> + <None Include="json\values.json"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> </ItemGroup> diff --git a/ARKBreedingStats/ARKOverlay.cs b/ARKBreedingStats/ARKOverlay.cs index 5ffe81a8..10d009be 100644 --- a/ARKBreedingStats/ARKOverlay.cs +++ b/ARKBreedingStats/ARKOverlay.cs @@ -96,35 +96,18 @@ void inventoryCheckTimer_Tick(object sender, EventArgs e) public void setValues(float[] wildValues, float[] tamedValues, Color[] colors = null) { - foreach (KeyValuePair<string, int[]> kv in ArkOCR.OCR.statPositions) + for (int statIndex = 0; statIndex < 10; statIndex++) { - if (kv.Key == "Torpor") - continue; - - int statIndex = -1; - switch (kv.Key) - { - case "NameAndLevel": statIndex = 0; break; - case "Health": statIndex = 1; break; - case "Stamina": statIndex = 2; break; - case "Oxygen": statIndex = 3; break; - case "Food": statIndex = 4; break; - case "Weight": statIndex = 5; break; - case "Melee Damage": statIndex = 6; break; - case "Movement Speed": statIndex = 7; break; - default: break; - } - - if (statIndex == -1) + if (statIndex == 7 || statIndex == 8) // torpor / imprinting continue; labels[statIndex].Text = "[w" + wildValues[statIndex]; if (tamedValues[statIndex] != 0) labels[statIndex].Text += " + d" + tamedValues[statIndex]; labels[statIndex].Text += "]"; - labels[statIndex].Location = this.PointToClient(ArkOCR.OCR.lastLetterPositions[kv.Key]); + labels[statIndex].Location = this.PointToClient(ArkOCR.OCR.lastLetterPositions[""]); - if (kv.Key != "NameAndLevel") + if (statIndex < 8) labels[statIndex].ForeColor = colors[statIndex]; } lblStatus.Location = new Point(labels[0].Location.X - 100, 10); @@ -134,18 +117,15 @@ public void setValues(float[] wildValues, float[] tamedValues, Color[] colors = internal void setExtraText(string p) { - if (ArkOCR.OCR.lastLetterPositions.ContainsKey("NameAndLevel")) - { - lblExtraText.Visible = true; - labelInfo.Visible = false; - //Point loc = this.PointToClient(ArkOCR.OCR.lastLetterPositions["NameAndLevel"]); - Point loc = this.PointToClient(new Point(ArkOCR.OCR.statPositions["NameAndLevel"][0], ArkOCR.OCR.statPositions["NameAndLevel"][1])); + lblExtraText.Visible = true; + labelInfo.Visible = false; + //Point loc = this.PointToClient(ArkOCR.OCR.lastLetterPositions["NameAndLevel"]); + Point loc = this.PointToClient(new Point(ArkOCR.OCR.ocrConfig.labelRectangles[8].X, ArkOCR.OCR.ocrConfig.labelRectangles[9].Y)); - loc.Offset(0, 30); + loc.Offset(0, 30); - lblExtraText.Text = p; - lblExtraText.Location = loc; - } + lblExtraText.Text = p; + lblExtraText.Location = loc; } internal void setInfoText(string p) diff --git a/ARKBreedingStats/App.config b/ARKBreedingStats/App.config index 2e5e3888..747efeef 100644 --- a/ARKBreedingStats/App.config +++ b/ARKBreedingStats/App.config @@ -37,9 +37,6 @@ <setting name="lastUpdateCheck" serializeAs="String"> <value>2000-01-01</value> </setting> - <setting name="OCR" serializeAs="String"> - <value>True</value> - </setting> <setting name="syncCollection" serializeAs="String"> <value>False</value> </setting> @@ -55,9 +52,6 @@ <setting name="OCRApp" serializeAs="String"> <value>ShooterGame</value> </setting> - <setting name="evolutionMultiplier" serializeAs="String"> - <value>1.5</value> - </setting> <setting name="soundStarving" serializeAs="String"> <value /> </setting> @@ -76,6 +70,12 @@ <setting name="OverlayInfoDuration" serializeAs="String"> <value>10</value> </setting> + <setting name="OCRWhiteThreshold" serializeAs="String"> + <value>155</value> + </setting> + <setting name="ocrFile" serializeAs="String"> + <value>json/ocr.json</value> + </setting> </ARKBreedingStats.Properties.Settings> </userSettings> </configuration> diff --git a/ARKBreedingStats/BreedingPlan.Designer.cs b/ARKBreedingStats/BreedingPlan.Designer.cs index 1d32ab25..534374f7 100644 --- a/ARKBreedingStats/BreedingPlan.Designer.cs +++ b/ARKBreedingStats/BreedingPlan.Designer.cs @@ -39,7 +39,7 @@ private void InitializeComponent() this.buttonJustMated = new System.Windows.Forms.Button(); this.labelBreedingInfos = new System.Windows.Forms.Label(); this.labelProbabilityBest = new System.Windows.Forms.Label(); - this.listView1 = new System.Windows.Forms.ListView(); + this.listViewRaisingTimes = new System.Windows.Forms.ListView(); this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); @@ -126,7 +126,7 @@ private void InitializeComponent() this.groupBox1.Controls.Add(this.buttonJustMated); this.groupBox1.Controls.Add(this.labelBreedingInfos); this.groupBox1.Controls.Add(this.labelProbabilityBest); - this.groupBox1.Controls.Add(this.listView1); + this.groupBox1.Controls.Add(this.listViewRaisingTimes); this.groupBox1.Controls.Add(this.labelBreedingDataTitle); this.groupBox1.Controls.Add(this.pedigreeCreatureBest); this.groupBox1.Controls.Add(this.pedigreeCreatureWorst); @@ -172,21 +172,21 @@ private void InitializeComponent() this.labelProbabilityBest.TabIndex = 6; this.labelProbabilityBest.Text = "Probability for this Best Possible outcome:"; // - // listView1 + // listViewRaisingTimes // - this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.listViewRaisingTimes.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { this.columnHeader1, this.columnHeader2, this.columnHeader3, this.columnHeader4}); - this.listView1.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; - this.listView1.Location = new System.Drawing.Point(576, 36); - this.listView1.Name = "listView1"; - this.listView1.ShowGroups = false; - this.listView1.Size = new System.Drawing.Size(317, 86); - this.listView1.TabIndex = 4; - this.listView1.UseCompatibleStateImageBehavior = false; - this.listView1.View = System.Windows.Forms.View.Details; + this.listViewRaisingTimes.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; + this.listViewRaisingTimes.Location = new System.Drawing.Point(576, 36); + this.listViewRaisingTimes.Name = "listViewRaisingTimes"; + this.listViewRaisingTimes.ShowGroups = false; + this.listViewRaisingTimes.Size = new System.Drawing.Size(317, 86); + this.listViewRaisingTimes.TabIndex = 4; + this.listViewRaisingTimes.UseCompatibleStateImageBehavior = false; + this.listViewRaisingTimes.View = System.Windows.Forms.View.Details; // // columnHeader1 // @@ -449,7 +449,7 @@ private void InitializeComponent() private System.Windows.Forms.Label labelTitle; private System.Windows.Forms.GroupBox groupBox1; private System.Windows.Forms.Label labelBreedingDataTitle; - private System.Windows.Forms.ListView listView1; + private System.Windows.Forms.ListView listViewRaisingTimes; private System.Windows.Forms.ColumnHeader columnHeader1; private System.Windows.Forms.ColumnHeader columnHeader2; private System.Windows.Forms.ColumnHeader columnHeader3; diff --git a/ARKBreedingStats/BreedingPlan.cs b/ARKBreedingStats/BreedingPlan.cs index 6c1a8b58..58f21add 100644 --- a/ARKBreedingStats/BreedingPlan.cs +++ b/ARKBreedingStats/BreedingPlan.cs @@ -28,11 +28,14 @@ public partial class BreedingPlan : UserControl private List<PedigreeCreature> pcs = new List<PedigreeCreature>(); private List<PictureBox> pbs = new List<PictureBox>(); private bool[] enabledColorRegions; - private TimeSpan incubation = new TimeSpan(0), growing = new TimeSpan(0); + private TimeSpan incubationTime = new TimeSpan(0); public Creature chosenCreature = null; public StatWeighting statWeighting; public bool breedingPlanNeedsUpdate; public CreatureCollection creatureCollection; + private double matingIntervallMultiplier; + private double incubationSpeedMultiplier; + private double matureSpeedMultiplier; public BreedingPlan() { @@ -390,7 +393,7 @@ public void Clear() { ClearControls(); setBreedingData(); - listView1.Items.Clear(); + listViewRaisingTimes.Items.Clear(); currentSpecies = ""; males.Clear(); females.Clear(); @@ -400,57 +403,40 @@ public void Clear() private void setBreedingData(string species = "") { int si = Values.V.speciesNames.IndexOf(species); - listView1.Items.Clear(); + listViewRaisingTimes.Items.Clear(); if (si < 0 || Values.V.species[si].breeding == null) { - listView1.Items.Add("n/a yet"); + listViewRaisingTimes.Items.Add("n/a yet"); + labelBreedingInfos.Text = ""; } else { - BreedingData breeding = Values.V.species[si].breeding; - - string firstTime = "Gestation"; - if (breeding.gestationTimeAdjusted <= 0) - firstTime = "Incubation"; - - - int babyTime = (int)Math.Ceiling(breeding.maturationTimeAdjusted * .1); - double fullTime = breeding.maturationTimeAdjusted; - - string[] rowNames = new string[] { firstTime, "Baby", "Maturation" }; - for (int k = 0; k < 3; k++) + string incubationMode; + TimeSpan babyTime, maturationTime, nextMatingMin, nextMatingMax; + if (Raising.getRaisingTimes(speciesIndex, matingIntervallMultiplier, incubationSpeedMultiplier, matureSpeedMultiplier, out incubationMode, out incubationTime, out babyTime, out maturationTime, out nextMatingMin, out nextMatingMax)) { - int t1, totalTime = 0; - switch (k) - { - default: - case 0: t1 = (int)(breeding.gestationTimeAdjusted == 0 ? breeding.incubationTimeAdjusted : breeding.gestationTimeAdjusted); totalTime = t1; break; - case 1: t1 = (int)(.1f * breeding.maturationTimeAdjusted); totalTime += t1; break; - case 2: t1 = (int)breeding.maturationTimeAdjusted; totalTime = (int)(breeding.gestationTimeAdjusted + breeding.incubationTimeAdjusted + breeding.maturationTimeAdjusted); break; - } - - string[] subitems = new string[] { rowNames[k], - new TimeSpan(0, 0, t1).ToString("d':'hh':'mm':'ss"), - new TimeSpan(0, 0, totalTime).ToString("d':'hh':'mm':'ss"), - DateTime.Now.AddSeconds(totalTime).ToShortTimeString() + ", " + DateTime.Now.AddSeconds(totalTime).ToShortDateString() - }; - listView1.Items.Add(new ListViewItem(subitems)); + TimeSpan totalTime = incubationTime; + DateTime until = DateTime.Now.Add(totalTime); + string[] times = new string[] { incubationMode, incubationTime.ToString("d':'hh':'mm':'ss"), totalTime.ToString("d':'hh':'mm':'ss"), Utils.shortTimeDate(until) }; + listViewRaisingTimes.Items.Add(new ListViewItem(times)); + + totalTime += babyTime; + until = DateTime.Now.Add(totalTime); + times = new string[] { "Baby", babyTime.ToString("d':'hh':'mm':'ss"), totalTime.ToString("d':'hh':'mm':'ss"), Utils.shortTimeDate(until) }; + listViewRaisingTimes.Items.Add(new ListViewItem(times)); + + totalTime = incubationTime + maturationTime; + until = DateTime.Now.Add(totalTime); + times = new string[] { "Maturation", maturationTime.ToString("d':'hh':'mm':'ss"), totalTime.ToString("d':'hh':'mm':'ss"), Utils.shortTimeDate(until) }; + listViewRaisingTimes.Items.Add(new ListViewItem(times)); + + string eggInfo = Raising.eggTemperature(speciesIndex); + if (eggInfo.Length > 0) + eggInfo = "\n\n" + eggInfo; + + labelBreedingInfos.Text = "Time between mating: " + nextMatingMin.ToString("d':'hh':'mm':'ss") + " to " + nextMatingMax.ToString("d':'hh':'mm':'ss") + + eggInfo; } - incubation = new TimeSpan(0, 0, (int)(breeding.gestationTimeAdjusted + breeding.incubationTimeAdjusted)); - growing = new TimeSpan(0, 0, (int)breeding.maturationTimeAdjusted); - - // further info - string breedingInfo = ""; - if (breeding.eggTempMin > 0) - breedingInfo += "Egg-Temperature: " - + (Values.V.celsius ? breeding.eggTempMin : Math.Round(breeding.eggTempMin * 1.8 + 32, 1)) + " - " - + (Values.V.celsius ? breeding.eggTempMax : Math.Round(breeding.eggTempMax * 1.8 + 32, 1)) - + (Values.V.celsius ? " °C" : " °F"); - if (breeding.eggTempMin > 0 && breeding.matingCooldownMinAdjusted > 0) - breedingInfo += "\n\n"; - if (breeding.matingCooldownMinAdjusted > 0) - breedingInfo += "Time until next mating is possible: " + new TimeSpan(0, 0, (int)breeding.matingCooldownMinAdjusted).ToString("d':'hh':'mm") + " - " + new TimeSpan(0, 0, (int)breeding.matingCooldownMaxAdjusted).ToString("d':'hh':'mm"); - labelBreedingInfos.Text = breedingInfo; } } @@ -653,10 +639,18 @@ private void createIncubationEntry(bool startNow = true) { if (pedigreeCreatureBest.Creature != null && pedigreeCreatureBest.Creature.Mother != null && pedigreeCreatureBest.Creature.Father != null) { - createIncubationTimer?.Invoke(pedigreeCreatureBest.Creature.Mother, pedigreeCreatureBest.Creature.Father, incubation, startNow); + createIncubationTimer?.Invoke(pedigreeCreatureBest.Creature.Mother, pedigreeCreatureBest.Creature.Father, incubationTime, startNow); } } + public void setEvent(bool eventActive) + { + matingIntervallMultiplier = eventActive ? creatureCollection.MatingIntervalMultiplier / creatureCollection.MatingIntervalMultiplierEvent : 1; + incubationSpeedMultiplier = eventActive ? creatureCollection.EggHatchSpeedMultiplier / creatureCollection.EggHatchSpeedMultiplierEvent : 1; + matureSpeedMultiplier = eventActive ? creatureCollection.BabyMatureSpeedMultiplier / creatureCollection.BabyMatureSpeedMultiplierEvent : 1; + setBreedingData(currentSpecies); + } + public enum BreedingMode { BestNextGen, diff --git a/ARKBreedingStats/CreatureBox.cs b/ARKBreedingStats/CreatureBox.cs index bbd15b6e..2ee9456c 100644 --- a/ARKBreedingStats/CreatureBox.cs +++ b/ARKBreedingStats/CreatureBox.cs @@ -84,7 +84,7 @@ public void setCreature(Creature creature) Clear(); this.creature = creature; int si = Values.V.speciesNames.IndexOf(creature.species); - if (si >= 0) + if (si >= 0 && Values.V.species[si].colors != null) colorRegions = Values.V.species[si].colors; else { diff --git a/ARKBreedingStats/CreatureCollection.cs b/ARKBreedingStats/CreatureCollection.cs index 52201c25..71f63e6a 100644 --- a/ARKBreedingStats/CreatureCollection.cs +++ b/ARKBreedingStats/CreatureCollection.cs @@ -38,6 +38,14 @@ namespace ARKBreedingStats public double EggHatchSpeedMultiplier = 1; public double BabyMatureSpeedMultiplier = 1; public double BabyFoodConsumptionSpeedMultiplier = 1; + // event multiplier + public double babyCuddleIntervalMultiplierEvent = 1; + public double tamingSpeedMultiplierEvent = 1.5; + public double tamingFoodRateMultiplierEvent = 1; + public double MatingIntervalMultiplierEvent = 1; + public double EggHatchSpeedMultiplierEvent = 1; + public double BabyMatureSpeedMultiplierEvent = 1; + public double BabyFoodConsumptionSpeedMultiplierEvent = 1; [XmlArray] public List<Player> players = new List<Player>(); [XmlArray] diff --git a/ARKBreedingStats/Extraction.cs b/ARKBreedingStats/Extraction.cs index 603da3bf..032c12f8 100644 --- a/ARKBreedingStats/Extraction.cs +++ b/ARKBreedingStats/Extraction.cs @@ -158,7 +158,7 @@ public int filterResultsByFixed(int dontFix = -1) return -1; // -1 is good for this function. A value >=0 means the stat with that index is faulty } - public void extractLevels(int speciesI, int level, List<StatIO> statIOs, double lowerTEBound, double upperTEBound, bool autoDetectTamed, bool tamed, bool justTamed, bool bred, double imprintingBonusRounded, double imprintingBonusMultiplier, double cuddleIntervalMultiplier, bool evolutionEvent, out bool imprintingChanged) + public void extractLevels(int speciesI, int level, List<StatIO> statIOs, double lowerTEBound, double upperTEBound, bool autoDetectTamed, bool tamed, bool justTamed, bool bred, double imprintingBonusRounded, double imprintingBonusMultiplier, double cuddleIntervalMultiplier, double maturationSpeedMultiplier, out bool imprintingChanged) { validResults = true; imprintingChanged = false; @@ -181,8 +181,8 @@ public void extractLevels(int speciesI, int level, List<StatIO> statIOs, double else if (Values.V.species[speciesI].breeding != null && Values.V.species[speciesI].breeding.maturationTimeAdjusted > 0) { double maturationTimeAdjusted; - if (evolutionEvent && Values.V.evolutionMultiplier > 0) - maturationTimeAdjusted = Values.V.species[speciesI].breeding.maturationTimeAdjusted / Values.V.evolutionMultiplier; + if (maturationSpeedMultiplier > 0) + maturationTimeAdjusted = Values.V.species[speciesI].breeding.maturationTimeAdjusted / maturationSpeedMultiplier; else maturationTimeAdjusted = Values.V.species[speciesI].breeding.maturationTimeAdjusted; imprintingBonus = Math.Round(Math.Round(imprintingBonusRounded * maturationTimeAdjusted / (14400 * cuddleIntervalMultiplier)) * 14400 * cuddleIntervalMultiplier / maturationTimeAdjusted, 5); diff --git a/ARKBreedingStats/Form1.Designer.cs b/ARKBreedingStats/Form1.Designer.cs index 6d66ac45..415add32 100644 --- a/ARKBreedingStats/Form1.Designer.cs +++ b/ARKBreedingStats/Form1.Designer.cs @@ -148,6 +148,8 @@ private void InitializeComponent() this.buttonRecalculateTops = new System.Windows.Forms.Button(); this.label17 = new System.Windows.Forms.Label(); this.tabPage4 = new System.Windows.Forms.TabPage(); + this.checkBoxUseFiltersInTopStatCalculation = new System.Windows.Forms.CheckBox(); + this.checkBoxShowMutatedCreatures = new System.Windows.Forms.CheckBox(); this.checkBoxShowNeuteredCreatures = new System.Windows.Forms.CheckBox(); this.checkBoxShowUnavailableCreatures = new System.Windows.Forms.CheckBox(); this.checkBoxShowDead = new System.Windows.Forms.CheckBox(); @@ -198,16 +200,8 @@ private void InitializeComponent() this.tabPagePlayerTribes = new System.Windows.Forms.TabPage(); this.tabPageNotes = new System.Windows.Forms.TabPage(); this.TabPageOCR = new System.Windows.Forms.TabPage(); - this.tableLayoutPanel4 = new System.Windows.Forms.TableLayoutPanel(); - this.OCRDebugLayoutPanel = new System.Windows.Forms.FlowLayoutPanel(); - this.groupBox6 = new System.Windows.Forms.GroupBox(); - this.label13 = new System.Windows.Forms.Label(); - this.nudWhiteTreshold = new System.Windows.Forms.NumericUpDown(); - this.label12 = new System.Windows.Forms.Label(); - this.label11 = new System.Windows.Forms.Label(); - this.txtOCROutput = new System.Windows.Forms.TextBox(); this.btnReadValuesFromArk = new System.Windows.Forms.Button(); - this.cbEvolutionEvent = new System.Windows.Forms.CheckBox(); + this.cbEventMultipliers = new System.Windows.Forms.CheckBox(); this.statusStrip1 = new System.Windows.Forms.StatusStrip(); this.toolStripProgressBar1 = new System.Windows.Forms.ToolStripProgressBar(); this.toolStripStatusLabel = new System.Windows.Forms.ToolStripStatusLabel(); @@ -233,7 +227,6 @@ private void InitializeComponent() this.labelListening = new System.Windows.Forms.Label(); this.label9 = new System.Windows.Forms.Label(); this.comboBoxSpeciesGlobal = new System.Windows.Forms.ComboBox(); - this.checkBoxShowMutatedCreatures = new System.Windows.Forms.CheckBox(); this.statPotentials1 = new ARKBreedingStats.uiControls.StatPotentials(); this.radarChart1 = new ARKBreedingStats.RadarChart(); this.statTestingHealth = new ARKBreedingStats.StatIO(); @@ -263,7 +256,7 @@ private void InitializeComponent() this.timerList1 = new ARKBreedingStats.TimerControl(); this.tribesControl1 = new ARKBreedingStats.TribesControl(); this.notesControl1 = new ARKBreedingStats.NotesControl(); - this.checkBoxUseFiltersInTopStatCalculation = new System.Windows.Forms.CheckBox(); + this.ocrControl1 = new ARKBreedingStats.ocr.OCRControl(); this.groupBox1.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDownImprintingBonusTester)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.NumericUpDownTestingTE)).BeginInit(); @@ -305,9 +298,6 @@ private void InitializeComponent() this.tabPagePlayerTribes.SuspendLayout(); this.tabPageNotes.SuspendLayout(); this.TabPageOCR.SuspendLayout(); - this.tableLayoutPanel4.SuspendLayout(); - this.groupBox6.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.nudWhiteTreshold)).BeginInit(); this.statusStrip1.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.statTestingTamingEffectiveness)).BeginInit(); this.toolStrip2.SuspendLayout(); @@ -1534,6 +1524,28 @@ private void InitializeComponent() this.tabPage4.Text = "View"; this.tabPage4.UseVisualStyleBackColor = true; // + // checkBoxUseFiltersInTopStatCalculation + // + this.checkBoxUseFiltersInTopStatCalculation.AutoSize = true; + this.checkBoxUseFiltersInTopStatCalculation.Location = new System.Drawing.Point(6, 98); + this.checkBoxUseFiltersInTopStatCalculation.Name = "checkBoxUseFiltersInTopStatCalculation"; + this.checkBoxUseFiltersInTopStatCalculation.Size = new System.Drawing.Size(182, 17); + this.checkBoxUseFiltersInTopStatCalculation.TabIndex = 4; + this.checkBoxUseFiltersInTopStatCalculation.Text = "Use Filters in TopStat-Calculation"; + this.checkBoxUseFiltersInTopStatCalculation.UseVisualStyleBackColor = true; + this.checkBoxUseFiltersInTopStatCalculation.CheckedChanged += new System.EventHandler(this.checkBoxUseFiltersInTopStatCalculation_CheckedChanged); + // + // checkBoxShowMutatedCreatures + // + this.checkBoxShowMutatedCreatures.AutoSize = true; + this.checkBoxShowMutatedCreatures.Location = new System.Drawing.Point(6, 75); + this.checkBoxShowMutatedCreatures.Name = "checkBoxShowMutatedCreatures"; + this.checkBoxShowMutatedCreatures.Size = new System.Drawing.Size(143, 17); + this.checkBoxShowMutatedCreatures.TabIndex = 3; + this.checkBoxShowMutatedCreatures.Text = "Show Mutated Creatures"; + this.checkBoxShowMutatedCreatures.UseVisualStyleBackColor = true; + this.checkBoxShowMutatedCreatures.CheckedChanged += new System.EventHandler(this.checkBoxShowMutatedCreatures_CheckedChanged); + // // checkBoxShowNeuteredCreatures // this.checkBoxShowNeuteredCreatures.AutoSize = true; @@ -1953,7 +1965,7 @@ private void InitializeComponent() // // TabPageOCR // - this.TabPageOCR.Controls.Add(this.tableLayoutPanel4); + this.TabPageOCR.Controls.Add(this.ocrControl1); this.TabPageOCR.Location = new System.Drawing.Point(4, 22); this.TabPageOCR.Name = "TabPageOCR"; this.TabPageOCR.Padding = new System.Windows.Forms.Padding(3); @@ -1962,103 +1974,6 @@ private void InitializeComponent() this.TabPageOCR.Text = "Experimental OCR"; this.TabPageOCR.UseVisualStyleBackColor = true; // - // tableLayoutPanel4 - // - this.tableLayoutPanel4.ColumnCount = 2; - this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 337F)); - this.tableLayoutPanel4.Controls.Add(this.OCRDebugLayoutPanel, 0, 0); - this.tableLayoutPanel4.Controls.Add(this.groupBox6, 1, 0); - this.tableLayoutPanel4.Dock = System.Windows.Forms.DockStyle.Fill; - this.tableLayoutPanel4.Location = new System.Drawing.Point(3, 3); - this.tableLayoutPanel4.Name = "tableLayoutPanel4"; - this.tableLayoutPanel4.RowCount = 1; - this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this.tableLayoutPanel4.Size = new System.Drawing.Size(907, 623); - this.tableLayoutPanel4.TabIndex = 1; - // - // OCRDebugLayoutPanel - // - this.OCRDebugLayoutPanel.AllowDrop = true; - this.OCRDebugLayoutPanel.AutoScroll = true; - this.OCRDebugLayoutPanel.BackColor = System.Drawing.Color.LightSteelBlue; - this.OCRDebugLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill; - this.OCRDebugLayoutPanel.Location = new System.Drawing.Point(3, 3); - this.OCRDebugLayoutPanel.Name = "OCRDebugLayoutPanel"; - this.OCRDebugLayoutPanel.Size = new System.Drawing.Size(564, 617); - this.OCRDebugLayoutPanel.TabIndex = 0; - this.OCRDebugLayoutPanel.DragDrop += new System.Windows.Forms.DragEventHandler(this.doOCRofDroppedImage); - this.OCRDebugLayoutPanel.DragEnter += new System.Windows.Forms.DragEventHandler(this.testEnteredDrag); - // - // groupBox6 - // - this.groupBox6.Controls.Add(this.label13); - this.groupBox6.Controls.Add(this.nudWhiteTreshold); - this.groupBox6.Controls.Add(this.label12); - this.groupBox6.Controls.Add(this.label11); - this.groupBox6.Controls.Add(this.txtOCROutput); - this.groupBox6.Dock = System.Windows.Forms.DockStyle.Fill; - this.groupBox6.Location = new System.Drawing.Point(573, 3); - this.groupBox6.Name = "groupBox6"; - this.groupBox6.Size = new System.Drawing.Size(331, 617); - this.groupBox6.TabIndex = 1; - this.groupBox6.TabStop = false; - this.groupBox6.Text = "OCR Info"; - // - // label13 - // - this.label13.AutoSize = true; - this.label13.Location = new System.Drawing.Point(61, 341); - this.label13.Name = "label13"; - this.label13.Size = new System.Drawing.Size(248, 13); - this.label13.TabIndex = 8; - this.label13.Text = "White Threshold (increase if you increased gamma)"; - // - // nudWhiteTreshold - // - this.nudWhiteTreshold.Location = new System.Drawing.Point(6, 339); - this.nudWhiteTreshold.Maximum = new decimal(new int[] { - 255, - 0, - 0, - 0}); - this.nudWhiteTreshold.Name = "nudWhiteTreshold"; - this.nudWhiteTreshold.Size = new System.Drawing.Size(49, 20); - this.nudWhiteTreshold.TabIndex = 7; - this.nudWhiteTreshold.Value = new decimal(new int[] { - 155, - 0, - 0, - 0}); - this.nudWhiteTreshold.ValueChanged += new System.EventHandler(this.nudWhiteTreshold_ValueChanged); - // - // label12 - // - this.label12.Location = new System.Drawing.Point(6, 16); - this.label12.Name = "label12"; - this.label12.Size = new System.Drawing.Size(319, 48); - this.label12.TabIndex = 6; - this.label12.Text = "The text-recognition (OCR) is still under development and may not work as expecte" + - "d. Currently only the resolutions 1920x1080 and 1680x1050 are supported, the lat" + - "ter does not work well."; - // - // label11 - // - this.label11.AutoSize = true; - this.label11.Location = new System.Drawing.Point(6, 93); - this.label11.Name = "label11"; - this.label11.Size = new System.Drawing.Size(65, 13); - this.label11.TabIndex = 3; - this.label11.Text = "OCR Output"; - // - // txtOCROutput - // - this.txtOCROutput.Location = new System.Drawing.Point(6, 109); - this.txtOCROutput.Multiline = true; - this.txtOCROutput.Name = "txtOCROutput"; - this.txtOCROutput.Size = new System.Drawing.Size(319, 224); - this.txtOCROutput.TabIndex = 2; - // // btnReadValuesFromArk // this.btnReadValuesFromArk.Location = new System.Drawing.Point(212, 3); @@ -2069,16 +1984,16 @@ private void InitializeComponent() this.btnReadValuesFromArk.UseVisualStyleBackColor = true; this.btnReadValuesFromArk.Click += new System.EventHandler(this.btnReadValuesFromArk_Click); // - // cbEvolutionEvent + // cbEventMultipliers // - this.cbEvolutionEvent.AutoSize = true; - this.cbEvolutionEvent.Location = new System.Drawing.Point(12, 30); - this.cbEvolutionEvent.Name = "cbEvolutionEvent"; - this.cbEvolutionEvent.Size = new System.Drawing.Size(101, 17); - this.cbEvolutionEvent.TabIndex = 51; - this.cbEvolutionEvent.Text = "Evolution Event"; - this.cbEvolutionEvent.UseVisualStyleBackColor = true; - this.cbEvolutionEvent.CheckedChanged += new System.EventHandler(this.cbEvolutionEvent_CheckedChanged); + this.cbEventMultipliers.AutoSize = true; + this.cbEventMultipliers.Location = new System.Drawing.Point(12, 30); + this.cbEventMultipliers.Name = "cbEventMultipliers"; + this.cbEventMultipliers.Size = new System.Drawing.Size(54, 17); + this.cbEventMultipliers.TabIndex = 51; + this.cbEventMultipliers.Text = "Event"; + this.cbEventMultipliers.UseVisualStyleBackColor = true; + this.cbEventMultipliers.CheckedChanged += new System.EventHandler(this.cbEvolutionEvent_CheckedChanged); // // statusStrip1 // @@ -2293,7 +2208,7 @@ private void InitializeComponent() // this.panelToolBar.Controls.Add(this.chkbToggleOverlay); this.panelToolBar.Controls.Add(this.labelListening); - this.panelToolBar.Controls.Add(this.cbEvolutionEvent); + this.panelToolBar.Controls.Add(this.cbEventMultipliers); this.panelToolBar.Controls.Add(this.label9); this.panelToolBar.Controls.Add(this.btnReadValuesFromArk); this.panelToolBar.Controls.Add(this.comboBoxSpeciesGlobal); @@ -2341,7 +2256,7 @@ private void InitializeComponent() // // comboBoxSpeciesGlobal // - this.comboBoxSpeciesGlobal.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend; + this.comboBoxSpeciesGlobal.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Suggest; this.comboBoxSpeciesGlobal.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems; this.comboBoxSpeciesGlobal.FormattingEnabled = true; this.comboBoxSpeciesGlobal.Location = new System.Drawing.Point(57, 3); @@ -2350,17 +2265,6 @@ private void InitializeComponent() this.comboBoxSpeciesGlobal.TabIndex = 1; this.comboBoxSpeciesGlobal.SelectedIndexChanged += new System.EventHandler(this.comboBoxSpeciesGlobal_SelectedIndexChanged); // - // checkBoxShowMutatedCreatures - // - this.checkBoxShowMutatedCreatures.AutoSize = true; - this.checkBoxShowMutatedCreatures.Location = new System.Drawing.Point(6, 75); - this.checkBoxShowMutatedCreatures.Name = "checkBoxShowMutatedCreatures"; - this.checkBoxShowMutatedCreatures.Size = new System.Drawing.Size(143, 17); - this.checkBoxShowMutatedCreatures.TabIndex = 3; - this.checkBoxShowMutatedCreatures.Text = "Show Mutated Creatures"; - this.checkBoxShowMutatedCreatures.UseVisualStyleBackColor = true; - this.checkBoxShowMutatedCreatures.CheckedChanged += new System.EventHandler(this.checkBoxShowMutatedCreatures_CheckedChanged); - // // statPotentials1 // this.statPotentials1.Location = new System.Drawing.Point(556, 243); @@ -2524,7 +2428,7 @@ private void InitializeComponent() // // creatureInfoInputTester // - this.creatureInfoInputTester.Cooldown = new System.DateTime(2017, 4, 14, 16, 47, 5, 688); + this.creatureInfoInputTester.Cooldown = new System.DateTime(2017, 4, 29, 21, 11, 40, 728); this.creatureInfoInputTester.CreatureName = ""; this.creatureInfoInputTester.CreatureNote = ""; this.creatureInfoInputTester.CreatureOwner = ""; @@ -2533,7 +2437,7 @@ private void InitializeComponent() this.creatureInfoInputTester.CreatureTribe = ""; this.creatureInfoInputTester.domesticatedAt = new System.DateTime(2016, 7, 5, 13, 11, 41, 997); this.creatureInfoInputTester.father = null; - this.creatureInfoInputTester.Grown = new System.DateTime(2017, 4, 14, 16, 47, 5, 699); + this.creatureInfoInputTester.Grown = new System.DateTime(2017, 4, 29, 21, 11, 40, 728); this.creatureInfoInputTester.Location = new System.Drawing.Point(321, 184); this.creatureInfoInputTester.mother = null; this.creatureInfoInputTester.MutationCounter = 0; @@ -2709,7 +2613,7 @@ private void InitializeComponent() // // creatureInfoInputExtractor // - this.creatureInfoInputExtractor.Cooldown = new System.DateTime(2017, 4, 14, 16, 47, 5, 734); + this.creatureInfoInputExtractor.Cooldown = new System.DateTime(2017, 4, 29, 21, 11, 40, 757); this.creatureInfoInputExtractor.CreatureName = ""; this.creatureInfoInputExtractor.CreatureNote = ""; this.creatureInfoInputExtractor.CreatureOwner = ""; @@ -2718,7 +2622,7 @@ private void InitializeComponent() this.creatureInfoInputExtractor.CreatureTribe = ""; this.creatureInfoInputExtractor.domesticatedAt = new System.DateTime(2016, 7, 5, 13, 12, 15, 968); this.creatureInfoInputExtractor.father = null; - this.creatureInfoInputExtractor.Grown = new System.DateTime(2017, 4, 14, 16, 47, 5, 735); + this.creatureInfoInputExtractor.Grown = new System.DateTime(2017, 4, 29, 21, 11, 40, 758); this.creatureInfoInputExtractor.Location = new System.Drawing.Point(321, 184); this.creatureInfoInputExtractor.mother = null; this.creatureInfoInputExtractor.MutationCounter = 0; @@ -2808,16 +2712,13 @@ private void InitializeComponent() this.notesControl1.Size = new System.Drawing.Size(907, 623); this.notesControl1.TabIndex = 0; // - // checkBoxUseFiltersInTopStatCalculation + // ocrControl1 // - this.checkBoxUseFiltersInTopStatCalculation.AutoSize = true; - this.checkBoxUseFiltersInTopStatCalculation.Location = new System.Drawing.Point(6, 98); - this.checkBoxUseFiltersInTopStatCalculation.Name = "checkBoxUseFiltersInTopStatCalculation"; - this.checkBoxUseFiltersInTopStatCalculation.Size = new System.Drawing.Size(182, 17); - this.checkBoxUseFiltersInTopStatCalculation.TabIndex = 4; - this.checkBoxUseFiltersInTopStatCalculation.Text = "Use Filters in TopStat-Calculation"; - this.checkBoxUseFiltersInTopStatCalculation.UseVisualStyleBackColor = true; - this.checkBoxUseFiltersInTopStatCalculation.CheckedChanged += new System.EventHandler(this.checkBoxUseFiltersInTopStatCalculation_CheckedChanged); + this.ocrControl1.Dock = System.Windows.Forms.DockStyle.Fill; + this.ocrControl1.Location = new System.Drawing.Point(3, 3); + this.ocrControl1.Name = "ocrControl1"; + this.ocrControl1.Size = new System.Drawing.Size(907, 623); + this.ocrControl1.TabIndex = 2; // // Form1 // @@ -2891,10 +2792,6 @@ private void InitializeComponent() this.tabPagePlayerTribes.ResumeLayout(false); this.tabPageNotes.ResumeLayout(false); this.TabPageOCR.ResumeLayout(false); - this.tableLayoutPanel4.ResumeLayout(false); - this.groupBox6.ResumeLayout(false); - this.groupBox6.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.nudWhiteTreshold)).EndInit(); this.statusStrip1.ResumeLayout(false); this.statusStrip1.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.statTestingTamingEffectiveness)).EndInit(); @@ -3029,11 +2926,6 @@ private void InitializeComponent() private System.Windows.Forms.Label labelTesterTotalLevel; private System.Windows.Forms.Label labelCurrentTesterCreature; private System.Windows.Forms.TabPage TabPageOCR; - private System.Windows.Forms.TableLayoutPanel tableLayoutPanel4; - private System.Windows.Forms.FlowLayoutPanel OCRDebugLayoutPanel; - private System.Windows.Forms.GroupBox groupBox6; - private System.Windows.Forms.Label label11; - private System.Windows.Forms.TextBox txtOCROutput; private System.Windows.Forms.ContextMenuStrip contextMenuStripLibrary; private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemEdit; private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemRemove; @@ -3080,7 +2972,6 @@ private void InitializeComponent() private System.Windows.Forms.NumericUpDown numericUpDownImprintingBonusExtractor; private System.Windows.Forms.Label labelImprintingTester; private System.Windows.Forms.NumericUpDown numericUpDownImprintingBonusTester; - private System.Windows.Forms.Label label12; private System.Windows.Forms.ToolStripMenuItem exportToClipboardToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem forSpreadsheetToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem forARKChatToolStripMenuItem; @@ -3125,7 +3016,7 @@ private void InitializeComponent() private System.Windows.Forms.ColumnHeader columnHeaderCooldown; private System.Windows.Forms.GroupBox groupBoxRadarChartExtractor; private RadarChart radarChartExtractor; - private System.Windows.Forms.CheckBox cbEvolutionEvent; + private System.Windows.Forms.CheckBox cbEventMultipliers; private System.Windows.Forms.TabPage tabPageRaising; private RaisingControl raisingControl1; private System.Windows.Forms.TabPage tabPageNotes; @@ -3140,9 +3031,8 @@ private void InitializeComponent() private System.Windows.Forms.Label labelListening; private System.Windows.Forms.CheckBox chkbToggleOverlay; private System.Windows.Forms.ToolStripButton toolStripButtonDeleteExpiredIncubationTimers; - private System.Windows.Forms.Label label13; - private System.Windows.Forms.NumericUpDown nudWhiteTreshold; private System.Windows.Forms.CheckBox checkBoxShowMutatedCreatures; private System.Windows.Forms.CheckBox checkBoxUseFiltersInTopStatCalculation; + private ocr.OCRControl ocrControl1; } } diff --git a/ARKBreedingStats/Form1.cs b/ARKBreedingStats/Form1.cs index 3be157d5..9a3f6e47 100644 --- a/ARKBreedingStats/Form1.cs +++ b/ARKBreedingStats/Form1.cs @@ -80,7 +80,10 @@ public Form1() extractor = new Extraction(); - ArkOCR.OCR.setDebugPanel(OCRDebugLayoutPanel); + ArkOCR.OCR.setOCRControl(ocrControl1); + ocrControl1.updateWhiteThreshold += OcrupdateWhiteThreshold; + ocrControl1.dragEnter += testEnteredDrag; + ocrControl1.dragDrop += doOCRofDroppedImage; settingsToolStripMenuItem.ShortcutKeyDisplayString = ((new KeysConverter()).ConvertTo(Keys.Control, typeof(string))).ToString().Replace("None", ","); @@ -102,7 +105,7 @@ private void Form1_Load(object sender, EventArgs e) // TODO does not yet work. has to use ConfigurationErrorsException? try { - bool t = Properties.Settings.Default.autosave; + bool testVariable = Properties.Settings.Default.autosave; } catch (ConfigurationException ex) { //(requires System.Configuration) @@ -280,13 +283,17 @@ private void Form1_Load(object sender, EventArgs e) extractor.activeStats = activeStats; - // hide OCR if not enabled - if (!Properties.Settings.Default.OCR) + // OCR + ocrControl1.setWhiteThreshold(Properties.Settings.Default.OCRWhiteThreshold); + + ocr.OCRTemplate ocrConfig = ArkOCR.OCR.ocrConfig.loadFile(Properties.Settings.Default.ocrFile); + if (ocrConfig != null) { - tabControlMain.TabPages.Remove(TabPageOCR); - btnReadValuesFromArk.Visible = false; - chkbToggleOverlay.Visible = false; + ArkOCR.OCR.ocrConfig = ocrConfig; + ocrControl1.setOCRFile(Properties.Settings.Default.ocrFile); } + ocrControl1.initLabelEntries(); + // initialize speech recognition if enabled if (Properties.Settings.Default.SpeechRecognition) { @@ -415,11 +422,13 @@ private bool extractLevels(bool autoExtraction = false) clearAll(); bool imprintingBonusChanged; + double maturationSpeedMultiplier = cbEventMultipliers.Checked ? creatureCollection.BabyMatureSpeedMultiplierEvent : creatureCollection.BabyMatureSpeedMultiplierEvent; + double babyCuddleIntervalMultiplier = cbEventMultipliers.Checked ? creatureCollection.babyCuddleIntervalMultiplierEvent : creatureCollection.babyCuddleIntervalMultiplier; extractor.extractLevels(speciesIndex, (int)numericUpDownLevel.Value, statIOs, (double)numericUpDownLowerTEffBound.Value / 100, (double)numericUpDownUpperTEffBound.Value / 100, !radioButtonBred.Checked, radioButtonTamed.Checked, checkBoxJustTamed.Checked, radioButtonBred.Checked, - (double)numericUpDownImprintingBonusExtractor.Value / 100, creatureCollection.imprintingMultiplier, creatureCollection.babyCuddleIntervalMultiplier, cbEvolutionEvent.Checked, out imprintingBonusChanged); + (double)numericUpDownImprintingBonusExtractor.Value / 100, creatureCollection.imprintingMultiplier, babyCuddleIntervalMultiplier, maturationSpeedMultiplier, out imprintingBonusChanged); if (radioButtonTamed.Checked) checkBoxJustTamed.Checked = extractor.justTamed; @@ -712,7 +721,7 @@ private void updateExtrDetails() groupBoxDetailsExtractor.Visible = !radioButtonWild.Checked; checkBoxJustTamed.Checked = checkBoxJustTamed.Checked && radioButtonTamed.Checked; checkBoxJustTamed.Visible = radioButtonTamed.Checked; - cbEvolutionEvent.Visible = radioButtonBred.Checked; + cbEventMultipliers.Visible = radioButtonBred.Checked; if (radioButtonTamed.Checked) groupBoxDetailsExtractor.Text = "Taming-Effectiveness"; else if (radioButtonBred.Checked) @@ -834,13 +843,13 @@ private void comboBoxSpeciesGlobal_SelectedIndexChanged(object sender, EventArgs speciesIndex = comboBoxSpeciesGlobal.SelectedIndex; creatureInfoInputExtractor.SpeciesIndex = speciesIndex; creatureInfoInputTester.SpeciesIndex = speciesIndex; + for (int s = 0; s < 8; s++) + { + activeStats[s] = (Values.V.species[speciesIndex].stats[s].BaseValue > 0) && (s != 2 || !Values.V.species[speciesIndex].doesNotUseOxygen || oxygenForAll); + statIOs[s].Enabled = activeStats[s]; + } if (tabControlMain.SelectedTab == tabPageExtractor) { - for (int s = 0; s < 8; s++) - { - activeStats[s] = (Values.V.species[speciesIndex].stats[s].BaseValue > 0) && (s != 2 || !Values.V.species[speciesIndex].doesNotUseOxygen || oxygenForAll); - statIOs[s].Enabled = activeStats[s]; - } clearAll(); } else if (tabControlMain.SelectedTab == tabPageStatTesting) @@ -1107,6 +1116,7 @@ private void applySettingsToValues() { // apply multipliers Values.V.applyMultipliers(creatureCollection); + applyEvolutionMultipliers(); // apply level settings creatureBoxListView.BarMaxLevel = creatureCollection.maxChartLevel; @@ -1129,7 +1139,8 @@ private void applySettingsToValues() oxygenForAll = Properties.Settings.Default.oxygenForAll; ArkOCR.OCR.screenCaptureApplicationName = Properties.Settings.Default.OCRApp; Values.V.celsius = Properties.Settings.Default.celsius; - Values.V.evolutionMultiplier = Properties.Settings.Default.evolutionMultiplier; + + ocrControl1.setWhiteThreshold(Properties.Settings.Default.OCRWhiteThreshold); // sound-files timerList1.sounds = new System.Media.SoundPlayer[] { @@ -1644,18 +1655,26 @@ private void checkForUpdates(bool silentCheck = false) } // check if values.json can be updated - int remoteFileVer; string filename = "values.json"; - - remoteFileVer = 0; - if (Int32.TryParse(remoteVers[0], out remoteFileVer) && Values.V.version < remoteFileVer) + try + { + localVersion = Values.V.version; + remoteVersion = new Version(remoteVers[0].Trim()); + } + catch + { + if (MessageBox.Show("Error while checking for values-version, bad remote-format. Try checking for an updated version of this tool. Do you want to visit the homepage of the tool?", "Error", MessageBoxButtons.YesNo, MessageBoxIcon.Error) == DialogResult.Yes) + System.Diagnostics.Process.Start("https://github.com/cadon/ARKStatsExtractor/releases/latest"); + return; + } + if (localVersion.CompareTo(remoteVersion) < 0) { newValuesAvailable = true; - if (MessageBox.Show("There is a new version of the values-file \"" + filename + "\", do you want to update it?\n\nIf you play on a console (Xbox or PS4) make a backup of the current file before you click on Yes, as the updated values may not work with the console-version for some time.\nUsually it takes some days to weeks until the changes are valid on the consoles as well.", "Update Values-File?", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) + if (MessageBox.Show("There is a new version of the values-file \"" + filename + "\", do you want to update it?\n\nIf you play on a console (Xbox or PS4) make a backup of the current file before you click on Yes, as the updated values may not work with the console-version for some time.\nUsually it takes up to some days or weeks until the patch is released for the consoles as well and the changes are valid on there, too.", "Update Values-File?", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { // System.IO.File.Copy(filename, filename + "_backup_" + DateTime.Now.ToString("yyyyMMdd_HHmmss") + ".json"); // Download the Web resource and save it into the current filesystem folder. - myWebClient.DownloadFile(remoteUri + filename, filename); + myWebClient.DownloadFile(remoteUri + "json/" + filename, filename); updated = true; } } @@ -3039,7 +3058,7 @@ private void toolStripButtonSettings_Click(object sender, EventArgs e) private void settingsToolStripMenuItem_Click(object sender, EventArgs e) { - Settings settingsfrm = new Settings(creatureCollection); + settings.Settings settingsfrm = new settings.Settings(creatureCollection); if (settingsfrm.ShowDialog() == DialogResult.OK) { applySettingsToValues(); @@ -3155,17 +3174,19 @@ public void doOCR(string imageFilePath = "", bool manuallyTriggered = true) string debugText; string dinoName, ownerName, tribeName, species; - float[] OCRvalues = ArkOCR.OCR.doOCR(out debugText, out dinoName, out species, out ownerName, out tribeName, imageFilePath, manuallyTriggered); + Sex sex; + float[] OCRvalues = ArkOCR.OCR.doOCR(out debugText, out dinoName, out species, out ownerName, out tribeName, out sex, imageFilePath, manuallyTriggered); - txtOCROutput.Text = debugText; + ocrControl1.output.Text = debugText; if (OCRvalues.Length <= 1) return; - if ((decimal)OCRvalues[8] <= numericUpDownLevel.Maximum) - numericUpDownLevel.Value = (decimal)OCRvalues[8]; + if ((decimal)OCRvalues[9] <= numericUpDownLevel.Maximum) + numericUpDownLevel.Value = (decimal)OCRvalues[9]; creatureInfoInputExtractor.CreatureName = dinoName; creatureInfoInputExtractor.CreatureOwner = ownerName; creatureInfoInputExtractor.CreatureTribe = tribeName; + creatureInfoInputExtractor.CreatureSex = sex; for (int i = 0; i < 8; i++) { @@ -3176,11 +3197,15 @@ public void doOCR(string imageFilePath = "", bool manuallyTriggered = true) } // use imprinting if existing - if (OCRvalues.Length > 9 && OCRvalues[9] > 0 && OCRvalues[9] <= 100) + if (OCRvalues.Length > 8 && OCRvalues[8] > 0 && OCRvalues[8] <= 100) { radioButtonBred.Checked = true; - numericUpDownImprintingBonusExtractor.Value = (decimal)OCRvalues[9]; + numericUpDownImprintingBonusExtractor.Value = (decimal)OCRvalues[8]; } + else { radioButtonTamed.Checked = true; } + + if (species == "Paraceratherium") //todo do more species + species = "Paracer"; List<int> possibleDinos = determineSpeciesFromStats(OCRvalues, species); @@ -3195,7 +3220,7 @@ public void doOCR(string imageFilePath = "", bool manuallyTriggered = true) bool sameValues = true; if (lastOCRValues != null) - for (int i = 0; i < 9; i++) + for (int i = 0; i < 10; i++) if (OCRvalues[i] != lastOCRValues[i]) { sameValues = false; @@ -3239,21 +3264,21 @@ public void doOCR(string imageFilePath = "", bool manuallyTriggered = true) //} } - private List<int> determineSpeciesFromStats(float[] stats, string name) + private List<int> determineSpeciesFromStats(float[] stats, string species) { List<int> possibleDinos = new List<int>(); // for wild dinos, we can get the name directly. System.Globalization.TextInfo textInfo = new System.Globalization.CultureInfo("en-US", false).TextInfo; - name = textInfo.ToTitleCase(name.ToLower()); - int sI = Values.V.speciesNames.IndexOf(name); + species = textInfo.ToTitleCase(species.ToLower()); + int sI = Values.V.speciesNames.IndexOf(species); if (sI >= 0) { possibleDinos.Add(sI); return possibleDinos; } - if (stats.Length > 9 && stats[9] > 0) + if (stats.Length > 8 && stats[8] > 0) { // creature is imprinted, the following algorithm cannot handle this yet. use current selected species possibleDinos.Add(comboBoxSpeciesGlobal.SelectedIndex); @@ -3459,13 +3484,15 @@ private void showStatsInOverlay() if (!extractor.postTamed) { string foodName = Values.V.species[speciesIndex].taming.eats[0]; - int foodNeeded = Taming.foodAmountNeeded(speciesIndex, (int)wildLevels[0], cbEvolutionEvent.Checked, foodName, Values.V.species[speciesIndex].taming.nonViolent); + double tamingSpeedMultiplier = cbEventMultipliers.Checked ? creatureCollection.tamingSpeedMultiplierEvent : creatureCollection.tamingSpeedMultiplier; + double tamingFoodRateMultiplier = cbEventMultipliers.Checked ? creatureCollection.tamingFoodRateMultiplierEvent : creatureCollection.tamingFoodRateMultiplier; + int foodNeeded = Taming.foodAmountNeeded(speciesIndex, (int)wildLevels[0], tamingSpeedMultiplier, foodName, Values.V.species[speciesIndex].taming.nonViolent); List<int> foodAmountUsed; bool enoughFood; double te, hunger; TimeSpan duration; int narcotics, narcoBerries, bioToxines, bonusLevel; - Taming.tamingTimes(speciesIndex, (int)wildLevels[0], cbEvolutionEvent.Checked, foodName, foodNeeded, out foodAmountUsed, out duration, out narcoBerries, out narcotics, out bioToxines, out te, out hunger, out bonusLevel, out enoughFood); + Taming.tamingTimes(speciesIndex, (int)wildLevels[0], tamingSpeedMultiplier, tamingFoodRateMultiplier, foodName, foodNeeded, out foodAmountUsed, out duration, out narcoBerries, out narcotics, out bioToxines, out te, out hunger, out bonusLevel, out enoughFood); string foodNameDisplay = (foodName == "Kibble" ? Values.V.species[speciesIndex].taming.favoriteKibble + " Egg Kibble" : foodName); extraText += "\nTaming takes " + duration.ToString(@"hh\:mm\:ss") + " with " + foodNeeded + "×" + foodNameDisplay + "\n" + narcoBerries + " Narcoberries or " + narcotics + " Narcotics or " + bioToxines + " Bio Toxines are needed" @@ -3605,8 +3632,8 @@ private void updateStatusBar() + ", available: " + creatureCollection.creatures.Count(c => c.status == CreatureStatus.Available).ToString() + ", unavailable: " + creatureCollection.creatures.Count(c => c.status == CreatureStatus.Unavailable).ToString() + ")" : "") - + ". Version " + Application.ProductVersion + " / " + Values.V.version.ToString() + - (creatureCollection.additionalValues.Length > 0 ? ", additional values from " + creatureCollection.additionalValues : ""); + + ". v" + Application.ProductVersion + " / values: " + Values.V.version.ToString() + + (creatureCollection.additionalValues.Length > 0 ? ", additional values from " + creatureCollection.additionalValues + " v" + Values.V.modVersion : ""); } private void toolStripButtonAddNote_Click(object sender, EventArgs e) @@ -3643,7 +3670,15 @@ private void Timer_Tick(object sender, EventArgs e) private void cbEvolutionEvent_CheckedChanged(object sender, EventArgs e) { - tamingControl1.EvolutionEvent = cbEvolutionEvent.Checked; + applyEvolutionMultipliers(); + } + + private void applyEvolutionMultipliers() + { + tamingControl1.TamingSpeedMultiplier = cbEventMultipliers.Checked ? creatureCollection.tamingSpeedMultiplierEvent : creatureCollection.tamingSpeedMultiplier; + tamingControl1.TamingFoodRateMultiplier = cbEventMultipliers.Checked ? creatureCollection.tamingFoodRateMultiplierEvent : creatureCollection.tamingFoodRateMultiplier; + breedingPlan1.setEvent(cbEventMultipliers.Checked); + raisingControl1.setEvent(cbEventMultipliers.Checked); } private void toolStripButtonDeleteExpiredIncubationTimers_Click(object sender, EventArgs e) @@ -3654,9 +3689,9 @@ private void toolStripButtonDeleteExpiredIncubationTimers_Click(object sender, E timerList1.deleteAllExpiredTimers(); } - private void nudWhiteTreshold_ValueChanged(object sender, EventArgs e) + private void OcrupdateWhiteThreshold(int value) { - ArkOCR.OCR.whiteThreshold = (int)nudWhiteTreshold.Value; + ArkOCR.OCR.whiteThreshold = value; } /// <summary> diff --git a/ARKBreedingStats/Properties/AssemblyInfo.cs b/ARKBreedingStats/Properties/AssemblyInfo.cs index 9936925a..9350ca34 100644 --- a/ARKBreedingStats/Properties/AssemblyInfo.cs +++ b/ARKBreedingStats/Properties/AssemblyInfo.cs @@ -33,4 +33,4 @@ // übernehmen, indem Sie "*" eingeben: // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("0.22.5")] +[assembly: AssemblyFileVersion("0.23.0")] diff --git a/ARKBreedingStats/Properties/Resources.Designer.cs b/ARKBreedingStats/Properties/Resources.Designer.cs index 1c548e18..7639bc47 100644 --- a/ARKBreedingStats/Properties/Resources.Designer.cs +++ b/ARKBreedingStats/Properties/Resources.Designer.cs @@ -60,6 +60,16 @@ internal Resources() { } } + /// <summary> + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// </summary> + internal static System.Drawing.Bitmap ARKCalibration13 { + get { + object obj = ResourceManager.GetObject("ARKCalibration13", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// <summary> /// Looks up a localized resource of type System.Drawing.Bitmap. /// </summary> diff --git a/ARKBreedingStats/Properties/Resources.resx b/ARKBreedingStats/Properties/Resources.resx index d5ec6dbe..38c7bd3a 100644 --- a/ARKBreedingStats/Properties/Resources.resx +++ b/ARKBreedingStats/Properties/Resources.resx @@ -145,4 +145,7 @@ <data name="ARKCalibration18" type="System.Resources.ResXFileRef, System.Windows.Forms"> <value>..\Resources\ARKCalibration18.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> </data> + <data name="ARKCalibration13" type="System.Resources.ResXFileRef, System.Windows.Forms"> + <value>..\Resources\ARKCalibration13.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> + </data> </root> \ No newline at end of file diff --git a/ARKBreedingStats/Properties/Settings.Designer.cs b/ARKBreedingStats/Properties/Settings.Designer.cs index dcf3d45c..0c255657 100644 --- a/ARKBreedingStats/Properties/Settings.Designer.cs +++ b/ARKBreedingStats/Properties/Settings.Designer.cs @@ -164,18 +164,6 @@ public bool listViewSortAsc { } } - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("True")] - public bool OCR { - get { - return ((bool)(this["OCR"])); - } - set { - this["OCR"] = value; - } - } - [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("False")] @@ -247,18 +235,6 @@ public double[] weaponDamages { } } - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("1.5")] - public double evolutionMultiplier { - get { - return ((double)(this["evolutionMultiplier"])); - } - set { - this["evolutionMultiplier"] = value; - } - } - [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("")] @@ -330,5 +306,29 @@ public int OverlayInfoDuration { this["OverlayInfoDuration"] = value; } } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("155")] + public int OCRWhiteThreshold { + get { + return ((int)(this["OCRWhiteThreshold"])); + } + set { + this["OCRWhiteThreshold"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("json/ocr.json")] + public string ocrFile { + get { + return ((string)(this["ocrFile"])); + } + set { + this["ocrFile"] = value; + } + } } } diff --git a/ARKBreedingStats/Properties/Settings.settings b/ARKBreedingStats/Properties/Settings.settings index d6d43703..e5eb7843 100644 --- a/ARKBreedingStats/Properties/Settings.settings +++ b/ARKBreedingStats/Properties/Settings.settings @@ -38,9 +38,6 @@ <Setting Name="lastUpdateCheck" Type="System.DateTime" Scope="User"> <Value Profile="(Default)">2000-01-01</Value> </Setting> - <Setting Name="OCR" Type="System.Boolean" Scope="User"> - <Value Profile="(Default)">True</Value> - </Setting> <Setting Name="syncCollection" Type="System.Boolean" Scope="User"> <Value Profile="(Default)">False</Value> </Setting> @@ -59,9 +56,6 @@ <Setting Name="weaponDamages" Type="System.Double[]" Scope="User"> <Value Profile="(Default)" /> </Setting> - <Setting Name="evolutionMultiplier" Type="System.Double" Scope="User"> - <Value Profile="(Default)">1.5</Value> - </Setting> <Setting Name="soundStarving" Type="System.String" Scope="User"> <Value Profile="(Default)" /> </Setting> @@ -80,5 +74,11 @@ <Setting Name="OverlayInfoDuration" Type="System.Int32" Scope="User"> <Value Profile="(Default)">10</Value> </Setting> + <Setting Name="OCRWhiteThreshold" Type="System.Int32" Scope="User"> + <Value Profile="(Default)">155</Value> + </Setting> + <Setting Name="ocrFile" Type="System.String" Scope="User"> + <Value Profile="(Default)">json/ocr.json</Value> + </Setting> </Settings> </SettingsFile> \ No newline at end of file diff --git a/ARKBreedingStats/Raising.cs b/ARKBreedingStats/Raising.cs index 2ecdfbb3..79e91140 100644 --- a/ARKBreedingStats/Raising.cs +++ b/ARKBreedingStats/Raising.cs @@ -10,7 +10,7 @@ public static class Raising { public delegate void createIncubationEventHandler(Creature mother, Creature father, TimeSpan incubationDuration, bool incubationStarted); - public static bool getRaisingTimes(int speciesIndex, out string incubationMode, out TimeSpan incubation, out TimeSpan baby, out TimeSpan maturation, out TimeSpan nextMatingMin, out TimeSpan nextMatingMax) + public static bool getRaisingTimes(int speciesIndex, double matingmultiplier, double incubationMultiplier, double matureMultiplier, out string incubationMode, out TimeSpan incubation, out TimeSpan baby, out TimeSpan maturation, out TimeSpan nextMatingMin, out TimeSpan nextMatingMax) { incubation = new TimeSpan(); baby = new TimeSpan(); @@ -23,19 +23,17 @@ public static bool getRaisingTimes(int speciesIndex, out string incubationMode, return false; BreedingData breeding = Values.V.species[speciesIndex].breeding; - nextMatingMin = new TimeSpan(0, 0, (int)breeding.matingCooldownMinAdjusted); - nextMatingMax = new TimeSpan(0, 0, (int)breeding.matingCooldownMaxAdjusted); + + nextMatingMin = new TimeSpan(0, 0, (int)(breeding.matingCooldownMinAdjusted * matingmultiplier)); + nextMatingMax = new TimeSpan(0, 0, (int)(breeding.matingCooldownMaxAdjusted * matingmultiplier)); incubationMode = "Gestation"; - if (breeding.gestationTimeAdjusted <= 0) + if (breeding.gestationTimeAdjusted == 0) incubationMode = "Incubation"; - - int babyTime = (int)Math.Ceiling(breeding.maturationTimeAdjusted * .1); - - incubation = new TimeSpan(0, 0, (int)(breeding.incubationTimeAdjusted + breeding.gestationTimeAdjusted)); - baby = new TimeSpan(0, 0, (int)(.1f * breeding.maturationTimeAdjusted)); - maturation = new TimeSpan(0, 0, (int)breeding.maturationTimeAdjusted); + incubation = new TimeSpan(0, 0, (int)((breeding.incubationTimeAdjusted + breeding.gestationTimeAdjusted) * incubationMultiplier)); + baby = new TimeSpan(0, 0, (int)(.1f * breeding.maturationTimeAdjusted * matureMultiplier)); + maturation = new TimeSpan(0, 0, (int)(breeding.maturationTimeAdjusted * matureMultiplier)); return true; } diff --git a/ARKBreedingStats/RaisingControl.cs b/ARKBreedingStats/RaisingControl.cs index 79bbc1fc..146cde69 100644 --- a/ARKBreedingStats/RaisingControl.cs +++ b/ARKBreedingStats/RaisingControl.cs @@ -21,6 +21,10 @@ public partial class RaisingControl : UserControl private TimeSpan babyTime, maturationTime; private CreatureCollection cc; public TimerControl timerControl; + private double matingIntervallMultiplier; + private double incubationSpeedMultiplier; + private double matureSpeedMultiplier; + private double babyFoodConsumptionSpeedMultiplier; public RaisingControl() { @@ -51,7 +55,7 @@ public void updateRaisingData(int speciesIndex) listViewRaisingTimes.Items.Clear(); - if (Raising.getRaisingTimes(speciesIndex, out incubationMode, out incubationTime, out babyTime, out maturationTime, out nextMatingMin, out nextMatingMax)) + if (Raising.getRaisingTimes(speciesIndex, matingIntervallMultiplier, incubationSpeedMultiplier, matureSpeedMultiplier, out incubationMode, out incubationTime, out babyTime, out maturationTime, out nextMatingMin, out nextMatingMax)) { string eggInfo = Raising.eggTemperature(speciesIndex); if (eggInfo.Length > 0) @@ -75,7 +79,7 @@ public void updateRaisingData(int speciesIndex) // food amount needed string foodadmount = ""; double babyfood, totalfood; - if (uiControls.Trough.foodAmount(speciesIndex, out babyfood, out totalfood)) + if (uiControls.Trough.foodAmount(speciesIndex, babyFoodConsumptionSpeedMultiplier, out babyfood, out totalfood)) { if (Values.V.species[speciesIndex].taming.eats.IndexOf("Raw Meat") >= 0) { @@ -156,16 +160,16 @@ private void updateMaturationProgress() string foodAmountBabyString = "", foodAmountAdultString = ""; if (Values.V.species[speciesIndex].taming.eats.IndexOf("Raw Meat") >= 0) { - if (uiControls.Trough.foodAmountFromUntil(speciesIndex, maturation, 0.1, out foodAmount)) + if (uiControls.Trough.foodAmountFromUntil(speciesIndex, babyFoodConsumptionSpeedMultiplier, maturation, 0.1, out foodAmount)) foodAmountBabyString = Math.Ceiling(foodAmount / 50) + " Raw Meat"; - if (uiControls.Trough.foodAmountFromUntil(speciesIndex, maturation, 1, out foodAmount)) + if (uiControls.Trough.foodAmountFromUntil(speciesIndex, babyFoodConsumptionSpeedMultiplier, maturation, 1, out foodAmount)) foodAmountAdultString = Math.Ceiling(foodAmount / 50) + " Raw Meat"; } else if (Values.V.species[speciesIndex].taming.eats.IndexOf("Mejoberry") >= 0) { - if (uiControls.Trough.foodAmountFromUntil(speciesIndex, maturation, 0.1, out foodAmount)) + if (uiControls.Trough.foodAmountFromUntil(speciesIndex, babyFoodConsumptionSpeedMultiplier, maturation, 0.1, out foodAmount)) foodAmountBabyString = Math.Ceiling(foodAmount / 30) + " Mejoberries"; - if (uiControls.Trough.foodAmountFromUntil(speciesIndex, maturation, 1, out foodAmount)) + if (uiControls.Trough.foodAmountFromUntil(speciesIndex, babyFoodConsumptionSpeedMultiplier, maturation, 1, out foodAmount)) foodAmountAdultString = Math.Ceiling(foodAmount / 30) + " Mejoberries"; } labelAmountFoodBaby.Text = foodAmountBabyString; @@ -376,5 +380,15 @@ private void listViewBabies_SelectedIndexChanged(object sender, EventArgs e) } } } + + public void setEvent(bool eventActive) + { + babyFoodConsumptionSpeedMultiplier = eventActive ? cc.BabyFoodConsumptionSpeedMultiplierEvent : cc.BabyFoodConsumptionSpeedMultiplier; + + matingIntervallMultiplier = eventActive ? cc.MatingIntervalMultiplier / cc.MatingIntervalMultiplierEvent : 1; + incubationSpeedMultiplier = eventActive ? cc.EggHatchSpeedMultiplier / cc.EggHatchSpeedMultiplierEvent : 1; + matureSpeedMultiplier = eventActive ? cc.BabyMatureSpeedMultiplier / cc.BabyMatureSpeedMultiplierEvent : 1; + updateRaisingData(speciesIndex); + } } } diff --git a/ARKBreedingStats/Resources/ARKCalibration15.png b/ARKBreedingStats/Resources/ARKCalibration15.png deleted file mode 100644 index ce22f8844c9fe6dd455bab667efdab59c203766e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13183 zcmcJ$by!vH*Dg9iKtT`?q@)!PR6;;PTDn0*L`p$g8p#DpNQVLv(jlOfN~eT`<f1#I zL8QC(Sik*!`|R((^T#>w<@Ksd=3Hw&&v@=}$5=t?s&YgGGz18O5Glw@Ya$2^3jWM? z2@n4NL7DG9f-oWq(vn)PqiabnI@jdJ&TWN*gNW+sGuSOdgPM=7Ry9kJ8;7wB+!PDa zCue5TFkWYtb-nwBj*Nu#FRljZWtBi|X6B@aTmgM*wRPf?X8SEdRUU}apIP3N)yl%l zri<3`NfYshU84I5q@;oMM%+|{c)tJj+otC8uHZNS<F(m&-ypI7=O-}##>J$(^Zft5 ztlky>c{=fb-{e1+H!EEtL;YWOh8GQ_;+7i!=i6OvkY@NlZ;rVxG?s+*=zrYWsM?Pk z9q^xf{`XJLviSYK`ACOj(hQd`U;gst%TeL2{;@LKzAU9!owXPL`}R2(Ha9n;Q&P_L zBHpK@sKH;<YEllj7yD*gA{5fpdvYITubdti6>(!rP*6}f|Mp()WeE-o%XbtmJFkq4 zj+P!78Og)GXCQcmUPRveWb@+fOL()?jO<5RT3RHCWl!qcr9J!E=J$$O%vM%b?z;m| z6bgqPou8eiteDiEY$^Tj?96J3VCZ8@@qAJA>R0f!==gYr`}gmEs7n#FXJ%nx(QtO= zXJKROn`?_wq3041i0w*xz*f1|rzXx4Ci}3)efLkF`|gU2ZvMy5%JG`3UXG5AhQpt1 zEG!i6#fM5sN#Trryz^9wm_h7jjG|0#ZZ4n4o^{mm%2*lK{KA6f)2Hz!$#BO<5)ugf z{exz1W^^>UgQMdON5{q$GgDL96x1HIeywM`qLLD3Jx-7J+a@OTBZuOi7`XZO_VwW- zHG890K5O*!^f(emnnPw*R!TNDHssf@E5*dbWTMTNvQxb7wf-=w$3~+Z?i)7~`kr(q z@Mq{(z1A=_Wo3_1{N2%!ne@O#Gm2FOr^U7>6)WGcF1fe2H>a{P;m@Bx<}3ZVT)&je zc9ziOG&G7&pFY*n*H;M&3gSZ@Iklba?d|PscZ)xglEQwhrKN6R!7d{sgB~*U)?fW5 z?7Y%66%kJNKyhJvZ|{D&%j3t7$r%{blwvvgE4(QwDTO`u?pz}$kCaMFm5ZQ9*ZW?~ zg@404^z`&3+%weHmVHuakoEM3>HGNj_@&widQlGDLb$2P*0_+Piwot%dJBWM^32T4 z&8Rl{eC<aD2K4&XuJ2iu;}~04*Vnn+l?(JvPfu~{?46xikhwp9n1?Co=u~v`wIge7 zCWNsiR8>{+mY<bcGa+*;E0&S9X5IAI61H`xrESNJF=4V9X$zg7E|->>qkZ^jh_D!K zZEfrKUX7KKB8sZ2tWZzBub@<L-ju!?V|BNNzr)6592~fQXrITd5k5Zt+`<CuaIC%C z1;!FxmF4B-xz$yreBBav)0XMq2|t2^34+7JKf?nCEx0&2-4quW|J~L$Gd2kCp^+gQ zb|B*NZ~VO{v8<e2$Q9Y^0yfr>ljZit*o@|}|EB8HpgMi(zs1B{i;0cxtMS+;T#1!R zW4wL)wpeFZS9rfAKP)$O<})3gNIgyg!Ma}|lw`=(#s;?_MeNz>{?xVwC8r)^lByh( z0)OjR{xgBzWhXpT2pqWt>)WAIYZew3C#4D9I`Z<D+Dz_!FD}k2IlIZmrX)t$*49>R zIq)UhJz{KZtZ!|sEH^zpeQ<H(WrkUI^4$Eq4Aj2Y;XI|V(-O&b6>cguZi<m=H{O>f zCOv1T$E&BusN+2iZEcFR@rp;^YmB+6_>+Zli5w~t|Ni|epQ{yYvp!KJz{1M<K{kVl zjg9SSwXjawOpTV7)_neV44?asxn+M2Y0Sruy%};5O9z{?#jn?NeX+hpL=d}qctn+y z@Z;j(^!Q(<l;@0%%E-7;QCZoWDC7twqIBh7IK8N%%lc#%i_*s)mnoE7z!kc5SXy}k zZdgw(O-*Kb+mY`qYm+sfUjH4I<l*7*bXQg;TpRx8`+9v+g_M*Okfq7?x|pY6MOD=! zS64xCk00h}W*S~o!dJsZZ#fOB4;sdu%*@Oj?CetCyg?*eUiW=gaoS!`5q8~R45JrK z@I;{$^0hB-T_r`G?hX}O4RL<|{yqKoZ$$;3g_VJ?CdS4OpFe*dot&)tFyKlS(e?Z4 zjqivo0Gm7~p&t9*5nY#OjY3b>c;x2gg*J!NDXk6_W@F$$L{yZeux)547S^4yqDCf! zLRz}mc~!gDoX@jTC#j^QBr7oR(#lXFLy{OOK{Z)K0V>2tbtnH>nfdO@fX`F}HSat3 zy}t@jsd&o)#0;OI3ej*LWCd)-Q{P^=h*`xPC>I~BEjX(df0}}v4mO@E%F8ptVJ09X zy!qh4gRSjtj|Jy+<CgFp07*3L_cA=x?%C<jw-=T}xN1`ezCL**EBmgk+V>*y=OF`+ zFdrYEoT8#gR+R+li^TMqCnui4fq~quV|Cu%1Xr$nhR@Oa@$R!*LPGI(?%uWd`39@l z>(u>dE=sNS*DwFGqg5`nG3xAaF;o54L7mm008e#wbxvyP8{J}a$tX6p&tcaEJ{S~c z!$T5m{Tr`{TIh&>=;r3;baG(-rJ&$5r+#H*NJxkTV;(y*`L%0ktHK)D#sK1MI8eRA z-;6C9{O~^v71__q`YtN{O_Gr=Hg37Xap%t5Ib~JExKM0#bWd9p8@sr8if*a30&G;q z6GPOlzhxrDU0vxAO0LhaTxj_C$*$tiBl7a{%(v#+00yjzUIDOvNdNTBuEu)go^FN1 z%cO9NmoH`DP-2!^Q&aQm;nC4mgoft@4yLeV!)Rm}P&=f{PQvIZ+tK2nIR_!wv=Gzo zWEIrWP8!rhltH1lY0GephXAIxeAUi3hYw%uvTpGG$BzuU2d}B-F5}~;iJ^|vjf@!Q z=jSzs3iR7XM&c>B46KU^H#Y2;nU7`y7;<3Oi{XKpnE{R5zPOXn(kdq>C-WKoL@FKT z2~xyNT1hO&%XwfCH!YqN=%sm`9%*zZi!Kl5Ka-Z`Gw)&iURsKQ$Car%@pHYMzavp_ zt_k;+0T>Lu4q4#b^d*aW<mBW8Cft9e2)8CDBQsX_77-Cy+FKjjfz#fbsStIr^Z2Va z2KnDE9WADK6HJN%11L6WyLwMRAiJqay56~^sVOo$J6rOcg^}@1a|DB0S63JGD2{_p zOucY(M`{-uykh)4VDfkPTYv5&wgho+u~!q719N_1?7<-+|0yN6ZBqhbVgMO7-~I0P zj!345fq~{D-(NZ%Zq3)t$H9hveIh)Yk^vwMT_)#QnN4&;!fyg;AApw+U%%d_6LpW? z`#14yed_q|@I8QWXFP8Jy||b1Cjnbi|KCRa*iCo%`LDr$k)vLFf1jT0joC6X-_frm z2N1f}>2kdH>Q;=RtDBo-u2w@|9~l!9({Q<chGgyg8*<nP9OO4w=!6jj4m}=oLxFyk z-TpuQIN&JB-G2CF2m%F;M>+#5hKCT+@X2op06=Z*?NMYxh2UG3&_LBwSX)h0@<Tfq z%zJ7aDF)~%EiKK+&W`V1Lob|kML|KK-1G3>J7NY-_Y>F_sjmaU^owq~fchr)sNuvN z^6~QWl9Q89&ol-Um6YI;rb+tZ$*ZZg0Qlk@$MIWHAV0^(u4`y$+`4@`O2nYf>vVd0 z`scar%a{H>KG>O`KND<~T95QjdtbkPJvt_41}gQ#@%hPicbfKBQgU(}#C5G?2*>RT zgBW3q;^XYCrzMuxoP_E0^z>HrONnUs-YBy+?ye5ujuBkGtf8Z09;vOV=`%jA=UXf= z>3RW~UR-R+eyXFxc>g{HE-o%>itmwbwrUc*d@)SccW%z4`f%ZsT5*cNlqVT9t{!u~ zjqUA+E#Y)5+qybBR43=7R)tu|{a2$Vk&|B@-zKM^c(FEGl74J4R6qwS0Hwt0mbbIx z<mczdc=IL>P`T)i#kDme#C5%9|DYJ?4K@NB!`dot(R&m5+4)HTouhF>GKs%yeRlQ& z;<}jRa=`cO*|XX%PTgYpjZd&_*vM$Hh4J^l6^?}!wz-Qqh|N@O*k_eb1f?MZx4pf+ z5eawzoLxNR<iFSpE`nZU6BefVZ|Z`)iHaf%y!7a^@>_#KIcP#1ot?Oc`+rB^{f^hl ztnPkFPiJmwX}NLlo@UW0bd7S?P3Ch>-pSfmWA~#!eq@G{RLr_+TeJJI9)<S?_y)e$ z{%nLeHWE%N#C&TA0Pq5$r?0=NHCbO@kGz3KxgSs4Se_Sjsj%)$7?}pniswd0M~8&~ zapRY#tYS-q_L-KGBk$k=i;AQI>Bd_I=*2@|-Ka9_&d-k1=TF9L>+pa3ugcvqsE$(` zt8~8Y;NYPC__06qgze=Jio4iID6LShQQZYRLIn9cS`t!t0jd<>jZ{y`&W?M>U3Aj> z97RG3lp7ZjbXro+UswKjc2~brtLX0CyF_MPiKLm&bakazqws&X4tFIAVfG*W>izro z!$r?8{F$A_J&p4o#r(cD^P?1M2-Zk^K<vKtuzI#j0sCySuh~d)$XXqzThxaSkx5CX zQUm_yCdXUtT&w+Jr)6W%&C)b;l}p*6Q8h7mpFDRE9~c-Aw3|k5KQisG6xbyC_U)Tb z^H5jUl@g5~vmMUCYAIqwAb+$TKUPR?1u9N}m=ESrPaPgZcidd~WGj_{HtNsOVC9+% z6PSFXn(bRxCk|-o%G6M9{Im~RW6_IW1d{GvUSg^#Vz0hGWEqfv$0GCh_m6C!kK=ys z)8=?K?MuAEm*er#)Yg``MECBJ1kgrmqzD?7uM-y+7h2MAwmEEbKGx7D&~A0`Zd7_i z+{>3Q<7xedihFxCrRC(5f+;{O=#*Mh-?yE-!+w+~?oCfkP3<gf0Pow-*qD;zNqI*H zL8u<Q&NI3$AU^_&2^H+iZ#9U#k?6O3{TdJP-0l=e_w`F?@QaV9zDh>+J|TesLy;v% zpp!->CK3WMMLTTo?+0jqmC@272fXHL?JKi2jOsqR$l%FHLIkfw027n=I?ymRWvFhe zEP4@C4c>Cq>$L``BnfHP)%-HMg%0ZI*w~EfYT7cJ2_IkI3k%&T5s8Vk=x|;E*H1!@ ztX#dG2QvZA6sWxX{IsD}dw62Wv-Vi7kdJSpgM!4Q{otr?_>65+pk5do!w(P@e7k?l zCY=IJS1MPFnUxg}C>ObC;ZdL%91+k`J*&IsW2O1iG+qZY7h&-<bDMh79%3P}T!sZv zOOEGfs3j+1pmC~2`M_&WG9~nXdyJL7Lf$Yvd?ylR92g|Fu&|(>t0gZl53Huz%@L8% z(u!^iKinoq32qL$ZZSQ0@QmBu$jl4_Sku!+zT5ajL^38One{(_^Ad*1UI1Q&t`F4y z`U@Bdpyp=X`EgzPP;Z5!nR$t>pTGaxK)ZkALOEI-PD?%YCe+UBlXM(01kjsFQ7#HW zVtOd`uLDJ8Wrbx+eN`^Da80r86g?T6s`Sg3ED8KpdwR#TfCUuT*w~TD$yfZP-sa`q zv7V~c*P@Mxh>+9Or2z;DfJMGVPLL>QFSVn4ozEPB(gLn8nWf3Z&;Phbt+=dA4w}Z7 zuV3HC#$I%BalvSXV6p9m&WDPM1X>)|K&^g*cKbG`&S72=?o>;stfWNNAGE#Lospj2 zkXi$BCvjQ`>Y7T(;pWw=S5vh(p#KK}qK1@?Xf}juReoDCHZuzV65BfOKu9ZCq<UQL zxOfFRq#v|n<_8b16Zm682XqBqz1hxH$0#n&0G;;|F)^j`u>GRl<{z0*261|D8Pqvq zT7Um;0LCIyh;C@WzO9`nAuEdqU6NkZ9fz2h7;Sb_OpIPqQquX$ZTJ8!o3kw%`ubr2 z8FzGw5H{6BlKhJxkcI)n0Jz`5>o~Z$)Yj)KUkmNlCq?1$<`x%cL7SMP({bxiZ68>m z0`T^|2EIJ@dEMhGV)Fbs7UHug#>sgFj^2sM9T%>72O+3PBGx}vwcS8ov1$y6;g_78 z+*!QF*MXDc;6UzIqkPCT+h)+E2e1E5w;1uS`sn80cQxd*8K+Xr>P?-Xx^Eq4?!5^# zo8+34a@gfnjw9%}_^hmPJjU9@Xf|jEJ!$uNd3~XMz;Wv){+yVY$Qadz;kSZ9LNmKV zhLm)){(gQEoUxZp4~0PHl>h8AJJ^`HL_p90#?8hrN<&6Awu?Z^KG0L?EeZ+<Py&`z zXRD*~K)NGuKvu~wJgszMN2ofE9Oy3t&D8l}N>pk)75?GFRrHlZarPs-bid7?5ucd& zYyW{Ly@1GuQZZF@KXCciue3ugXvc^cLD8_*ND9CH8z}0rCjk&SUT&ZMBe~3Wsu?!g z$kg;55F5o{F_74>thYEh-)ZJbTUv5x=jpt~Bch?2n>DQl?|=vtHFUf5@^Y%Qw6v1f zbNP9BkufnW%P}Sv7WjsShQ9B5Iy+S&3jw981x>~eu(+3offS?yx<DlrR&NErHPU$c zGzi=Q-?u+%YDD3Lq@vA9C@5IjeMm?X_$;tN`6%$R<XoZRMnJUzySQ}eQY39E;K3Dk zcJ^Bw9QQWxcm)LH6cq4lk5+E;Sr3x{v_eVB0e)?C3QQpgD2KL?m>1nWK)=-C-GJ<E z(HmE}tOLCCWh#)JfB?oW#Oj)JsQ78Msvyl!5QQ(HPMMOmWNd7Fp~fI$XJ^N~hD(rC zD%kAqk>~z|%dNY2Wo&FXr!-KyXt~0n?MV}UQNxd1hT&j2oW;jpMIk@O$7wHKq2*qx zRtypw90VNi=unPIFEc2lB=ocl76S}y3M9RuuBGMo<qL=J;+jRc#-kk`UfzeRgZYQ6 zC(uoBjt_w{AP6k<F95`IQnVTL89W2gM7gjyN+TyHJ^}&)LXj9Sz<dn7Pp=6lh3`Au zzI7`yQQ6MUPU7iP>SEoy!NI}G1UJ0AyiTfU5vUTI@1B6$_P}xh<wHszmjsCc&7wz) z>V0r`DNw++Oc?_ws$7WSV|Wyx!ohp_1N!n{vxR}jc}43?zZ}2?{kB>*L-NH7=8v5E z!62fs5U=x7mo^s(peDfQ-hnv9ubvT9`~CB$M0rI86Auq5O_;1x(faZ-K7!FtphYnt z0H@e@i<x<6eJW+Y_W100oyT><$ahbWg#{O^JlFHneIBs$CauaooAK|{0<4l#QW`_; z>J*!kre|cZ9OJ6pIKmuG(9du5I4O6%1XzyjPFVy51SWlpGBa`Z*QWwLeYy@$)g1e2 z7z5z&)Rzn3VZ5VvQVEEN{6S)<CJD2w;C2jL%hC*jqIj{~o8{@juKlFkk&uwEsW(gM zePkp8eV_d(Gb<~tvXTZUTb!uJ{knXsp#tR1WlByXXx4U)jt|YvbKWveetp7K`xlHF zA}}fHb<)JryT>aWu@E4WGkvBVaac$kuUUBJ;-8LqUX90(aiJT;^P2eta=&Q01Z7j< zh}#{cn*FfQpr!}z1g%d}$l<iW`*hV1JK}Q!>ZXT>hp*QkV35F+dcaje2j&0%{X3fi z1s0~vdKLIFKwuj8hZ-6hia^bE0GolQq6kdsh&vq$76aycPyM~sXsV=d>d@+QE33=E zotJjq72eJdJTdeKk4KzWQ(gTHa1Sa%b>O4bTLfS(7d>ypvmPr26Nwg_GarM(7C8nK z4t(|!tDzU|AMf7c;-c)R6%-VlhQ~TF%KYrg1N8CW;Go~)od<ZE$Qw1W!_2`flV+P4 zD6bZ{tf%zVv*K4{6hnoEl(df&aTi^$rhTdX*Y|>mj%|)w0B_3syk-vhry!jIs`Und zBJ=}SaG0&=%%R~cPKLl4N(Cc=f!5&y<+t#iyr(}foD2$X2K-SOJ-x&wWVVr590vh* z$Rr{{`@^)eq0)IZRsEJ7kP7q&`>d>nwXE-0nKJ7`Nl7fQxG&{vhy49(y|Xf)#CQdB z3V@*iWop`=@{SNcJGcOT4#G&~T4FPytEFe%_c`pX*#*)xpy<$4TRS^{HTYkai9PJ6 z^%HvVKq;aB^aeBEt5I^O5NYsEVHJBa<cKwFGoaIpxbIv7>*5+AdATJ0;$f41Mo7qI zBo(Xy^MNndkW0ekrKP2?r~*37Wgh!B&}D+UxE&jUc$yoo3p~S1HBiD)4iW?6jTmu1 z(|NR$8x&WT&|fjMBL%(~f`A0wu)sL2l3tIJ*$fN}bZR|?Y!fd||DZsXQ)^~vvQzyO z&0T5?x(~WCFeqrIOw@G)IXgQupQv=sPmchP@9)~0hMrz12pvA#Nj=S-nQCK@QFq-8 zpi3->KC>bl0c_#6=*?skd$-Bk72~W@zW3N#cA~i%4_b|%Y{pEDmvYSUHVI0w@S&QT znioDN0$#<V@0>N8&DT$+mumJWXGPBe3j8qA5m6?f*YlRL=6*i@8C-Kj!p%)6LBQ7L zo;aJ4LJ1k*)aOzAN9k(dC#DWq65*ZpWvj_OejKAvn6~&FT0AJQ^d)C3?l_Uq&`>{v zLIGE8U|x9n+P5o16L`D&m^e6or{?!tmiT<1WmN!I$|SN&<tFvzo=^8*T}7ohM!ge1 z-HCd;XxHh;?RBL*5@%c}gy<wiYX`W2d2c2@PzR>ib|RcFmBC{CV^1)eoq~eK^@anP zn!UaKhasKqQx@m2*RNj#6)bn#{`|8~CQB3l=(?VM?#O<H*J)*H!SLAF!@{BK{V{-% zioxFFH#-1_?u-Upcmsf`;GQ;U?UFeewM&Wu+lBzZsHaC=Y;9+`PyH4-<`bmsbv;<8 zs_p|J9}3PF29^cE@(jELFocWL-#Y_KEVZbJ1UyyPQJ_|Dr$q;go<9W0yB<AT;kXFv z#=>S^d%E`w{j&Mv$B#?k0z(T?E`9EN4P`T4{uZo3II4|5zZroGc(7JB#qG9b((y@v z7$O`wkSbt_fm$JArHSV`F8oikV5Pb6Hjo=Y+H0e}Q+VM1^@+Tvyg37w7=?piyp*>? z-O=oiK<b6Txl;agp9s^<&>3=WT+y%BM)Cig+7W4ZdWt}&sy$q|4q8?syKl4IxO@cf zQ8IpWLAYkv4btZu)1Z+p`aTa-{RG>mi#S23@Kd+=d7|3a{6-x|^<PXBWofm%eqi6d z&&ehh@Yq1hF^HBd^%dwp$jr{31#XEQ!9BZm3g+7en5Hv-euaSO82<h;<R`E4*8!Tu zSa!5rM^xY{U%!*m!oU1)N?Zc1kz1iWz$<{9gT05#>#i5@IVb1R;o;%Qk1g@@ZSkCf z0$EsNqaaBrNxMHy_|ehPsd;&X$NTFoTl4K$2!uXfUjk|sqF6D#0ql5k0^GgzsR$6c z;=5a%HWW^flT}}@`}FCPWJ~5}I&m*rAt9l3n;B8}o$0CDhMt?a$j1C{Q2|p^(<QL_ zoP?96M;1PY1Y;U;o9gIji4~7o7j1b})wZwLw|Ec0F0f|Jn2&C<ut;Y2;p51t?traE zG(Isg^Y5Pxce|<QKR|+m<?IyKuTKjS)gL=D4uf1WXvzhzaN8kcv7&mlDTvHdBn27< z&7G&7H0T!K?$B^&Mfp7T|8;sqmBKD)qXWnYDs=1tEsBbZqjz@DtGlc<c0hYo+>fls z%Sqva#&Y{v95UKnp?BcQ-m!vYr@XQf@;=;(iV9X4y{;(d{eKg%2d&-Ru^s0k(hN32 zl$4IQcz87U2K73FFuO|&_m6BdIg!Zt{{3ogZS4tR$!1g7w?%u{5ilx__SUSvTbIw1 zylDRwCd%k6ob=Npvo<{<x}|^}-O}E!MB;%44n|BbLeiw;`Ed}m9Ic=o0=xoHb@A6j z9<HwtB}v{<P&LXOncP_&itrXtq>Htx3-v#Sa=(ms3`od3GB}_|V4=9PJo1ALp=ye6 zZ)+pHv-ahXmg=$%G=ub)+c(qI0I3QLY6uX(ShpJEBfDg=X1DhCc9|OE<OQ0FVf|(U zQOIR4B9aU&pn0;gvPuT870~Ay*3}NW|I`oZKW^{n2;HaQxO?{(XdRp={%+kJCT1Kw zJgI!`3|MebmI1OE_25`aPrXN@(ba-wK*I9$t3K{~hK7fK^t4rtzvo}Lu9?POPJ&A( z?DPhhbg^#!oW}~79ufeO67u;YWdK6Lqh+?|{po5z?(8AyMW%5%fsqV6+!-meWx(*D zQS^P8&Tu`I*p>tyRC#!Q?pyJ)kF@|#C&)jb2mFEi#?`c}U<a>{+uPJ6dU$tIdp~M+ zyB4=)JyZRnIh1-^%l|yHy~-V`g&2EcVge1NBz)SXbqBFoc*OBJBDemrzH|x@GUgjM zE_k1H$aeT32$?Wu7U0mVrZCoVGoPAPkdLq5M3isfdBO7G^S>+&cPZ~BW1ao|(G5S! zrb<3B1fa+gi#<RqO+`#nVW!A2TxQ?X^Wnn>;g-Rikd0la@IRoat4WUe-X^Y3*0j4U z0PW$Zh>rRJepQ<ewI0blv~-5`>g_8~N`RYw#9{{s#=Ts2!iZz=J!EEWA;qDAv{k3X zGUhFG82m{qO;{9(x)(`<!^1jgmgL=QsPcHTZ%=#8==#{8xGhU``)}WQ@Zi{=1XW%? z05Gr2iG{j~Zb73-G3;FHcYC{UMTJ|9bV@?<Q^;rDfgA{1b_7A&=K26!LVxYA`A^(J zp6Z7)E#zD24L*EFh=sJ7p@+*oZj{cIa;B>p8Ko}qJG{c=d@|lGB{Ji^oZna&5{HVk zzxtPz3DAqU8gUB>yKUVBi)dzb^)_{P%kSR=@MQ8TD*nI?6%`dpC@IahYTED4#`74z zGf9TvV+H`ZwY~kTvqScMv>eBMLw#(a^Q1wLMy)3I;8#Z+&jlbWG7x#FYiKaBA5n4b zPruk5*jWL8@lWjYPe*V3hOhoCF6OH@sso@v-ay!a@ym^xv9qF=j4dpJ0R6$Qn1!C- z2m#J7t_x9Dr9;Qs%-D|*2@sZ=j~;;zWFL`@yNU`;na|9;3G#kOX(zXx-{I7C7GF$N zo!{ouuN8uQn=enFWa2b{K^Uhu`S@9&4_Nfr2qb(sr@m~YC}lS{`>5|zUdMOWQCy`Q zKfAk$ElU!-#l%iF9(p-T0^+8j&8KH)Z@8<DZ)xQcE0K^+qW1MCqt*=1k7DQM%KZIt zZ6>ROFk<?w9TXb;EJ#4E(SV%7r5~u{*FeZ!Jv_ws2d;L+)kLR941ahJ2dBQR4Ik*~ z#_p~^NPnQ-c59>jp!nhSwp3$GI3nV8LNz%#iIFbg)qr8|16pys%0+GKE3O`iE|@*O zSdPbgYljDy`7gHV8Eb5ZP(vUiX#WQXfwq#TO3%k{XbDs@x}(vpE-+u?^nrBBXdYxZ zJ|0hE3%yKCO_}fB4P%%d9v%GyQ3C8I@1cLtsB{W=$r$zw8i~6iQC{(8U|=ALYk4R& zFP`H<2M;%=S3jVw^>l(2%quJvJ$w3eQz<8O!l^>_S?5z%n;uT*ZZa}54P9Lh;oF8k z!fCpt?7m@znqB=x11alm;U3besofGN$64^sSnFP!{RV@;4-g~Gu+Gc*Oa+1fmC7M_ zlC5t<7?-QMS_B&9&w+t!pc;JjI9tGa#8DcirK3w5u>1yLTD=%CoiGmETCgB`DJn9O z(T=H5sL$){#I4Q4;M0<^l~w!Ygl5UAlz^p1Tx{YiS13fRxDu9(Ar2`o7X&3EiOjNH zLj_)<<TAi`7Qk?dAf)x8HbF_J0Pm9kLk-TVVwR@Ubf<GF<PCRR*X_~+;w1DK(Ak_V zU~V$3khdPTzP|wt%4e|-I5~FrFG$vY&BgLqk)c3uV<UDhE&}rBhl?q=_8d(w>M_k5 zQFfndYHGrG_i*6>m<mMLyOw-3P0h`U&D-{HK~9~Xhb_lDRX{*+GO-ZZ2zve1ntYWV zrmN=!iy^E>c0MmuxGr<neuP7F=QAwe1S196e)!Pp?uW^x@ekTH2DU|^pmR*YmGP;s z4GSXzQ4#s^BkQuh4kfhZOyE)Au|X^T=6UFVKI@xeIT{`rNpoE6f)+2KtDBJ1avZ{V z#An%miNIfK1GgTQ4DFSmqaPF={!TTUcY||br5-FG!Y27F&BLa2Vl%La)1%&wf0xKT z`!n*x47c5bO)VKbYzWDiczMY{=l+71S;Q6Z0W0yst_B7Kn_cwnn<Py3Ffb_n&7cG5 z@CQ>D{QS2tX#}Fbt#r3J?0R5W80JzCAWVTWt+)>a3@UG#!p-xX8_GG;yZbyn{i%PP zv;MeA3Mm;o#M5vJTG8nD@W_FIw?svg0DN*_9myd-g`4z)oD_!B0*H;j_ef7q8H`GJ z&RZ}@acyLHxCbn{ThO=$3-p!FDUDTI0fuA%a<kwBk&>dp?}BNDKIjT+;MQQqOTgrx z*=D<Wvj=e690a}zgvY=pQlWSC0xrnIoD+=nEMX#dxLETQur3XIdmbV>;b`z#I1|iT zBbgx5T!O=unLPt}KIX%4aBzI+*xs0Vh>47~^K}O-QpRh3l$OHq4uq?7)6)`ISXdwG z^dX{K8~G8y%*?#>cjO0VBm>fHvb#D(5?clXvT&x@@7?<V_Lvm>F#}A#>(=7#JGUn4 zyi)=LSydC|Vb`2y8gL<CW&(LnbKjbZh+ZVFK(9gyOtX`9$U5!{4qmsdmV^$IcH!a` zbvXMe|KRPx@dI5W8^IvX3UMNhxR;3Y+Gvb+ft~_^e}j=Y=DyQEu`2Cn@o+C*?1Q{X zCB^$pC`s5^aVNQ|yu7Dsy;jL;FpsH1k5l&w7{N}U0YJ{s%r7p&p3v^Djm3g7iWx*B zr=xon=?&KB4n($(APCNd#Fo$gk2K6Xq+YwN-M{QbMheqQkY8P^frznWGJ9#syk4k3 zptV&#I5afR(F?p=MHQ8-h6X81(BkIw3=9mqV2wgb`5t;9%&J_sHY~GAT3QE^BME{B z6J8I$2CAOGV~p1s$K#8cEIRtv*4>>Ao?!2Ez3(zKsEnMPTfe)y?zfgXE~*|K%tly% zQwLlfRS6*<OzK!d+>3dRqn+i4Knr|MyA$|BKnv%ne7X-qP*Rwpf|}`t9G0cs^6cag z@AwF`R1T2y$$fJ`J<N6{a6iY!%)P-h5Y*ix$Y65ZwincjyBC22WC7{Zu(rMfV>ar* zlVSQtD$*8aE41|VI?lZz(iV1H2%Yn~aN&Xl%mqkG!<5Jjn{XL$8>mw<H+Of%g^|)% z*TID71E!P<p}G^mr{!=F6A|@2ze=ZNDL5N2Xc3;xkue%hN>8sUCMM=Q8VhC^<{HfK z0Ce$8&0NUpdr~Fm*4Nb*yHm1(7C(ZIZviwfIx$fh{8jh#?a3+^uFj+fv6yppdbFF- z-><dOn{^pbJsf5%ZjR-EI(@Iqn(@uJMf3IR(zaPSS=p^uoq#b1JCIC7L8QM66AXie zhFk~w5bLz{^+iG1AMCdPj#_|~^`Ci#^}2IakY2mB3qV!+z}``TLAm~HHHMYG?1=ik z+fNGmS5FnB$w^2gV6u@7oHw+~L<lBwSl)F{fKfv*b0Q%3Gl%Vf!+rPgQ{CB7h-#vs zB&duXa2}(eZR6tM!NeeSiX3Z{hPpb53Xp1;F#ONV1SoHH2w$M)$w)PxKW9o3ar=O& zW4JmxGEySN>nL}LXTXv_-=HP|9z_j2t!ywx-^0Kmd{{UhE7Fg$Rr9y`3w29^f%;m^ zwZ6|BT0P(NPzR`iGs)+;po~E;Iw1!?v9p6&wts!1T%flxgHa&h*zep4g;g<M>PhPd z4@vijX;^BCsooRJG!bUiZ^(sH6~E+Pt%toka5u8CF<5t`g&8Uoq}4EL@si{A?F<Ou zdch}_0iJ?)SYEpV5WEa#UG%3<O0cs6uCZaXLLcCPZ{4~T2zB)Ehgml(*q-isNU`_1 z7bGT7G_OXB75JtAaA3@{4<;m*z^{bo!2AsyJ#&Z=G6yWdKvlx4`&Lwx3geVfy7`}B z;1sjZm^}c4zqPF`2s2jXdjhHsf-*6fpK|&;%%jN>gEs~YNC`kDIxbG0ChQ%|C<F#B z0lDyT_>z;usHD`MUGM;mF+7wZo-b2a4h<N>YzKsViyXOq%NxIM7p6XMeAi=H@?rH) zSdF0NF&~4#aZ*%N<3;PdTpzQSFE=;6LcNF59$ussa=?N48t`f`lNR7FqH9qeUZs+M zt*~x>6ElPvxq<;_JG;ol3Dlq|c%(_HPZqN*_{}6j*OPLeO5P(FKbfw-P)oRam8&&6 zo0!t+NpJ%1O;G%@5TgSbg=o#K%pH8_D9P=dk8xs{F$+kZ@7=ox?xVVnP9U5L1<rwV z?-swHkdTMaDj^s1gFX_>iOYCYr#5(-JXqJap~P~402ZmWwe^i=?%Zn5aO`uhvqMZM z2?5>Bn>T;<^*!1;c(GpvfPuV$x37(~bOe7k^8Nd_a3<nTXhy;JQP<NW1OpBe+b*Fq zE+!@=eRJQnl<e6|m=toT7@sD~*1A#pVVE$*p4%iw(I03$sCbRu2c4iCz-W>M+=fa7 z_X6f_Lc!9PEHdxvyNJLH2~3RGLtq@m`~1b*#9!4CD=W*5o#s_lRX0HBLUNCZ0o&Uf zA=u)!ovdE`x9kXWdXk}+*w@L9T#(m1wiLNp&CQd-&B<Z_p8mS|vWkkql0UbPT#xML z4`7Ac)Jli$tor%kXgzt70oFV84V_A-+)M#UlnAORydLu)ZS(S)FKg^(q~1P}1(`=e zLlX=}7I^(Yi5t4R)u#2IFsLzfMF}!8B7h;)a!r6NR;QkV`@4;!wUPWb<APomA#rkF zwM0_DbEb2zF(7gEg5kT9A@Ag-zJQPxR)72Im`c~9xUET)h6t+MEbbV`1*j#cbv)=f z3ThZSR}a%g_u>g5*MieTx!Z38mL1HO9CA6ZvasNb1!IPGJUC%u^#vgLB|^ezLZ4Ge zc`$)ETm!y3NCiB}_|-qljkxXeU{XNZ8^~BXF*Uz@V<F3|`p!R@jhz`0-SP2pV0?Hb zx?!QAgeNdMk!~;z%ObC!Fte%%g#<GV(qmT88X>oap(kcY5HW@fjK!?1EyF2&A}u46 z1_2ywkG!&SlUWLimBw)m0w&B`LS7AHVmRw-FwTa_AtB`kMsNVbfOg;)v@M=Nf*D{? z7ywj}`eMN4X>qH;JM~XoA*|pS9pc+7nj5wI#uJsFe;0HnBGG?2HpJT^bl4GanQ@dM zr!YGLQkpRPrcml1!kp{wgW6Bfi!wzpFaUXIh}VcQST5kCg9p9qC{Ap1_j@km?~b_l z_+>{}7w}Hx3<D}EgldofJ<zLqO$4bZkYK<PNl0DH1AIq9tblg{cKw9jtK%lZ=IG!c z1<ni*t<{^@_dIwo11w;T!Z3v_^wiaps(%wzjUyw}@ETX>()N@IoEs^auLdx<_~gkG zh!LKHT14IeKNO8MR>Z&0RrRZ-WoXryp!s8L?2|$+yL-pysC)6srdv0#o%wCr4gp|q zil^8p?i_A363@VV6rxk%z)~d+Lh)95w|9a{iWr?`$*56tAtVL>J#jE9IOTBVGQ}MU zOlNcz?uZK-!Q@TJ$z8vFM#ODkIU1qH4!8soj+F2J$S%XU6u*A`f<Z8kKUDf1XKv_# zj8cj07s)T04OhN?1)3}GeuLVhiieE2$Lep5rH#!MIM9&sij-Aq4pH%OfqwdHuf@>b z-EEfMO-8l2t1}i$uv(c=-_r7*%o*!MB}fd?LQHrM>%$^C113SUGy@PQ9^*X$w-n59 z6BidTIQ-;9C#@hNP0yEMke3HcW@8{kO9Njifgbom69%i>7>HB%jt&eSH5~1(Vj<v3 z!*?puyB$lwl5K2kya3Mv7GDYHFO;@+?7Tj_iAS(R*MGi;A#xdJo^wFz<S|kaHY;^j zyKTdi$gAR)?G%=y#q8H8DIWntf(R%SSnXCv#Qf5dJZ4xD0`j5;Gm$6II?R7ZvqOWB z1ND;ygE-o^2%EjBOm}Qu{^z$b2%Fn|g>Ga2_xCRT^97I4SmOWBzM=8|=a)uK#3v@U Wl`TFl7sD585Cs`k=>jPupZ^70^MLvQ diff --git a/ARKBreedingStats/Resources/ARKCalibration18.png b/ARKBreedingStats/Resources/ARKCalibration18.png deleted file mode 100644 index a2b1ac62c09932b883eb7ab4469084cdeddd770a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16644 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%0ApzX6O9BaKF#dqx< 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%0AKiRQ|gmDMB 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 diff --git a/ARKBreedingStats/Stats.cs b/ARKBreedingStats/Stats.cs index 20c143ec..97e6d4d4 100644 --- a/ARKBreedingStats/Stats.cs +++ b/ARKBreedingStats/Stats.cs @@ -18,7 +18,7 @@ public static double calculateValue(int speciesIndex, int stat, int levelWild, i add = Values.V.species[speciesIndex].stats[stat].AddWhenTamed; domMult = (tamingEff >= 0 ? (1 + tamingEff * Values.V.species[speciesIndex].stats[stat].MultAffinity) : 1) * (1 + levelDom * Values.V.species[speciesIndex].stats[stat].IncPerTamedLevel); if (imprintingBonus > 0 && stat != 1 && stat != 2 && (stat != 6 || Values.V.species[speciesIndex].NoImprintingForSpeed == false)) - imprintingM = 1 + 0.2 * imprintingBonus * Values.V.imprintingMultiplier; + imprintingM = 1 + 0.2 * imprintingBonus * Values.V.imprintingStatScaleMultiplier; if (stat == 0) tamedBaseHP = (float)Values.V.species[speciesIndex].TamedBaseHealthMultiplier; } diff --git a/ARKBreedingStats/Taming.cs b/ARKBreedingStats/Taming.cs index 2878afc1..71dbfc4e 100644 --- a/ARKBreedingStats/Taming.cs +++ b/ARKBreedingStats/Taming.cs @@ -8,7 +8,7 @@ namespace ARKBreedingStats { static public class Taming { - public static void tamingTimes(int speciesI, int level, bool evolutionEvent, List<string> usedFood, List<int> foodAmount, out List<int> foodAmountUsed, out TimeSpan duration, out int neededNarcoberries, out int neededNarcotics, out int neededBioToxines, out double te, out double hunger, out int bonusLevel, out bool enoughFood) + public static void tamingTimes(int speciesI, int level, double tamingSpeedMultiplier, double tamingFoodRateMultiplier, List<string> usedFood, List<int> foodAmount, out List<int> foodAmountUsed, out TimeSpan duration, out int neededNarcoberries, out int neededNarcotics, out int neededBioToxines, out double te, out double hunger, out int bonusLevel, out bool enoughFood) { double affinityNeeded = 0, totalTorpor = 0, torporDeplPS = 0, foodAffinity, foodValue, torporNeeded = 0; string food; @@ -79,9 +79,7 @@ public static void tamingTimes(int speciesI, int level, bool evolutionEvent, Lis foodValue = foodValue * taming.wakeFoodDeplMult; } - foodAffinity *= Values.V.tamingSpeedMultiplier * 2; // *2 in accordance with the permament 2x taming-bonus that was introduced in the game on 2016-12-12 - if (evolutionEvent) - foodAffinity *= Values.V.evolutionMultiplier; + foodAffinity *= tamingSpeedMultiplier * 2; // *2 in accordance with the permament 2x taming-bonus that was introduced in the game on 2016-12-12 if (foodAffinity > 0 && foodValue > 0) { @@ -95,7 +93,7 @@ public static void tamingTimes(int speciesI, int level, bool evolutionEvent, Lis foodAmountUsed[f] = foodPiecesNeeded; // time to eat needed food - seconds = (int)Math.Ceiling(foodPiecesNeeded * foodValue / (taming.foodConsumptionBase * taming.foodConsumptionMult * Values.V.tamingFoodRateMultiplier)); + seconds = (int)Math.Ceiling(foodPiecesNeeded * foodValue / (taming.foodConsumptionBase * taming.foodConsumptionMult * tamingFoodRateMultiplier)); affinityNeeded -= foodPiecesNeeded * foodAffinity; if (te > 0) @@ -153,12 +151,12 @@ public static void tamingTimes(int speciesI, int level, bool evolutionEvent, Lis /// <summary> /// Use this function if only one kind of food is fed /// </summary> - public static void tamingTimes(int speciesI, int level, bool evolutionEvent, string usedFood, int foodAmount, out List<int> foodAmountUsed, out TimeSpan duration, out int neededNarcoberries, out int neededNarcotics, out int neededBioToxines, out double te, out double hunger, out int bonusLevel, out bool enoughFood) + public static void tamingTimes(int speciesI, int level, double tamingSpeedMultiplier, double tamingFoodRateMultiplier, string usedFood, int foodAmount, out List<int> foodAmountUsed, out TimeSpan duration, out int neededNarcoberries, out int neededNarcotics, out int neededBioToxines, out double te, out double hunger, out int bonusLevel, out bool enoughFood) { - tamingTimes(speciesI, level, evolutionEvent, new List<string> { usedFood }, new List<int> { foodAmount }, out foodAmountUsed, out duration, out neededNarcoberries, out neededNarcotics, out neededBioToxines, out te, out hunger, out bonusLevel, out enoughFood); + tamingTimes(speciesI, level, tamingSpeedMultiplier, tamingFoodRateMultiplier, new List<string> { usedFood }, new List<int> { foodAmount }, out foodAmountUsed, out duration, out neededNarcoberries, out neededNarcotics, out neededBioToxines, out te, out hunger, out bonusLevel, out enoughFood); } - public static int foodAmountNeeded(int speciesI, int level, bool evolutionEvent, string food, bool nonViolent = false) + public static int foodAmountNeeded(int speciesI, int level, double tamingSpeedMultiplier, string food, bool nonViolent = false) { if (speciesI >= 0 && speciesI < Values.V.species.Count) { @@ -177,9 +175,7 @@ public static int foodAmountNeeded(int speciesI, int level, bool evolutionEvent, if (nonViolent) foodAffinity *= taming.wakeAffinityMult; - foodAffinity *= Values.V.tamingSpeedMultiplier * 2; // *2 in accordance with the permament 2x taming-bonus that was introduced in the game on 2016-12-12 - if (evolutionEvent) - foodAffinity *= Values.V.evolutionMultiplier; + foodAffinity *= tamingSpeedMultiplier * 2; // *2 in accordance with the permament 2x taming-bonus that was introduced in the game on 2016-12-12 if (foodAffinity > 0) { @@ -220,7 +216,7 @@ private static double torporDepletionPS(double torporDepletionPS0, int level) return 0; } - public static TimeSpan tamingDuration(int speciesI, int foodQuantity, string food, bool nonViolent = false) + public static TimeSpan tamingDuration(int speciesI, int foodQuantity, string food, double tamingFoodRateMultiplier, bool nonViolent = false) { double foodValue = 0; var taming = Values.V.species[speciesI].taming; @@ -235,7 +231,7 @@ public static TimeSpan tamingDuration(int speciesI, int foodQuantity, string foo foodValue = foodValue * taming.wakeFoodDeplMult; // time to eat needed food - return new TimeSpan(0, 0, (int)Math.Ceiling(foodQuantity * foodValue / (taming.foodConsumptionBase * taming.foodConsumptionMult * Values.V.tamingFoodRateMultiplier))); + return new TimeSpan(0, 0, (int)Math.Ceiling(foodQuantity * foodValue / (taming.foodConsumptionBase * taming.foodConsumptionMult * tamingFoodRateMultiplier))); } public static string knockoutInfo(int speciesIndex, int level, double longneck, double crossbow, double bow, double slingshot, double club, double prod, out bool knockoutNeeded, out string koNumbers) @@ -290,14 +286,14 @@ public static string knockoutInfo(int speciesIndex, int level, double longneck, } - public static string quickInfoOneFood(int speciesIndex, int level, bool evolutionEvent, string foodName, int foodAmount, string foodDisplayName) + public static string quickInfoOneFood(int speciesIndex, int level, double tamingSpeedMultiplier, double tamingFoodRateMultiplier, string foodName, int foodAmount, string foodDisplayName) { List<int> foodAmountUsed; bool enoughFood; TimeSpan duration; int narcoBerries, narcotics, bioToxines, bonusLevel; double te, hunger; - tamingTimes(speciesIndex, level, evolutionEvent, foodName, foodAmount, out foodAmountUsed, out duration, out narcoBerries, out narcotics, out bioToxines, out te, out hunger, out bonusLevel, out enoughFood); + tamingTimes(speciesIndex, level, tamingSpeedMultiplier, tamingFoodRateMultiplier, foodName, foodAmount, out foodAmountUsed, out duration, out narcoBerries, out narcotics, out bioToxines, out te, out hunger, out bonusLevel, out enoughFood); return "With " + foodAmountUsed[0] + " × " + foodDisplayName + " taming takes " + Utils.durationUntil(duration) + "\nNarcotics: " + narcotics + "\nTE: " + Math.Round(100 * te, 1) + " %" diff --git a/ARKBreedingStats/TamingControl.cs b/ARKBreedingStats/TamingControl.cs index e3d3bd1b..143bdcce 100644 --- a/ARKBreedingStats/TamingControl.cs +++ b/ARKBreedingStats/TamingControl.cs @@ -17,7 +17,8 @@ public partial class TamingControl : UserControl private int speciesIndex; public event TimerControl.CreateTimerEventHandler CreateTimer; private DateTime wakeUpTime, starvingTime; - private bool evolutionEvent; + private double tamingSpeedMultiplier; + private double tamingFoodRateMultiplier; private string koNumbers; private string boneDamageAdjusters; public string quickTamingInfos; @@ -55,7 +56,7 @@ public void setSpeciesIndex(int speciesIndex) TamingData td = Values.V.species[speciesIndex].taming; - foodDepletion = td.foodConsumptionBase * td.foodConsumptionMult * Values.V.tamingFoodRateMultiplier; + foodDepletion = td.foodConsumptionBase * td.foodConsumptionMult * tamingFoodRateMultiplier; TamingFoodControl tf; int i = 0; @@ -92,7 +93,7 @@ public void setSpeciesIndex(int speciesIndex) } if (i > 0) - foodControls[0].amount = Taming.foodAmountNeeded(speciesIndex, (int)nudLevel.Value, evolutionEvent, foodControls[0].FoodName, td.nonViolent); + foodControls[0].amount = Taming.foodAmountNeeded(speciesIndex, (int)nudLevel.Value, tamingSpeedMultiplier, foodControls[0].FoodName, td.nonViolent); updateCalculation = true; updateFirstFeedingWaiting(); @@ -135,10 +136,10 @@ public void updateTamingData() usedFood.Add(tfc.FoodName); foodAmount.Add(tfc.amount); - tfc.maxFood = Taming.foodAmountNeeded(speciesIndex, level, evolutionEvent, tfc.FoodName, Values.V.species[speciesIndex].taming.nonViolent); - tfc.tamingDuration = Taming.tamingDuration(speciesIndex, tfc.maxFood, tfc.FoodName, Values.V.species[speciesIndex].taming.nonViolent); + tfc.maxFood = Taming.foodAmountNeeded(speciesIndex, level, tamingSpeedMultiplier, tfc.FoodName, Values.V.species[speciesIndex].taming.nonViolent); + tfc.tamingDuration = Taming.tamingDuration(speciesIndex, tfc.maxFood, tfc.FoodName, tamingFoodRateMultiplier, Values.V.species[speciesIndex].taming.nonViolent); } - Taming.tamingTimes(speciesIndex, level, evolutionEvent, usedFood, foodAmount, out foodAmountUsed, out duration, out narcoBerries, out narcotics, out bioToxines, out te, out hunger, out bonusLevel, out enoughFood); + Taming.tamingTimes(speciesIndex, 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++) { @@ -163,13 +164,13 @@ public void updateTamingData() if (foodAmountUsed.Count > 0) { - quickTamingInfos = Taming.quickInfoOneFood(speciesIndex, level, evolutionEvent, foodControls[0].FoodName, foodControls[0].maxFood, foodControls[0].foodNameDisplay); + quickTamingInfos = Taming.quickInfoOneFood(speciesIndex, 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(speciesIndex, level, evolutionEvent, foodControls[i].FoodName, foodControls[i].maxFood, foodControls[i].foodNameDisplay); + quickTamingInfos += "\n\n" + Taming.quickInfoOneFood(speciesIndex, level, tamingSpeedMultiplier, tamingFoodRateMultiplier, foodControls[i].FoodName, foodControls[i].maxFood, foodControls[i].foodNameDisplay); break; } } @@ -308,13 +309,24 @@ private void btnAddStarvingTimer_Click(object sender, EventArgs e) CreateTimer("Starving of " + Values.V.speciesNames[speciesIndex], starvingTime, null, TimerControl.TimerGroups.Starving.ToString()); } - public bool EvolutionEvent + public double TamingSpeedMultiplier { set { - if (evolutionEvent != value) + if (tamingSpeedMultiplier != value) { - evolutionEvent = value; + tamingSpeedMultiplier = value; + updateTamingData(); + } + } + } + public double TamingFoodRateMultiplier + { + set + { + if (tamingFoodRateMultiplier != value) + { + tamingFoodRateMultiplier = value; updateTamingData(); } } diff --git a/ARKBreedingStats/TribesControl.Designer.cs b/ARKBreedingStats/TribesControl.Designer.cs index 74b9ca87..5694e205 100644 --- a/ARKBreedingStats/TribesControl.Designer.cs +++ b/ARKBreedingStats/TribesControl.Designer.cs @@ -36,6 +36,16 @@ private void InitializeComponent() this.columnHeaderNotes = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); this.panelSettings = new System.Windows.Forms.Panel(); + this.panelPlayerSettings = new System.Windows.Forms.Panel(); + this.label8 = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.textBoxPlayerTribe = new System.Windows.Forms.TextBox(); + this.textBoxPlayerName = new System.Windows.Forms.TextBox(); + this.textBoxPlayerNotes = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.numericUpDownLevel = new System.Windows.Forms.NumericUpDown(); this.panelTribeSettings = new System.Windows.Forms.Panel(); this.label7 = new System.Windows.Forms.Label(); this.groupBox1 = new System.Windows.Forms.GroupBox(); @@ -47,26 +57,16 @@ private void InitializeComponent() this.label6 = new System.Windows.Forms.Label(); this.textBoxTribeName = new System.Windows.Forms.TextBox(); this.label5 = new System.Windows.Forms.Label(); - this.panelPlayerSettings = new System.Windows.Forms.Panel(); - this.label8 = new System.Windows.Forms.Label(); - this.label1 = new System.Windows.Forms.Label(); - this.textBoxPlayerTribe = new System.Windows.Forms.TextBox(); - this.textBoxPlayerName = new System.Windows.Forms.TextBox(); - this.textBoxPlayerNotes = new System.Windows.Forms.TextBox(); - this.label2 = new System.Windows.Forms.Label(); - this.label4 = new System.Windows.Forms.Label(); - this.label3 = new System.Windows.Forms.Label(); - this.numericUpDownLevel = new System.Windows.Forms.NumericUpDown(); this.groupBox2 = new System.Windows.Forms.GroupBox(); this.listViewTribes = new System.Windows.Forms.ListView(); this.columnHeaderName = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.columnHeaderRelation = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.tableLayoutPanel1.SuspendLayout(); this.panelSettings.SuspendLayout(); - this.panelTribeSettings.SuspendLayout(); - this.groupBox1.SuspendLayout(); this.panelPlayerSettings.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDownLevel)).BeginInit(); + this.panelTribeSettings.SuspendLayout(); + this.groupBox1.SuspendLayout(); this.groupBox2.SuspendLayout(); this.SuspendLayout(); // @@ -145,6 +145,110 @@ private void InitializeComponent() this.panelSettings.Size = new System.Drawing.Size(271, 208); this.panelSettings.TabIndex = 11; // + // panelPlayerSettings + // + this.panelPlayerSettings.Controls.Add(this.label8); + this.panelPlayerSettings.Controls.Add(this.label1); + this.panelPlayerSettings.Controls.Add(this.textBoxPlayerTribe); + this.panelPlayerSettings.Controls.Add(this.textBoxPlayerName); + this.panelPlayerSettings.Controls.Add(this.textBoxPlayerNotes); + this.panelPlayerSettings.Controls.Add(this.label2); + this.panelPlayerSettings.Controls.Add(this.label4); + this.panelPlayerSettings.Controls.Add(this.label3); + this.panelPlayerSettings.Controls.Add(this.numericUpDownLevel); + this.panelPlayerSettings.Dock = System.Windows.Forms.DockStyle.Fill; + this.panelPlayerSettings.Enabled = false; + this.panelPlayerSettings.Location = new System.Drawing.Point(0, 0); + this.panelPlayerSettings.Name = "panelPlayerSettings"; + this.panelPlayerSettings.Size = new System.Drawing.Size(271, 208); + this.panelPlayerSettings.TabIndex = 8; + // + // label8 + // + this.label8.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label8.Location = new System.Drawing.Point(3, 5); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(265, 19); + this.label8.TabIndex = 11; + this.label8.Text = "Player"; + this.label8.TextAlign = System.Drawing.ContentAlignment.TopCenter; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(3, 34); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(62, 13); + this.label1.TabIndex = 0; + this.label1.Text = "Playername"; + // + // textBoxPlayerTribe + // + this.textBoxPlayerTribe.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend; + this.textBoxPlayerTribe.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.CustomSource; + this.textBoxPlayerTribe.Location = new System.Drawing.Point(66, 82); + this.textBoxPlayerTribe.Name = "textBoxPlayerTribe"; + this.textBoxPlayerTribe.Size = new System.Drawing.Size(193, 20); + this.textBoxPlayerTribe.TabIndex = 5; + this.textBoxPlayerTribe.TextChanged += new System.EventHandler(this.textBoxPlayerTribe_TextChanged); + // + // textBoxPlayerName + // + this.textBoxPlayerName.Location = new System.Drawing.Point(66, 30); + this.textBoxPlayerName.Name = "textBoxPlayerName"; + this.textBoxPlayerName.Size = new System.Drawing.Size(193, 20); + this.textBoxPlayerName.TabIndex = 1; + this.textBoxPlayerName.TextChanged += new System.EventHandler(this.textBoxPlayerName_TextChanged); + // + // textBoxPlayerNotes + // + this.textBoxPlayerNotes.Location = new System.Drawing.Point(66, 108); + this.textBoxPlayerNotes.Multiline = true; + this.textBoxPlayerNotes.Name = "textBoxPlayerNotes"; + this.textBoxPlayerNotes.Size = new System.Drawing.Size(193, 91); + this.textBoxPlayerNotes.TabIndex = 7; + this.textBoxPlayerNotes.TextChanged += new System.EventHandler(this.textBoxPlayerNotes_TextChanged); + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(3, 86); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(31, 13); + this.label2.TabIndex = 4; + this.label2.Text = "Tribe"; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(3, 112); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(35, 13); + this.label4.TabIndex = 6; + this.label4.Text = "Notes"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(3, 59); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(33, 13); + this.label3.TabIndex = 2; + this.label3.Text = "Level"; + // + // numericUpDownLevel + // + this.numericUpDownLevel.Location = new System.Drawing.Point(66, 56); + this.numericUpDownLevel.Maximum = new decimal(new int[] { + 1000, + 0, + 0, + 0}); + this.numericUpDownLevel.Name = "numericUpDownLevel"; + this.numericUpDownLevel.Size = new System.Drawing.Size(77, 20); + this.numericUpDownLevel.TabIndex = 3; + this.numericUpDownLevel.ValueChanged += new System.EventHandler(this.numericUpDownLevel_ValueChanged); + // // panelTribeSettings // this.panelTribeSettings.Controls.Add(this.label7); @@ -266,105 +370,6 @@ private void InitializeComponent() this.label5.TabIndex = 5; this.label5.Text = "Tribename"; // - // panelPlayerSettings - // - this.panelPlayerSettings.Controls.Add(this.label8); - this.panelPlayerSettings.Controls.Add(this.label1); - this.panelPlayerSettings.Controls.Add(this.textBoxPlayerTribe); - this.panelPlayerSettings.Controls.Add(this.textBoxPlayerName); - this.panelPlayerSettings.Controls.Add(this.textBoxPlayerNotes); - this.panelPlayerSettings.Controls.Add(this.label2); - this.panelPlayerSettings.Controls.Add(this.label4); - this.panelPlayerSettings.Controls.Add(this.label3); - this.panelPlayerSettings.Controls.Add(this.numericUpDownLevel); - this.panelPlayerSettings.Dock = System.Windows.Forms.DockStyle.Fill; - this.panelPlayerSettings.Enabled = false; - this.panelPlayerSettings.Location = new System.Drawing.Point(0, 0); - this.panelPlayerSettings.Name = "panelPlayerSettings"; - this.panelPlayerSettings.Size = new System.Drawing.Size(271, 208); - this.panelPlayerSettings.TabIndex = 8; - // - // label8 - // - this.label8.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label8.Location = new System.Drawing.Point(3, 5); - this.label8.Name = "label8"; - this.label8.Size = new System.Drawing.Size(265, 19); - this.label8.TabIndex = 11; - this.label8.Text = "Player"; - this.label8.TextAlign = System.Drawing.ContentAlignment.TopCenter; - // - // label1 - // - this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(3, 34); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(62, 13); - this.label1.TabIndex = 0; - this.label1.Text = "Playername"; - // - // textBoxPlayerTribe - // - this.textBoxPlayerTribe.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend; - this.textBoxPlayerTribe.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.CustomSource; - this.textBoxPlayerTribe.Location = new System.Drawing.Point(66, 82); - this.textBoxPlayerTribe.Name = "textBoxPlayerTribe"; - this.textBoxPlayerTribe.Size = new System.Drawing.Size(193, 20); - this.textBoxPlayerTribe.TabIndex = 5; - this.textBoxPlayerTribe.TextChanged += new System.EventHandler(this.textBoxPlayerTribe_TextChanged); - // - // textBoxPlayerName - // - this.textBoxPlayerName.Location = new System.Drawing.Point(66, 30); - this.textBoxPlayerName.Name = "textBoxPlayerName"; - this.textBoxPlayerName.Size = new System.Drawing.Size(193, 20); - this.textBoxPlayerName.TabIndex = 1; - this.textBoxPlayerName.TextChanged += new System.EventHandler(this.textBoxPlayerName_TextChanged); - // - // textBoxPlayerNotes - // - this.textBoxPlayerNotes.Location = new System.Drawing.Point(66, 108); - this.textBoxPlayerNotes.Multiline = true; - this.textBoxPlayerNotes.Name = "textBoxPlayerNotes"; - this.textBoxPlayerNotes.Size = new System.Drawing.Size(193, 91); - this.textBoxPlayerNotes.TabIndex = 7; - this.textBoxPlayerNotes.TextChanged += new System.EventHandler(this.textBoxPlayerNotes_TextChanged); - // - // label2 - // - this.label2.AutoSize = true; - this.label2.Location = new System.Drawing.Point(3, 86); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(31, 13); - this.label2.TabIndex = 4; - this.label2.Text = "Tribe"; - // - // label4 - // - this.label4.AutoSize = true; - this.label4.Location = new System.Drawing.Point(3, 112); - this.label4.Name = "label4"; - this.label4.Size = new System.Drawing.Size(35, 13); - this.label4.TabIndex = 6; - this.label4.Text = "Notes"; - // - // label3 - // - this.label3.AutoSize = true; - this.label3.Location = new System.Drawing.Point(3, 59); - this.label3.Name = "label3"; - this.label3.Size = new System.Drawing.Size(33, 13); - this.label3.TabIndex = 2; - this.label3.Text = "Level"; - // - // numericUpDownLevel - // - this.numericUpDownLevel.Location = new System.Drawing.Point(66, 56); - this.numericUpDownLevel.Name = "numericUpDownLevel"; - this.numericUpDownLevel.Size = new System.Drawing.Size(77, 20); - this.numericUpDownLevel.TabIndex = 3; - this.numericUpDownLevel.ValueChanged += new System.EventHandler(this.numericUpDownLevel_ValueChanged); - // // groupBox2 // this.groupBox2.Controls.Add(this.listViewTribes); @@ -414,13 +419,13 @@ private void InitializeComponent() this.Size = new System.Drawing.Size(745, 509); this.tableLayoutPanel1.ResumeLayout(false); this.panelSettings.ResumeLayout(false); + this.panelPlayerSettings.ResumeLayout(false); + this.panelPlayerSettings.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDownLevel)).EndInit(); this.panelTribeSettings.ResumeLayout(false); this.panelTribeSettings.PerformLayout(); this.groupBox1.ResumeLayout(false); this.groupBox1.PerformLayout(); - this.panelPlayerSettings.ResumeLayout(false); - this.panelPlayerSettings.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.numericUpDownLevel)).EndInit(); this.groupBox2.ResumeLayout(false); this.ResumeLayout(false); diff --git a/ARKBreedingStats/Values.cs b/ARKBreedingStats/Values.cs index 6da32368..80bde46b 100644 --- a/ARKBreedingStats/Values.cs +++ b/ARKBreedingStats/Values.cs @@ -15,7 +15,9 @@ public class Values { private static Values _V; [DataMember] - public int version = 0; + private string ver = "0.0"; + public Version version = new Version(0, 0); + public Version modVersion = new Version(0, 0); [DataMember] public List<Species> species = new List<Species>(); public List<string> speciesNames = new List<string>(); @@ -23,10 +25,8 @@ public class Values public double[][] statMultipliers = new double[8][]; // official server stats-multipliers [DataMember] public Dictionary<string, TamingFood> foodData = new Dictionary<string, TamingFood>(); - public double imprintingMultiplier = 1; - public double tamingSpeedMultiplier = 1; - public double tamingFoodRateMultiplier = 1; - public double evolutionMultiplier = 1.5; + + public double imprintingStatScaleMultiplier = 1; public bool celsius; public Values() @@ -48,7 +48,7 @@ public bool loadValues() { bool loadedSuccessful = true; - string filename = "values.json"; + string filename = "json/values.json"; // check if file exists if (!File.Exists(filename)) @@ -58,7 +58,7 @@ public bool loadValues() return false; } - _V.version = 0; + _V.version = new Version(0, 0); DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(Values)); System.IO.FileStream file = System.IO.File.OpenRead(filename); @@ -76,6 +76,11 @@ public bool loadValues() if (loadedSuccessful) { + try + { + _V.version = new Version(_V.ver); + } + catch { } _V.speciesNames = new List<string>(); foreach (Species sp in _V.species) { @@ -121,8 +126,15 @@ public bool loadAdditionalValues(string filename, bool showResults) int speciesAdded = 0; // update data if existing // version - if (modifiedValues.version > 0) - _V.version = modifiedValues.version; + try + { + _V.modVersion = new Version(modifiedValues.ver); + } + catch + { + _V.modVersion = new Version(0, 0); + } + // species if (modifiedValues.species != null) { @@ -198,9 +210,7 @@ public bool loadAdditionalValues(string filename, bool showResults) public void applyMultipliers(CreatureCollection cc) { - imprintingMultiplier = cc.imprintingMultiplier; - tamingSpeedMultiplier = cc.tamingSpeedMultiplier; - tamingFoodRateMultiplier = cc.tamingFoodRateMultiplier; + imprintingStatScaleMultiplier = cc.imprintingMultiplier; for (int sp = 0; sp < species.Count; sp++) { diff --git a/ARKBreedingStats/classicalFlyers.json b/ARKBreedingStats/json/classicalFlyers.json similarity index 100% rename from ARKBreedingStats/classicalFlyers.json rename to ARKBreedingStats/json/classicalFlyers.json diff --git a/ARKBreedingStats/json/ocr.json b/ARKBreedingStats/json/ocr.json new file mode 100644 index 00000000..fe9d34ef --- /dev/null +++ b/ARKBreedingStats/json/ocr.json @@ -0,0 +1 @@ +{"description":"","fontSizes":[13,15,18],"guiZoom":100,"labelRectangles":[{"height":15,"width":164,"x":950,"y":508},{"height":15,"width":164,"x":950,"y":551},{"height":15,"width":164,"x":950,"y":594},{"height":15,"width":164,"x":950,"y":637},{"height":15,"width":164,"x":950,"y":680},{"height":15,"width":164,"x":950,"y":723},{"height":15,"width":164,"x":950,"y":766},{"height":15,"width":164,"x":950,"y":809},{"height":15,"width":164,"x":950,"y":852},{"height":18,"width":127,"x":907,"y":197},{"height":18,"width":228,"x":846,"y":162},{"height":15,"width":202,"x":856,"y":232},{"height":13,"width":92,"x":967,"y":402}],"letterArrays":[[[2,0,3,3,3,3,1,1,0,3,3],[8,0,72,40,40,254,36,127,20,20,18],[5,4,30,7,5,7,28,20,28,15,4],[9,0,71,69,37,501,341,335,328,324,452],[8,0,30,50,18,30,142,155,113,115,158],[1,0,1,1,1],[2,0,2,3,1,1,1,1,1,1,1,3,2],[2,0,1,3,2,2,2,2,2,2,2,3,1],[5,4,4,31,14,10,10],[5,0,0,4,4,4,31,4,4,4],[1,0,0,0,0,0,0,0,0,0,1,1,1],[2,0,0,0,0,0,0,3],[2,0,0,0,0,0,0,0,0,3,3],[5,0,24,8,8,12,4,6,2,2,3],[5,0,14,27,17,17,17,17,17,27,14],[4,0,12,14,13,12,12,12,12,12,12],[5,0,14,25,16,24,8,4,2,3,31],[5,0,15,25,16,24,14,24,16,24,15],[7,0,48,56,56,52,54,50,127,48,48],[5,0,31,3,1,15,24,16,16,24,15],[5,0,28,2,1,13,19,17,17,27,14],[5,0,31,16,24,8,8,12,4,6,2],[5,0,14,25,17,27,14,27,17,17,14],[5,0,14,27,17,17,27,22,16,24,7],[2,0,0,0,3,3,0,0,0,3,3],[2,0,0,0,3,3,0,0,0,0,3,1,1],[5,0,0,0,24,6,3,7,28],[5,0,0,0,31,0,0,31],[5,0,0,0,3,12,24,28,7],[4,0,15,8,8,12,6,2,0,2,2],[10,0,248,390,626,585,589,581,585,441,6,124],[9,0,16,56,40,108,68,254,198,130,387],[7,0,63,99,99,99,63,99,67,99,63],[6,0,60,38,3,1,1,1,3,6,60],[8,0,63,99,195,195,131,195,195,99,63],[5,0,31,3,3,3,31,3,3,3,31],[5,0,31,3,3,3,31,3,3,3,3],[7,0,60,6,3,1,113,97,67,102,124],[8,0,195,195,195,195,255,195,195,195,195],[2,0,3,3,3,3,3,3,3,3,3],[3,0,0,4,4,4,4,4,4,4,4,4,6,3],[7,0,35,51,27,15,15,27,19,51,99],[6,0,3,3,3,3,3,3,3,3,63],[10,0,771,903,903,975,843,843,827,819,819],[8,0,195,199,207,203,219,211,243,227,195],[8,0,60,102,195,129,129,129,195,102,60],[6,0,31,51,35,51,31,3,3,3,3],[8,0,60,102,195,129,129,129,195,102,60,96,64],[6,0,31,51,35,51,31,27,19,51,35],[5,0,30,19,1,3,14,24,16,25,15],[7,0,127,8,8,8,8,8,8,8,8],[8,0,195,195,195,195,195,195,195,102,60],[8,0,195,66,66,102,36,36,60,24,24],[12,0,3171,1122,1122,1266,1686,660,924,780,780],[8,0,66,102,36,24,24,60,36,102,195],[8,0,195,66,38,60,24,24,24,24,24],[5,0,31,24,24,12,4,6,3,3,31],[3,0,7,1,1,1,1,1,1,1,1,1,7],[5,0,3,2,2,6,4,12,8,8,24],[3,0,7,4,4,4,4,4,4,4,4,4,7],[5,0,4,6,10,9,17,17],[6,0,0,0,0,0,0,0,0,0,0,0,63],[2,1,2],[6,0,0,0,30,48,48,62,49,49,47],[6,1,1,1,31,51,35,35,35,51,29],[4,0,0,0,14,3,1,1,1,3,14],[6,32,32,32,62,51,49,33,49,51,46],[5,0,0,0,14,27,17,31,1,3,30],[4,14,2,2,15,3,2,2,2,2,2],[7,0,0,0,124,50,34,50,28,2,62,99,35,30],[6,1,1,1,31,51,35,33,33,33,33],[1,0,1,1,0,1,1,1,1,1,1,1],[3,6,6,0,6,6,6,6,6,6,6,6,6,3],[5,1,1,1,17,9,13,7,11,25,17],[2,3,3,3,3,3,3,3,3,3,3],[9,0,0,0,0,511,307,273,273,273,273,273],[6,0,0,0,29,51,35,33,33,33,33],[6,0,0,0,30,51,33,33,33,51,30],[6,0,0,0,29,51,35,35,35,51,31,1,1,1],[6,0,0,0,46,51,49,33,49,51,62,32,32,32],[5,0,0,0,25,7,3,3,3,3,3],[4,0,0,0,15,1,3,14,8,8,15],[3,0,2,3,7,3,3,3,3,3,6],[6,0,0,0,33,33,33,33,49,51,46],[7,0,0,0,99,34,34,54,20,28,8],[11,0,0,0,1571,626,594,854,476,396,396],[5,0,0,0,17,27,14,14,14,27,17],[7,0,0,0,99,34,34,54,20,28,8,8,12,7],[4,0,0,0,15,12,4,6,2,1,15],[5,0,24,12,4,4,4,3,6,4,4,12,24],[1,1,1,1,1,1,1,1,1,1,1,1,1,1],[5,0,3,6,4,4,4,24,12,4,4,14,7],[2,0,0,0,0,3,1]],[[2,0,3,3,3,3,3,3,3,3,0,3,3],[8,0,72,72,76,255,36,36,36,255,54,18,18],[7,8,8,28,11,11,15,30,120,104,123,63,8,8],[10,798,958,499,255,254,112,432,1016,636,878,998],[9,0,28,54,34,50,28,14,403,417,225,227,414],[2,0,3,3,1,1],[3,0,4,2,2,3,1,1,1,1,1,1,2,2,4],[2,0,1,2,2,0,0,0,0,0,0,0,0,2,1],[2,3,0,0,3,2],[7,0,0,0,8,8,8,127,8,8,8],[2,0,0,0,0,0,0,0,0,0,0,3,3,1,1],[3,0,0,0,0,0,0,0,7],[2,0,0,0,0,0,0,0,0,0,3,3],[8,224,112,112,56,56,28,28,14,14,6,7],[9,124,254,495,451,451,451,451,451,455,255,126],[4,12,15,15,14,14,14,14,14,14,14,14,4],[8,126,254,238,192,224,224,112,56,30,255,255],[7,63,127,115,96,112,62,126,96,96,127,63],[8,112,56,28,252,238,103,103,255,255,96,96,32],[7,127,127,3,3,31,127,113,96,112,127,63],[8,48,56,30,14,127,255,195,195,199,255,126],[7,0,127,96,96,32,48,16,24,8,12,4,6],[8,56,254,199,195,230,126,255,195,195,255,126],[7,0,28,55,99,65,97,115,94,96,32,56,14],[2,0,0,0,0,3,3,0,0,0,0,3,3],[2,0,0,0,0,3,3,0,0,0,0,3,3,1,1],[7,0,0,64,112,28,7,3,28,112,64],[7,0,0,0,0,127,0,0,127],[7,0,0,1,7,28,112,96,28,7,1],[5,0,15,27,16,16,24,12,6,6,0,6,6],[11,0,240,780,514,1267,1177,1161,1161,1737,817,2,6,248],[10,0,48,48,120,72,204,204,252,390,390,258,771],[8,0,63,119,195,195,67,63,227,195,195,231,63],[8,0,248,222,6,3,3,3,3,3,6,222,248],[9,0,63,247,195,387,387,387,387,387,195,247,63],[6,0,63,3,3,3,3,63,3,3,3,3,63],[6,0,63,7,3,3,3,63,7,3,3,3,3],[9,0,248,222,6,3,3,483,387,387,390,478,248],[9,0,387,387,387,387,511,455,387,387,387,387,387],[1,0,1,1,1,1,1,1,1,1,1,1,1],[4,0,8,12,12,12,12,12,12,12,14,15],[8,0,97,97,49,25,13,15,27,57,49,97,193],[6,0,3,3,3,3,3,3,3,3,3,7,63],[12,0,3591,3591,3855,3339,3339,3483,3219,3283,3315,3171,3171],[10,0,775,775,783,795,795,819,867,867,963,899,899],[10,0,120,478,390,771,771,771,771,771,390,494,120],[7,0,63,115,99,99,99,63,3,3,3,3,3],[10,0,120,478,390,771,771,771,771,771,390,494,120,192,384],[7,0,31,59,97,97,49,31,27,49,49,97,65],[6,0,62,55,3,3,7,30,56,48,32,59,31],[7,0,127,127,12,12,12,12,12,12,12,12],[9,0,387,387,387,387,387,387,387,387,130,238,124],[9,0,387,130,198,198,68,68,108,44,56,56,56],[14,0,12483,4290,4322,6630,6438,2340,2868,3900,3612,1564,1560],[9,0,130,198,108,108,56,56,56,108,68,198,387],[9,0,387,198,198,108,108,56,24,16,16,16,16],[7,0,127,96,32,48,24,8,12,6,3,3,127],[4,0,15,3,3,3,3,3,3,3,3,3,3,3,15],[6,0,3,2,6,6,4,12,8,24,24,16,48],[4,0,15,12,12,12,12,12,12,12,12,12,12,12,15],[6,0,4,12,10,18,19,33,33],[6,0,0,0,0,0,0,0,0,0,0,0,0,0,63],[3,0,3,6],[7,0,0,0,0,62,50,96,126,99,97,115,110],[7,0,3,3,3,63,127,99,99,99,115,63],[5,0,0,0,0,30,23,3,1,1,3,23,30],[7,96,96,96,96,110,119,99,97,97,99,119,110],[7,0,0,0,0,62,63,99,127,27,7,62],[4,0,14,15,3,15,15,3,3,3,3,3],[8,0,0,0,0,252,102,98,98,38,28,6,124,102,195,99,62],[8,3,3,3,3,123,111,195,195,195,195,195,195],[2,0,3,3,0,3,3,3,3,3,3,3],[4,12,12,0,0,12,12,12,12,12,12,12,12,12,12,12,7],[7,3,3,3,3,99,51,27,15,31,51,99,67],[2,3,3,3,3,3,3,3,3,3,3,3,3],[11,0,0,0,0,959,2047,1587,1587,1587,1587,1587],[8,0,0,0,0,123,111,195,195,195,195,195,195],[7,0,0,0,0,62,127,99,99,99,115,62],[7,0,0,0,0,59,119,99,67,99,99,119,59,3,3,3,3],[7,0,0,0,0,110,119,99,97,97,99,119,110,96,96,96,96],[5,0,0,0,0,27,15,3,3,3,3,3,3],[5,0,0,0,0,30,19,3,7,28,16,25,15],[4,0,0,2,2,15,3,3,3,3,3,6,14],[8,0,0,0,0,195,195,195,195,195,195,230,222],[8,0,0,0,0,195,66,102,102,36,60,24,24],[12,0,0,0,0,3171,1122,1266,1686,1686,924,924,780],[6,0,0,0,0,51,51,30,12,12,30,51,33],[8,0,0,0,0,195,66,102,102,36,60,56,24,24,8,12,7],[5,0,0,0,0,31,24,8,12,6,2,3,31],[6,0,56,24,12,12,12,12,7,14,12,12,12,24,56],[2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3],[6,0,7,6,12,12,12,12,56,28,12,12,12,6,15],[2,0,0,0,0,0,3,3]],[[3,0,7,7,7,2,2,2,2,2,2,0,2,7,2],[10,0,400,408,152,136,1023,204,204,76,1023,110,100,102,38],[8,24,24,124,254,27,27,30,60,248,216,216,127,62,24,24],[14,0,1038,1563,787,817,433,7315,16091,12878,9056,9008,12848,13848,7176],[11,0,60,126,198,70,110,60,1564,1590,867,963,899,1022,1660],[2,0,3,3,3,3,3],[4,0,0,14,14,6,7,7,7,3,3,3,7,7,7,7,6,14],[3,0,0,3,3,7,7,7,6,6,6,6,6,6,7,7,3,3],[8,24,24,24,255,60,60,102,36],[8,0,0,0,0,24,24,24,255,255,24,24,24],[2,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,1],[4,0,0,0,0,0,0,0,0,15,15],[3,0,0,0,0,0,0,0,0,0,0,0,2,7,2],[7,0,96,48,48,48,24,24,8,12,12,6,6,6,3],[8,0,60,126,231,195,195,195,195,195,195,195,231,126,60],[4,0,0,14,15,14,14,14,14,14,14,14,14,14,14],[8,0,60,127,226,192,192,96,112,48,24,12,6,255,255],[8,0,62,127,224,192,96,60,124,224,192,192,224,127,63],[10,0,192,224,240,208,216,204,196,198,1023,510,192,192,192],[8,0,126,126,2,2,3,63,126,224,192,192,224,127,62],[8,0,120,124,6,3,3,123,255,195,195,195,199,126,60],[8,0,255,255,192,96,96,96,48,48,24,24,12,12,14],[8,0,60,126,195,195,102,60,62,231,195,195,195,127,60],[8,0,60,126,227,195,195,195,255,222,192,192,96,62,30],[3,0,0,0,0,2,7,2,0,0,0,0,2,7,2],[3,0,0,0,0,2,7,2,0,0,0,0,0,3,3,3,1],[8,0,0,0,128,224,56,14,3,15,56,224,128],[8,0,0,0,0,0,255,255,0,255,255],[8,0,0,0,1,7,28,112,192,240,28,7,1],[7,0,62,127,96,64,96,48,24,8,12,0,8,28,12],[14,0,992,3640,6156,4102,13282,13107,12819,13083,13075,8115,3299,2,6,1820,1008],[12,0,0,224,240,496,432,408,920,796,2028,2030,3590,3078,3079],[10,0,0,255,511,391,391,455,247,503,903,903,903,511,511],[10,0,0,1016,1022,14,7,7,3,3,7,7,14,1022,1016],[11,0,0,255,511,899,771,1795,1795,1795,1795,771,899,511,255],[8,0,0,255,255,3,3,3,255,255,3,3,3,255,255],[7,0,127,127,3,3,3,3,127,127,3,3,3,3,3],[11,0,496,1020,14,6,7,3,1987,1987,1539,1542,1550,2044,1008],[10,0,771,771,771,771,771,1023,1023,771,771,771,771,771,771],[2,0,3,3,3,3,3,3,3,3,3,3,3,3,3],[5,0,24,24,24,24,24,24,24,24,24,24,24,24,24,12,15,7],[10,0,387,195,227,115,59,27,31,55,115,99,195,387,899],[7,0,3,3,3,3,3,3,3,3,3,3,3,127,127],[13,0,0,7171,7687,7687,7695,7951,7967,7579,7611,7667,7411,7411,7267],[10,0,771,775,783,783,793,795,819,883,867,963,963,899,899],[12,0,504,1020,1806,1542,3075,3075,3075,3075,3075,1542,1806,1020,504],[10,0,0,255,511,903,903,903,487,247,119,7,7,7,7],[12,0,504,1020,1806,1542,3075,3075,3075,3075,3075,1542,1806,1020,504,384,768,1792],[9,0,63,255,195,451,195,195,127,63,99,99,195,387,387],[8,0,124,254,3,3,7,14,60,240,192,192,192,127,62],[10,0,1023,1023,48,48,48,48,48,48,48,48,48,48,48],[9,0,387,387,387,387,387,387,387,387,387,387,387,254,124],[11,0,1539,774,774,774,396,396,396,216,216,216,112,112,112],[17,0,99203,50054,50054,50054,50886,26316,26188,27756,27756,15480,14392,14392,14392],[11,0,774,774,396,216,216,112,112,120,216,396,396,774,1799],[11,0,1795,774,910,396,216,216,112,112,48,48,48,48,48],[8,0,255,255,224,96,48,56,24,12,12,6,3,255,255],[4,0,15,7,3,3,3,3,3,3,3,3,3,3,3,3,7,15],[7,0,3,6,6,6,12,12,8,24,24,48,48,48,96],[4,0,15,14,12,12,12,12,12,12,12,12,12,12,12,12,14,15],[8,0,24,24,60,36,102,66,195,129],[8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255],[3,3,6,4],[8,0,0,0,0,0,62,254,224,192,254,231,199,255,254],[8,1,1,1,1,57,127,227,195,193,195,195,227,127,57],[7,0,0,0,0,124,126,7,3,3,3,3,7,126,124],[8,0,0,192,192,192,252,254,199,199,195,199,199,254,252],[8,0,0,0,0,0,60,126,231,195,255,255,7,254,252],[6,60,60,6,6,63,31,6,6,6,6,6,6,6,6],[10,0,0,0,0,1016,206,198,134,206,124,4,6,252,510,259,387,454,124],[8,0,0,7,7,7,127,255,199,199,199,199,199,199,199],[3,0,0,6,6,0,6,7,7,7,7,7,7,7,7],[4,8,8,0,0,8,8,8,8,8,8,8,8,8,8,8,12,15,7],[8,3,3,3,3,195,99,51,59,31,63,55,99,195,195],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[14,0,0,0,0,0,3699,8191,14831,14535,14535,14535,14535,14535,14535],[8,0,0,0,0,0,115,255,199,195,195,195,195,195,195],[9,0,0,0,0,0,124,254,455,451,451,451,455,255,126],[8,0,0,0,0,57,127,227,195,193,195,195,227,127,57,1,1,1,1],[8,0,0,0,0,156,254,199,195,131,131,195,199,254,156,128,128,128,128],[5,0,0,0,0,0,23,31,15,7,7,7,7,7,7],[8,0,0,0,0,0,124,254,7,7,127,252,192,254,126],[4,0,0,0,0,3,15,15,7,7,7,7,7,15,15],[8,0,0,0,0,0,199,199,199,199,199,199,199,255,254],[10,0,0,0,0,771,390,390,390,204,204,72,120,120,48],[15,0,0,0,0,25027,12742,12742,13158,4966,7020,6700,7740,3640,3096],[8,0,0,0,0,195,231,102,60,60,60,60,102,227,195],[9,0,0,0,0,0,391,455,198,206,110,108,124,56,56,24,28,14,4],[7,0,0,0,0,127,127,48,48,24,12,6,6,127,127],[5,0,24,28,12,12,12,12,6,3,7,14,12,12,12,12,28,24],[2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3],[5,0,3,7,6,6,6,6,12,24,28,12,6,6,6,6,7,3],[8,0,0,0,0,0,0,14,255,112],[25,33300224,33488864,31457264,26214392,17285244,491582,983070,917519,1966095,1966095,1966095,1966095,1966095,1966095,983070,1015870,508028,259064],[22,2031678,1966110,3932174,3932175,3932175,3932175,3932175,3932175,3932175,1966110,2031678,1015932,524284,262128,131040,32640,7680,7680]]],"letters":[["!","#","$","%","&","'","(",")","*","+",",","-",".","\/","0","1","2","3","4","5","6","7","8","9",":",";","<","=",">","?","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","\\","]","^","_","`","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","{","|","}","~"],["!","#","$","%","&","'","(",")","*","+",",","-",".","\/","0","1","2","3","4","5","6","7","8","9",":",";","<","=",">","?","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","\\","]","^","_","`","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","{","|","}","~"],["!","#","$","%","&","'","(",")","*","+",",","-",".","\/","0","1","2","3","4","5","6","7","8","9",":",";","<","=",">","?","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","\\","]","^","_","`","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","{","|","}","~","♂","♀"]],"resolution":""} \ No newline at end of file diff --git a/ARKBreedingStats/json/values.json b/ARKBreedingStats/json/values.json new file mode 100644 index 00000000..d1b43331 --- /dev/null +++ b/ARKBreedingStats/json/values.json @@ -0,0 +1 @@ +{"ver":"256.34.0","foodData":[{"Key":"Raw Meat","Value":{"d":[50,50]}},{"Key":"Cooked Meat","Value":{"d":[25,25]}},{"Key":"Cooked Meat Jerky","Value":{"d":[25,25]}},{"Key":"Raw Prime Meat","Value":{"d":[50,150]}},{"Key":"Cooked Prime Meat","Value":{"d":[49.945,75]}},{"Key":"Prime Meat Jerky","Value":{"d":[49.945,75]}},{"Key":"Raw Fish Meat","Value":{"d":[25,20]}},{"Key":"Raw Prime Fish Meat","Value":{"d":[25,60]}},{"Key":"Cooked Fish Meat","Value":{"d":[12.5,10]}},{"Key":"Cooked Prime Fish Meat","Value":{"d":[25.7,30]}},{"Key":"Raw Mutton","Value":{"d":[50,375]}},{"Key":"Cooked Lamb Chop","Value":{"d":[49.945,206.25]}},{"Key":"Spoiled Meat","Value":{"d":[50,100]}},{"Key":"Vegetables","Value":{"d":[40,40]}},{"Key":"Mejoberry","Value":{"d":[30,30]}},{"Key":"Berries","Value":{"d":[19.9999995,20]}},{"Key":"Stimberry","Value":{"d":[-15,1.5]}},{"Key":"Kibble","Value":{"d":[79.95,400]}}],"imprintingMultiplier":1,"statMultipliers":[[0.14,0.44,0.2,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[0.14,0.44,0.17,1],[1,1,1,1],[1,1,1,1]],"tamingMultiplier":1,"species":[{"name":"Achatina","colors":[{"name":"Body","colorIds":[49,22,33,34,42,43]},{"name":"Shell","colorIds":[19,21,22,23,24,28,30,32,33,34,8,13,35,14]},{"name":null,"colorIds":[]},{"name":"Shell Highlights","colorIds":[19,28,33,30,32,21,43,25,23]},{"name":"Stripe","colorIds":[19,21,32,30,25,23,50]},{"name":"Underside","colorIds":[19,21,33,30,50,25,23]}],"statsRaw":[[75,0.2,0.27,0.5,0],[100,0.1,0.1,0,0],[150,0.1,0.1,0,0],[450,0.1,0.1,0,0],[150,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0,0],[50,0.06,0,0.5,0]],"doesNotUseOxygen":true,"taming":{"eats":["Sweet Vegetable Cake"],"nonViolent":false,"specialFoodValues":[{"Key":"Sweet Vegetable Cake","Value":{"d":[180,450]}}],"tamingIneffectiveness":0.2,"affinityNeeded0":4000,"affinityIncreasePL":150,"torporDepletionPS0":0.3,"foodConsumptionBase":0.001736,"foodConsumptionMult":864.055298,"violent":true},"immobilizedBy":["Bola","Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":0.5,"Value":"Tail"},{"Key":1,"Value":"Neck"}]},{"name":"Allosaurus","breeding":{"gestationTime":0,"incubationTime":5999.520508,"maturationTime":166666.65625,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":26,"eggTempMax":32},"colors":[{"name":"Body","colorIds":[20,21,22,23,24,25,26,27,32,33,34,8,13,35,14]},{"name":"unknown","colorIds":[20,21,22,23,24,25,26,27,32,33,34,8,13,35,14]},{"name":"unknown","colorIds":[20,21,22,23,24,25,26,27,32,33,34,8,13,35,14]},{"name":"unknown","colorIds":[20,21,22,23,24,25,26,27,32,33,34,8,13,35,14]},{"name":"Spine","colorIds":[20,21,22,23,24,25,26,27,32,33,34,8,13,35,14]},{"name":"Belly","colorIds":[20,21,22,23,24,25,26,27,32,33,34,8,13,35,14]}],"statsRaw":[[630,0.2,0.27,0.5,0],[250,0.1,0.1,0,0],[150,0.1,0.1,0,0],[3000,0.1,0.1,0,0.15],[380,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0,0],[1000,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Diplo","nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":1.875,"affinityNeeded0":2400,"affinityIncreasePL":100,"torporDepletionPS0":0.8,"foodConsumptionBase":0.002052,"foodConsumptionMult":180.063385,"violent":true},"immobilizedBy":["Chain Bola","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Head, Neck"}]},{"name":"Angler","breeding":{"gestationTime":0,"incubationTime":17998.560547,"maturationTime":133333.328125,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":-75,"eggTempMax":75},"colors":[{"name":"Body","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,14,36,1,4,3,2]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"unknown","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,14,36]},{"name":"Tail fin and Accents","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,14,36]}],"statsRaw":[[450,0.2,0.27,0.3,0],[240,0.1,0.1,0,0],[150,0.1,0.1,0,0],[1500,0.1,0.1,0,0.15],[350,0.02,0.04,0,0],[1,0.05,0.1,1,0.4],[1,0,0.025,0,0],[900,0.06,0,0.5,0]],"doesNotUseOxygen":true,"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Kairuku","nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":2.5,"affinityNeeded0":1800,"affinityIncreasePL":90,"torporDepletionPS0":2.8,"foodConsumptionBase":0.001852,"foodConsumptionMult":149.988007,"violent":true}},{"name":"Ankylosaurus","breeding":{"gestationTime":0,"incubationTime":9472.926758,"maturationTime":175438.59375,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":16,"eggTempMax":20},"colors":[{"name":null,"colorIds":[]},{"name":"Spikes","colorIds":[21,23,32,33,8,14]},{"name":"Leg Plates","colorIds":[20,22,24,33,34,13,35,14]},{"name":"Spike Tips","colorIds":[20,22,24,33,34,13,35,14]},{"name":"Head and Back","colorIds":[20,22,24,33,34,13,35,14]},{"name":"Underside","colorIds":[21,23,32,33,8,14]}],"statsRaw":[[700,0.2,0.27,0.5,0],[175,0.1,0.1,0,0],[150,0.1,0.1,0,0],[3000,0.1,0.1,0,0.15],[250,0.02,0.04,0,0],[1,0.05,0.1,1,0.4],[1,0,0.025,0.5,0],[420,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Vegetables","Mejoberry","Berries","Stimberry"],"favoriteKibble":"Dilo","nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":0.2,"affinityNeeded0":3000,"affinityIncreasePL":150,"torporDepletionPS0":0.3,"foodConsumptionBase":0.003156,"foodConsumptionMult":176.03154,"violent":true},"immobilizedBy":["Chain Bola","Large Bear Trap","Plant Species Y"]},{"name":"Araneo","colors":[{"name":"Thorax and Head","colorIds":[20,22,24,26,27,29,31,33,34,13,35,14]},{"name":null,"colorIds":[]},{"name":"Lower Abdomen","colorIds":[20,22,24,26,27,29,31,33,34,13,35,14]},{"name":"Leg","colorIds":[20,22,24,26,27,29,31,33,34,13,35,14]},{"name":"Scutes","colorIds":[19,21,23,25,26,28,30,32,33,8,14]},{"name":"Upper Abdomen and Markings","colorIds":[20,22,24,26,27,29,31,33,34,13,35,14]}],"statsRaw":[[150,0.2,0.135,0.5,0],[100,0.1,0.1,0,0],[150,0.1,0.1,0,0],[900,0.1,0.1,0,0],[100,0.02,0.08,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0.67,0],[80,0.06,0,0.5,0]],"taming":{"eats":["Spoiled Meat","Raw Meat","Raw Fish Meat"],"nonViolent":true,"specialFoodValues":[{"Key":"Raw Meat","Value":{"d":[15,15]}},{"Key":"Raw Fish Meat","Value":{"d":[7.5,6]}}],"tamingIneffectiveness":4.166667,"affinityNeeded0":4000,"affinityIncreasePL":120,"foodConsumptionBase":0.001736,"foodConsumptionMult":864.055298,"wakeAffinityMult":1,"wakeFoodDeplMult":2,"violent":false},"immobilizedBy":["Bola","Bear Trap","Plant Species Y"]},{"name":"Archaeopteryx","breeding":{"gestationTime":0,"incubationTime":9472.926758,"maturationTime":55555.554688,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":16,"eggTempMax":20},"colors":[{"name":"Sides, Tail, Wings and Face","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,8,13,35,14]},{"name":"unknown","colorIds":[21,23,32,33,8,14]},{"name":"Skin","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"unknown","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Top and Wing Tips","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,8,13,35,14,36]},{"name":"Underside and Accents","colorIds":[19,21,23,25,26,28,30,32,33,8,14]}],"statsRaw":[[125,0.2,0.27,0.5,0],[150,0.1,0.1,0,0],[150,0.1,0.1,0,0],[900,0.1,0.1,0,0],[30,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0,0],[100,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Chitin"],"favoriteKibble":"Pelagornis","nonViolent":false,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[25,400]}},{"Key":"Chitin","Value":{"d":[50,50]}}],"tamingIneffectiveness":1.333333,"affinityNeeded0":500,"affinityIncreasePL":22.5,"torporDepletionPS0":0.8333,"foodConsumptionBase":0.001302,"foodConsumptionMult":1152.07373,"violent":true},"immobilizedBy":["Bola","Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Head, Neck"}]},{"name":"Argentavis","breeding":{"gestationTime":0,"incubationTime":10587.388672,"maturationTime":196078.421875,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":12,"eggTempMax":13.5},"colors":[{"name":"Main Body","colorIds":[20,22,24,33,34,13,35,14,18]},{"name":null,"colorIds":[]},{"name":"Wing Tips","colorIds":[20,22,24,33,34,13,35,14,18]},{"name":"Legs","colorIds":[20,22,24,33,34,13,35,14,18]},{"name":"Head Feathers","colorIds":[20,22,24,33,34,13,35,14,18]},{"name":"Underside","colorIds":[21,23,32,33,8,14,18]}],"statsRaw":[[365,0.2,0.3375,0.5,0],[400,0.05,0.075,0,0],[150,0.1,0.1,0,0],[2000,0.1,0.1,0,0],[400,0.02,0.055,0,0],[1,0.05,0.15,0.5,0.4],[1,0,0,0,0],[600,0.06,0,0.5,0]],"NoImprintingForSpeed":true,"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Stegosaurus","nonViolent":false,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[79.919998,400]}}],"tamingIneffectiveness":1.875,"affinityNeeded0":2000,"affinityIncreasePL":100,"torporDepletionPS0":0.3,"foodConsumptionBase":0.001852,"foodConsumptionMult":199.983994,"violent":true},"immobilizedBy":["Bola","Chain Bola","Bear Trap","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Neck"}]},{"name":"Arthropluera","colors":[{"name":"Segments","colorIds":[20,22,24,26,27,29,31,33,34,13,35,14]},{"name":"Head","colorIds":[19,21,23,25,26,28,30,32,33,8,14]},{"name":"Sternites","colorIds":[19,21,23,25,26,28,30,32,33,8,14]},{"name":"Legs, Antennae, and Forcipules","colorIds":[19,21,23,25,26,28,30,32,33,8,14]},{"name":"unknown","colorIds":[19,21,23,25,26,28,30,32,33,8,14]},{"name":"Underside of Head/Segments","colorIds":[19,21,23,25,26,28,30,32,33,8,14]}],"statsRaw":[[500,0.2,0.27,0.5,0],[200,0.1,0.1,0,0],[150,0.1,0.1,0,0],[1200,0.1,0.1,0,0],[100,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0.2,0],[175,0.06,0,0.5,0]],"doesNotUseOxygen":true,"taming":{"eats":["Broth of Enlightenment","Spoiled Meat","Raw Meat","Raw Fish Meat"],"nonViolent":true,"specialFoodValues":[{"Key":"Broth of Enlightenment","Value":{"d":[20,1500]}},{"Key":"Raw Meat","Value":{"d":[15,15]}},{"Key":"Raw Fish Meat","Value":{"d":[7.5,6]}}],"tamingIneffectiveness":2.5,"affinityNeeded0":3000,"affinityIncreasePL":75,"foodConsumptionBase":0.001543,"foodConsumptionMult":648.088135,"wakeAffinityMult":1.6,"wakeFoodDeplMult":2,"violent":false},"boneDamageAdjusters":[{"Key":2.5,"Value":"Head"}]},{"name":"Baryonyx","breeding":{"gestationTime":0,"incubationTime":7199.423828,"maturationTime":166666.65625,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":29,"eggTempMax":35},"colors":[{"name":"Body","colorIds":[22,24,26,27,33,34,13,35,14]},{"name":"Spines","colorIds":[23,37,26,27,33,34,13,35,14]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Stripes","colorIds":[32,33,39,34,24,13]},{"name":"Underside","colorIds":[37,32,33,39,38,23,8]}],"statsRaw":[[440,0.2,0.27,0.5,0],[325,0.1,0.1,0,0],[225,0.1,0.1,0,0],[2250,0.1,0.1,0,0],[325,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0.2,0],[400,0.06,0,0.5,0]],"doesNotUseOxygen":true,"taming":{"eats":["Kibble","Raw Prime Fish Meat","Cooked Prime Fish Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Pachyrhino","nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":2.5,"affinityNeeded0":2500,"affinityIncreasePL":100,"torporDepletionPS0":0.3,"foodConsumptionBase":0.001543,"foodConsumptionMult":648.088135,"violent":true},"immobilizedBy":["Bola","Bear Trap","Large Bear Trap","Plant Species Y"]},{"name":"Basilosaurus","breeding":{"gestationTime":28571.427734,"incubationTime":0,"maturationTime":666666.625,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"Body Main","colorIds":[19,20,21,22,23,24,28,29,14]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Belly","colorIds":[21,23,28,32,33,8,14,36]}],"statsRaw":[[2400,0.2,0.243,0.3,0],[300,0.1,0.1,0,0],[150,0.1,0.1,0,0],[8000,0.1,0.1,0,0.15],[700,0.02,0.04,0,0],[1,0.05,0.1,0.9,0.4],[1,0,0.025,0,0],[2000,0.06,0,0.5,0]],"doesNotUseOxygen":true,"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Therizinosaurus","nonViolent":true,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[319.679993,500]}}],"tamingIneffectiveness":2.5,"affinityNeeded0":6600,"affinityIncreasePL":250,"foodConsumptionBase":0.002929,"foodConsumptionMult":420,"wakeAffinityMult":1.6,"wakeFoodDeplMult":5,"violent":false}},{"name":"Beelzebufo","breeding":{"gestationTime":0,"incubationTime":17998.560547,"maturationTime":133333.328125,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":-75,"eggTempMax":75},"colors":[{"name":"Body","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,8,13,35,14,36]},{"name":"Spikes","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,8,13,35,14,36]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Stripes","colorIds":[20,22,24,26,27,29,31,33,34,13,35,14]},{"name":"Belly and Accents","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,8,13,35,14,36]}],"statsRaw":[[220,0.2,0.27,0.5,0],[190,0.1,0.1,0,0],[150,0.1,0.1,0,0],[1500,0.1,0.1,0,0],[160,0.02,0.04,0,0],[1,0.05,0.1,0.2,0.25],[1,0,0.025,1,0],[200,0.06,0,0.5,0]],"doesNotUseOxygen":true,"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Pulmonoscorpius","nonViolent":false,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[79.919998,400]}}],"tamingIneffectiveness":0.4,"affinityNeeded0":1800,"affinityIncreasePL":75,"torporDepletionPS0":0.6666,"foodConsumptionBase":0.001929,"foodConsumptionMult":648.00415,"violent":true},"immobilizedBy":["Bola","Bear Trap","Plant Species Y"]},{"name":"Brontosaurus","breeding":{"gestationTime":0,"incubationTime":17998.560547,"maturationTime":333333.3125,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":28,"eggTempMax":31},"colors":[{"name":"Body","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Spine","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Back","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Legs","colorIds":[21,23,25,26,32,33,8,14]}],"statsRaw":[[2300,0.2,0.19,0.5,0],[240,0.1,0.1,0,0],[150,0.1,0.1,0,0],[10000,0.1,0.1,0,0],[1600,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0,0],[2000,0.06,0,0.5,0]],"TamedBaseHealthMultiplier":0.9,"taming":{"eats":["Kibble","Vegetables","Mejoberry","Berries","Stimberry"],"favoriteKibble":"Carbonemys","nonViolent":false,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[53.279999,400]}}],"tamingIneffectiveness":0.06,"affinityNeeded0":10000,"affinityIncreasePL":500,"torporDepletionPS0":0.3,"foodConsumptionBase":0.007716,"foodConsumptionMult":180.001144,"violent":true},"immobilizedBy":["Large Bear Trap"]},{"name":"Carbonemys","breeding":{"gestationTime":0,"incubationTime":4499.640137,"maturationTime":83333.328125,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":30,"eggTempMax":34},"colors":[{"name":"Body","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Shell Base","colorIds":[19,21,23,28,30,32,33,8,14]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Shell, Plates, and Claws","colorIds":[20,22,24,29,31,33,34,13,35,14]},{"name":"Body Accent","colorIds":[21,23,25,26,32,33,8,14]}],"statsRaw":[[700,0.2,0.27,0.5,0],[200,0.1,0.1,0,0],[150,0.1,0.1,0,0],[3000,0.1,0.1,0,0],[270,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0.7,0],[275,0.06,0,0.5,0]],"TamedBaseHealthMultiplier":0.9,"doesNotUseOxygen":true,"taming":{"eats":["Kibble","Vegetables","Mejoberry","Berries","Stimberry"],"favoriteKibble":"Pteranodon","nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":0.2,"affinityNeeded0":3000,"affinityIncreasePL":150,"torporDepletionPS0":0.3,"foodConsumptionBase":0.003156,"foodConsumptionMult":352.06308,"violent":true},"immobilizedBy":["Chain Bola","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":0.2,"Value":"Body"},{"Key":0.5,"Value":"Tail"},{"Key":1,"Value":"Neck"}]},{"name":"Carnotaurus","breeding":{"gestationTime":0,"incubationTime":5999.520508,"maturationTime":166666.65625,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":26,"eggTempMax":32},"colors":[{"name":"Body","colorIds":[20,21,22,23,24,25,26,27,32,33,34,8,13,35,14,36]},{"name":"Horns","colorIds":[21,23,25,26,28,32,33,8,14]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Patterning","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Belly","colorIds":[21,23,25,26,28,32,33,8,14]}],"statsRaw":[[420,0.2,0.27,0.5,0],[300,0.1,0.1,0,0],[150,0.1,0.1,0,0],[2000,0.1,0.1,0,0.15],[300,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0,0],[350,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Ankylosaurus","nonViolent":false,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[79.919998,400]}}],"tamingIneffectiveness":1.875,"affinityNeeded0":2000,"affinityIncreasePL":100,"torporDepletionPS0":0.3,"foodConsumptionBase":0.001852,"foodConsumptionMult":199.983994,"violent":true},"immobilizedBy":["Chain Bola","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Head, Neck"}]},{"name":"Castoroides","breeding":{"gestationTime":28571.427734,"incubationTime":0,"maturationTime":222222.21875,"matingCooldownMin":64800,"matingCooldownMax":142800},"colors":[{"name":"Body","colorIds":[21,22,32,33,34,8,13,35,14,37,37,37,37,37,38,39]},{"name":"Feet","colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":"Stripe","colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":"Tail","colorIds":[21,22,32,33,34,8,13,35,14,37,38,39,39,39,39,39]}],"statsRaw":[[450,0.2,0.27,0.5,0],[180,0.1,0.1,0,0],[380,0.1,0.1,0,0],[2000,0.1,0.1,0,0],[300,0.02,0.04,0,0],[1,0.04,0.1,0.5,0.4],[1,0,0.025,0.7,0],[350,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Vegetables","Mejoberry","Berries","Stimberry"],"favoriteKibble":"Gallimimus","nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":0.3,"affinityNeeded0":2000,"affinityIncreasePL":100,"torporDepletionPS0":1.5,"foodConsumptionBase":0.002314,"foodConsumptionMult":160.056335,"violent":true},"immobilizedBy":["Bola","Large Bear Trap","Plant Species Y"]},{"name":"Chalicotherium","breeding":{"gestationTime":28571.427734,"incubationTime":0,"maturationTime":296296.28125,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"Body","colorIds":[20,22,39,37,33,34,13,35,14]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Fur Highlights","colorIds":[20,33,34,13,35]},{"name":"Stripes and Belly","colorIds":[21,38,32,33,8,14]}],"statsRaw":[[600,0.2,0.27,0.5,0],[300,0.1,0.1,0,0],[150,0.1,0.1,0,0],[4000,0.1,0.1,0,0],[400,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0,0],[500,0.06,0,0.5,0]],"taming":{"eats":["Beer Jar","Stimberry"],"nonViolent":true,"specialFoodValues":[{"Key":"Beer Jar","Value":{"d":[45,400]}}],"tamingIneffectiveness":0.16,"affinityNeeded0":5000,"affinityIncreasePL":275,"foodConsumptionBase":0.003156,"foodConsumptionMult":352.06308,"wakeAffinityMult":1.6,"wakeFoodDeplMult":2,"violent":false},"immobilizedBy":["Chain Bola","Large Bear Trap","Plant Species Y"]},{"name":"Compy","breeding":{"gestationTime":0,"incubationTime":2999.760254,"maturationTime":333333.3125,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":24,"eggTempMax":32},"colors":[{"name":"Body","colorIds":[21,23,25,26,28,32,33,8,14]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Feathers","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,8,13,35,14,36]},{"name":"Patterning","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,8,13,35,14,36]},{"name":"Belly","colorIds":[20,22,24,26,27,33,34,13,35,14]}],"statsRaw":[[50,0.2,0.32,0.5,0],[100,0.1,0.1,0,0],[150,0.1,0.1,0,0],[450,0.1,0.1,0,0.15],[25,0.02,0.04,0,0],[1,0.05,0.1,1,0.4],[1,0,0.025,1,0],[25,0.06,0,0.5,0]],"taming":{"eats":["Raw Mutton","Raw Prime Meat","Raw Prime Fish Meat"],"nonViolent":false,"specialFoodValues":[{"Key":"Raw Mutton","Value":{"d":[20,1500]}},{"Key":"Raw Prime Meat","Value":{"d":[20,600]}},{"Key":"Raw Prime Fish Meat","Value":{"d":[10,240]}}],"tamingIneffectiveness":8.333333,"affinityNeeded0":500,"affinityIncreasePL":65,"torporDepletionPS0":1.3,"foodConsumptionBase":0.000868,"foodConsumptionMult":1728.110596,"violent":true},"immobilizedBy":["Bola","Bear Trap","Plant Species Y"]},{"name":"Dilophosaur","breeding":{"gestationTime":0,"incubationTime":4090.581787,"maturationTime":75757.570313,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":28,"eggTempMax":32},"colors":[{"name":"Body","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Back and Face","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Spike Tips","colorIds":[19,21,23,25,26,28,30,32,33,8,14,36]},{"name":"Spine and Spike Base","colorIds":[19,21,23,25,26,28,30,32,33,8,14,36]},{"name":"Frill, Crest and Belly","colorIds":[21,23,25,26,28,32,33,8,14]},{"name":"Legs and Arms","colorIds":[21,23,25,26,28,32,33,8,14]}],"statsRaw":[[130,0.2,0.27,0.5,0],[100,0.1,0.1,0,0],[150,0.1,0.1,0,0],[450,0.1,0.1,0,0.15],[45,0.02,0.04,0,0],[1,0.05,0.1,1,0.4],[1,0,0.025,2,0],[75,0.06,0,0.5,0]],"taming":{"eats":["Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":8.333333,"affinityNeeded0":450,"affinityIncreasePL":22.5,"torporDepletionPS0":0.3,"foodConsumptionBase":0.000868,"foodConsumptionMult":1728.110596,"violent":true},"immobilizedBy":["Bola","Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Head, Neck"}]},{"name":"Dimetrodon","breeding":{"gestationTime":0,"incubationTime":8999.280273,"maturationTime":166666.65625,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":30,"eggTempMax":34},"colors":[{"name":"Body","colorIds":[21,23,25,26,32,33,8,14]},{"name":"Side Fin","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,8,13,35,14]},{"name":"Sail","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,8,13,35,14]},{"name":"Sail Spines","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,8,13,35,14]},{"name":"Legs and Belly","colorIds":[20,21,22,23,24,25,26,27,32,33,34,8,13,35,14]},{"name":null,"colorIds":[]}],"statsRaw":[[350,0.2,0.27,0.65,0],[300,0.1,0.1,0,0],[500,0.1,0.1,0,0],[1500,0.1,0.1,0,0],[250,0.02,0.04,0,0],[1,0.02,0.04,0.8,0.5],[1,0,0.025,0,0],[750,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Quetzal","nonViolent":false,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[79.919998,400]}}],"tamingIneffectiveness":2.5,"affinityNeeded0":1500,"affinityIncreasePL":90,"torporDepletionPS0":25,"foodConsumptionBase":0.001736,"foodConsumptionMult":160.010239,"violent":true},"immobilizedBy":["Chain Bola","Large Bear Trap","Plant Species Y"]},{"name":"Dimorphodon","breeding":{"gestationTime":0,"incubationTime":4864.475586,"maturationTime":90090.085938,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":35,"eggTempMax":38},"colors":[{"name":"Body","colorIds":[20,21,22,23,24,32,33,34,8,13,35,14,36]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Face and Wing Membrane","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,8,13,35,14,36]},{"name":"Feathers","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,8,13,35,14,36]}],"statsRaw":[[125,0.2,0.27,0.5,0],[150,0.1,0.1,0,0],[150,0.1,0.1,0,0],[900,0.1,0.1,0,0],[50,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0,0],[100,0.06,0,0.5,0]],"taming":{"eats":["Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":4.166666,"affinityNeeded0":900,"affinityIncreasePL":45,"torporDepletionPS0":0.8333,"foodConsumptionBase":0.001302,"foodConsumptionMult":1152.07373,"violent":true},"immobilizedBy":["Bola","Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Head"}]},{"name":"Diplocaulus","breeding":{"gestationTime":0,"incubationTime":17998.560547,"maturationTime":133333.328125,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":-75,"eggTempMax":75},"colors":[{"name":"Body","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Fins","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,14]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Body Highlights","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,14]},{"name":"Underbelly","colorIds":[21,23,25,26,28,32,33,8,14]}],"statsRaw":[[190,0.2,0.27,0.5,0],[165,0.1,0.1,0,0],[1050,0.1,0.1,0,0],[1500,0.1,0.1,0,0],[150,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.25],[1,0,0.025,0,0],[220,0.06,0,0.5,0]],"doesNotUseOxygen":true,"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Archaeopteryx","nonViolent":false,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[119.969994,400]}}],"tamingIneffectiveness":2.5,"affinityNeeded0":2000,"affinityIncreasePL":75,"torporDepletionPS0":0.3,"foodConsumptionBase":0.001543,"foodConsumptionMult":225,"violent":true},"immobilizedBy":["Bola","Bear Trap","Plant Species Y"]},{"name":"Diplodocus","breeding":{"gestationTime":0,"incubationTime":17998.560547,"maturationTime":333333.3125,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":26,"eggTempMax":29},"colors":[{"name":"Sides, Legs, and Accents","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Spines","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"unknown","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"unknown","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Back","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Underside","colorIds":[21,23,25,26,32,33,8,14]}],"statsRaw":[[1700,0.2,0.27,0.5,0],[550,0.1,0.1,0,0],[300,0.1,0.1,0,0],[10000,0.1,0.1,0,0],[800,0.02,0.04,0,0],[1,0,0,0.5,0.4],[1,0,0.025,0,0],[3000,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Vegetables","Mejoberry","Berries","Stimberry"],"favoriteKibble":"Lystrosaurus","nonViolent":true,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[53.279999,275]}}],"tamingIneffectiveness":0.08,"affinityNeeded0":7500,"affinityIncreasePL":375,"torporDepletionPS0":0.75,"foodConsumptionBase":0.007716,"foodConsumptionMult":180.001144,"wakeAffinityMult":3,"wakeFoodDeplMult":2,"violent":true},"immobilizedBy":["Chain Bola","Large Bear Trap"]},{"name":"Direbear","breeding":{"gestationTime":14285.713867,"incubationTime":0,"maturationTime":166666.65625,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"Back and Head","colorIds":[21,22,32,33,34,8,13,35,14,37,37,37,37,37,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":"Belly and Legs","colorIds":[21,22,32,33,34,8,13,35,14,37,38,39,39,39,39,39]}],"statsRaw":[[400,0.2,0.27,0.5,0],[500,0.1,0.1,0,0],[270,0.1,0.1,0,0],[3000,0.1,0.1,0,0],[650,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,1.226,0],[1000,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Mejoberry","Cooked Meat","Berries","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Carnotaurus","nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":1.25,"affinityNeeded0":4000,"affinityIncreasePL":125,"torporDepletionPS0":0.9,"foodConsumptionBase":0.003156,"foodConsumptionMult":150,"violent":true},"immobilizedBy":["Chain Bola","Large Bear Trap"]},{"name":"Direwolf","breeding":{"gestationTime":15037.592773,"incubationTime":0,"maturationTime":175438.59375,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"Body","colorIds":[32,33,34,8,8,13,35,14,18,21]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Tail, Back, and Face","colorIds":[32,33,34,8,8,13,35,14,18,21]},{"name":"Feet","colorIds":[32,33,34,8,8,13,35,14,18,21]}],"statsRaw":[[330,0.2,0.27,0.66,0],[260,0.1,0.1,0,0],[150,0.1,0.1,0,0],[1200,0.1,0.1,0,0.15],[170,0.02,0.04,0,0],[1,0.05,0.1,0.4,0.35],[1,0,0.025,0.3,0],[450,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Carnotaurus","nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":3.125,"affinityNeeded0":1200,"affinityIncreasePL":60,"torporDepletionPS0":0.5,"foodConsumptionBase":0.001543,"foodConsumptionMult":288.039185,"violent":true},"immobilizedBy":["Bola","Bear Trap","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":2.5,"Value":"Head"}]},{"name":"Dodo","breeding":{"gestationTime":0,"incubationTime":2999.760254,"maturationTime":55555.554688,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":22,"eggTempMax":30},"colors":[{"name":"Body","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,8,13,35,14]},{"name":"Face","colorIds":[21,23,32,33,8,14]},{"name":"Beak","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Forehead, Neck, and Feet","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Head","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,8,13,35,14,36]},{"name":"Wings and Patterning","colorIds":[19,21,23,25,26,28,30,32,33,8,14]}],"statsRaw":[[40,0.2,0.27,0.5,0],[100,0.1,0.1,0,0],[150,0.1,0.1,0,0],[450,0.1,0.1,0,0.15],[50,0.02,0.04,0,0],[1,0.05,0.1,1,0.4],[1,0,0.025,2,0],[30,0.06,0,0.5,0]],"taming":{"eats":["Vegetables","Mejoberry","Berries","Stimberry"],"nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":1.333333,"affinityNeeded0":450,"affinityIncreasePL":22.5,"torporDepletionPS0":0.3,"foodConsumptionBase":0.000868,"foodConsumptionMult":2880.184326,"violent":true},"immobilizedBy":["Bola","Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Head, Neck"}]},{"name":"Doedicurus","breeding":{"gestationTime":17857.142578,"incubationTime":0,"maturationTime":208333.328125,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"Shell and Plates","colorIds":[21,22,32,33,34,8,13,35,14,37,37,37,37,37,38,39,29]},{"name":"Spikes and Claws","colorIds":[21,22,32,33,34,8,13,35,14,37,37,37,37,37,38,39,29]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Shell Patterning","colorIds":[21,22,32,33,34,8,13,35,14,37,37,37,37,37,38,39,29]},{"name":"Underside","colorIds":[21,22,32,33,34,8,13,35,14,37,37,37,37,37,38,39,29]}],"statsRaw":[[850,0.2,0.27,0.5,0],[300,0.1,0.1,0,0],[150,0.1,0.1,0,0],[3000,0.1,0.1,0,0.15],[250,0.02,0.04,0,0],[1,0.05,0.1,1,0.4],[1,0,0.025,1.25,0],[800,0.06,0,0.5,0]],"TamedBaseHealthMultiplier":0.9,"taming":{"eats":["Kibble","Vegetables","Mejoberry","Berries","Stimberry"],"favoriteKibble":"Dilo","nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":0.2,"affinityNeeded0":4000,"affinityIncreasePL":150,"torporDepletionPS0":0.75,"foodConsumptionBase":0.003156,"foodConsumptionMult":176.03154,"violent":true},"immobilizedBy":["Chain Bola","Large Bear Trap","Plant Species Y"]},{"name":"Dragon","statsRaw":[[20000,0.2,0.2,0.3,0],[400,0.1,0.1,0,0],[2000,0.1,0.1,0,0],[2600,0.1,0.1,0,0],[3000,0.02,0.02,0,0],[1,0.05,0.04,0.3,0.3],[1,0,0,0,0],[350,0.06,0,0.5,0]],"taming":{"nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":1.5,"affinityNeeded0":8500,"affinityIncreasePL":150,"foodConsumptionBase":0.002066,"foodConsumptionMult":150,"violent":false}},{"name":"Dung Beetle","colors":[{"name":"Shell","colorIds":[20,22,24,26,27,29,31,14]},{"name":"Legs","colorIds":[20,22,24,26,27,29,31,33,34,13,35,14]},{"name":null,"colorIds":[]},{"name":"Palps and Leg Patterning","colorIds":[19,21,23,25,26,28,30,32,33,8,14]},{"name":"Shell Patterning","colorIds":[20,22,24,26,27,29,31,14]},{"name":"Underside","colorIds":[20,22,24,26,27,29,31,33,34,13,35,14]}],"statsRaw":[[200,0.2,0.135,0.5,0],[100,0.1,0.1,0,0],[150,0.1,0.1,0,0],[900,0.1,0.1,0,0],[5,0.02,0.08,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0,0],[200,0.06,0,0.5,0]],"taming":{"eats":["Large Animal Feces","Medium Animal Feces","Spoiled Meat","Small Animal Feces","Human Feces","Raw Meat","Raw Fish Meat"],"nonViolent":true,"specialFoodValues":[{"Key":"Large Animal Feces","Value":{"d":[37.5,225]}},{"Key":"Medium Animal Feces","Value":{"d":[25,150]}},{"Key":"Small Animal Feces","Value":{"d":[12.5,75]}},{"Key":"Human Feces","Value":{"d":[10,60]}},{"Key":"Raw Meat","Value":{"d":[15,15]}},{"Key":"Raw Fish Meat","Value":{"d":[7.5,6]}}],"tamingIneffectiveness":4.166667,"affinityNeeded0":900,"affinityIncreasePL":50,"foodConsumptionBase":0.001488,"foodConsumptionMult":336.021515,"wakeAffinityMult":1,"wakeFoodDeplMult":2,"violent":false},"immobilizedBy":["Bola","Bear Trap","Plant Species Y"]},{"name":"Dunkleosteus","breeding":{"gestationTime":28571.427734,"incubationTime":0,"maturationTime":333333.3125,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"Body","colorIds":[19,20,21,22,23,24,28,29,14]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Spots","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Head","colorIds":[21,23,28,32,33,8,14,36]}],"statsRaw":[[710,0.2,0.27,0.3,0],[200,0.1,0.1,0,0],[150,0.1,0.1,0,0],[2000,0.1,0.1,0,0.15],[910,0.02,0.04,0,0],[1,0.05,0.1,1,0.4],[1,0,0.025,0,0],[1150,0.06,0,0.5,0]],"doesNotUseOxygen":true,"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Titanoboa","nonViolent":false,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[79.800003,400]}}],"tamingIneffectiveness":3.275,"affinityNeeded0":1300,"affinityIncreasePL":60,"torporDepletionPS0":1,"foodConsumptionBase":0.001852,"foodConsumptionMult":199.983994,"violent":true}},{"name":"Electrophorus","breeding":{"gestationTime":0,"incubationTime":17998.560547,"maturationTime":166666.65625,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":-75,"eggTempMax":75},"colors":[{"name":"Body Main","colorIds":[19,20,21,22,23,24,25,28,29,30,31,14,36]},{"name":"Fins","colorIds":[19,20,21,22,28,30,43,48]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"**Not Used**","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,14,36]},{"name":"Belly","colorIds":[19,43,21,42,23,24,25,28,48,30,49,14,36]}],"statsRaw":[[180,0.2,0.27,-0.2,0],[165,0.1,0.1,0,0],[1050,0.1,0.1,0,0],[1500,0.1,0.1,0,0],[150,0.02,0.04,0,0],[1,0.05,0.1,-0.25,0.25],[1,0,0.025,0,0],[175,0.06,0,0.5,0]],"doesNotUseOxygen":true,"taming":{"eats":["Raw Mutton","Cooked Lamb Chop","Bio Toxin","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"nonViolent":true,"specialFoodValues":[{"Key":"Bio Toxin","Value":{"d":[45,200]}}],"tamingIneffectiveness":2.5,"affinityNeeded0":2250,"affinityIncreasePL":90,"foodConsumptionBase":0.002929,"foodConsumptionMult":420,"wakeAffinityMult":1.6,"wakeFoodDeplMult":4,"violent":false}},{"name":"Equus","breeding":{"gestationTime":47619.042969,"incubationTime":0,"maturationTime":208333.328125,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"BodyMain","colorIds":[9,32,33,34,8,13,35,14,56,42,55]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Stripes","colorIds":[21,22,32,33,34,8,13,35,14,37,37,37,37,37,38,39,55]},{"name":"Underbelly and Highlights","colorIds":[21,22,32,33,34,8,13,35,14,37,37,37,37,37,38,39,55]}],"statsRaw":[[240,0.2,0.27,0.5,0],[560,0.1,0.1,0,0],[150,0.1,0.1,0,0],[1500,0.1,0.1,0,0],[350,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.0175,0.2,0],[420,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Vegetables","Sweet Vegetable Cake","Mejoberry","Berries","Stimberry"],"favoriteKibble":"Troodon","nonViolent":true,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[13.33,400]}},{"Key":"Vegetables","Value":{"d":[20,210]}},{"Key":"Sweet Vegetable Cake","Value":{"d":[20,20]}},{"Key":"Mejoberry","Value":{"d":[30,8]}},{"Key":"Berries","Value":{"d":[20,5]}}],"tamingIneffectiveness":0.4,"affinityNeeded0":3600,"affinityIncreasePL":180,"foodConsumptionBase":0.001929,"foodConsumptionMult":432.002777,"wakeAffinityMult":1.6,"wakeFoodDeplMult":2,"violent":false},"immobilizedBy":["Bola","Bear Trap","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":2,"Value":"Head"}]},{"name":"Gallimimus","breeding":{"gestationTime":0,"incubationTime":5142.445801,"maturationTime":95238.09375,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":24,"eggTempMax":28},"colors":[{"name":"Body","colorIds":[19,20,21,22,23,24,25,26,27,32,33,34,8,13,35,14]},{"name":"Feathers","colorIds":[20,22,24,26,27,33,34,13,35,14,36]},{"name":null,"colorIds":[]},{"name":"unknown","colorIds":[20,21,22,23,24,25,26,27,32,33,34,8,13,35,14,36]},{"name":"Spine and Feather Tips","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Lower Body","colorIds":[19,21,23,25,26,32,33,8,14]}],"statsRaw":[[150,0.2,0.27,0.5,0],[300,0.1,0.1,0,0],[150,0.1,0.1,0,0],[1000,0.1,0.1,0,0],[270,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0,0],[420,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Vegetables","Mejoberry","Berries","Stimberry"],"favoriteKibble":"Dimetrodon","nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":0.4,"affinityNeeded0":2200,"affinityIncreasePL":95,"torporDepletionPS0":4.175,"foodConsumptionBase":0.001929,"foodConsumptionMult":432.002777,"violent":true},"immobilizedBy":["Bola","Bear Trap","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":2,"Value":"Head"}]},{"name":"Giganotosaurus","breeding":{"gestationTime":0,"incubationTime":179985.609375,"maturationTime":1010100.875,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":43,"eggTempMax":44},"colors":[{"name":"Body","colorIds":[20,23,24,25,26,27,32,33,34,8,13,35,14]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Back, Hands, and Feet","colorIds":[20,23,25,26,32,33,8,14]},{"name":"Belly","colorIds":[20,26,27,33,34,13,35,14]}],"statsRaw":[[80000,0.0005,0.002,-63000,0],[400,0.0005,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],[1,0.05,0.05,-0.8,0],[1,0,0.0031,0,0],[10000,0.06,0,0,0]],"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Quetzal","nonViolent":false,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[79.919998,400]}}],"tamingIneffectiveness":1.25,"affinityNeeded0":5000,"affinityIncreasePL":160,"torporDepletionPS0":120.000008,"foodConsumptionBase":0.002314,"foodConsumptionMult":160.056335,"violent":true},"immobilizedBy":["Large Bear Trap"]},{"name":"Gigantopithecus","breeding":{"gestationTime":23809.521484,"incubationTime":0,"maturationTime":277777.75,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"Fur Mane","colorIds":[21,22,32,33,34,8,13,35,14,37,37,37,37,37,38,39]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Fur Accent","colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":"Skins","colorIds":[21,22,32,33,34,8,13,35,14,37,38,39,39,39,39,39]}],"statsRaw":[[640,0.1,0.27,0.5,0],[300,0.1,0.1,0,0],[150,0.1,0.1,0,0],[1500,0.1,0.1,0,0],[220,0.02,0.04,0,0],[1,0.04,0.1,0.5,0.4],[1,0,0.025,0.06,0],[1100,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Vegetables","Mejoberry","Berries","Stimberry"],"favoriteKibble":"Titanoboa","nonViolent":true,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[79.979996,300]}}],"tamingIneffectiveness":2.5,"affinityNeeded0":4600,"affinityIncreasePL":75,"foodConsumptionBase":0.004156,"foodConsumptionMult":176.03154,"wakeAffinityMult":1.65,"wakeFoodDeplMult":2,"violent":false},"immobilizedBy":["Bola","Chain Bola","Bear Trap","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3.5,"Value":"Head"}]},{"name":"Ichthyornis","breeding":{"gestationTime":0,"incubationTime":5999.520508,"maturationTime":133333.328125,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":29,"eggTempMax":32},"colors":[{"name":"Main Body","colorIds":[22,21,32,33,34,8,13,35,14,36,28]},{"name":"Feet","colorIds":[19,21,23,46,28,30,32,33,8,14]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Facial Highlights","colorIds":[22,24,33,34,13,35,14]}],"statsRaw":[[100,0.2,0.27,0.5,0],[150,0.1,0.1,0,0],[150,0.1,0.1,0,0],[1000,0.1,0.1,0,0.15],[55,0.02,0.04,0,0],[1,0.05,0.1,0.65,0.4],[1,0,0.025,0.365,0],[120,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Raw Prime Fish Meat","Cooked Prime Fish Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Pegomastax","nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":3.125,"affinityNeeded0":1750,"affinityIncreasePL":85,"torporDepletionPS0":0.3,"foodConsumptionBase":0.001543,"foodConsumptionMult":216.029373,"violent":true},"immobilizedBy":["Bola","Bear Trap","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Neck"}]},{"name":"Ichthy","breeding":{"gestationTime":28571.427734,"incubationTime":0,"maturationTime":95238.09375,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"Body","colorIds":[19,20,21,22,23,24,28,29,14]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Back and Fins","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Belly","colorIds":[21,23,28,32,33,8,14,36]}],"statsRaw":[[275,0.05,0.0675,0.3,0],[300,0.2,0.2,0,0],[150,0.1,0.1,0,0],[1000,0.1,0.1,0,0.15],[250,0.02,0.04,0,0],[1,0.05,0.05,1,0.4],[1,0,0.03,0,0],[300,0.06,0,0.5,0]],"doesNotUseOxygen":true,"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Dodo","nonViolent":true,"specialFoodValues":null,"tamingIneffectiveness":2.5,"affinityNeeded0":1500,"affinityIncreasePL":75,"foodConsumptionBase":0.001929,"foodConsumptionMult":420,"wakeAffinityMult":1.6,"wakeFoodDeplMult":2.5,"violent":false}},{"name":"Iguanodon","breeding":{"gestationTime":0,"incubationTime":5142.445801,"maturationTime":166666.65625,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":24,"eggTempMax":28},"colors":[{"name":"MainBody","colorIds":[42,21,22,23,24,25,45,46,32,33,34,8,13,35,14,52]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Stripes","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Highlights and Belly","colorIds":[43,21,23,25,47,32,37,8,14]}],"statsRaw":[[250,0.2,0.27,0.5,0],[200,0.1,0.1,0,0],[150,0.1,0.1,0,0],[1800,0.1,0.1,0,0],[375,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.02,0,0],[210,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Vegetables","Mejoberry","Berries","Stimberry"],"favoriteKibble":"Microraptor","nonViolent":false,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[90,400]}}],"tamingIneffectiveness":0.4,"affinityNeeded0":2800,"affinityIncreasePL":140,"torporDepletionPS0":0.3,"foodConsumptionBase":0.001929,"foodConsumptionMult":864.005554,"violent":true},"immobilizedBy":["Bola","Bear Trap","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":2,"Value":"Head"}]},{"name":"Kairuku","breeding":{"gestationTime":0,"incubationTime":5454.108887,"maturationTime":101010.101563,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":22,"eggTempMax":30},"colors":[{"name":"Back and Markings","colorIds":[20,22,24,27,34,13,35,14]},{"name":"Beak","colorIds":[19,21,23,28,30,32,33,14,36]},{"name":"Feet","colorIds":[20,22,24,26,27,29,31,33,34,13,35,14]},{"name":null,"colorIds":[]},{"name":"Osteoderms","colorIds":[20,22,24,27,29,31,34,14]},{"name":null,"colorIds":[]}],"statsRaw":[[95,0.2,0.27,0.5,0],[200,0.1,0.1,0,0],[150,0.1,0.1,0,0],[900,0.1,0.1,0,0.15],[70,0.02,0.04,0,0],[1,0.05,0.1,1,0.4],[1,0,0.025,2,0],[300,0.06,0,0.5,0]],"doesNotUseOxygen":true,"taming":{"eats":["Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":4.166667,"affinityNeeded0":900,"affinityIncreasePL":45,"torporDepletionPS0":1,"foodConsumptionBase":0.001389,"foodConsumptionMult":1079.913574,"violent":true},"immobilizedBy":["Bola","Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Neck, Head"}]},{"name":"Kaprosuchus","breeding":{"gestationTime":0,"incubationTime":7199.423828,"maturationTime":133333.328125,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":29,"eggTempMax":35},"colors":[{"name":"Body","colorIds":[23,24,26,27,33,34,13,35,14]},{"name":"Top Fins","colorIds":[23,24,26,27,33,34,13,35,14]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Top Scales","colorIds":[23,24,26,27,33,34,13,35,14]},{"name":"Underbelly","colorIds":[23,24,26,27,33,34,13,35,14]}],"statsRaw":[[200,0.2,0.27,0.5,0],[350,0.1,0.1,0,0],[150,0.1,0.1,0,0],[1200,0.1,0.1,0,0],[140,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0.2,0],[200,0.06,0,0.5,0]],"doesNotUseOxygen":true,"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Tapejara","nonViolent":false,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[119.969994,400]}}],"tamingIneffectiveness":2.5,"affinityNeeded0":2000,"affinityIncreasePL":75,"torporDepletionPS0":0.3,"foodConsumptionBase":0.001543,"foodConsumptionMult":648.088135,"violent":true},"immobilizedBy":["Bola","Bear Trap","Large Bear Trap","Plant Species Y"]},{"name":"Lystrosaurus","breeding":{"gestationTime":0,"incubationTime":2999.760254,"maturationTime":55555.554688,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":24,"eggTempMax":28},"colors":[{"name":"Body","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"unknown","colorIds":[20,22,24,26,27,29,31,33,34,13,35,14]},{"name":"unknown","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"unknown","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Underside","colorIds":[20,22,24,26,27,29,31,33,34,13,35,14]},{"name":"Spine and Feet","colorIds":[21,23,25,26,32,33,8,14]}],"statsRaw":[[90,0.2,0.27,0.5,0],[100,0.1,0.1,0,0],[215,0.1,0.1,0,0],[500,0.1,0.1,0,0.15],[90,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,2,0],[100,0.06,0,0.5,0]],"taming":{"eats":["Rare Flower","Vegetables","Mejoberry","Berries","Stimberry"],"nonViolent":true,"specialFoodValues":[{"Key":"Rare Flower","Value":{"d":[34.9995,200]}}],"tamingIneffectiveness":1.333333,"affinityNeeded0":2000,"affinityIncreasePL":22.5,"foodConsumptionBase":0.000868,"foodConsumptionMult":2880.184326,"wakeAffinityMult":1.6,"wakeFoodDeplMult":1.1,"violent":false},"immobilizedBy":["Bola","Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Head, Neck"}]},{"name":"Mammoth","breeding":{"gestationTime":28571.427734,"incubationTime":0,"maturationTime":296296.28125,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"Fur Mane","colorIds":[20,21,22,23,24,28,29,32,33,34,8,13,35,14,36]},{"name":null,"colorIds":[]},{"name":"Tusks and Toes","colorIds":[23,28,32,33,8,14]},{"name":null,"colorIds":[]},{"name":"Fur Accent","colorIds":[20,21,22,23,24,28,29,32,33,34,8,13,35,14,36]},{"name":"unknown","colorIds":[20,21,22,23,24,28,29,32,33,34,8,13,35,14,36]}],"statsRaw":[[850,0.2,0.27,0.5,0],[330,0.1,0.1,0,0],[150,0.1,0.1,0,0],[5000,0.1,0.1,0,0],[500,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,1.226,0],[550,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Vegetables","Mejoberry","Berries","Stimberry"],"favoriteKibble":"Raptor","nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":0.12,"affinityNeeded0":5000,"affinityIncreasePL":250,"torporDepletionPS0":0.3,"foodConsumptionBase":0.004133,"foodConsumptionMult":192.027771,"violent":true},"immobilizedBy":["Chain Bola","Large Bear Trap"]},{"name":"Manta","breeding":{"gestationTime":28571.427734,"incubationTime":0,"maturationTime":133333.328125,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"Body","colorIds":[19,20,21,22,23,24,28,29,14]},{"name":"Spots","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"unknown","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"unknown","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Patterning","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"unknown","colorIds":[21,23,28,32,33,8,14,36]}],"statsRaw":[[320,0.05,0.0675,0.5,0],[270,0.2,0.2,0,0],[150,0.1,0.1,0,0],[1000,0.1,0.1,0,0.15],[200,0.02,0.04,0,0],[1,0.05,0.05,1,0.4],[1,0,0.05,0,0],[700,0.06,0,0.5,0]],"doesNotUseOxygen":true,"taming":{"eats":["AnglerGel"],"nonViolent":true,"specialFoodValues":[{"Key":"AnglerGel","Value":{"d":[24,50]}}],"tamingIneffectiveness":2.5,"affinityNeeded0":1500,"affinityIncreasePL":75,"foodConsumptionBase":0.001929,"foodConsumptionMult":420,"wakeAffinityMult":1.6,"wakeFoodDeplMult":1,"violent":false}},{"name":"Megaloceros","breeding":{"gestationTime":21978.021484,"incubationTime":0,"maturationTime":256410.25,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"Body","colorIds":[21,22,32,33,34,8,13,35,14,37,37,37,37,37,38,39]},{"name":null,"colorIds":[]},{"name":"Antlers","colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":null,"colorIds":[]},{"name":"Patterning","colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":null,"colorIds":[]}],"statsRaw":[[300,0.2,0.27,0.5,0],[280,0.1,0.1,0,0],[150,0.1,0.1,0,0],[1200,0.1,0.1,0,0],[220,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0.2,0],[175,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Vegetables","Mejoberry","Berries","Stimberry"],"favoriteKibble":"Dimorph","nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":0.5,"affinityNeeded0":1200,"affinityIncreasePL":60,"torporDepletionPS0":0.2915,"foodConsumptionBase":0.001543,"foodConsumptionMult":432.058746,"violent":true},"immobilizedBy":["Bola","Bear Trap","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":2.5,"Value":"Neck"}]},{"name":"Megalodon","breeding":{"gestationTime":28571.427734,"incubationTime":0,"maturationTime":333333.3125,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"Body","colorIds":[19,20,21,22,23,24,28,29,14]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Stripes","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Belly","colorIds":[21,23,28,32,33,8,14,36]}],"statsRaw":[[600,0.2,0.27,0.3,0],[320,0.1,0.1,0,0],[150,0.1,0.1,0,0],[2000,0.1,0.1,0,0.15],[250,0.02,0.04,0,0],[1,0.05,0.1,1,0.4],[1,0,0.025,0,0],[800,0.06,0,0.5,0]],"doesNotUseOxygen":true,"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Spino","nonViolent":false,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[79.919998,400]}}],"tamingIneffectiveness":1.875,"affinityNeeded0":2000,"affinityIncreasePL":100,"torporDepletionPS0":0.3,"foodConsumptionBase":0.001852,"foodConsumptionMult":199.983994,"violent":true}},{"name":"Megalosaurus","breeding":{"gestationTime":0,"incubationTime":5999.520508,"maturationTime":333333.3125,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":26,"eggTempMax":32},"colors":[{"name":"Face, Appendages, Sides","colorIds":[42,21,22,23,24,25,46,45,32,33,34,8,13,35,14]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Feathers, Osteoderms, Patterning","colorIds":[42,22,24,46,45,33,34,13,35,14]},{"name":"Belly","colorIds":[47,23,25,47,28,32,33,8,14]}],"statsRaw":[[1025,0.2,0.27,0.5,0],[300,0.1,0.1,0,0],[150,0.1,0.1,0,0],[2000,0.1,0.1,0,0.15],[300,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0,0],[775,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Oviraptor","nonViolent":false,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[135,400]}}],"tamingIneffectiveness":1.875,"affinityNeeded0":3450,"affinityIncreasePL":150,"torporDepletionPS0":0.3,"foodConsumptionBase":0.001852,"foodConsumptionMult":199.983994,"violent":true},"immobilizedBy":["Chain Bola","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Head, Neck"}]},{"name":"Mesopithecus","breeding":{"gestationTime":9523.80957,"incubationTime":0,"maturationTime":111111.109375,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"Body","colorIds":[21,22,32,33,34,8,13,35,14,37,37,37,37,37,38,39]},{"name":null,"colorIds":[]},{"name":"Eye Markings","colorIds":[21,22,32,33,34,8,13,35,14,37,37,37,37,37,38,39,28,28,28,30,30,30]},{"name":null,"colorIds":[]},{"name":"Back, Lower Limbs, and Tail Tip","colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":"Skins","colorIds":[21,22,32,33,34,8,13,35,14,37,38,39,39,39,39,39]}],"statsRaw":[[115,0.2,0.27,0.5,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],[1,0.05,0.1,1,0.4],[1,0,0.025,1.3,0],[60,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Vegetables","Mejoberry","Berries","Stimberry"],"favoriteKibble":"Dodo","nonViolent":true,"specialFoodValues":null,"tamingIneffectiveness":2.5,"affinityNeeded0":2200,"affinityIncreasePL":65,"foodConsumptionBase":0.000868,"foodConsumptionMult":2880.184326,"wakeAffinityMult":1.65,"wakeFoodDeplMult":2,"violent":false},"immobilizedBy":["Bola","Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Head, Neck"}]},{"name":"Microraptor","breeding":{"gestationTime":0,"incubationTime":5142.445801,"maturationTime":196078.421875,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":24,"eggTempMax":28},"colors":[{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,37,37,37,37,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,39,39,39,39,39]}],"statsRaw":[[130,0.2,0.27,0.5,0],[100,0.1,0.1,0,0],[150,0.1,0.1,0,0],[450,0.1,0.1,0,0.15],[45,0.02,0.04,0,0],[1,0.05,0.1,1,0.4],[1,0,0.025,2,0],[75,0.06,0,0.5,0]],"taming":{"eats":["Rare Flower","Rare Mushroom","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"nonViolent":false,"specialFoodValues":[{"Key":"Rare Flower","Value":{"d":[60,3000]}},{"Key":"Rare Mushroom","Value":{"d":[60.000004,200]}},{"Key":"Raw Mutton","Value":{"d":[50,62.5]}},{"Key":"Cooked Lamb Chop","Value":{"d":[49.945,49.5]}},{"Key":"Raw Prime Meat","Value":{"d":[50,25]}},{"Key":"Cooked Prime Meat","Value":{"d":[49.945,18]}},{"Key":"Raw Prime Fish Meat","Value":{"d":[25,10]}},{"Key":"Raw Meat","Value":{"d":[50,10]}},{"Key":"Cooked Prime Fish Meat","Value":{"d":[25.686001,7.2]}},{"Key":"Cooked Meat","Value":{"d":[25,6]}},{"Key":"Raw Fish Meat","Value":{"d":[25,4]}},{"Key":"Cooked Fish Meat","Value":{"d":[12.5,2.4]}}],"tamingIneffectiveness":8.333333,"affinityNeeded0":450,"affinityIncreasePL":22.5,"torporDepletionPS0":0.8,"foodConsumptionBase":0.000868,"foodConsumptionMult":1728.110596,"violent":true},"immobilizedBy":["Bola","Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Head, Neck"}]},{"name":"Mosasaurus","breeding":{"gestationTime":28571.427734,"incubationTime":0,"maturationTime":1010100.875,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"Body","colorIds":[19,20,21,22,23,24,28,29,14]},{"name":"unknown","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Spinal Ridge","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"unknown","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Sides of the Back","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Underside","colorIds":[21,23,28,32,33,8,14,36]}],"statsRaw":[[3600,0.12,0.243,0.3,0],[400,0.1,0.1,0,0],[150,0.1,0.1,0,0],[8000,0.1,0.1,0,0.15],[1300,0.02,0.04,0,0],[1,0.05,0.1,0.9,0.4],[1,0,0.025,0,0],[3000,0.06,0,0.5,0]],"doesNotUseOxygen":true,"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Quetzal","nonViolent":false,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[79.919998,550]}}],"tamingIneffectiveness":0.06,"affinityNeeded0":11000,"affinityIncreasePL":600,"torporDepletionPS0":12.8,"foodConsumptionBase":0.005,"foodConsumptionMult":180.001144,"violent":true}},{"name":"Moschops","breeding":{"gestationTime":0,"incubationTime":9472.926758,"maturationTime":175438.59375,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":16,"eggTempMax":20},"colors":[{"name":"unknown","colorIds":[22,24,42,33,35,14]},{"name":"unknown","colorIds":[22,24,34,33,13,14]},{"name":"unknown","colorIds":[20,22,24,33,34,13,35,14]},{"name":"unknown","colorIds":[20,22,24,33,34,13,35,14]},{"name":"unknown","colorIds":[20,22,24,33,34,13,35,14]},{"name":"unknown","colorIds":[21,24,42,33,8,14]}],"statsRaw":[[375,0.2,0.27,0.5,0],[300,0.1,0.1,0,0],[150,0.1,0.1,0,0],[300,0.1,0.1,0,0.15],[200,0.02,0.04,0,0],[1,0.05,0.1,1,0.4],[1,0,0.025,0.2,0],[300,0.06,0,0.5,0]],"taming":{"eats":["Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Raw Prime Fish Meat","Cooked Prime Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Vegetables","Raw Fish Meat","Cooked Fish Meat","Berries","Mejoberry"],"nonViolent":true,"specialFoodValues":[{"Key":"Raw Mutton","Value":{"d":[50,500]}},{"Key":"Raw Prime Meat","Value":{"d":[50,200]}},{"Key":"Raw Prime Fish Meat","Value":{"d":[25,80]}},{"Key":"Vegetables","Value":{"d":[20,20]}},{"Key":"Berries","Value":{"d":[20,1.5]}},{"Key":"Mejoberry","Value":{"d":[30,1.5]}}],"tamingIneffectiveness":0.2,"affinityNeeded0":6000,"affinityIncreasePL":150,"torporDepletionPS0":3,"foodConsumptionBase":0.001736,"foodConsumptionMult":176.03154,"wakeAffinityMult":2.5,"wakeFoodDeplMult":1.2,"violent":true},"immobilizedBy":["Bola","Large Bear Trap","Plant Species Y"]},{"name":"Onyc","colors":[{"name":"Main Body","colorIds":[20,22,24,33,34,13,35,14]},{"name":"Claws","colorIds":[20,22,24,33,34,13,35,14]},{"name":"Membrane Shading","colorIds":[21,23,28,32,33,8,14]},{"name":null,"colorIds":[]},{"name":"Abdomen and Legs","colorIds":[21,23,28,32,33,8,14]},{"name":"Wing Membrane","colorIds":[21,23,28,32,33,8,14]}],"statsRaw":[[250,0.2,0.27,0.5,0],[100,0.1,0.1,0,0],[150,0.1,0.1,0,0],[1500,0.1,0.1,0,0],[50,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0,0],[200,0.06,0,0.5,0]],"taming":{"eats":["Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"nonViolent":true,"specialFoodValues":null,"tamingIneffectiveness":2.5,"affinityNeeded0":3000,"affinityIncreasePL":90,"foodConsumptionBase":0.002893,"foodConsumptionMult":192.034409,"wakeAffinityMult":1,"wakeFoodDeplMult":2,"violent":false}},{"name":"Oviraptor","breeding":{"gestationTime":0,"incubationTime":4090.581787,"maturationTime":75757.570313,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":26,"eggTempMax":30},"colors":[{"name":"Body","colorIds":[20,21,22,23,24,25,26,27,32,33,34,8,13,35,14]},{"name":"Crest and Beak","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,8,13,35,14,36]},{"name":"Feathers","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,8,13,35,14]},{"name":null,"colorIds":[]},{"name":"Patterning","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Belly","colorIds":[21,23,25,26,28,32,33,8,14]}],"statsRaw":[[140,0.2,0.27,0.5,0],[120,0.1,0.1,0,0],[150,0.1,0.1,0,0],[900,0.1,0.1,0,0.15],[100,0.02,0.04,0,0],[1,0.05,0.1,1,0.4],[1,0,0.025,1,0.15],[125,0.06,0,0.5,0]],"taming":{"eats":["Giganotosaurus Egg","Quetzal Egg","Rex Egg","Spino Egg","Bronto Egg","Carno Egg","Archaeopteryx Egg","Ankylo Egg","Oviraptor Egg","Baryonyx Egg","Pachyrhino Egg","Allosaurus Egg","Dimetrodon Egg","Dinosaur Egg"],"nonViolent":false,"specialFoodValues":[{"Key":"Giganotosaurus Egg","Value":{"d":[300,1200]}},{"Key":"Quetzal Egg","Value":{"d":[200,550]}},{"Key":"Rex Egg","Value":{"d":[200,100]}},{"Key":"Spino Egg","Value":{"d":[137.5,80]}},{"Key":"Bronto Egg","Value":{"d":[250,60]}},{"Key":"Carno Egg","Value":{"d":[137.5,30]}},{"Key":"Archaeopteryx Egg","Value":{"d":[20,9]}},{"Key":"Ankylo Egg","Value":{"d":[25,9]}},{"Key":"Oviraptor Egg","Value":{"d":[30,9]}},{"Key":"Baryonyx Egg","Value":{"d":[35,9]}},{"Key":"Pachyrhino Egg","Value":{"d":[45,9]}},{"Key":"Allosaurus Egg","Value":{"d":[55,9]}},{"Key":"Dimetrodon Egg","Value":{"d":[80,9]}},{"Key":"Dinosaur Egg","Value":{"d":[100,9]}}],"tamingIneffectiveness":16.666668,"affinityNeeded0":960,"affinityIncreasePL":42,"torporDepletionPS0":0.208,"foodConsumptionBase":0.001302,"foodConsumptionMult":768.049133,"violent":true},"immobilizedBy":["Bola","Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Head, Neck"}]},{"name":"Ovis","breeding":{"gestationTime":15037.592773,"incubationTime":0,"maturationTime":175438.59375,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,37,37,37,37,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,39,39,39,39,39]}],"statsRaw":[[100,0.2,0.27,0.5,0],[100,0.1,0.1,0,0],[150,0.1,0.1,0,0],[1200,0.1,0.1,0,0.15],[90,0.02,0.04,0,0],[1,0.05,0.1,1,0.4],[1,0,0.025,0,0],[85,0.06,0,0.5,0]],"taming":{"eats":["Sweet Vegetable Cake"],"nonViolent":true,"specialFoodValues":[{"Key":"Sweet Vegetable Cake","Value":{"d":[20,200000]}}],"tamingIneffectiveness":3.125,"affinityNeeded0":1200,"affinityIncreasePL":60,"foodConsumptionBase":0.003156,"foodConsumptionMult":1584.283936,"wakeAffinityMult":1.6,"wakeFoodDeplMult":2,"violent":false},"immobilizedBy":["Bola","Bear Trap","Plant Species Y"]},{"name":"Pachy","breeding":{"gestationTime":0,"incubationTime":5142.445801,"maturationTime":95238.09375,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":24,"eggTempMax":28},"colors":[{"name":"Body","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Spikes and Claws","colorIds":[20,21,22,23,24,25,26,27,32,33,34,8,13,35,14]},{"name":"Beak and Plates","colorIds":[19,21,23,25,26,28,30]},{"name":"Body Accent","colorIds":[21,23,25,26,28,32,33,8,14]}],"statsRaw":[[175,0.2,0.27,0.5,0],[150,0.1,0.1,0,0],[150,0.1,0.1,0,0],[1200,0.1,0.1,0,0],[150,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0.2,0],[160,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Vegetables","Mejoberry","Berries","Stimberry"],"favoriteKibble":"Dilo","nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":0.5,"affinityNeeded0":1200,"affinityIncreasePL":60,"torporDepletionPS0":0.2666,"foodConsumptionBase":0.001543,"foodConsumptionMult":648.088135,"violent":true},"immobilizedBy":["Bola","Bear Trap","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":0.125,"Value":"Head, Neck"}]},{"name":"Pachyrhinosaurus","breeding":{"gestationTime":0,"incubationTime":8999.280273,"maturationTime":166666.65625,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":22,"eggTempMax":28},"colors":[{"name":"unknown","colorIds":[42,22,24,46,45,33,34,13,35,14]},{"name":null,"colorIds":[]},{"name":"unknown","colorIds":[20,22,24,46,45,33,34,13,35,14]},{"name":null,"colorIds":[]},{"name":"unknown","colorIds":[20,22,24,46,45,29,31,33,34,13,35,14]},{"name":"unknown","colorIds":[21,23,25,47,32,33,8,14]}],"statsRaw":[[375,0.2,0.27,0.5,0],[150,0.1,0.1,0,0],[150,0.1,0.1,0,0],[3000,0.1,0.1,0,0],[365,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0,0],[250,0.06,0,0.5,0]],"taming":{"eats":["Bug Repellant","Vegetables","Mejoberry","Berries","Stimberry"],"nonViolent":false,"specialFoodValues":[{"Key":"Bug Repellant","Value":{"d":[25,200]}}],"tamingIneffectiveness":0.2,"affinityNeeded0":4500,"affinityIncreasePL":175,"torporDepletionPS0":3.5,"foodConsumptionBase":0.003156,"foodConsumptionMult":352.06308,"violent":true},"immobilizedBy":["Chain Bola","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":0.15,"Value":"Head"}]},{"name":"Paracer","breeding":{"gestationTime":28571.427734,"incubationTime":0,"maturationTime":333333.3125,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"Body","colorIds":[21,22,32,33,34,8,13,35,14,37,37,37,37,37,38,39]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Back","colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":"Underside","colorIds":[21,22,32,33,34,8,13,35,14,37,38,39,39,39,39,39]}],"statsRaw":[[1140,0.2,0.27,0.5,0],[300,0.1,0.1,0,0],[150,0.1,0.1,0,0],[6500,0.1,0.1,0,0],[850,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0,0],[1300,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Vegetables","Mejoberry","Berries","Stimberry"],"favoriteKibble":"Pachy","nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":0.0923,"affinityNeeded0":6500,"affinityIncreasePL":325,"torporDepletionPS0":0.9025,"foodConsumptionBase":0.0035,"foodConsumptionMult":327.6474,"violent":true},"immobilizedBy":["Chain Bola","Large Bear Trap"]},{"name":"Parasaur","breeding":{"gestationTime":0,"incubationTime":5142.445801,"maturationTime":95238.09375,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":24,"eggTempMax":28},"colors":[{"name":"Body","colorIds":[19,20,21,22,23,24,25,26,27,32,33,34,8,13,35,14]},{"name":"Beak and Frill","colorIds":[20,22,24,26,27,33,34,13,35,14,36]},{"name":"Frill Edge","colorIds":[19,21,23,25,26,32,33,8,14]},{"name":"Crest","colorIds":[20,21,22,23,24,25,26,27,32,33,34,8,13,35,14,36]},{"name":"Patterning","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Belly","colorIds":[19,21,23,25,26,32,33,8,14]}],"statsRaw":[[200,0.2,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],[280,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0.67,0],[150,0.06,0,0.5,0]],"taming":{"eats":["Vegetables","Mejoberry","Berries","Stimberry"],"nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":0.4,"affinityNeeded0":1500,"affinityIncreasePL":75,"torporDepletionPS0":0.3,"foodConsumptionBase":0.001929,"foodConsumptionMult":864.005554,"violent":true},"immobilizedBy":["Bola","Bear Trap","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":2,"Value":"Head"}]},{"name":"Pegomastax","breeding":{"gestationTime":0,"incubationTime":4090.581787,"maturationTime":111111.109375,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":28,"eggTempMax":32},"colors":[{"name":"Body Main","colorIds":[34,20,21,22,23,24,28,14,13,33]},{"name":"Quills","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Beak","colorIds":[21,23,33,47,43,28,50]},{"name":null,"colorIds":[]},{"name":"Back Fur","colorIds":[37,39,33,34,13,35,14]},{"name":"Limb Highlights","colorIds":[21,23,28,32,33,8,14,36]}],"statsRaw":[[200,0.2,0.27,0.5,0],[100,0.1,0.1,0,0],[150,0.1,0.1,0,0],[450,0.1,0.1,0,0.15],[55,0.02,0.04,0,0],[1,0.05,0.1,1,0.4],[1,0,0.025,0.5,0],[30,0.06,0,0.5,0]],"taming":{"eats":["Vegetables","Mejoberry","Berries","Stimberry"],"nonViolent":true,"specialFoodValues":null,"tamingIneffectiveness":1.333333,"affinityNeeded0":1900,"affinityIncreasePL":35,"foodConsumptionBase":0.000868,"foodConsumptionMult":2880.184326,"wakeAffinityMult":1.6,"wakeFoodDeplMult":2,"violent":false},"immobilizedBy":["Bola","Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Head, Neck"}]},{"name":"Pelagornis","breeding":{"gestationTime":0,"incubationTime":5999.520508,"maturationTime":133333.328125,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":29,"eggTempMax":32},"colors":[{"name":"Feathers","colorIds":[19,20,21,22,23,24,25,26,27,32,33,34,8,13,35,14,36]},{"name":"unknown","colorIds":[19,21,23,25,26,28,30,32,33,8,14]},{"name":null,"colorIds":[]},{"name":"unknown","colorIds":[19,21,23,25,26,28,30,32,33,8,14]},{"name":null,"colorIds":[]},{"name":"Skin and Wind/Tail Tips","colorIds":[20,22,24,26,27,33,34,13,35,14]}],"statsRaw":[[240,0.2,0.27,0.5,0],[180,0.05,0.04,0,0],[150,0.1,0.1,0,0],[1200,0.1,0.1,0,0.15],[150,0.02,0.03,0,0],[1,0.05,0.075,0.65,0.4],[1,0,0,0.365,0],[120,0.06,0,0.5,0]],"NoImprintingForSpeed":true,"taming":{"eats":["Kibble","Raw Prime Fish Meat","Cooked Prime Fish Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Pegomastax","nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":3.125,"affinityNeeded0":1200,"affinityIncreasePL":60,"torporDepletionPS0":0.3,"foodConsumptionBase":0.001543,"foodConsumptionMult":216.029373,"violent":true},"immobilizedBy":["Bola","Bear Trap","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Neck"}]},{"name":"Phiomia","breeding":{"gestationTime":35714.285156,"incubationTime":0,"maturationTime":416666.65625,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"Body","colorIds":[23,24,32,33,34,8,13,35,14]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Spots 1","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,8,13,35,14,36]},{"name":"Spots 2","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,8,13,35,14,36]}],"statsRaw":[[300,0.2,0.27,0.5,0],[300,0.1,0.1,0,0],[150,0.1,0.1,0,0],[3000,0.1,0.1,0,0.15],[200,0.02,0.04,0,0],[1,0.05,0.1,1,0.4],[1,0,0.025,0.35,0],[240,0.06,0,0.5,0]],"taming":{"eats":["Vegetables","Mejoberry","Berries","Stimberry"],"nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":0.2,"affinityNeeded0":3000,"affinityIncreasePL":150,"torporDepletionPS0":0.3,"foodConsumptionBase":0.003156,"foodConsumptionMult":1584.283936,"violent":true},"immobilizedBy":["Bola","Bear Trap","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Head"}]},{"name":"Plesiosaur","breeding":{"gestationTime":28571.427734,"incubationTime":0,"maturationTime":666666.625,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"Body","colorIds":[19,20,21,22,23,24,28,29,14]},{"name":"Facial Fins","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"unknown","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":null,"colorIds":[]},{"name":"Back","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Belly","colorIds":[21,23,28,32,33,8,14,36]}],"statsRaw":[[2400,0.12,0.162,0.15,0],[200,0.1,0.1,0,0],[150,0.1,0.1,0,0],[5000,0.1,0.1,0,0.15],[800,0.02,0.04,0,0],[1,0.05,0.1,1,0.4],[1,0,0.025,0,0],[1600,0.06,0,0.5,0]],"doesNotUseOxygen":true,"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Rex","nonViolent":false,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[79.919998,400]}}],"tamingIneffectiveness":0.75,"affinityNeeded0":5000,"affinityIncreasePL":250,"torporDepletionPS0":2.133333,"foodConsumptionBase":0.003858,"foodConsumptionMult":180.001144,"violent":true}},{"name":"Procoptodon","breeding":{"gestationTime":14285.713867,"incubationTime":0,"maturationTime":166666.65625,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"Body","colorIds":[21,22,32,33,34,8,13,35,14,37,37,37,37,37,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":"Back Stripes","colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":"Inner Ear, Snout, Belly, Appendages","colorIds":[21,22,32,33,34,8,13,35,14,37,38,39,39,39,39,39]}],"statsRaw":[[400,0.2,0.27,0.75,0],[350,0.1,0.1,0.1,0],[150,0.1,0.1,0,0],[1500,0.1,0.1,0,0],[450,0.02,0.04,0,0],[1,0.05,0.1,0.2,0.25],[1,0,0.02,0,0],[350,0.06,0,0.5,0]],"taming":{"eats":["Rare Mushroom","Plant Species X Seed"],"nonViolent":false,"specialFoodValues":[{"Key":"Rare Mushroom","Value":{"d":[75,90]}},{"Key":"Plant Species X Seed","Value":{"d":[50,45]}}],"tamingIneffectiveness":0.2,"affinityNeeded0":3000,"affinityIncreasePL":150,"torporDepletionPS0":0.6666,"foodConsumptionBase":0.001929,"foodConsumptionMult":648.00415,"violent":true},"immobilizedBy":["Bola","Large Bear Trap","Plant Species Y"]},{"name":"Pteranodon","breeding":{"gestationTime":0,"incubationTime":5999.520508,"maturationTime":133333.328125,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":29,"eggTempMax":32},"colors":[{"name":"Patterning","colorIds":[19,20,21,22,23,24,25,26,27,32,33,34,8,13,35,14,36]},{"name":"Wing Base","colorIds":[19,21,23,25,26,28,30,32,33,8,14]},{"name":"Face, Crest, and Hands","colorIds":[20,22,24,26,27,29,31,33,34,13,35,14]},{"name":"Inner Crest","colorIds":[19,21,23,25,26,28,30,32,33,8,14]},{"name":"Wing Membrane","colorIds":[19,21,23,25,26,28,30,32,33,8,14]},{"name":"Body","colorIds":[20,22,24,26,27,33,34,13,35,14]}],"statsRaw":[[210,0.2,0.15,0.5,0],[150,0.05,0.04,0,0],[150,0.1,0.1,0,0],[1200,0.1,0.1,0,0.15],[120,0.02,0.03,0,0],[1,0.05,0.075,0.65,0.4],[1,0,0,0.35,0],[120,0.06,0,0.5,0]],"TamedBaseHealthMultiplier":0.9,"NoImprintingForSpeed":true,"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Dodo","nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":3.125,"affinityNeeded0":1200,"affinityIncreasePL":60,"torporDepletionPS0":0.3,"foodConsumptionBase":0.001543,"foodConsumptionMult":216.029373,"violent":true},"immobilizedBy":["Bola","Chain Bola","Bear Trap","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Head"}]},{"name":"Pulmonoscorpius","colors":[{"name":"Plate Edges","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,8,13,35,14,36]},{"name":"Claw Stripes, Barb Patterning, Body Joints","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,8,13,35,14,36]},{"name":"Limb Joints","colorIds":[19,21,23,25,26,28,30,32,33,8,14]},{"name":"Body","colorIds":[19,21,23,25,26,28,30,32,33,8,14]},{"name":"Plates","colorIds":[20,22,24,26,27,29,31,33,34,13,35,14]},{"name":"Legs","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,8,13,35,14,36]}],"statsRaw":[[280,0.2,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],[200,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,1,0],[150,0.06,0,0.5,0]],"taming":{"eats":["Spoiled Meat","Raw Meat","Raw Fish Meat"],"nonViolent":false,"specialFoodValues":[{"Key":"Raw Meat","Value":{"d":[15,15]}},{"Key":"Raw Fish Meat","Value":{"d":[7.5,6]}}],"tamingIneffectiveness":2.5,"affinityNeeded0":1500,"affinityIncreasePL":75,"torporDepletionPS0":0.3,"foodConsumptionBase":0.001929,"foodConsumptionMult":432.002777,"violent":true},"immobilizedBy":["Bola","Bear Trap","Plant Species Y"]},{"name":"Purlovia","breeding":{"gestationTime":15037.592773,"incubationTime":0,"maturationTime":175438.59375,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"Main Body","colorIds":[20,22,39,37,33,34,13,35,14]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Belly","colorIds":[20,33,34,13,35]},{"name":"Highlights","colorIds":[21,38,32,33,8,14]}],"statsRaw":[[275,0.2,0.27,0.5,0],[300,0.1,0.1,0,0],[150,0.1,0.1,0,0],[4000,0.1,0.1,0,0],[400,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0,0],[500,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Moschops","nonViolent":false,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[53.279999,400]}}],"tamingIneffectiveness":3.125,"affinityNeeded0":2250,"affinityIncreasePL":100,"torporDepletionPS0":0.3,"foodConsumptionBase":0.001543,"foodConsumptionMult":288.039185,"violent":true},"immobilizedBy":["Chain Bola","Large Bear Trap","Plant Species Y"]},{"name":"Quetzal","breeding":{"gestationTime":0,"incubationTime":59995.199219,"maturationTime":666666.625,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":5,"eggTempMax":6},"colors":[{"name":"Wing Membrane","colorIds":[19,20,21,22,23,24,25,26,27,32,33,34,8,13,35,14]},{"name":"Crest","colorIds":[19,21,23,25,26,28,30,32,33,8,14]},{"name":"Skins","colorIds":[20,22,24,26,27,29,31,33,34,13,35,14]},{"name":"Freckles","colorIds":[19,21,23,25,26,28,30,32,33,8,14]},{"name":"Beak","colorIds":[21,22,32,33,34,8,13,35,14]},{"name":"Body Feathers","colorIds":[20,22,24,26,27,33,34,13,35,14]}],"statsRaw":[[1200,0.2,0.108,0.5,0],[800,0.05,0.05,0,0],[150,0.1,0.1,0,0],[1200,0.1,0.1,0,0.15],[800,0.02,0.05,0,0],[1,0.04,0.1,0.4,0.4],[1,0,0,0.365,0],[1850,0.06,0,0.5,0]],"TamedBaseHealthMultiplier":0.85,"NoImprintingForSpeed":true,"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Rex","nonViolent":false,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[79.919998,400]}}],"tamingIneffectiveness":0.9375,"affinityNeeded0":6850,"affinityIncreasePL":300,"torporDepletionPS0":3.4,"foodConsumptionBase":0.0035,"foodConsumptionMult":140,"violent":true},"immobilizedBy":["Chain Bola","Bear Trap","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Head"}]},{"name":"Raptor","breeding":{"gestationTime":0,"incubationTime":7199.423828,"maturationTime":133333.328125,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":20,"eggTempMax":28},"colors":[{"name":"Body Accent","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Feather Tips","colorIds":[19,21,23,25,26,28,30]},{"name":null,"colorIds":[]},{"name":"Body","colorIds":[20,21,22,23,24,25,26,27,32,33,34,8,13,35,14]},{"name":"Feathers","colorIds":[19,21,23,25,26,28,30]},{"name":"Belly","colorIds":[21,23,25,26,28,32,33,8,14]}],"statsRaw":[[200,0.2,0.27,0.5,0],[150,0.1,0.1,0,0],[150,0.1,0.1,0,0],[1200,0.1,0.1,0,0],[140,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0.2,0],[180,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Parasaur","nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":3.125,"affinityNeeded0":1200,"affinityIncreasePL":60,"torporDepletionPS0":0.3,"foodConsumptionBase":0.001543,"foodConsumptionMult":648.088135,"violent":true},"immobilizedBy":["Bola","Bear Trap","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Head, Neck"}]},{"name":"Rex","breeding":{"gestationTime":0,"incubationTime":17998.560547,"maturationTime":333333.3125,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":32,"eggTempMax":34},"colors":[{"name":"Body","colorIds":[20,22,24,27,33,34,13,35,14,36]},{"name":"Spine","colorIds":[20,22,24,27,33,34,13,35,14,36]},{"name":null,"colorIds":[]},{"name":"Back","colorIds":[20,22,24,27,33,34,13,35,14,36]},{"name":null,"colorIds":[]},{"name":"Belly","colorIds":[20,22,24,27,33,34,13,35,14,36]}],"statsRaw":[[1100,0.2,0.27,0.5,0],[420,0.1,0.1,0,0],[150,0.1,0.1,0,0],[3000,0.1,0.1,0,0],[500,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0,0],[1550,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Pulmonoscorpius","nonViolent":false,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[79.919998,400]}}],"tamingIneffectiveness":1.25,"affinityNeeded0":3450,"affinityIncreasePL":150,"torporDepletionPS0":0.725,"foodConsumptionBase":0.002314,"foodConsumptionMult":180.063385,"violent":true},"immobilizedBy":["Chain Bola","Large Bear Trap"]},{"name":"Sabertooth","breeding":{"gestationTime":15037.592773,"incubationTime":0,"maturationTime":175438.59375,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"Body","colorIds":[22,24,33,34,13,35,14]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Mane and Face","colorIds":[21,23,32,33,8,14]},{"name":"Stripes","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,8,13,35,14,36]}],"statsRaw":[[250,0.2,0.27,0.5,0],[200,0.1,0.1,0,0],[150,0.1,0.1,0,0],[1200,0.1,0.1,0,0.15],[200,0.02,0.04,0,0],[1,0.05,0.1,0.4,0.35],[1,0,0.025,0.3,0],[500,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Brontosaurus","nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":3.125,"affinityNeeded0":1200,"affinityIncreasePL":60,"torporDepletionPS0":0.3,"foodConsumptionBase":0.001543,"foodConsumptionMult":288.039185,"violent":true},"immobilizedBy":["Bola","Bear Trap","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Head"}]},{"name":"Sarco","breeding":{"gestationTime":0,"incubationTime":8999.280273,"maturationTime":166666.65625,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":30,"eggTempMax":34},"colors":[{"name":"Body","colorIds":[23,24,26,27,33,34,13,35,14]},{"name":null,"colorIds":[]},{"name":"Stripe, Face, and Tail","colorIds":[23,24,26,27,33,34,13,35,14]},{"name":"Snout and Tail Tip","colorIds":[23,24,26,27,33,34,13,35,14]},{"name":"Plates","colorIds":[23,24,26,27,33,34,13,35,14]},{"name":"Body Accent","colorIds":[23,24,26,27,33,34,13,35,14]}],"statsRaw":[[400,0.2,0.27,0.65,0],[450,0.1,0.1,0,0],[150,0.1,0.1,0,0],[1500,0.1,0.1,0,0],[300,0.02,0.04,0,0],[1,0.05,0.1,0.8,0.5],[1,0,0.025,0.6,0],[400,0.06,0,0.5,0]],"doesNotUseOxygen":true,"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Triceratops","nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":2.5,"affinityNeeded0":2000,"affinityIncreasePL":75,"torporDepletionPS0":0.3,"foodConsumptionBase":0.001578,"foodConsumptionMult":211.237854,"violent":true},"immobilizedBy":["Chain Bola","Large Bear Trap","Plant Species Y"]},{"name":"Spinosaur","breeding":{"gestationTime":0,"incubationTime":13845.046875,"maturationTime":256410.25,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":30,"eggTempMax":32},"colors":[{"name":"Body","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Sail Edge","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,14,36]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Face, Tail, Inner Sail, and Frill","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,14,36]},{"name":"Belly","colorIds":[21,23,25,26,28,32,33,8,14]}],"statsRaw":[[700,0.2,0.27,0.5,0],[350,0.1,0.1,0,0],[650,0.1,0.1,0,0],[2600,0.1,0.1,0,0],[350,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0,0],[850,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Argentavis","nonViolent":false,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[79.919998,400]}}],"tamingIneffectiveness":1.5,"affinityNeeded0":3200,"affinityIncreasePL":150,"torporDepletionPS0":2.133333,"foodConsumptionBase":0.002066,"foodConsumptionMult":150,"violent":true},"immobilizedBy":["Chain Bola","Large Bear Trap"]},{"name":"Stegosaurus","breeding":{"gestationTime":0,"incubationTime":9999.200195,"maturationTime":185185.171875,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":22,"eggTempMax":28},"colors":[{"name":"Body","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Spine","colorIds":[20,22,24,26,27,29,31,33,34,13,35,14]},{"name":"Plate Base and Spike Base","colorIds":[20,22,24,26,27,29,31,33,34,13,35,14]},{"name":"Back","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Plate Edge and Spike Tips","colorIds":[19,21,23,25,26,28,30,32,33,8,14]},{"name":"Belly","colorIds":[21,23,25,26,32,33,8,14]}],"statsRaw":[[650,0.2,0.27,0.5,0],[300,0.1,0.1,0,0],[150,0.1,0.1,0,0],[6000,0.1,0.1,0,0],[500,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0.964,0],[500,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Vegetables","Mejoberry","Berries","Stimberry"],"favoriteKibble":"Sarco","nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":0.1,"affinityNeeded0":6000,"affinityIncreasePL":300,"torporDepletionPS0":0.3,"foodConsumptionBase":0.005341,"foodConsumptionMult":208.034286,"violent":true},"immobilizedBy":["Chain Bola","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":1.67,"Value":"Head, Neck"}]},{"name":"Tapejara","breeding":{"gestationTime":0,"incubationTime":5999.520508,"maturationTime":196078.421875,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":29,"eggTempMax":32},"colors":[{"name":"Body","colorIds":[19,20,21,22,23,24,25,26,27,32,33,34,8,13,35,14,36]},{"name":"Wing and Sail Markings","colorIds":[19,21,23,25,26,28,30,32,33,8,14]},{"name":"unknown","colorIds":[20,22,24,26,27,29,31,33,34,13,35,14]},{"name":"Wings and Sail","colorIds":[19,21,23,25,26,28,30,32,33,8,14]},{"name":"Back, Beak and Sail Spines","colorIds":[19,21,23,25,26,28,30,32,33,8,14]},{"name":"Sail and Throat","colorIds":[20,22,24,26,27,33,34,13,35,14]}],"statsRaw":[[325,0.2,0.27,0.5,0],[250,0.05,0.06,0,0],[150,0.1,0.1,0,0],[1600,0.1,0.1,0,0.15],[280,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0,0.365,0],[450,0.06,0,0.5,0]],"NoImprintingForSpeed":true,"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Allosaurus","nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":3.125,"affinityNeeded0":2200,"affinityIncreasePL":100,"torporDepletionPS0":0.3,"foodConsumptionBase":0.001543,"foodConsumptionMult":216.029373,"violent":true},"immobilizedBy":["Bola","Chain Bola","Bear Trap","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Head"}]},{"name":"Terror Bird","breeding":{"gestationTime":0,"incubationTime":7199.423828,"maturationTime":166666.65625,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":20,"eggTempMax":28},"colors":[{"name":"Feathers","colorIds":[21,22,32,33,34,8,13,35,14,37,37,37,37,37,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":"Belly/Wings Accent","colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":"Beak, Skin, Legs","colorIds":[21,22,32,33,34,8,13,35,14,37,38,39,39,39,39,39]}],"statsRaw":[[270,0.2,0.27,0.5,0],[160,0.1,0.1,0,0],[150,0.1,0.1,0,0],[1500,0.1,0.1,0,0],[120,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0.2,0],[300,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Gallimimus","nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":2.5,"affinityNeeded0":1600,"affinityIncreasePL":85,"torporDepletionPS0":2.25,"foodConsumptionBase":0.001578,"foodConsumptionMult":352.06308,"violent":true},"immobilizedBy":["Bola","Bear Trap","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Head, Neck"}]},{"name":"Therizinosaurus","breeding":{"gestationTime":0,"incubationTime":5999.520508,"maturationTime":416666.65625,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":26,"eggTempMax":32},"colors":[{"name":"Feathers Main","colorIds":[20,22,24,56,52,33,34,13,35,14,36]},{"name":null,"colorIds":[]},{"name":"Body Highlights","colorIds":[48,23,24,25,32,8,36,50]},{"name":null,"colorIds":[]},{"name":"Feather Highlights","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Body Main","colorIds":[21,23,47,35,52,32,33,8,14]}],"statsRaw":[[870,0.2,0.27,0.5,0],[300,0.1,0.1,0,0],[150,0.1,0.1,0,0],[3000,0.1,0.1,0,0],[365,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0,0],[925,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Vegetables","Mejoberry","Berries","Stimberry"],"favoriteKibble":"Megalosaurus","nonViolent":false,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[119.969994,400]}}],"tamingIneffectiveness":0.06,"affinityNeeded0":6800,"affinityIncreasePL":160,"torporDepletionPS0":2.833333,"foodConsumptionBase":0.002314,"foodConsumptionMult":180.063385,"violent":true},"immobilizedBy":["Chain Bola","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Head, Neck"}]},{"name":"Thylacoleo","breeding":{"gestationTime":15037.592773,"incubationTime":0,"maturationTime":175438.59375,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"Main Body","colorIds":[20,22,33,34,13,14,43,8,42,9,10]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Fur Highlights","colorIds":[20,33,34,13,35,22,56,21,43,42,44]},{"name":"Stripes and Belly","colorIds":[21,38,32,33,8,14]}],"statsRaw":[[700,0.2,0.27,0.5,0],[400,0.1,0.1,0,0],[200,0.1,0.1,0,0],[1500,0.1,0.1,0,0.15],[400,0.02,0.04,0,0],[1,0.05,0.1,0.4,0.35],[1,0,0.025,0.3,0],[700,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Cooked Lamb Chop","Raw Mutton","Cooked Prime Meat","Cooked Meat","Raw Prime Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Fish Meat","Raw Prime Fish Meat","Raw Fish Meat"],"favoriteKibble":"Titanoboa","nonViolent":false,"specialFoodValues":[{"Key":"Cooked Lamb Chop","Value":{"d":[49.945,96.25]}},{"Key":"Raw Mutton","Value":{"d":[50,50]}},{"Key":"Cooked Prime Meat","Value":{"d":[49.945,35]}},{"Key":"Cooked Meat","Value":{"d":[25,20]}},{"Key":"Raw Prime Meat","Value":{"d":[50,20]}},{"Key":"Raw Meat","Value":{"d":[50,10]}},{"Key":"Cooked Prime Fish Meat","Value":{"d":[25.686001,7.2]}},{"Key":"Cooked Fish Meat","Value":{"d":[12.5,4]}},{"Key":"Raw Prime Fish Meat","Value":{"d":[25,4]}},{"Key":"Raw Fish Meat","Value":{"d":[25,2]}}],"tamingIneffectiveness":3.125,"affinityNeeded0":2250,"affinityIncreasePL":60,"torporDepletionPS0":1.85,"foodConsumptionBase":0.001543,"foodConsumptionMult":288.039185,"violent":true},"immobilizedBy":["Chain Bola","Bear Trap","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":1.5,"Value":"Head"}]},{"name":"Titanosaur","colors":[{"name":"Body","colorIds":[21,23,25,26,32,33,8,14]},{"name":"unknown","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"unknown","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"unknown","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Back","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Underside","colorIds":[21,23,25,26,32,33,8,14]}],"statsRaw":[[230000,0,0,-80000,0],[2000,0,0,0,0],[600,0,0,0,0],[8640,0,0,0,0],[50000,0,0,0,0],[1,0,0,0,0],[1,0,0,0,0],[25000,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Vegetables","Mejoberry","Berries","Stimberry"],"favoriteKibble":"Carbonemys","nonViolent":false,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[53.279999,400]}}],"tamingIneffectiveness":0.06,"affinityNeeded0":10000,"affinityIncreasePL":500,"foodConsumptionBase":0.1,"foodConsumptionMult":13,"violent":true}},{"name":"Triceratops","breeding":{"gestationTime":0,"incubationTime":8999.280273,"maturationTime":166666.65625,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":22,"eggTempMax":28},"colors":[{"name":"Body","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Face and Feet","colorIds":[20,22,24,26,27,29,31,33,34,13,35,14]},{"name":null,"colorIds":[]},{"name":"Patterning","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Frill","colorIds":[20,22,24,26,27,29,31,33,34,13,35,14]},{"name":"Body Accent","colorIds":[21,23,25,26,32,33,8,14]}],"statsRaw":[[375,0.2,0.27,0.5,0],[150,0.1,0.1,0,0],[150,0.1,0.1,0,0],[3000,0.1,0.1,0,0],[365,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,1.226,0],[250,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Vegetables","Mejoberry","Berries","Stimberry"],"favoriteKibble":"Carnotaurus","nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":0.2,"affinityNeeded0":3000,"affinityIncreasePL":150,"torporDepletionPS0":0.3,"foodConsumptionBase":0.003156,"foodConsumptionMult":352.06308,"violent":true},"immobilizedBy":["Chain Bola","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":0.15,"Value":"Head"}]},{"name":"Troodon","breeding":{"gestationTime":0,"incubationTime":4090.581787,"maturationTime":75757.570313,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":28,"eggTempMax":32},"colors":[{"name":"Main Body","colorIds":[20,22,24,48,52,33,34,13,35,14]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Body Highlights and Feathers","colorIds":[21,23,42,48,51,32,33,8,14]},{"name":"Belly","colorIds":[21,23,47,13,28,32,33,8,14]}],"statsRaw":[[200,0.2,0.27,0.5,0],[150,0.1,0.1,0,0],[150,0.1,0.1,0,0],[100,0.1,0.1,0,0],[140,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0.2,0],[180,0.06,0,0.5,0]],"taming":{"eats":["Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"nonViolent":true,"specialFoodValues":null,"tamingIneffectiveness":8.333333,"affinityNeeded0":480,"affinityIncreasePL":45,"foodConsumptionBase":0.001543,"foodConsumptionMult":648.088135,"wakeAffinityMult":1.6,"wakeFoodDeplMult":2,"violent":false},"immobilizedBy":["Bola","Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Head, Neck"}]},{"name":"Tusoteuthis","breeding":{"gestationTime":0,"incubationTime":17998.560547,"maturationTime":1010100.875,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":-75,"eggTempMax":75},"colors":[{"name":"Body Highlights","colorIds":[19,20,21,22,23,24,28,29,14]},{"name":"Tentacle Highlights","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Tentacle Main","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Body Main","colorIds":[21,23,28,32,33,8,14,36]}],"statsRaw":[[3333,0.2,0.27,0.5,0],[300,0.1,0.1,0,0],[215,0.1,0.1,0,0],[3200,0.1,0.1,0,0.15],[800,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,1,0],[1800,0.06,0,0.5,0]],"doesNotUseOxygen":true,"taming":{"eats":["Black Pearl","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"nonViolent":true,"specialFoodValues":[{"Key":"Black Pearl","Value":{"d":[30,50,50]}},{"Key":"Raw Mutton","Value":{"d":[50,37.5]}},{"Key":"Cooked Lamb Chop","Value":{"d":[49.945,20.625,30]}},{"Key":"Raw Prime Meat","Value":{"d":[50,15]}},{"Key":"Cooked Prime Meat","Value":{"d":[49.945,7.5,30]}},{"Key":"Raw Prime Fish Meat","Value":{"d":[25,6]}},{"Key":"Raw Meat","Value":{"d":[50,5,20]}},{"Key":"Cooked Prime Fish Meat","Value":{"d":[25.686001,3,30]}},{"Key":"Cooked Meat","Value":{"d":[25,2.5,30]}},{"Key":"Raw Fish Meat","Value":{"d":[25,2,20]}},{"Key":"Cooked Fish Meat","Value":{"d":[12.5,1,30]}}],"tamingIneffectiveness":0.75,"affinityNeeded0":12500,"affinityIncreasePL":125,"foodConsumptionBase":0.005,"foodConsumptionMult":180.001144,"wakeAffinityMult":1,"wakeFoodDeplMult":2,"violent":false},"boneDamageAdjusters":[{"Key":3,"Value":"Beak"}]},{"name":"Unicorn","breeding":{"gestationTime":47619.042969,"incubationTime":0,"maturationTime":208333.328125,"matingCooldownMin":64800,"matingCooldownMax":172800},"statsRaw":[[240,0.2,0.27,0.5,0],[560,0.1,0.1,0,0],[150,0.1,0.1,0,0],[1500,0.1,0.1,0,0],[350,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.0175,0.2,0],[420,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Vegetables","Sweet Vegetable Cake","Mejoberry","Berries","Stimberry"],"favoriteKibble":"Troodon","nonViolent":true,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[13.33,400]}},{"Key":"Vegetables","Value":{"d":[20,210]}},{"Key":"Sweet Vegetable Cake","Value":{"d":[20,20]}},{"Key":"Mejoberry","Value":{"d":[30,8]}},{"Key":"Berries","Value":{"d":[20,5]}}],"tamingIneffectiveness":0.4,"affinityNeeded0":3600,"affinityIncreasePL":180,"foodConsumptionBase":0.001929,"foodConsumptionMult":432.002777,"wakeAffinityMult":1.6,"wakeFoodDeplMult":2,"violent":false},"immobilizedBy":["Bola","Bear Trap","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":2,"Value":"Head"}]},{"name":"Woolly Rhino","breeding":{"gestationTime":14285.713867,"incubationTime":0,"maturationTime":166666.65625,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"Skins","colorIds":[21,22,32,33,34,8,13,35,14,37,37,37,37,37,38,39]},{"name":"Back","colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":"Underside","colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":"Horn","colorIds":[21,22,32,33,34,8,13,35,14,37,38,39,39,39,39,39]}],"statsRaw":[[500,0.2,0.27,0.5,0],[120,0.1,0.1,0,0],[100,0.1,0.1,0,0],[3000,0.1,0.1,0,0],[750,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,1.226,0],[600,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Vegetables","Mejoberry","Berries","Stimberry"],"favoriteKibble":"Terror Bird","nonViolent":false,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[53.279999,400]}}],"tamingIneffectiveness":1.25,"affinityNeeded0":3450,"affinityIncreasePL":125,"torporDepletionPS0":0.9,"foodConsumptionBase":0.003156,"foodConsumptionMult":150,"violent":true},"immobilizedBy":["Chain Bola","Large Bear Trap"]},{"name":"Zomdodo","colors":[{"name":"unknown","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,8,13,35,14]},{"name":"unknown","colorIds":[21,23,32,33,8,14]},{"name":"unknown","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"unknown","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"unknown","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,8,13,35,14,36]},{"name":"unknown","colorIds":[19,21,23,25,26,28,30,32,33,8,14]}],"statsRaw":[[700,0.2,0.27,0.2,0],[1000,0.1,0.1,0,0],[150,0.1,0.1,0,0],[450,0,0,0,0.15],[170,0.02,0.04,0,0],[1,0.015,0.1,0.2,0],[1,0,0.025,2,0],[1000,0.06,0,0.5,0]],"doesNotUseOxygen":true,"taming":{"nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":1.333333,"affinityNeeded0":450,"affinityIncreasePL":22.5,"foodConsumptionBase":0,"foodConsumptionMult":0,"violent":false},"immobilizedBy":["Bola","Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":2,"Value":"Head, Neck"}]},{"name":"Fire Wyvern","breeding":{"gestationTime":0,"incubationTime":17998.560547,"maturationTime":333333.3125,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":80,"eggTempMax":90},"colors":[{"name":"Body Main","colorIds":[39,38,35,22,13,43]},{"name":null,"colorIds":[]},{"name":"Scales Main","colorIds":[13,21,33,39,42,43,22]},{"name":"Wings Main","colorIds":[39,38,35,22,13,43]},{"name":"Fins Highlight","colorIds":[10,44,20,21,35,42]},{"name":"Body Highlights","colorIds":[10,44,43,21,33,42]}],"statsRaw":[[1725,0.15,0.2025,-1050,0],[275,0.05,0.05,0,0],[150,0.1,0.1,0,0],[2000,0.1,0.1,0,0],[400,0.02,0.04,0,0],[1,0.05,0.1,-0.25,0.4],[1,0,0,0,0],[725,0.06,0,0.5,0]],"NoImprintingForSpeed":true,"taming":{"nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":1.5,"affinityNeeded0":8500,"affinityIncreasePL":150,"foodConsumptionBase":0.000185,"foodConsumptionMult":199.983994,"violent":false},"immobilizedBy":["Chain Bola","Large Bear Trap"]},{"name":"Jerboa","breeding":{"gestationTime":9523.80957,"incubationTime":0,"maturationTime":111111.109375,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"Paws and Back","colorIds":[13,14,15,20,22,34,35,37,39,55,56]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Stripes","colorIds":[8,9,10,13,14,36,20,22,33,31,35,20,17,55,56]},{"name":"Belly and Highlights","colorIds":[13,9,33,39,37,55,56]}],"statsRaw":[[55,0.2,0.27,0.5,0],[100,0.1,0.1,0,0],[150,0.1,0.1,0,0],[450,0.1,0.1,0,0.15],[55,0.02,0.04,0,0],[1,0.05,0.1,1,0.4],[1,0,0.025,0.5,0],[30,0.06,0,0.5,0]],"taming":{"eats":["Plant Species Y Seed","Vegetables","Mejoberry","Berries","Stimberry"],"nonViolent":false,"specialFoodValues":[{"Key":"Plant Species Y Seed","Value":{"d":[65,160]}}],"tamingIneffectiveness":1.333333,"affinityNeeded0":1350,"affinityIncreasePL":22.5,"torporDepletionPS0":0.3,"foodConsumptionBase":0.000868,"foodConsumptionMult":2880.184326,"violent":true},"immobilizedBy":["Bola","Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Head, Neck"}]},{"name":"Lightning Wyvern","breeding":{"gestationTime":0,"incubationTime":17998.560547,"maturationTime":333333.3125,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":80,"eggTempMax":90},"colors":[{"name":"Body Main","colorIds":[30,28,14,51,8,35]},{"name":"Fins","colorIds":[49,50,31,14,30,8,51,52]},{"name":"Wings","colorIds":[49,50,31,35,28,30,8,51]},{"name":"***NOT USED****","colorIds":[1]},{"name":"Scales Top","colorIds":[49,50,31,14,30,8,51,52]},{"name":"Fins","colorIds":[49,50,31,14,30,8,51,52]}],"statsRaw":[[1725,0.15,0.2025,-1050,0],[275,0.05,0.05,0,0],[150,0.1,0.1,0,0],[2000,0.1,0.1,0,0],[400,0.02,0.04,0,0],[1,0.05,0.1,-0.25,0.4],[1,0,0,0,0],[725,0.06,0,0.5,0]],"NoImprintingForSpeed":true,"taming":{"nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":1.5,"affinityNeeded0":8500,"affinityIncreasePL":150,"foodConsumptionBase":0.000185,"foodConsumptionMult":199.983994,"violent":false},"immobilizedBy":["Chain Bola","Large Bear Trap"]},{"name":"Lymantria","colors":[{"name":"Facial Highlights","colorIds":[33,21,28,8,32]},{"name":"Wings Main","colorIds":[53,10,11,19,25,28,30,13]},{"name":"Legs","colorIds":[33,21,28,8,32]},{"name":"Wing Highlights","colorIds":[29,4,54,31,16,17,27,8,14]},{"name":"Facial Main","colorIds":[33,21,28,8,32]},{"name":"Stinger and Underbody","colorIds":[33,21,28,8,32]}],"statsRaw":[[260,0.2,0.27,0.5,0],[150,0.05,0.06,0,0],[150,0.1,0.1,0,0],[2000,0.1,0.1,0,0],[175,0.02,0.03,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0,0,0],[550,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Vegetables","Mejoberry","Berries","Stimberry"],"favoriteKibble":"Thorny Dragon","nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":1.875,"affinityNeeded0":1800,"affinityIncreasePL":100,"torporDepletionPS0":0.3,"foodConsumptionBase":0.001852,"foodConsumptionMult":199.983994,"violent":true},"immobilizedBy":["Bola","Chain Bola","Bear Trap","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Head"}]},{"name":"Mantis","colors":[{"name":"Body","colorIds":[9,10,16,17,15,11,33,27,26]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Back","colorIds":[9,10,16,17,15,11,33,27,26]},{"name":"Underneath","colorIds":[9,10,16,17,15,11,33,27,26]}],"statsRaw":[[275,0.2,0.135,0.5,0],[150,0.1,0.1,0,0],[150,0.1,0.1,0,0],[900,0.1,0.1,0,0],[220,0.02,0.08,0,0],[1,0.025,0.1,0.5,0.4],[1,0,0.025,0.67,0],[350,0.06,0,0.5,0]],"taming":{"eats":["Deathworm Horn","Spoiled Meat","Raw Meat","Raw Fish Meat"],"nonViolent":true,"specialFoodValues":[{"Key":"Deathworm Horn","Value":{"d":[300,450]}},{"Key":"Raw Meat","Value":{"d":[15,15]}},{"Key":"Raw Fish Meat","Value":{"d":[7.5,6]}}],"tamingIneffectiveness":2.5,"affinityNeeded0":1800,"affinityIncreasePL":75,"foodConsumptionBase":0.002314,"foodConsumptionMult":360,"wakeAffinityMult":1,"wakeFoodDeplMult":2,"violent":false},"immobilizedBy":["Chain Bola","Bear Trap","Plant Species Y"]},{"name":"Morellatops","breeding":{"gestationTime":0,"incubationTime":8999.280273,"maturationTime":111111.109375,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":22,"eggTempMax":28},"colors":[{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,37,37,37,37,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,39,39,39,39,39]}],"statsRaw":[[400,0.2,0.27,0.5,0],[220,0.1,0.1,0,0],[150,0.1,0.1,0,0],[6000,0.1,0.1,0,0],[440,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0.964,0],[315,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Vegetables","Mejoberry","Berries","Stimberry"],"favoriteKibble":"Vulture","nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":0.2,"affinityNeeded0":3000,"affinityIncreasePL":150,"torporDepletionPS0":0.3,"foodConsumptionBase":0.005341,"foodConsumptionMult":208.034286,"violent":true},"immobilizedBy":["Chain Bola","Large Bear Trap"],"boneDamageAdjusters":[{"Key":0.5,"Value":"Tail"},{"Key":1,"Value":"Head"}]},{"name":"Poison Wyvern","breeding":{"gestationTime":0,"incubationTime":17998.560547,"maturationTime":333333.3125,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":80,"eggTempMax":90},"colors":[{"name":"Body Main","colorIds":[45,46,35,27,26,24,8,47,40]},{"name":"Wings Main","colorIds":[45,46,35,27,26,24,8]},{"name":"Scales Main","colorIds":[47,32,25,23,8]},{"name":"Wings Highlight","colorIds":[7,11,23,24,25,26,27,30,45,46]},{"name":"Scale Highlights","colorIds":[47,32,25,23,8,48]},{"name":"Body Highlights","colorIds":[32,25,23,8]}],"statsRaw":[[1725,0.15,0.2025,-1050,0],[275,0.05,0.05,0,0],[150,0.1,0.1,0,0],[2000,0.1,0.1,0,0],[400,0.02,0.04,0,0],[1,0.05,0.1,-0.25,0.4],[1,0,0,0,0],[725,0.06,0,0.5,0]],"NoImprintingForSpeed":true,"taming":{"nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":1.5,"affinityNeeded0":8500,"affinityIncreasePL":150,"foodConsumptionBase":0.000185,"foodConsumptionMult":199.983994,"violent":false},"immobilizedBy":["Chain Bola","Large Bear Trap"]},{"name":"Rock Elemental","colors":[{"name":null,"colorIds":[1]},{"name":"Body","colorIds":[1,17,19,23,24,28,36,14]},{"name":null,"colorIds":[1]},{"name":null,"colorIds":[1]},{"name":null,"colorIds":[1]},{"name":null,"colorIds":[1]}],"statsRaw":[[25000,0.0125,0.135,-22000,0],[300,0.1,0.1,0,0],[150,0.1,0.1,0,0],[6000,0.1,0.1,0,0],[660,0.02,0.04,0,0],[1,0.05,0.1,0.125,0.4],[1,0,0.025,0,0],[5000,0.02,0,0.5,0]],"doesNotUseOxygen":true,"taming":{"eats":["Kibble","Sulfur","Clay","Stone"],"favoriteKibble":"Mantis","nonViolent":false,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[19.9995,400]}},{"Key":"Sulfur","Value":{"d":[25,25]}},{"Key":"Clay","Value":{"d":[25,15]}},{"Key":"Stone","Value":{"d":[50,7]}}],"tamingIneffectiveness":2.5,"affinityNeeded0":6500,"affinityIncreasePL":325,"torporDepletionPS0":0.325,"foodConsumptionBase":0.002543,"foodConsumptionMult":180.063385,"violent":true}},{"name":"Thorny Dragon","breeding":{"gestationTime":0,"incubationTime":8999.280273,"maturationTime":175438.59375,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":22,"eggTempMax":28},"colors":[{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,37,37,37,37,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,39,39,39,39,39]}],"statsRaw":[[260,0.2,0.27,0.66,0],[350,0.1,0.1,0,0],[150,0.1,0.1,0,0],[1200,0.1,0.1,0,0.15],[300,0.02,0.04,0,0],[1,0.05,0.1,0.4,0.35],[1,0,0.025,0.3,0],[450,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Camelsaurus","nonViolent":false,"specialFoodValues":[{"Key":"Raw Mutton","Value":{"d":[50,325]}},{"Key":"Cooked Lamb Chop","Value":{"d":[49.945,165]}},{"Key":"Raw Prime Meat","Value":{"d":[50,130]}},{"Key":"Cooked Prime Meat","Value":{"d":[49.945,60]}},{"Key":"Raw Prime Fish Meat","Value":{"d":[25,52]}},{"Key":"Raw Meat","Value":{"d":[50,40]}},{"Key":"Cooked Prime Fish Meat","Value":{"d":[25.686001,24]}},{"Key":"Cooked Meat","Value":{"d":[25,20]}},{"Key":"Raw Fish Meat","Value":{"d":[25,16]}},{"Key":"Cooked Fish Meat","Value":{"d":[12.5,8]}}],"tamingIneffectiveness":1.5,"affinityNeeded0":3000,"affinityIncreasePL":150,"torporDepletionPS0":0.5,"foodConsumptionBase":0.001543,"foodConsumptionMult":288.039185,"violent":true},"immobilizedBy":["Bola","Chain Bola","Bear Trap","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":2.5,"Value":"Head"}]},{"name":"Vulture","breeding":{"gestationTime":0,"incubationTime":4864.475586,"maturationTime":90090.085938,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":35,"eggTempMax":38},"colors":[{"name":"Body Main","colorIds":[33,34,35,22,20,14,13]},{"name":"Head Highlight","colorIds":[19,20,21,22,28,29,30,31,14]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Head Main","colorIds":[37,32,33,21,35]},{"name":"Body Highlights","colorIds":[33,34,35,22,20,14,13,32,21]}],"statsRaw":[[125,0.2,0.27,0.5,0],[150,0.1,0.1,0,0],[150,0.1,0.1,0,0],[900,0.1,0.1,0,0],[50,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0,0],[100,0.06,0,0.5,0]],"taming":{"eats":["Spoiled Meat","Raw Meat","Raw Fish Meat"],"nonViolent":true,"specialFoodValues":[{"Key":"Raw Meat","Value":{"d":[15,15]}},{"Key":"Raw Fish Meat","Value":{"d":[7.5,6]}}],"tamingIneffectiveness":4.166666,"affinityNeeded0":655,"affinityIncreasePL":45,"foodConsumptionBase":0.001302,"foodConsumptionMult":1152.07373,"wakeAffinityMult":1.6,"wakeFoodDeplMult":2,"violent":false},"immobilizedBy":["Bola","Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Head"}]},{"name":"Zombie Fire Wyvern","breeding":{"gestationTime":0,"incubationTime":0,"maturationTime":333333.3125,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"Body Main","colorIds":[39,38,35,22,13,43]},{"name":null,"colorIds":[]},{"name":"Scales Main","colorIds":[13,21,33,39,42,43,22]},{"name":"Wings Main","colorIds":[39,38,35,22,13,43]},{"name":"Fins Highlight","colorIds":[10,44,20,21,35,42]},{"name":"Body Highlights","colorIds":[10,44,43,21,33,42]}],"statsRaw":[[1725,0.15,0.2025,-1050,0],[275,0.05,0.05,0,0],[150,0.1,0.1,0,0],[2000,0.1,0.1,0,0],[400,0.02,0.04,0,0],[1,0.05,0.1,-0.25,0.4],[1,0,0,0,0],[725,0.06,0,0.5,0]],"taming":{"nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":1.5,"affinityNeeded0":8500,"affinityIncreasePL":150,"foodConsumptionBase":0.000185,"foodConsumptionMult":199.983994,"violent":false},"immobilizedBy":["Chain Bola","Large Bear Trap"]},{"name":"Zombie Lightning Wyvern","breeding":{"gestationTime":0,"incubationTime":0,"maturationTime":333333.3125,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"Body Main","colorIds":[30,28,14,51,8,35]},{"name":"Fins","colorIds":[49,50,31,14,30,8,51,52]},{"name":"Wings","colorIds":[49,50,31,35,28,30,8,51]},{"name":"wings","colorIds":[49,50,30,28,8,51]},{"name":"Scales Top","colorIds":[49,50,31,14,30,8,51,52]},{"name":"Fins","colorIds":[49,50,31,14,30,8,51,52]}],"statsRaw":[[1725,0.15,0.2025,-1050,0],[275,0.05,0.05,0,0],[150,0.1,0.1,0,0],[2000,0.1,0.1,0,0],[400,0.02,0.04,0,0],[1,0.05,0.1,-0.25,0.4],[1,0,0,0,0],[725,0.06,0,0.5,0]],"taming":{"nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":1.5,"affinityNeeded0":8500,"affinityIncreasePL":150,"foodConsumptionBase":0.000185,"foodConsumptionMult":199.983994,"violent":false},"immobilizedBy":["Chain Bola","Large Bear Trap"]},{"name":"Zombie Poison Wyvern","breeding":{"gestationTime":0,"incubationTime":0,"maturationTime":333333.3125,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"Body Main","colorIds":[45,46,35,27,26,24,8,47,40]},{"name":"Wings Main","colorIds":[45,46,35,27,26,24,8]},{"name":"Scales Main","colorIds":[47,32,25,23,8]},{"name":"Wings Highlight","colorIds":[7,11,23,24,25,26,27,30,45,46]},{"name":"Scale Highlights","colorIds":[47,32,25,23,8,48]},{"name":"Body Highlights","colorIds":[32,25,23,8]}],"statsRaw":[[1725,0.15,0.2025,-1050,0],[275,0.05,0.05,0,0],[150,0.1,0.1,0,0],[2000,0.1,0.1,0,0],[400,0.02,0.04,0,0],[1,0.05,0.1,-0.25,0.4],[1,0,0,0,0],[725,0.06,0,0.5,0]],"taming":{"nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":1.5,"affinityNeeded0":8500,"affinityIncreasePL":150,"foodConsumptionBase":0.000185,"foodConsumptionMult":199.983994,"violent":false},"immobilizedBy":["Chain Bola","Large Bear Trap"]}]} \ No newline at end of file diff --git a/ARKBreedingStats/ArkOCR.cs b/ARKBreedingStats/ocr/ArkOCR.cs similarity index 72% rename from ARKBreedingStats/ArkOCR.cs rename to ARKBreedingStats/ocr/ArkOCR.cs index ab7237b2..90bece94 100644 --- a/ARKBreedingStats/ArkOCR.cs +++ b/ARKBreedingStats/ocr/ArkOCR.cs @@ -14,23 +14,20 @@ namespace ARKBreedingStats { public class ArkOCR { - // I'm very sorry for the quality of this code and its "hack"-ish nature. - // -- Nakram + // Class initially created by Nakram public int whiteThreshold = 155; - public int whiteThresholdCalibration = 155; - public Dictionary<int, Bitmap[]> alphabets = new Dictionary<int, Bitmap[]>(); // font-size in px, then alphabet - public Dictionary<int, Bitmap[]> reducedAlphabets = new Dictionary<int, Bitmap[]>(); - private Dictionary<int, uint[][]> alphabetsI = new Dictionary<int, uint[][]>(); - private Dictionary<int, uint[][]> reducedAlphabetsI = new Dictionary<int, uint[][]>(); - private double[] charWeighting = new double[255]; // contains weightings for chars + public int whiteThresholdCalibration = 155; // todo remove? + //public Dictionary<int, Bitmap[]> alphabets = new Dictionary<int, Bitmap[]>(); // todo remove? + //public Dictionary<int, Bitmap[]> reducedAlphabets = new Dictionary<int, Bitmap[]>(); // todo remove? + public ocr.OCRTemplate ocrConfig = new ocr.OCRTemplate(); + private double[] charWeighting = new double[255]; // contains weightings for chars // todo remove? //public Dictionary<Int64, List<byte>> hashMap = new Dictionary<long, List<byte>>(); - public Dictionary<string, int[]> statPositions = new Dictionary<string, int[]>(); // int[]: X,Y,Width,Height + // public Dictionary<string, int[]> statPositions = new Dictionary<string, int[]>(); // int[]: X,Y,Width,Height // todo remove private static ArkOCR _OCR; - public static FlowLayoutPanel debugPanel; + private static ocr.OCRControl ocrControl; public Dictionary<string, Point> lastLetterPositions = new Dictionary<string, Point>(); public string screenCaptureApplicationName; public Process ScreenCaptureProcess; - public int currentFontSizeSmall, currentFontSizeLarge; public int currentResolutionW, currentResolutionH; public static ArkOCR OCR @@ -48,9 +45,7 @@ public static ArkOCR OCR public ArkOCR() { - statPositions = new Dictionary<string, int[]>(12); - - // add weightings to chars. More probable chars get higher weighting + // add weightings to chars. More probable chars get higher weighting // todo remove? for (int l = 32; l < charWeighting.Length; l++) { if (l == 37) charWeighting[l] = 1; // % @@ -72,15 +67,19 @@ public ArkOCR() public void calibrate() { - Bitmap origBitmap, bmp; + //Bitmap origBitmap, bmp; + + //origBitmap = Properties.Resources.ARKCalibration13; + //bmp = removePixelsUnderThreshold(GetGreyScale(origBitmap), whiteThresholdCalibration); + //CalibrateFromImage(13, bmp, "!#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"); - origBitmap = Properties.Resources.ARKCalibration15; - bmp = removePixelsUnderThreshold(GetGreyScale(origBitmap), whiteThresholdCalibration); - CalibrateFromImage(15, bmp, "!#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"); + //origBitmap = Properties.Resources.ARKCalibration15; + //bmp = removePixelsUnderThreshold(GetGreyScale(origBitmap), whiteThresholdCalibration); + //CalibrateFromImage(15, bmp, "!#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"); - origBitmap = Properties.Resources.ARKCalibration18; - bmp = removePixelsUnderThreshold(GetGreyScale(origBitmap), whiteThresholdCalibration); - CalibrateFromImage(18, bmp, "!#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"); + //origBitmap = Properties.Resources.ARKCalibration18; + //bmp = removePixelsUnderThreshold(GetGreyScale(origBitmap), whiteThresholdCalibration); + //CalibrateFromImage(18, bmp, "!#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"); //// debugging //// save recognized alphabet @@ -115,6 +114,8 @@ public bool setResolution() // return true if the calibration was successful public bool setResolution(Bitmap screenshot) { + return true; // todo function necessary? remove? + if (screenshot == null) return false; @@ -158,28 +159,24 @@ public bool setResolution(Bitmap screenshot) if (resolutionW == 1920 && resolutionH == 1080) { - currentFontSizeLarge = 18; - currentFontSizeSmall = 15; - int xStats = 950; int yStatsD = 43; int statWidth = 164; int yc = 0; // coords for 1920x1080 - statPositions["Health"] = new int[] { xStats, 508 + (yStatsD * (yc++)), statWidth, currentFontSizeSmall }; - statPositions["Stamina"] = new int[] { xStats, 508 + (yStatsD * (yc++)), statWidth, currentFontSizeSmall }; - statPositions["Oxygen"] = new int[] { xStats, 508 + (yStatsD * (yc++)), statWidth, currentFontSizeSmall }; - statPositions["Food"] = new int[] { xStats, 508 + (yStatsD * (yc++)), statWidth, currentFontSizeSmall }; - statPositions["Weight"] = new int[] { xStats, 508 + (yStatsD * (yc++)), statWidth, currentFontSizeSmall }; - statPositions["Melee Damage"] = new int[] { xStats, 508 + (yStatsD * (yc++)), statWidth, currentFontSizeSmall }; - statPositions["Movement Speed"] = new int[] { xStats, 508 + (yStatsD * (yc++)), statWidth, currentFontSizeSmall }; - statPositions["Torpor"] = new int[] { xStats, 508 + (yStatsD * (yc++)), statWidth, currentFontSizeSmall }; - statPositions["Level"] = new int[] { 907, 192, 127, 18 }; - statPositions["Imprinting"] = new int[] { xStats, 508 + (yStatsD * (yc++)), statWidth, currentFontSizeSmall }; - statPositions["NameSpecies"] = new int[] { 846, 158, 228, 18 }; - statPositions["Tribe"] = new int[] { 856, 230, 202, 15 }; - statPositions["Owner"] = new int[] { 967, 402, 92, 13 }; - //statPositions["CurrentWeight"] = new int[]{805, 231}; // central version of weight, gives "temporary maximum", useful for determining baby %age // todo currently not available in the UI + ocrConfig.labelRectangles.Add(new Rectangle(xStats, 508 + (yStatsD * (yc++)), statWidth, 15)); + ocrConfig.labelRectangles.Add(new Rectangle(xStats, 508 + (yStatsD * (yc++)), statWidth, 15)); + ocrConfig.labelRectangles.Add(new Rectangle(xStats, 508 + (yStatsD * (yc++)), statWidth, 15)); + ocrConfig.labelRectangles.Add(new Rectangle(xStats, 508 + (yStatsD * (yc++)), statWidth, 15)); + ocrConfig.labelRectangles.Add(new Rectangle(xStats, 508 + (yStatsD * (yc++)), statWidth, 15)); + ocrConfig.labelRectangles.Add(new Rectangle(xStats, 508 + (yStatsD * (yc++)), statWidth, 15)); + ocrConfig.labelRectangles.Add(new Rectangle(xStats, 508 + (yStatsD * (yc++)), statWidth, 15)); + ocrConfig.labelRectangles.Add(new Rectangle(xStats, 508 + (yStatsD * (yc++)), statWidth, 15)); + ocrConfig.labelRectangles.Add(new Rectangle(xStats, 508 + (yStatsD * (yc++)), statWidth, 15)); + ocrConfig.labelRectangles.Add(new Rectangle(907, 192, 127, 18)); + ocrConfig.labelRectangles.Add(new Rectangle(846, 158, 228, 18)); + ocrConfig.labelRectangles.Add(new Rectangle(856, 230, 202, 15)); + ocrConfig.labelRectangles.Add(new Rectangle(967, 402, 92, 13)); } //else if (resolutionW == 1680 && resolutionH == 1050) //{ @@ -235,13 +232,13 @@ public bool setResolution(Bitmap screenshot) private PictureBox AddBitmapToDebug(Bitmap bmp) { - if (debugPanel != null) + if (ocrControl.debugPanel != null) { PictureBox b = new PictureBox(); b.SizeMode = PictureBoxSizeMode.AutoSize; b.Image = bmp; - debugPanel.Controls.Add(b); - debugPanel.Controls.SetChildIndex(b, 0); + ocrControl.debugPanel.Controls.Add(b); + ocrControl.debugPanel.Controls.SetChildIndex(b, 0); return b; } else @@ -427,52 +424,49 @@ public Bitmap removePixelsUnderThreshold(Bitmap source, int threshold) return dest; } - /* // function currently unused. ARK seems to be scaling down larger fonts rather than using entire pixel heights - private void GenerateLetterImagesFromFont(Int16 pixelSize) + public void calibrateFromFontFile(int pixelSize, string calibrationText) { + OpenFileDialog dlg = new OpenFileDialog(); + dlg.Filter = "Font File (*.ttf)|*.ttf"; + if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK) + { + PrivateFontCollection pfcoll = new PrivateFontCollection(); + pfcoll.AddFontFile(dlg.FileName); + FontFamily ff = pfcoll.Families[0]; - return; - - string fontName = "Sansation-Bold.ttf"; // font used by ARK - - //ARKBreedingStats.Properties.Resources.Sansation_Bold; - fontName = System.Reflection.Assembly.GetExecutingAssembly().Location + @"\..\..\Resources\Sansation-Bold.ttf"; - - PrivateFontCollection pfcoll = new PrivateFontCollection(); - //put a font file under a Fonts directory within your application root - pfcoll.AddFontFile(fontName); - FontFamily ff = pfcoll.Families[0]; - string firstText = "Health: 2660.1 / 2660.1"; - - PointF firstLocation = new PointF(10f, 10f); - PointF secondLocation = new PointF(10f, 50f); - //put an image file under a Images directory within your application root - Bitmap bitmap = new Bitmap(300, 200);//load the image file + Bitmap bitmap = new Bitmap(20, pixelSize); - using (Graphics graphics = Graphics.FromImage(bitmap)) - { - using (Font f = new Font(ff, pixelSize, FontStyle.Regular)) + using (Graphics graphics = Graphics.FromImage(bitmap)) { - graphics.DrawString(firstText, f, Brushes.Red, firstLocation); + using (Font f = new Font(ff, 72f / 96 * pixelSize, FontStyle.Regular)) + { + foreach (char c in calibrationText) + { + graphics.FillRectangle(Brushes.Black, 0, 0, 20, pixelSize); + graphics.DrawString(c.ToString(), f, Brushes.White, 0, -2); + + bool foundLetter = false; + int letterStart = -1; + // look for the start pixel of the letter + do + { + letterStart++; + foundLetter = HasWhiteInVerticalLine(bitmap, letterStart, false); + } + while (!(foundLetter || letterStart >= bitmap.Width)); + StoreImageInAlphabet(c, bitmap, letterStart, 20); + } + } } } - //save the new image file within Images directory - //bitmap.Save(@"D:\Temp\test.png"); } - */ - - public void CalibrateFromImage(int fontSize, Bitmap source, string textInImage) + public void CalibrateFromImage(Bitmap source, string textInImage) { + int ocrIndex = ocrConfig.fontSizeIndex(source.Height, true); int posXInImage = 0; - if (!alphabetsI.ContainsKey(fontSize)) - { - //alphabets.Add(fontSize, new Bitmap[128]); - alphabetsI.Add(fontSize, new uint[128][]); - } - // iterate for each letter in the text image for (int i = 0; i < textInImage.Length && posXInImage < source.Width; i++) { @@ -504,16 +498,9 @@ public void CalibrateFromImage(int fontSize, Bitmap source, string textInImage) } // store the image in the alphabet - if (alphabetsI[fontSize][letter] == null && posXInImage != source.Width) - StoreImageInAlphabet(fontSize, letter, source, letterStart, letterEnd); + if (ocrConfig.letters[ocrIndex].IndexOf(letter) == -1 && posXInImage != source.Width) + StoreImageInAlphabet(letter, source, letterStart, letterEnd); } - - if (!reducedAlphabetsI.ContainsKey(fontSize)) - //reducedAlphabets.Add(fontSize, new Bitmap[128]); - reducedAlphabetsI.Add(fontSize, new uint[128][]); - foreach (char c in ":0123456789.,%/") - reducedAlphabetsI[fontSize][c] = alphabetsI[fontSize][c]; - //reducedAlphabets[fontSize][c] = alphabets[fontSize][c]; } public int lastLetterPosition(Bitmap source) @@ -526,10 +513,11 @@ public int lastLetterPosition(Bitmap source) return 0; } - private void StoreImageInAlphabet(int fontSize, char letter, Bitmap source, int letterStart, int letterEnd) + private void StoreImageInAlphabet(char letter, Bitmap source, int letterStart, int letterEnd) { - Rectangle cropRect = letterRect(source, letterStart, letterEnd); //new Rectangle(x, y, width, height); - if (cropRect.Width > 0 && cropRect.Height > 0) // todo, '|' has no width + int ocrIndex = ocrConfig.fontSizeIndex(source.Height, true); + Rectangle cropRect = new Rectangle(letterStart, 0, letterEnd - letterStart, source.Height); + if (cropRect.Width > 0 && cropRect.Height > 0) { Bitmap target = new Bitmap(cropRect.Width, cropRect.Height); @@ -540,21 +528,23 @@ private void StoreImageInAlphabet(int fontSize, char letter, Bitmap source, int GraphicsUnit.Pixel); } - //alphabets[fontSize][letter] = target; // todo - alphabetsI[fontSize][letter] = letterArray(target); - } - - //// hashmap isn't used - //int pcount = 0; - //for (int i = 0; i < target.Width; i++) - // for (int j = 0; j < target.Height; j++) - // if (target.GetPixel(i, j).R != 0) - // pcount++; - - //if (!hashMap.ContainsKey(pcount)) - // hashMap[pcount] = new List<byte>(); + int lI = ocrConfig.letters[ocrIndex].IndexOf(letter); + if (lI == -1) + { + ocrConfig.letters[ocrIndex].Add(letter); + ocrConfig.letterArrays[ocrIndex].Add(letterArray(target)); + } + else + { + ocrConfig.letters[ocrIndex][lI] = letter; + ocrConfig.letterArrays[ocrIndex][lI] = letterArray(target); + } - //hashMap[pcount].Add((byte)letter); + //if ((letter >= 'A' && letter <= 'Z') || (letter >= 'a' && letter <= 'z')) + // target.Save(@"D:\arktest\" + source.Height.ToString() + "_" + letter.ToString() + ".png", ImageFormat.Png); // todo remove debug + //if (letter == '|') + // target.Save(@"D:\arktest\" + source.Height.ToString() + "__Pipe.png", ImageFormat.Png); // todo remove debug + } } private bool HasWhiteInVerticalLine(Bitmap source, int posXInImage, bool needsPreviousWhite) @@ -577,7 +567,7 @@ private bool HasWhiteInVerticalLine(Bitmap source, int posXInImage, bool needsPr else { // check if that white has a connected white previously (for handling kernel) - for (int hh = Math.Max(0, h - 3); hh < source.Height && hh < h + 3; hh++) + for (int hh = Math.Max(0, h - 1); hh < source.Height && hh < h + 2; hh++) { if (source.GetPixel(posXInImage - 1, hh).R == 255) { @@ -600,44 +590,47 @@ private bool HasWhiteInVerticalLine(Bitmap source, int posXInImage, bool needsPr return hasWhite; } - private static Rectangle letterRect(Bitmap source, int hStart, int hEnd) - { - int startWhite = -1, endWhite = -1; - for (int j = 0; j < source.Height; j++) - { - for (int i = hStart; i < hEnd; i++) - { - if (startWhite == -1 && source.GetPixel(i, j).R == 255) - { - startWhite = j; - } - - if (endWhite == -1 && source.GetPixel(i, (source.Height - j) - 1).R == 255) - { - endWhite = (source.Height - j); - } - if (startWhite != -1 && endWhite != -1) - return new Rectangle(hStart, startWhite, hEnd - hStart, endWhite - startWhite); - } - } - - - return Rectangle.Empty; - } - - public float[] doOCR(out string OCRText, out string dinoName, out string species, out string ownerName, out string tribeName, string useImageFilePath = "", bool changeForegroundWindow = true) + // todo not used, remove? + //private static Rectangle letterRect(Bitmap source, int hStart, int hEnd) + //{ + // int startWhite = -1, endWhite = -1; + // for (int j = 0; j < source.Height; j++) + // { + // for (int i = hStart; i < hEnd; i++) + // { + // if (startWhite == -1 && source.GetPixel(i, j).R == 255) + // { + // startWhite = j; + // } + + // if (endWhite == -1 && source.GetPixel(i, (source.Height - j) - 1).R == 255) + // { + // endWhite = (source.Height - j); + // } + // if (startWhite != -1 && endWhite != -1) + // return new Rectangle(hStart, startWhite, hEnd - hStart, endWhite - startWhite); + // } + // } + + + // return Rectangle.Empty; + //} + + public float[] doOCR(out string OCRText, out string dinoName, out string species, out string ownerName, out string tribeName, out Sex sex, string useImageFilePath = "", bool changeForegroundWindow = true) { string finishedText = ""; dinoName = ""; species = ""; ownerName = ""; tribeName = ""; + sex = Sex.Unknown; float[] finalValues = new float[1] { 0 }; Bitmap screenshotbmp = null; Bitmap testbmp; - debugPanel.Controls.Clear(); + ocrControl.debugPanel.Controls.Clear(); + ocrControl.ClearLists(); if (System.IO.File.Exists(useImageFilePath)) { @@ -682,42 +675,47 @@ public float[] doOCR(out string OCRText, out string dinoName, out string species OCRText = "Error while calibrating: probably game-resolution is not supported by this OCR.\nThe tested image has a resolution of " + screenshotbmp.Width.ToString() + "×" + screenshotbmp.Height.ToString() + " px."; return finalValues; } - finalValues = new float[statPositions.Count]; + finalValues = new float[ocrConfig.labelRectangles.Count]; AddBitmapToDebug(screenshotbmp); + ocrControl.setScreenshot(screenshotbmp); + if (changeForegroundWindow) Win32Stuff.SetForegroundWindow(Application.OpenForms[0].Handle); int count = 0; - foreach (string statName in statPositions.Keys) + foreach (string statName in ocrConfig.labelNames.Keys) { - testbmp = SubImage(screenshotbmp, statPositions[statName][0], statPositions[statName][1], statPositions[statName][2], statPositions[statName][3]); - AddBitmapToDebug(testbmp); + Rectangle rec = ocrConfig.labelRectangles[ocrConfig.labelNames[statName]]; + testbmp = SubImage(screenshotbmp, rec.X, rec.Y, rec.Width, rec.Height); + //AddBitmapToDebug(testbmp); string statOCR = ""; if (statName == "NameSpecies") - statOCR = readImage(currentFontSizeLarge, testbmp, true, false); + statOCR = readImage(testbmp, true, false); else if (statName == "Level") - statOCR = readImage(currentFontSizeLarge, testbmp, true, true); + statOCR = readImage(testbmp, true, true); else if (statName == "Tribe" || statName == "Owner") - statOCR = readImage(currentFontSizeSmall, testbmp, true, false); + statOCR = readImage(testbmp, true, false); else - statOCR = readImage(currentFontSizeSmall, testbmp, true, true); // statvalues are only numbers + statOCR = readImage(testbmp, true, true); // statvalues are only numbers if (statOCR == "" && (statName == "Oxygen" || statName == "Imprinting" || statName == "CurrentWeight" || statName == "Tribe" || statName == "Owner")) continue; // these can be missing, it's fine - lastLetterPositions[statName] = new Point(statPositions[statName][0] + lastLetterPosition(removePixelsUnderThreshold(GetGreyScale(testbmp), whiteThreshold)), statPositions[statName][1]); + lastLetterPositions[statName] = new Point(rec.X + lastLetterPosition(removePixelsUnderThreshold(GetGreyScale(testbmp), whiteThreshold)), rec.Y); - finishedText += "\r\n" + statName + ": " + statOCR; + finishedText += (finishedText.Length == 0 ? "" : "\r\n") + statName + ": " + statOCR; // parse the OCR String Regex r; - if (statName == "NameSpecies" || statName == "Owner" || statName == "Tribe") - r = new Regex(@"(.*?)(:?\((.+)\))?"); + if (statName == "NameSpecies") + r = new Regex(@"([♂♀])?(.+?)(?:(?:\((.+)\))|$)"); + else if (statName == "Owner" || statName == "Tribe") + r = new Regex(@"(.+?)"); else if (statName == "Level") r = new Regex(@".+:(\d*)"); else @@ -748,9 +746,14 @@ public float[] doOCR(out string OCRText, out string dinoName, out string species { if (statName == "NameSpecies" && mc[0].Groups.Count > 0) { - dinoName = mc[0].Groups[0].Value; - if (mc[0].Groups.Count > 1) - species = mc[0].Groups[1].Value; + if (mc[0].Groups[1].Value == "♀") + sex = Sex.Female; + else if (mc[0].Groups[1].Value == "♂") + sex = Sex.Male; + dinoName = mc[0].Groups[2].Value; + species = mc[0].Groups[3].Value; + if (species.Length == 0) + species = dinoName; // todo remove this removal, does the new ui show this? /* // remove prefixes Baby, Juvenile and Adolescent @@ -761,6 +764,10 @@ public float[] doOCR(out string OCRText, out string dinoName, out string species r = new Regex("(?<=[a-z])I(?=[a-z])"); dinoName = r.Replace(dinoName, "i"); */ + r = new Regex("[^a-zA-Z]"); + species = r.Replace(species, ""); + r = new Regex("([^^])([A-Z])"); + species = r.Replace(species, "$1 $2"); } else if (statName == "Owner" && mc[0].Groups.Count > 0) ownerName = mc[0].Groups[0].Value; @@ -800,26 +807,27 @@ public float[] doOCR(out string OCRText, out string dinoName, out string species */ } - private string readImageAtCoords(int fontSize, Bitmap source, int x, int y, int width, int height, bool onlyMaximalMatches, bool onlyNumbers, bool writingInWhite = true) + private string readImageAtCoords(Bitmap source, int x, int y, int width, int height, bool onlyMaximalMatches, bool onlyNumbers, bool writingInWhite = true) { - return readImage(fontSize, SubImage(source, x, y, width, height), onlyMaximalMatches, onlyNumbers, writingInWhite); + return readImage(SubImage(source, x, y, width, height), onlyMaximalMatches, onlyNumbers, writingInWhite); } - private string readImage(int fontSize, Bitmap source, bool onlyMaximalMatches, bool onlyNumbers, bool writingInWhite = true) + private string readImage(Bitmap source, bool onlyMaximalMatches, bool onlyNumbers, bool writingInWhite = true) { string result = ""; - if (!alphabetsI.ContainsKey(fontSize)) - return "not calibrated!"; - - //Bitmap[] theAlphabet = alphabets[fontSize]; - uint[][] theAlphabetI = alphabetsI[fontSize]; - - if (onlyNumbers) - theAlphabetI = reducedAlphabetsI[fontSize]; + int fontSize = source.Height; + int ocrIndex = ocrConfig.fontSizeIndex(fontSize); + if (ocrIndex == -1) + return "not calibrated for this font-size!"; + //Bitmap[] theAlphabet = alphabets[fontSize]; // todo remove + //uint[][] theAlphabetI = alphabetsI[fontSize]; + List<uint[]> letterArrays = ocrConfig.letterArrays[ocrIndex]; + List<char> letters = ocrConfig.letters[ocrIndex]; + List<int> reducedIndices = ocrConfig.reducedIndices[ocrIndex]; Bitmap cleanedImage = removePixelsUnderThreshold(GetGreyScale(source, !writingInWhite), whiteThreshold); - AddBitmapToDebug(cleanedImage); // todo comment out + //AddBitmapToDebug(cleanedImage); // todo comment out //source.Save(@"D:\Temp\debug.png"); // TODO comment out //cleanedImage.Save(@"D:\Temp\debug_cleaned.png");// TODO comment out @@ -853,42 +861,52 @@ private string readImage(int fontSize, Bitmap source, bool onlyMaximalMatches, b if (letterStart != letterEnd) { // found a letter, see if a match can be found - Rectangle letterR = letterRect(cleanedImage, letterStart, letterEnd); + //Rectangle letterR = letterRect(cleanedImage, letterStart, letterEnd); + //letterR.Y = 0; // todo test + //letterR.Height = source.Height; // todo test + Rectangle letterR = new Rectangle(letterStart, 0, letterEnd - letterStart, fontSize); + if (letterR.Width > 0 && letterR.Height > 0) { Bitmap testImage = SubImage(cleanedImage, letterR.Left, letterR.Top, letterR.Width, letterR.Height); //testImage.Save(@"D:\Temp\debug_letterfound.png");// TODO comment out Dictionary<int, float> matches = new Dictionary<int, float>(); float bestMatch = 0; - for (int l = 33; l < theAlphabetI.Length; l++) // start at 33, before are no used chars in ascii + uint[] HWs = letterArray(testImage); + int maxLetters = onlyNumbers ? reducedIndices.Count : letterArrays.Count; + for (int lI = 0; lI < maxLetters; lI++) { + int l = lI; + if (onlyNumbers) l = reducedIndices[lI]; + float match = 0; - if (theAlphabetI[l] != null) + uint HammingDiff = 0; + int maxTestRange = Math.Min(HWs.Length, letterArrays[l].Length); + for (int y = 1; y < maxTestRange; y++) + HammingDiff += ocr.HammingWeight.HWeight(HWs[y] ^ letterArrays[l][y]); + if (HWs.Length > letterArrays[l].Length) { - //match = (float)(PercentageMatch(theAlphabet[l], testImage) * charWeighting[l]); - uint HammingDiff = 0; - uint[] HWs = letterArray(testImage); - int maxTestRange = Math.Min(HWs.Length, theAlphabetI[l].Length); - for (int y = 0; y < maxTestRange; y++) - { - uint t = HWs[y] ^ theAlphabetI[l][y]; - HammingDiff += HammingWeight(HWs[y] ^ theAlphabetI[l][y]); - } - HammingDiff += (uint)(Math.Abs(HWs.Length - theAlphabetI[l].Length) * Math.Max(HWs.Length, theAlphabetI[l].Length)); - int total = testImage.Width * testImage.Height; - if (total > 10) - match = ((float)(total - HammingDiff) / total); - else - match = 1 - HammingDiff / 10f; + for (int y = maxTestRange; y < HWs.Length; y++) + HammingDiff += ocr.HammingWeight.HWeight(HWs[y]); + } + else if (HWs.Length < letterArrays[l].Length) + { + for (int y = maxTestRange; y < letterArrays[l].Length; y++) + HammingDiff += ocr.HammingWeight.HWeight(letterArrays[l][y]); } + long total = (Math.Max(HWs.Length, letterArrays[l].Length) - 1) * Math.Max(HWs[0], letterArrays[l][0]); + if (total > 10) + match = ((float)(total - HammingDiff) / total); else - continue; + match = 1 - HammingDiff / 10f; if (match > 0.5) { matches[l] = match; if (bestMatch < match) bestMatch = match; + if (match == 1) + break; } } @@ -927,7 +945,13 @@ private string readImage(int fontSize, Bitmap source, bool onlyMaximalMatches, b //// end debugging if (goodMatches.Count == 1) - result += (char)(goodMatches.Keys.ToArray()[0]); + { + char c = ocrConfig.letters[ocrIndex][goodMatches.Keys.ToArray()[0]]; + result += c; + + // add letter to config + ocrControl.addLetterToRecognized(HWs, c, fontSize); + } else { if (onlyMaximalMatches) @@ -936,7 +960,11 @@ private string readImage(int fontSize, Bitmap source, bool onlyMaximalMatches, b { if (goodMatches[l] == bestMatch) { - result += (char)l; + result += ocrConfig.letters[ocrIndex][l]; + + // add letter to config + ocrControl.addLetterToRecognized(HWs, ocrConfig.letters[ocrIndex][l], fontSize); + break; // if there are multiple best matches take only the first } } @@ -963,6 +991,7 @@ private string readImage(int fontSize, Bitmap source, bool onlyMaximalMatches, b } + /* private void addCalibrationImageToDebug(string text, int fontSize) { Bitmap b = new Bitmap(200, 30); @@ -978,6 +1007,7 @@ private void addCalibrationImageToDebug(string text, int fontSize) } AddBitmapToDebug(b); } + */ public float PercentageMatch(Bitmap img1, Bitmap img2) { @@ -1090,9 +1120,9 @@ public float PercentageMatch(Bitmap img1, Bitmap img2) return percentage; } - internal void setDebugPanel(FlowLayoutPanel OCRDebugLayoutPanel) + internal void setOCRControl(ocr.OCRControl ocrControlObject) { - debugPanel = OCRDebugLayoutPanel; + ocrControl = ocrControlObject; } public bool isDinoInventoryVisible() @@ -1116,10 +1146,11 @@ public bool isDinoInventoryVisible() return false; string statName = "Level"; - testbmp = SubImage(screenshotbmp, statPositions[statName][0], statPositions[statName][1], statPositions[statName][2], statPositions[statName][3]); - string statOCR = readImage(currentFontSizeLarge, testbmp, true, false); + Rectangle rec = ocrConfig.labelRectangles[ocrConfig.labelNames[statName]]; + testbmp = SubImage(screenshotbmp, rec.X, rec.Y, rec.Width, rec.Height); + string statOCR = readImage(testbmp, true, false); - Regex r = new Regex(@"(\d+)"); + Regex r = new Regex(@"\d+"); MatchCollection mc = r.Matches(statOCR); if (mc.Count != 0) @@ -1128,52 +1159,42 @@ public bool isDinoInventoryVisible() return false; } - // Hamming-weight lookup-table, taken from http://www.necessaryandsufficient.net/2009/04/optimising-bit-counting-using-iterative-data-driven-development/ - - private readonly byte[] bitCounts = new byte[ushort.MaxValue + 1]; - - private bool HammingIsInitialized; // will be false by default - - private uint BitsSetCountWegner(uint input) - { - uint count; - for (count = 0; input != 0; count++) - { - input &= input - 1; // turn off the rightmost 1-bit - } - return count; - } - - private void InitializeBitcounts() + /// <summary> + /// returns bit-array that represent a b/w-bitmap. At index 0 is the width + /// </summary> + /// <param name="letter"></param> + /// <returns></returns> + private uint[] letterArray(Bitmap letter) { - for (uint i = 0; i < UInt16.MaxValue; i++) + // determine height + int height = 0; + for (int y = letter.Height - 1; y >= 0; y--) { - // Get the bitcount using any method - bitCounts[i] = (byte)BitsSetCountWegner(i); + for (int x = 0; x < letter.Width; x++) + { + if (letter.GetPixel(x, y).R != 0) + { + height = y + 1; + break; + } + } + if (height != 0) break; } - bitCounts[ushort.MaxValue] = 16; - HammingIsInitialized = true; - } - - private uint HammingWeight(uint i) - { - if (!HammingIsInitialized) - InitializeBitcounts(); - return (uint)(bitCounts[i & 0xFFFF] + bitCounts[(i >> 16) & 0xFFFF]); - } - - private uint[] letterArray(Bitmap letter) - { - uint[] la = new uint[letter.Height]; - for (int y = 0; y < letter.Height; y++) + uint[] la = new uint[height + 1]; + la[0] = 0; + uint width = 0; + for (int y = 0; y < height; y++) { uint row = 0; for (int x = 0; x < letter.Width; x++) { row += (letter.GetPixel(x, y).R == 0 ? 0 : (uint)(1 << x)); } - la[y] = row; + la[y + 1] = row; + + width = (uint)Math.Log(row, 2) + 1; + if (width > la[0]) la[0] = width; } return la; } diff --git a/ARKBreedingStats/ocr/HammingWeight.cs b/ARKBreedingStats/ocr/HammingWeight.cs new file mode 100644 index 00000000..61bcf7af --- /dev/null +++ b/ARKBreedingStats/ocr/HammingWeight.cs @@ -0,0 +1,45 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ARKBreedingStats.ocr +{ + public static class HammingWeight + { + // Hamming-weight lookup-table, taken from http://www.necessaryandsufficient.net/2009/04/optimising-bit-counting-using-iterative-data-driven-development/ + + private static readonly byte[] bitCounts = new byte[ushort.MaxValue + 1]; + + private static bool HammingIsInitialized; // will be false by default + + private static uint BitsSetCountWegner(uint input) + { + uint count; + for (count = 0; input != 0; count++) + { + input &= input - 1; // turn off the rightmost 1-bit + } + return count; + } + + private static void InitializeBitcounts() + { + for (uint i = 0; i < UInt16.MaxValue; i++) + { + bitCounts[i] = (byte)BitsSetCountWegner(i); + } + bitCounts[ushort.MaxValue] = 16; + HammingIsInitialized = true; + } + + public static uint HWeight(uint i) + { + if (!HammingIsInitialized) + InitializeBitcounts(); + + return (uint)(bitCounts[i & 0xFFFF] + bitCounts[(i >> 16) & 0xFFFF]); + } + } +} diff --git a/ARKBreedingStats/ocr/OCRControl.Designer.cs b/ARKBreedingStats/ocr/OCRControl.Designer.cs new file mode 100644 index 00000000..5b79f685 --- /dev/null +++ b/ARKBreedingStats/ocr/OCRControl.Designer.cs @@ -0,0 +1,759 @@ +using System; + +namespace ARKBreedingStats.ocr +{ + partial class OCRControl + { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(OCRControl)); + this.tableLayoutPanel4 = new System.Windows.Forms.TableLayoutPanel(); + this.OCRDebugLayoutPanel = new System.Windows.Forms.FlowLayoutPanel(); + this.tabControl1 = new System.Windows.Forms.TabControl(); + this.tabPage1 = new System.Windows.Forms.TabPage(); + this.label12 = new System.Windows.Forms.Label(); + this.tabPage2 = new System.Windows.Forms.TabPage(); + this.label3 = new System.Windows.Forms.Label(); + this.txtOCROutput = new System.Windows.Forms.TextBox(); + this.label11 = new System.Windows.Forms.Label(); + this.listBoxRecognized = new System.Windows.Forms.ListBox(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.label2 = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.button1 = new System.Windows.Forms.Button(); + this.textBoxTemplate = new System.Windows.Forms.TextBox(); + this.label13 = new System.Windows.Forms.Label(); + this.buttonSaveOCR = new System.Windows.Forms.Button(); + this.nudWhiteTreshold = new System.Windows.Forms.NumericUpDown(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.buttonSaveAsTemplate = new System.Windows.Forms.Button(); + this.labelMatching = new System.Windows.Forms.Label(); + this.button2 = new System.Windows.Forms.Button(); + this.tabPage3 = new System.Windows.Forms.TabPage(); + this.groupBox4 = new System.Windows.Forms.GroupBox(); + this.label8 = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.groupBox3 = new System.Windows.Forms.GroupBox(); + this.listBoxLabelRectangles = new System.Windows.Forms.ListBox(); + this.label9 = new System.Windows.Forms.Label(); + this.label10 = new System.Windows.Forms.Label(); + this.chkbSetAllStatLabels = new System.Windows.Forms.CheckBox(); + this.buttonLoadOCRTemplate = new System.Windows.Forms.Button(); + this.buttonLoadCalibrationImage = new System.Windows.Forms.Button(); + this.textBoxCalibrationText = new System.Windows.Forms.TextBox(); + this.label14 = new System.Windows.Forms.Label(); + this.labelOCRFile = new System.Windows.Forms.Label(); + this.nudFontSizeCalibration = new ARKBreedingStats.uiControls.Nud(); + this.nudFontSize = new ARKBreedingStats.uiControls.Nud(); + this.ocrLetterEditTemplate = new ARKBreedingStats.ocr.OCRLetterEdit(); + this.ocrLetterEditRecognized = new ARKBreedingStats.ocr.OCRLetterEdit(); + this.nudHeightT = new ARKBreedingStats.uiControls.Nud(); + this.nudWidthL = new ARKBreedingStats.uiControls.Nud(); + this.nudHeight = new ARKBreedingStats.uiControls.Nud(); + this.nudWidth = new ARKBreedingStats.uiControls.Nud(); + this.nudY = new ARKBreedingStats.uiControls.Nud(); + this.nudX = new ARKBreedingStats.uiControls.Nud(); + this.tableLayoutPanel4.SuspendLayout(); + this.tabControl1.SuspendLayout(); + this.tabPage1.SuspendLayout(); + this.tabPage2.SuspendLayout(); + this.groupBox1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.nudWhiteTreshold)).BeginInit(); + this.groupBox2.SuspendLayout(); + this.tabPage3.SuspendLayout(); + this.groupBox4.SuspendLayout(); + this.groupBox3.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.nudFontSizeCalibration)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudFontSize)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.ocrLetterEditTemplate)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.ocrLetterEditRecognized)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudHeightT)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudWidthL)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudHeight)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudWidth)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudY)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudX)).BeginInit(); + this.SuspendLayout(); + // + // tableLayoutPanel4 + // + this.tableLayoutPanel4.ColumnCount = 2; + this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 360F)); + this.tableLayoutPanel4.Controls.Add(this.OCRDebugLayoutPanel, 0, 0); + this.tableLayoutPanel4.Controls.Add(this.tabControl1, 1, 0); + this.tableLayoutPanel4.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel4.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanel4.Name = "tableLayoutPanel4"; + this.tableLayoutPanel4.RowCount = 1; + this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel4.Size = new System.Drawing.Size(807, 726); + this.tableLayoutPanel4.TabIndex = 2; + // + // OCRDebugLayoutPanel + // + this.OCRDebugLayoutPanel.AllowDrop = true; + this.OCRDebugLayoutPanel.AutoScroll = true; + this.OCRDebugLayoutPanel.BackColor = System.Drawing.Color.LightSteelBlue; + this.OCRDebugLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill; + this.OCRDebugLayoutPanel.Location = new System.Drawing.Point(3, 3); + this.OCRDebugLayoutPanel.Name = "OCRDebugLayoutPanel"; + this.OCRDebugLayoutPanel.Size = new System.Drawing.Size(441, 720); + this.OCRDebugLayoutPanel.TabIndex = 0; + this.OCRDebugLayoutPanel.DragDrop += new System.Windows.Forms.DragEventHandler(this.OCRDebugLayoutPanel_DragDrop); + this.OCRDebugLayoutPanel.DragEnter += new System.Windows.Forms.DragEventHandler(this.OCRDebugLayoutPanel_DragEnter); + // + // tabControl1 + // + this.tabControl1.Controls.Add(this.tabPage1); + this.tabControl1.Controls.Add(this.tabPage2); + this.tabControl1.Controls.Add(this.tabPage3); + this.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tabControl1.Location = new System.Drawing.Point(450, 3); + this.tabControl1.Name = "tabControl1"; + this.tabControl1.SelectedIndex = 0; + this.tabControl1.Size = new System.Drawing.Size(354, 720); + this.tabControl1.TabIndex = 15; + // + // tabPage1 + // + this.tabPage1.Controls.Add(this.label12); + this.tabPage1.Location = new System.Drawing.Point(4, 22); + this.tabPage1.Name = "tabPage1"; + this.tabPage1.Padding = new System.Windows.Forms.Padding(3); + this.tabPage1.Size = new System.Drawing.Size(346, 694); + this.tabPage1.TabIndex = 0; + this.tabPage1.Text = "OCR Info"; + this.tabPage1.UseVisualStyleBackColor = true; + // + // label12 + // + this.label12.Location = new System.Drawing.Point(6, 14); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(334, 122); + this.label12.TabIndex = 6; + this.label12.Text = resources.GetString("label12.Text"); + // + // tabPage2 + // + this.tabPage2.Controls.Add(this.labelOCRFile); + this.tabPage2.Controls.Add(this.label14); + this.tabPage2.Controls.Add(this.textBoxCalibrationText); + this.tabPage2.Controls.Add(this.nudFontSizeCalibration); + this.tabPage2.Controls.Add(this.buttonLoadCalibrationImage); + this.tabPage2.Controls.Add(this.buttonLoadOCRTemplate); + this.tabPage2.Controls.Add(this.label3); + this.tabPage2.Controls.Add(this.txtOCROutput); + this.tabPage2.Controls.Add(this.label11); + this.tabPage2.Controls.Add(this.listBoxRecognized); + this.tabPage2.Controls.Add(this.groupBox1); + this.tabPage2.Controls.Add(this.label13); + this.tabPage2.Controls.Add(this.buttonSaveOCR); + this.tabPage2.Controls.Add(this.nudWhiteTreshold); + this.tabPage2.Controls.Add(this.groupBox2); + this.tabPage2.Location = new System.Drawing.Point(4, 22); + this.tabPage2.Name = "tabPage2"; + this.tabPage2.Padding = new System.Windows.Forms.Padding(3); + this.tabPage2.Size = new System.Drawing.Size(346, 694); + this.tabPage2.TabIndex = 1; + this.tabPage2.Text = "Output"; + this.tabPage2.UseVisualStyleBackColor = true; + // + // label3 + // + this.label3.Location = new System.Drawing.Point(6, 208); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(287, 44); + this.label3.TabIndex = 17; + this.label3.Text = "Here you can edit the OCR-character-templates. Click on a recognized character in" + + " the list on the right to see as which character it was read and to edit it."; + // + // txtOCROutput + // + this.txtOCROutput.Location = new System.Drawing.Point(6, 19); + this.txtOCROutput.Multiline = true; + this.txtOCROutput.Name = "txtOCROutput"; + this.txtOCROutput.Size = new System.Drawing.Size(287, 186); + this.txtOCROutput.TabIndex = 15; + // + // label11 + // + this.label11.AutoSize = true; + this.label11.Location = new System.Drawing.Point(6, 3); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(65, 13); + this.label11.TabIndex = 16; + this.label11.Text = "OCR Output"; + // + // listBoxRecognized + // + this.listBoxRecognized.Dock = System.Windows.Forms.DockStyle.Right; + this.listBoxRecognized.FormattingEnabled = true; + this.listBoxRecognized.Location = new System.Drawing.Point(299, 3); + this.listBoxRecognized.Name = "listBoxRecognized"; + this.listBoxRecognized.Size = new System.Drawing.Size(44, 688); + this.listBoxRecognized.TabIndex = 11; + this.listBoxRecognized.SelectedIndexChanged += new System.EventHandler(this.listBoxRecognized_SelectedIndexChanged); + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.label2); + this.groupBox1.Controls.Add(this.label1); + this.groupBox1.Controls.Add(this.nudFontSize); + this.groupBox1.Controls.Add(this.ocrLetterEditTemplate); + this.groupBox1.Controls.Add(this.button1); + this.groupBox1.Controls.Add(this.textBoxTemplate); + this.groupBox1.Location = new System.Drawing.Point(6, 255); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(248, 126); + this.groupBox1.TabIndex = 10; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "Template"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(6, 22); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(53, 13); + this.label2.TabIndex = 15; + this.label2.Text = "Character"; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(6, 102); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(46, 13); + this.label1.TabIndex = 14; + this.label1.Text = "font size"; + // + // button1 + // + this.button1.Location = new System.Drawing.Point(71, 45); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(59, 36); + this.button1.TabIndex = 11; + this.button1.Text = "Save template"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // textBoxTemplate + // + this.textBoxTemplate.Location = new System.Drawing.Point(71, 19); + this.textBoxTemplate.MaxLength = 1; + this.textBoxTemplate.Name = "textBoxTemplate"; + this.textBoxTemplate.Size = new System.Drawing.Size(59, 20); + this.textBoxTemplate.TabIndex = 9; + this.textBoxTemplate.TextChanged += new System.EventHandler(this.textBoxTemplate_TextChanged); + this.textBoxTemplate.Enter += new System.EventHandler(this.textBoxTemplate_Enter); + // + // label13 + // + this.label13.Location = new System.Drawing.Point(61, 515); + this.label13.Name = "label13"; + this.label13.Size = new System.Drawing.Size(227, 35); + this.label13.TabIndex = 8; + this.label13.Text = "White Threshold (increase if you increased gamma ingame)"; + // + // buttonSaveOCR + // + this.buttonSaveOCR.Location = new System.Drawing.Point(142, 544); + this.buttonSaveOCR.Name = "buttonSaveOCR"; + this.buttonSaveOCR.Size = new System.Drawing.Size(146, 23); + this.buttonSaveOCR.TabIndex = 14; + this.buttonSaveOCR.Text = "save OCR template"; + this.buttonSaveOCR.UseVisualStyleBackColor = true; + this.buttonSaveOCR.Click += new System.EventHandler(this.buttonSaveOCR_Click); + // + // nudWhiteTreshold + // + this.nudWhiteTreshold.Location = new System.Drawing.Point(6, 518); + this.nudWhiteTreshold.Maximum = new decimal(new int[] { + 255, + 0, + 0, + 0}); + this.nudWhiteTreshold.Name = "nudWhiteTreshold"; + this.nudWhiteTreshold.Size = new System.Drawing.Size(49, 20); + this.nudWhiteTreshold.TabIndex = 7; + this.nudWhiteTreshold.Value = new decimal(new int[] { + 155, + 0, + 0, + 0}); + this.nudWhiteTreshold.ValueChanged += new System.EventHandler(this.nudWhiteTreshold_ValueChanged); + // + // groupBox2 + // + this.groupBox2.Controls.Add(this.buttonSaveAsTemplate); + this.groupBox2.Controls.Add(this.labelMatching); + this.groupBox2.Controls.Add(this.ocrLetterEditRecognized); + this.groupBox2.Controls.Add(this.button2); + this.groupBox2.Location = new System.Drawing.Point(6, 387); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Size = new System.Drawing.Size(248, 125); + this.groupBox2.TabIndex = 13; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "Recognized"; + // + // buttonSaveAsTemplate + // + this.buttonSaveAsTemplate.Location = new System.Drawing.Point(71, 16); + this.buttonSaveAsTemplate.Name = "buttonSaveAsTemplate"; + this.buttonSaveAsTemplate.Size = new System.Drawing.Size(59, 36); + this.buttonSaveAsTemplate.TabIndex = 15; + this.buttonSaveAsTemplate.Text = "Save as template"; + this.buttonSaveAsTemplate.UseVisualStyleBackColor = true; + this.buttonSaveAsTemplate.Click += new System.EventHandler(this.buttonSaveAsTemplate_Click); + // + // labelMatching + // + this.labelMatching.Location = new System.Drawing.Point(6, 16); + this.labelMatching.Name = "labelMatching"; + this.labelMatching.Size = new System.Drawing.Size(59, 36); + this.labelMatching.TabIndex = 14; + this.labelMatching.Text = "match"; + // + // button2 + // + this.button2.Location = new System.Drawing.Point(71, 58); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(59, 36); + this.button2.TabIndex = 11; + this.button2.Text = "Copy to template"; + this.button2.UseVisualStyleBackColor = true; + this.button2.Click += new System.EventHandler(this.button2_Click); + // + // tabPage3 + // + this.tabPage3.Controls.Add(this.groupBox4); + this.tabPage3.Controls.Add(this.groupBox3); + this.tabPage3.Location = new System.Drawing.Point(4, 22); + this.tabPage3.Name = "tabPage3"; + this.tabPage3.Padding = new System.Windows.Forms.Padding(3); + this.tabPage3.Size = new System.Drawing.Size(346, 694); + this.tabPage3.TabIndex = 2; + this.tabPage3.Text = "Labels"; + this.tabPage3.UseVisualStyleBackColor = true; + // + // groupBox4 + // + this.groupBox4.Controls.Add(this.chkbSetAllStatLabels); + this.groupBox4.Controls.Add(this.label9); + this.groupBox4.Controls.Add(this.nudHeightT); + this.groupBox4.Controls.Add(this.label10); + this.groupBox4.Controls.Add(this.nudWidthL); + this.groupBox4.Controls.Add(this.label8); + this.groupBox4.Controls.Add(this.label7); + this.groupBox4.Controls.Add(this.nudHeight); + this.groupBox4.Controls.Add(this.label6); + this.groupBox4.Controls.Add(this.nudWidth); + this.groupBox4.Controls.Add(this.label5); + this.groupBox4.Controls.Add(this.nudY); + this.groupBox4.Controls.Add(this.label4); + this.groupBox4.Controls.Add(this.nudX); + this.groupBox4.Location = new System.Drawing.Point(6, 275); + this.groupBox4.Name = "groupBox4"; + this.groupBox4.Size = new System.Drawing.Size(293, 181); + this.groupBox4.TabIndex = 2; + this.groupBox4.TabStop = false; + this.groupBox4.Text = "Rectangle"; + // + // label8 + // + this.label8.Location = new System.Drawing.Point(6, 16); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(281, 43); + this.label8.TabIndex = 8; + this.label8.Text = "The Height has to be the same for all texts in the same size. The text-baseline h" + + "as to be exact in the same position for all labels with the same text-size."; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Location = new System.Drawing.Point(149, 93); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(38, 13); + this.label7.TabIndex = 7; + this.label7.Text = "Height"; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(15, 93); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(35, 13); + this.label6.TabIndex = 5; + this.label6.Text = "Width"; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(173, 67); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(14, 13); + this.label5.TabIndex = 3; + this.label5.Text = "Y"; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(36, 67); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(14, 13); + this.label4.TabIndex = 1; + this.label4.Text = "X"; + // + // groupBox3 + // + this.groupBox3.Controls.Add(this.listBoxLabelRectangles); + this.groupBox3.Location = new System.Drawing.Point(6, 6); + this.groupBox3.Name = "groupBox3"; + this.groupBox3.Size = new System.Drawing.Size(221, 263); + this.groupBox3.TabIndex = 1; + this.groupBox3.TabStop = false; + this.groupBox3.Text = "Labelpositions"; + // + // listBoxLabelRectangles + // + this.listBoxLabelRectangles.FormattingEnabled = true; + this.listBoxLabelRectangles.Location = new System.Drawing.Point(6, 19); + this.listBoxLabelRectangles.Name = "listBoxLabelRectangles"; + this.listBoxLabelRectangles.Size = new System.Drawing.Size(209, 238); + this.listBoxLabelRectangles.TabIndex = 0; + this.listBoxLabelRectangles.SelectedIndexChanged += new System.EventHandler(this.listBoxLabelRectangles_SelectedIndexChanged); + // + // label9 + // + this.label9.AutoSize = true; + this.label9.Location = new System.Drawing.Point(139, 119); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(48, 13); + this.label9.TabIndex = 12; + this.label9.Text = "Height-T"; + // + // label10 + // + this.label10.AutoSize = true; + this.label10.Location = new System.Drawing.Point(6, 119); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(44, 13); + this.label10.TabIndex = 10; + this.label10.Text = "Width-L"; + // + // chkbSetAllStatLabels + // + this.chkbSetAllStatLabels.AutoSize = true; + this.chkbSetAllStatLabels.Location = new System.Drawing.Point(6, 153); + this.chkbSetAllStatLabels.Name = "chkbSetAllStatLabels"; + this.chkbSetAllStatLabels.Size = new System.Drawing.Size(206, 17); + this.chkbSetAllStatLabels.TabIndex = 13; + this.chkbSetAllStatLabels.Text = "Set Values (except Y) for all stat-labels"; + this.chkbSetAllStatLabels.UseVisualStyleBackColor = true; + // + // buttonLoadOCRTemplate + // + this.buttonLoadOCRTemplate.Location = new System.Drawing.Point(6, 544); + this.buttonLoadOCRTemplate.Name = "buttonLoadOCRTemplate"; + this.buttonLoadOCRTemplate.Size = new System.Drawing.Size(130, 23); + this.buttonLoadOCRTemplate.TabIndex = 18; + this.buttonLoadOCRTemplate.Text = "load OCR template"; + this.buttonLoadOCRTemplate.UseVisualStyleBackColor = true; + this.buttonLoadOCRTemplate.Click += new System.EventHandler(this.buttonLoadOCRTemplate_Click); + // + // buttonLoadCalibrationImage + // + this.buttonLoadCalibrationImage.Location = new System.Drawing.Point(6, 630); + this.buttonLoadCalibrationImage.Name = "buttonLoadCalibrationImage"; + this.buttonLoadCalibrationImage.Size = new System.Drawing.Size(130, 23); + this.buttonLoadCalibrationImage.TabIndex = 19; + this.buttonLoadCalibrationImage.Text = "Calibrate from Font"; + this.buttonLoadCalibrationImage.UseVisualStyleBackColor = true; + this.buttonLoadCalibrationImage.Click += new System.EventHandler(this.buttonLoadCalibrationImage_Click); + // + // textBoxCalibrationText + // + this.textBoxCalibrationText.Location = new System.Drawing.Point(142, 630); + this.textBoxCalibrationText.Name = "textBoxCalibrationText"; + this.textBoxCalibrationText.Size = new System.Drawing.Size(146, 20); + this.textBoxCalibrationText.TabIndex = 20; + this.textBoxCalibrationText.Text = "!#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqr" + + "stuvwxyz{|}~"; + // + // label14 + // + this.label14.AutoSize = true; + this.label14.Location = new System.Drawing.Point(177, 658); + this.label14.Name = "label14"; + this.label14.Size = new System.Drawing.Size(46, 13); + this.label14.TabIndex = 17; + this.label14.Text = "font size"; + // + // labelOCRFile + // + this.labelOCRFile.Location = new System.Drawing.Point(6, 570); + this.labelOCRFile.Name = "labelOCRFile"; + this.labelOCRFile.Size = new System.Drawing.Size(287, 57); + this.labelOCRFile.TabIndex = 21; + this.labelOCRFile.Text = "label15"; + // + // nudFontSizeCalibration + // + this.nudFontSizeCalibration.Location = new System.Drawing.Point(229, 656); + this.nudFontSizeCalibration.Maximum = new decimal(new int[] { + 20, + 0, + 0, + 0}); + this.nudFontSizeCalibration.Minimum = new decimal(new int[] { + 8, + 0, + 0, + 0}); + this.nudFontSizeCalibration.Name = "nudFontSizeCalibration"; + this.nudFontSizeCalibration.Size = new System.Drawing.Size(59, 20); + this.nudFontSizeCalibration.TabIndex = 16; + this.nudFontSizeCalibration.Value = new decimal(new int[] { + 18, + 0, + 0, + 0}); + // + // nudFontSize + // + this.nudFontSize.Location = new System.Drawing.Point(58, 100); + this.nudFontSize.Maximum = new decimal(new int[] { + 20, + 0, + 0, + 0}); + this.nudFontSize.Minimum = new decimal(new int[] { + 8, + 0, + 0, + 0}); + this.nudFontSize.Name = "nudFontSize"; + this.nudFontSize.Size = new System.Drawing.Size(59, 20); + this.nudFontSize.TabIndex = 13; + this.nudFontSize.Value = new decimal(new int[] { + 18, + 0, + 0, + 0}); + this.nudFontSize.ValueChanged += new System.EventHandler(this.nudFontSize_ValueChanged); + // + // ocrLetterEditTemplate + // + this.ocrLetterEditTemplate.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.ocrLetterEditTemplate.LetterArray = new uint[] { + ((uint)(0u))}; + this.ocrLetterEditTemplate.Location = new System.Drawing.Point(136, 19); + this.ocrLetterEditTemplate.Name = "ocrLetterEditTemplate"; + this.ocrLetterEditTemplate.Size = new System.Drawing.Size(100, 100); + this.ocrLetterEditTemplate.TabIndex = 12; + this.ocrLetterEditTemplate.TabStop = false; + // + // ocrLetterEditRecognized + // + this.ocrLetterEditRecognized.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.ocrLetterEditRecognized.LetterArray = new uint[] { + ((uint)(0u))}; + this.ocrLetterEditRecognized.Location = new System.Drawing.Point(136, 16); + this.ocrLetterEditRecognized.Name = "ocrLetterEditRecognized"; + this.ocrLetterEditRecognized.Size = new System.Drawing.Size(100, 100); + this.ocrLetterEditRecognized.TabIndex = 13; + this.ocrLetterEditRecognized.TabStop = false; + // + // nudHeightT + // + this.nudHeightT.Location = new System.Drawing.Point(193, 117); + this.nudHeightT.Maximum = new decimal(new int[] { + 4000, + 0, + 0, + 0}); + this.nudHeightT.Name = "nudHeightT"; + this.nudHeightT.Size = new System.Drawing.Size(77, 20); + this.nudHeightT.TabIndex = 11; + this.nudHeightT.ValueChanged += new System.EventHandler(this.nudHeightT_ValueChanged); + // + // nudWidthL + // + this.nudWidthL.Location = new System.Drawing.Point(56, 117); + this.nudWidthL.Maximum = new decimal(new int[] { + 4000, + 0, + 0, + 0}); + this.nudWidthL.Name = "nudWidthL"; + this.nudWidthL.Size = new System.Drawing.Size(77, 20); + this.nudWidthL.TabIndex = 9; + this.nudWidthL.ValueChanged += new System.EventHandler(this.nudWidthL_ValueChanged); + // + // nudHeight + // + this.nudHeight.Location = new System.Drawing.Point(193, 91); + this.nudHeight.Maximum = new decimal(new int[] { + 4000, + 0, + 0, + 0}); + this.nudHeight.Name = "nudHeight"; + this.nudHeight.Size = new System.Drawing.Size(77, 20); + this.nudHeight.TabIndex = 6; + this.nudHeight.ValueChanged += new System.EventHandler(this.nudHeight_ValueChanged); + // + // nudWidth + // + this.nudWidth.Location = new System.Drawing.Point(56, 91); + this.nudWidth.Maximum = new decimal(new int[] { + 4000, + 0, + 0, + 0}); + this.nudWidth.Name = "nudWidth"; + this.nudWidth.Size = new System.Drawing.Size(77, 20); + this.nudWidth.TabIndex = 4; + this.nudWidth.ValueChanged += new System.EventHandler(this.nudWidth_ValueChanged); + // + // nudY + // + this.nudY.Location = new System.Drawing.Point(193, 65); + this.nudY.Maximum = new decimal(new int[] { + 4000, + 0, + 0, + 0}); + this.nudY.Name = "nudY"; + this.nudY.Size = new System.Drawing.Size(77, 20); + this.nudY.TabIndex = 2; + this.nudY.ValueChanged += new System.EventHandler(this.nudY_ValueChanged); + // + // nudX + // + this.nudX.Location = new System.Drawing.Point(56, 65); + this.nudX.Maximum = new decimal(new int[] { + 4000, + 0, + 0, + 0}); + this.nudX.Name = "nudX"; + this.nudX.Size = new System.Drawing.Size(77, 20); + this.nudX.TabIndex = 0; + this.nudX.ValueChanged += new System.EventHandler(this.nudX_ValueChanged); + // + // OCRControl + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.tableLayoutPanel4); + this.Name = "OCRControl"; + this.Size = new System.Drawing.Size(807, 726); + this.tableLayoutPanel4.ResumeLayout(false); + this.tabControl1.ResumeLayout(false); + this.tabPage1.ResumeLayout(false); + this.tabPage2.ResumeLayout(false); + this.tabPage2.PerformLayout(); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.nudWhiteTreshold)).EndInit(); + this.groupBox2.ResumeLayout(false); + this.tabPage3.ResumeLayout(false); + this.groupBox4.ResumeLayout(false); + this.groupBox4.PerformLayout(); + this.groupBox3.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.nudFontSizeCalibration)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudFontSize)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.ocrLetterEditTemplate)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.ocrLetterEditRecognized)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudHeightT)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudWidthL)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudHeight)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudWidth)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudY)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudX)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel4; + private System.Windows.Forms.FlowLayoutPanel OCRDebugLayoutPanel; + private System.Windows.Forms.Label label12; + private System.Windows.Forms.ListBox listBoxRecognized; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.TextBox textBoxTemplate; + private System.Windows.Forms.GroupBox groupBox2; + private System.Windows.Forms.Button button2; + private OCRLetterEdit ocrLetterEditTemplate; + private OCRLetterEdit ocrLetterEditRecognized; + private System.Windows.Forms.Label label1; + private uiControls.Nud nudFontSize; + private System.Windows.Forms.Button buttonSaveOCR; + private System.Windows.Forms.Label labelMatching; + private System.Windows.Forms.Button buttonSaveAsTemplate; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TabControl tabControl1; + private System.Windows.Forms.TabPage tabPage1; + private System.Windows.Forms.TabPage tabPage2; + private System.Windows.Forms.Label label13; + private System.Windows.Forms.NumericUpDown nudWhiteTreshold; + private System.Windows.Forms.TextBox txtOCROutput; + private System.Windows.Forms.Label label11; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.TabPage tabPage3; + private System.Windows.Forms.GroupBox groupBox3; + private System.Windows.Forms.ListBox listBoxLabelRectangles; + private System.Windows.Forms.GroupBox groupBox4; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.Label label7; + private uiControls.Nud nudHeight; + private System.Windows.Forms.Label label6; + private uiControls.Nud nudWidth; + private System.Windows.Forms.Label label5; + private uiControls.Nud nudY; + private System.Windows.Forms.Label label4; + private uiControls.Nud nudX; + private System.Windows.Forms.CheckBox chkbSetAllStatLabels; + private System.Windows.Forms.Label label9; + private uiControls.Nud nudHeightT; + private System.Windows.Forms.Label label10; + private uiControls.Nud nudWidthL; + private System.Windows.Forms.Button buttonLoadOCRTemplate; + private System.Windows.Forms.Button buttonLoadCalibrationImage; + private System.Windows.Forms.TextBox textBoxCalibrationText; + private System.Windows.Forms.Label label14; + private uiControls.Nud nudFontSizeCalibration; + private System.Windows.Forms.Label labelOCRFile; + } +} diff --git a/ARKBreedingStats/ocr/OCRControl.cs b/ARKBreedingStats/ocr/OCRControl.cs new file mode 100644 index 00000000..770e8c3e --- /dev/null +++ b/ARKBreedingStats/ocr/OCRControl.cs @@ -0,0 +1,375 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace ARKBreedingStats.ocr +{ + public partial class OCRControl : UserControl + { + public delegate void IntEventHandler(int value); + public event IntEventHandler updateWhiteThreshold; + public event DragEventHandler dragEnter; + public event DragEventHandler dragDrop; + public FlowLayoutPanel debugPanel; + public TextBox output; + private List<uint[]> recognizedLetterArrays; + private List<char> recognizedLetters; + private List<int> recognizedFontSizes; + private Bitmap screenshot; + private bool updateDrawing, ignoreValueChange; + + public OCRControl() + { + InitializeComponent(); + debugPanel = OCRDebugLayoutPanel; + output = txtOCROutput; + ocrLetterEditTemplate.drawingEnabled = true; + recognizedLetterArrays = new List<uint[]>(); + recognizedLetters = new List<char>(); + recognizedFontSizes = new List<int>(); + updateDrawing = true; + ignoreValueChange = false; + } + + public void initLabelEntries() + { + listBoxLabelRectangles.Items.Clear(); + foreach (KeyValuePair<string, int> rn in ArkOCR.OCR.ocrConfig.labelNames) + listBoxLabelRectangles.Items.Add(rn.Key); + } + + private void nudWhiteTreshold_ValueChanged(object sender, EventArgs e) + { + updateWhiteThreshold?.Invoke((int)nudWhiteTreshold.Value); + } + + private void OCRDebugLayoutPanel_DragEnter(object sender, DragEventArgs e) + { + dragEnter?.Invoke(sender, e); + } + + private void OCRDebugLayoutPanel_DragDrop(object sender, DragEventArgs e) + { + dragDrop?.Invoke(sender, e); + } + + private void listBoxRecognized_SelectedIndexChanged(object sender, EventArgs e) + { + int i = listBoxRecognized.SelectedIndex; + if (i >= 0 && i < recognizedLetters.Count) + { + textBoxTemplate.Text = recognizedLetters[i].ToString(); + nudFontSize.Value = recognizedFontSizes[i]; + ocrLetterEditRecognized.LetterArray = recognizedLetterArrays[i]; + ocrLetterEditTemplate.LetterArrayComparing = recognizedLetterArrays[i]; + showMatch(); + textBoxTemplate.Focus(); + textBoxTemplate.SelectAll(); + } + } + + private void button2_Click(object sender, EventArgs e) + { + ocrLetterEditTemplate.LetterArray = ocrLetterEditRecognized.LetterArray; + } + + public void ClearLists() + { + recognizedLetterArrays.Clear(); + recognizedLetters.Clear(); + recognizedFontSizes.Clear(); + listBoxRecognized.Items.Clear(); + } + + public void addLetterToRecognized(uint[] letterArray, char ch, int fontSize) + { + recognizedLetterArrays.Add(letterArray); + recognizedLetters.Add(ch); + recognizedFontSizes.Add(fontSize); + listBoxRecognized.Items.Add(ch); + } + + private void textBoxTemplate_TextChanged(object sender, EventArgs e) + { + if (textBoxTemplate.Text.Length > 0) + { + textBoxTemplate.SelectAll(); + loadTemplateLetter(); + } + } + + private void nudFontSize_ValueChanged(object sender, EventArgs e) + { + loadTemplateLetter(); + } + + private void loadTemplateLetter() + { + ocrLetterEditTemplate.Clear(); + if (textBoxTemplate.Text.Length > 0) + { + char c = textBoxTemplate.Text[0]; + int ocrIndex = ArkOCR.OCR.ocrConfig.fontSizeIndex((int)nudFontSize.Value); + if (ocrIndex != -1) + { + int lI = ArkOCR.OCR.ocrConfig.letters[ocrIndex].IndexOf(c); + if (lI != -1) + ocrLetterEditTemplate.LetterArray = ArkOCR.OCR.ocrConfig.letterArrays[ocrIndex][lI]; + } + } + showMatch(); + } + + private void button1_Click(object sender, EventArgs e) + { + saveTemplate(textBoxTemplate.Text[0], ocrLetterEditTemplate.LetterArray); + } + + private void buttonSaveAsTemplate_Click(object sender, EventArgs e) + { + saveTemplate(textBoxTemplate.Text[0], ocrLetterEditRecognized.LetterArray); + } + + private void saveTemplate(char c, uint[] letterArray) + { + int ocrIndex = ArkOCR.OCR.ocrConfig.fontSizeIndex((int)nudFontSize.Value, true); + int lI = ArkOCR.OCR.ocrConfig.letters[ocrIndex].IndexOf(c); + if (lI == -1) + { + ArkOCR.OCR.ocrConfig.letters[ocrIndex].Add(c); + ArkOCR.OCR.ocrConfig.letterArrays[ocrIndex].Add(letterArray); + } + else + ArkOCR.OCR.ocrConfig.letterArrays[ocrIndex][lI] = letterArray; + loadTemplateLetter(); + } + + private void textBoxTemplate_Enter(object sender, EventArgs e) + { + textBoxTemplate.SelectAll(); + } + + private void showMatch() + { + float match = 0; + uint HammingDiff = 0; + int maxTestRange = Math.Min(ocrLetterEditTemplate.LetterArray.Length, ocrLetterEditRecognized.LetterArray.Length); + for (int y = 1; y < maxTestRange; y++) + HammingDiff += ocr.HammingWeight.HWeight(ocrLetterEditTemplate.LetterArray[y] ^ ocrLetterEditRecognized.LetterArray[y]); + if (ocrLetterEditTemplate.LetterArray.Length > ocrLetterEditRecognized.LetterArray.Length) + { + for (int y = maxTestRange; y < ocrLetterEditTemplate.LetterArray.Length; y++) + HammingDiff += ocr.HammingWeight.HWeight(ocrLetterEditTemplate.LetterArray[y]); + } + else if (ocrLetterEditTemplate.LetterArray.Length < ocrLetterEditRecognized.LetterArray.Length) + { + for (int y = maxTestRange; y < ocrLetterEditRecognized.LetterArray.Length; y++) + HammingDiff += ocr.HammingWeight.HWeight(ocrLetterEditRecognized.LetterArray[y]); + } + long total = Math.Max(ocrLetterEditTemplate.LetterArray.Length, ocrLetterEditRecognized.LetterArray.Length) * Math.Max(ocrLetterEditTemplate.LetterArray[0], ocrLetterEditRecognized.LetterArray[0]); + if (total > 10) + match = ((float)(total - HammingDiff) / total); + else + match = 1 - HammingDiff / 10f; + + labelMatching.Text = "matching: " + Math.Round(match * 100, 1) + " %"; + } + + internal void setWhiteThreshold(int oCRWhiteThreshold) + { + nudWhiteTreshold.Value = oCRWhiteThreshold; + } + + private void listBoxLabelRectangles_SelectedIndexChanged(object sender, EventArgs e) + { + int i = listBoxLabelRectangles.SelectedIndex; + if (i >= 0) + { + setLabelControls(i); + redrawLabelRectangles(i); + } + } + + private void setLabelControls(int rectangleIndex) + { + if (rectangleIndex >= 0 && rectangleIndex < ArkOCR.OCR.ocrConfig.labelRectangles.Count) + { + Rectangle rec = ArkOCR.OCR.ocrConfig.labelRectangles[rectangleIndex]; + ignoreValueChange = true; + nudX.Value = rec.X; + nudY.Value = rec.Y; + nudWidth.Value = rec.Width; + nudHeight.Value = rec.Height; + nudWidthL.Value = rec.Width; + nudHeightT.Value = rec.Height; + ignoreValueChange = false; + } + } + + private void redrawLabelRectangles(int hightlightIndex) + { + if (OCRDebugLayoutPanel.Controls.Count > 0 && OCRDebugLayoutPanel.Controls[OCRDebugLayoutPanel.Controls.Count - 1] is PictureBox && screenshot != null) + { + PictureBox p = (PictureBox)OCRDebugLayoutPanel.Controls[OCRDebugLayoutPanel.Controls.Count - 1]; + Bitmap b = new Bitmap(screenshot); + using (Graphics g = Graphics.FromImage(b)) + { + Pen penW = new Pen(Color.White, 2); + Pen penY = new Pen(Color.Yellow, 2); + Pen penB = new Pen(Color.Black, 2); + penW.Alignment = System.Drawing.Drawing2D.PenAlignment.Inset; + penY.Alignment = System.Drawing.Drawing2D.PenAlignment.Inset; + penB.Alignment = System.Drawing.Drawing2D.PenAlignment.Inset; + for (int r = 0; r < ArkOCR.OCR.ocrConfig.labelRectangles.Count; r++) + { + Rectangle rec = ArkOCR.OCR.ocrConfig.labelRectangles[r]; + if (r == hightlightIndex) + { + rec.Inflate(2, 2); + g.DrawRectangle(penY, rec); + rec.Inflate(2, 2); + g.DrawRectangle(penB, rec); + } + else + { + rec.Inflate(2, 2); + g.DrawRectangle(penW, rec); + rec.Inflate(2, 2); + g.DrawRectangle(penB, rec); + } + } + } + p.Image = b; + } + } + + private void nudX_ValueChanged(object sender, EventArgs e) + { + if (!ignoreValueChange) + { + updateRectangle(); + } + } + + private void nudY_ValueChanged(object sender, EventArgs e) + { + if (!ignoreValueChange) + { + updateRectangle(); + } + } + + private void nudWidth_ValueChanged(object sender, EventArgs e) + { + if (!ignoreValueChange) + { + updateDrawing = false; + nudWidthL.Value = nudWidth.Value; + updateDrawing = true; + updateRectangle(); + } + } + + private void nudHeight_ValueChanged(object sender, EventArgs e) + { + if (!ignoreValueChange) + { + updateDrawing = false; + nudHeightT.Value = nudHeight.Value; + updateDrawing = true; + updateRectangle(); + } + } + + private void nudWidthL_ValueChanged(object sender, EventArgs e) + { + if (!ignoreValueChange) + { + updateDrawing = false; + nudX.Value = nudX.Value + nudWidth.Value - nudWidthL.Value; + updateDrawing = true; + nudWidth.Value = nudWidthL.Value; + } + } + + private void nudHeightT_ValueChanged(object sender, EventArgs e) + { + if (!ignoreValueChange) + { + updateDrawing = false; + nudY.Value = nudY.Value + nudHeight.Value - nudHeightT.Value; + updateDrawing = true; + nudHeight.Value = nudHeightT.Value; + } + } + + private void updateRectangle() + { + if (updateDrawing) + { + int i = listBoxLabelRectangles.SelectedIndex; + if (i >= 0 && i < ArkOCR.OCR.ocrConfig.labelRectangles.Count) + { + // set all stat-labels if wanted + if (chkbSetAllStatLabels.Checked && i < 9) + { + for (int s = 0; s < 9; s++) + if (i != s) + ArkOCR.OCR.ocrConfig.labelRectangles[s] = new Rectangle((int)nudX.Value, ArkOCR.OCR.ocrConfig.labelRectangles[s].Y, (int)nudWidth.Value, (int)nudHeight.Value); + } + ArkOCR.OCR.ocrConfig.labelRectangles[i] = new Rectangle((int)nudX.Value, (int)nudY.Value, (int)nudWidth.Value, (int)nudHeight.Value); + redrawLabelRectangles(i); + } + } + } + + private void buttonSaveOCR_Click(object sender, EventArgs e) + { + SaveFileDialog dlg = new SaveFileDialog(); + dlg.Filter = "OCR configuration File (*.json)|*.json"; + dlg.InitialDirectory = Application.StartupPath; + if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK) + { + ArkOCR.OCR.ocrConfig.saveFile(dlg.FileName); + } + } + + private void buttonLoadOCRTemplate_Click(object sender, EventArgs e) + { + OpenFileDialog dlg = new OpenFileDialog(); + dlg.Filter = "OCR configuration File (*.json)|*.json"; + dlg.InitialDirectory = Application.StartupPath; + if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK) + { + OCRTemplate t = ArkOCR.OCR.ocrConfig.loadFile(dlg.FileName); + if (t != null) + { + ArkOCR.OCR.ocrConfig = t; + labelOCRFile.Text = dlg.FileName; + } + } + initLabelEntries(); + } + + private void buttonLoadCalibrationImage_Click(object sender, EventArgs e) + { + ArkOCR.OCR.calibrateFromFontFile((int)nudFontSizeCalibration.Value, textBoxCalibrationText.Text); + } + + internal void setScreenshot(Bitmap screenshotbmp) + { + screenshot = screenshotbmp; + } + + public void setOCRFile(string ocrFile) + { + labelOCRFile.Text = ocrFile; + } + } +} diff --git a/ARKBreedingStats/ocr/OCRControl.resx b/ARKBreedingStats/ocr/OCRControl.resx new file mode 100644 index 00000000..bbeeb97a --- /dev/null +++ b/ARKBreedingStats/ocr/OCRControl.resx @@ -0,0 +1,125 @@ +<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <data name="label12.Text" xml:space="preserve"> + <value>The text-recognition (OCR) can read the values from the ARK-window. This process works by creating a screenshot and reading the numbers from that, it does not interfere with the game itself and is safe to use with Battleye. + +On the next two tabs the OCR can be adjusted, this can be done if you don't have an ocr-config-file for your used resolution, or if a letter is often misrecognized.</value> + </data> +</root> \ No newline at end of file diff --git a/ARKBreedingStats/ocr/OCRLetterEdit.cs b/ARKBreedingStats/ocr/OCRLetterEdit.cs new file mode 100644 index 00000000..8caf2c69 --- /dev/null +++ b/ARKBreedingStats/ocr/OCRLetterEdit.cs @@ -0,0 +1,132 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace ARKBreedingStats.ocr +{ + class OCRLetterEdit : PictureBox + { + private uint[] letterArray; + private uint[] letterArrayComparing; + public bool drawingEnabled; + private bool overlay; + + public OCRLetterEdit() + { + letterArray = new uint[21]; + letterArrayComparing = new uint[21]; + drawingEnabled = false; + BorderStyle = BorderStyle.FixedSingle; + overlay = false; + } + + protected override void OnPaint(PaintEventArgs e) + { + base.OnPaint(e); + e.Graphics.FillRectangle(Brushes.Black, 0, 0, 100, 100); + int pxSize = 5; + for (int y = 0; y < letterArray.Length - 1; y++) + { + uint row = letterArray[y + 1]; + uint rowC = letterArrayComparing[y + 1]; + int x = 0; + while (row > 0 || rowC > 0) + { + if (!overlay) + { + if ((row & 1) == 1) + e.Graphics.FillRectangle(Brushes.White, x * pxSize, y * pxSize, pxSize, pxSize); + } + else + { + if ((row & 1) == 1 && (rowC & 1) == 1) + e.Graphics.FillRectangle(Brushes.White, x * pxSize, y * pxSize, pxSize, pxSize); + else if ((row & 1) == 1 && (rowC & 1) == 0) + e.Graphics.FillRectangle(Brushes.LightGreen, x * pxSize, y * pxSize, pxSize, pxSize); + else if ((row & 1) == 0 && (rowC & 1) == 1) + e.Graphics.FillRectangle(Brushes.DarkRed, x * pxSize, y * pxSize, pxSize, pxSize); + } + row = row >> 1; + rowC = rowC >> 1; + x++; + } + } + } + + public uint[] LetterArray + { + set + { + if (value != null) + { + for (int y = 0; y < 21; y++) + { + if (y < value.Length) + letterArray[y] = value[y]; + else letterArray[y] = 0; + } + Invalidate(); + } + } + get + { + int l = 0; + for (int y = 0; y < 21; y++) + if (letterArray[y] > 0) + l = y; + l++; + uint[] lArray = new uint[l]; + for (int y = 0; y < l; y++) + lArray[y] = letterArray[y]; + return lArray; + } + } + + public uint[] LetterArrayComparing + { + set + { + if (value != null) + { + overlay = false; + for (int y = 0; y < 20; y++) + { + if (y < value.Length) + { + letterArrayComparing[y] = value[y]; + if (value[y] > 0) + overlay = true; + } + else letterArrayComparing[y] = 0; + } + Invalidate(); + } + } + } + + internal void Clear() + { + LetterArrayComparing = new uint[0]; + LetterArray = new uint[0]; + } + + protected override void OnMouseClick(MouseEventArgs e) + { + base.OnMouseClick(e); + if (drawingEnabled) + { + Point p = e.Location; + int x = p.X / 5; + int y = p.Y / 5 + 1; // first row is array-length + while (letterArray.Length < y) letterArray[letterArray.Length] = 0; + // toggle pixel + letterArray[y] ^= (uint)(1 << x); + Invalidate(); + } + } + } +} diff --git a/ARKBreedingStats/ocr/OCRTemplate.cs b/ARKBreedingStats/ocr/OCRTemplate.cs new file mode 100644 index 00000000..8b2fc789 --- /dev/null +++ b/ARKBreedingStats/ocr/OCRTemplate.cs @@ -0,0 +1,129 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.IO; +using System.Runtime.Serialization; +using System.Runtime.Serialization.Json; +using System.Windows.Forms; + +namespace ARKBreedingStats.ocr +{ + [DataContract] + public class OCRTemplate + { + [DataMember] + public string description = ""; + [DataMember] + public string resolution = ""; + [DataMember] + public int guiZoom = 100; // todo name / float? percentage? decimals? + [DataMember] + public List<int> fontSizes = new List<int>(); + [DataMember] + public List<List<uint[]>> letterArrays = new List<List<uint[]>>(); + [DataMember] + public List<List<char>> letters = new List<List<char>>(); + [DataMember] + public List<Rectangle> labelRectangles = new List<Rectangle>(); + public Dictionary<string, int> labelNames = new Dictionary<string, int>(); + + public List<List<int>> reducedIndices = new List<List<int>>(); // indices of letters for reduced set (only [0-9\.,/%:]) + + public void init() + { + initLabelNames(); + initReducedIndices(); + } + + private void initLabelNames() + { + labelNames = new Dictionary<string, int>(); + labelNames.Add("Health", 0); + labelNames.Add("Stamina", 1); + labelNames.Add("Oxygen", 2); + labelNames.Add("Food", 3); + labelNames.Add("Weight", 4); + labelNames.Add("MeleeDamage", 5); + labelNames.Add("MovementSpeed", 6); + labelNames.Add("Torpor", 7); + labelNames.Add("Imprinting", 8); + labelNames.Add("Level", 9); + labelNames.Add("NameSpecies", 10); + labelNames.Add("Tribe", 11); + labelNames.Add("Owner", 12); + } + + private void initReducedIndices() + { + reducedIndices = new List<List<int>>(); + string reducedChars = ":0123456789.,%/"; + for (int o = 0; o < fontSizes.Count; o++) + { + reducedIndices.Add(new List<int>()); + for (int c = 0; c < letters[o].Count; c++) + { + if (reducedChars.IndexOf(letters[o][c]) != -1) + reducedIndices[o].Add(c); + } + } + } + + public int fontSizeIndex(int fontSize, bool createIfNotExisting = false) + { + if (fontSizes.IndexOf(fontSize) == -1 && createIfNotExisting) + { + fontSizes.Add(fontSize); + letterArrays.Add(new List<uint[]>()); + letters.Add(new List<char>()); + reducedIndices.Add(new List<int>()); + } + return fontSizes.IndexOf(fontSize); + } + + public OCRTemplate loadFile(string filename) + { + OCRTemplate ocrConfig = null; + + // check if file exists + if (!File.Exists(filename)) + { + MessageBox.Show("OCR-File '" + filename + "' not found. OCR is not possible without the config-file.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + return null; + } + + DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(OCRTemplate)); + System.IO.FileStream file = System.IO.File.OpenRead(filename); + + try + { + ocrConfig = (OCRTemplate)ser.ReadObject(file); + ocrConfig.init(); + Properties.Settings.Default.ocrFile = filename; + } + catch (Exception e) + { + MessageBox.Show("File Couldn't be opened or read.\nErrormessage:\n\n" + e.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + file.Close(); + + return ocrConfig; + } + + public bool saveFile(string filename) + { + DataContractJsonSerializer writer = new DataContractJsonSerializer(typeof(OCRTemplate)); + try + { + System.IO.FileStream file = System.IO.File.Create(filename); + writer.WriteObject(file, ArkOCR.OCR.ocrConfig); + file.Close(); + return true; + } + catch (Exception ex) + { + MessageBox.Show("Error during serialization.\nErrormessage:\n\n" + ex.Message, "Serialization-Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + return false; + } + } +} diff --git a/ARKBreedingStats/MultiplierSetting.Designer.cs b/ARKBreedingStats/settings/MultiplierSetting.Designer.cs similarity index 84% rename from ARKBreedingStats/MultiplierSetting.Designer.cs rename to ARKBreedingStats/settings/MultiplierSetting.Designer.cs index 395692e0..4dfe20df 100644 --- a/ARKBreedingStats/MultiplierSetting.Designer.cs +++ b/ARKBreedingStats/settings/MultiplierSetting.Designer.cs @@ -1,4 +1,4 @@ -namespace ARKBreedingStats +namespace ARKBreedingStats.settings { partial class MultiplierSetting { @@ -28,10 +28,10 @@ protected override void Dispose(bool disposing) /// </summary> private void InitializeComponent() { - this.numericUpDownWildLevel = new System.Windows.Forms.NumericUpDown(); - this.numericUpDownTameMult = new System.Windows.Forms.NumericUpDown(); - this.numericUpDownTameAdd = new System.Windows.Forms.NumericUpDown(); - this.numericUpDownDomLevel = new System.Windows.Forms.NumericUpDown(); + this.numericUpDownWildLevel = new ARKBreedingStats.uiControls.Nud(); + this.numericUpDownTameMult = new ARKBreedingStats.uiControls.Nud(); + this.numericUpDownTameAdd = new ARKBreedingStats.uiControls.Nud(); + this.numericUpDownDomLevel = new ARKBreedingStats.uiControls.Nud(); this.labelStatName = new System.Windows.Forms.Label(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDownWildLevel)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDownTameMult)).BeginInit(); @@ -56,7 +56,6 @@ private void InitializeComponent() 0, 0, 0}); - this.numericUpDownWildLevel.Enter += new System.EventHandler(this.numericUpDown_Enter); // // numericUpDownTameMult // @@ -75,7 +74,6 @@ private void InitializeComponent() 0, 0, 0}); - this.numericUpDownTameMult.Enter += new System.EventHandler(this.numericUpDown_Enter); // // numericUpDownTameAdd // @@ -94,7 +92,6 @@ private void InitializeComponent() 0, 0, 0}); - this.numericUpDownTameAdd.Enter += new System.EventHandler(this.numericUpDown_Enter); // // numericUpDownDomLevel // @@ -113,7 +110,6 @@ private void InitializeComponent() 0, 0, 0}); - this.numericUpDownDomLevel.Enter += new System.EventHandler(this.numericUpDown_Enter); // // labelStatName // @@ -146,10 +142,10 @@ private void InitializeComponent() #endregion - private System.Windows.Forms.NumericUpDown numericUpDownWildLevel; - private System.Windows.Forms.NumericUpDown numericUpDownTameMult; - private System.Windows.Forms.NumericUpDown numericUpDownTameAdd; - private System.Windows.Forms.NumericUpDown numericUpDownDomLevel; + private ARKBreedingStats.uiControls.Nud numericUpDownWildLevel; + private ARKBreedingStats.uiControls.Nud numericUpDownTameMult; + private ARKBreedingStats.uiControls.Nud numericUpDownTameAdd; + private ARKBreedingStats.uiControls.Nud numericUpDownDomLevel; private System.Windows.Forms.Label labelStatName; } } diff --git a/ARKBreedingStats/MultiplierSetting.cs b/ARKBreedingStats/settings/MultiplierSetting.cs similarity index 80% rename from ARKBreedingStats/MultiplierSetting.cs rename to ARKBreedingStats/settings/MultiplierSetting.cs index 76494cb2..c531dcae 100644 --- a/ARKBreedingStats/MultiplierSetting.cs +++ b/ARKBreedingStats/settings/MultiplierSetting.cs @@ -8,7 +8,7 @@ using System.Threading.Tasks; using System.Windows.Forms; -namespace ARKBreedingStats +namespace ARKBreedingStats.settings { public partial class MultiplierSetting : UserControl { @@ -33,14 +33,5 @@ public double[] Multipliers } } } - - private void numericUpDown_Enter(object sender, EventArgs e) - { - NumericUpDown n = (NumericUpDown)sender; - if (n != null) - { - n.Select(0, n.Text.Length); - } - } } } diff --git a/ARKBreedingStats/MultiplierSetting.resx b/ARKBreedingStats/settings/MultiplierSetting.resx similarity index 100% rename from ARKBreedingStats/MultiplierSetting.resx rename to ARKBreedingStats/settings/MultiplierSetting.resx diff --git a/ARKBreedingStats/Settings.Designer.cs b/ARKBreedingStats/settings/Settings.Designer.cs similarity index 77% rename from ARKBreedingStats/Settings.Designer.cs rename to ARKBreedingStats/settings/Settings.Designer.cs index 07860325..65e3f7e6 100644 --- a/ARKBreedingStats/Settings.Designer.cs +++ b/ARKBreedingStats/settings/Settings.Designer.cs @@ -1,4 +1,4 @@ -namespace ARKBreedingStats +namespace ARKBreedingStats.settings { partial class Settings { @@ -37,14 +37,14 @@ private void InitializeComponent() this.buttonAllToOne = new System.Windows.Forms.Button(); this.buttonSetToOfficial = new System.Windows.Forms.Button(); this.labelTameAdd = new System.Windows.Forms.Label(); - this.multiplierSettingTo = new ARKBreedingStats.MultiplierSetting(); - this.multiplierSettingSp = new ARKBreedingStats.MultiplierSetting(); - this.multiplierSettingDm = new ARKBreedingStats.MultiplierSetting(); - this.multiplierSettingWe = new ARKBreedingStats.MultiplierSetting(); - this.multiplierSettingFo = new ARKBreedingStats.MultiplierSetting(); - this.multiplierSettingOx = new ARKBreedingStats.MultiplierSetting(); - this.multiplierSettingSt = new ARKBreedingStats.MultiplierSetting(); - this.multiplierSettingHP = new ARKBreedingStats.MultiplierSetting(); + this.multiplierSettingTo = new ARKBreedingStats.settings.MultiplierSetting(); + this.multiplierSettingSp = new ARKBreedingStats.settings.MultiplierSetting(); + this.multiplierSettingDm = new ARKBreedingStats.settings.MultiplierSetting(); + this.multiplierSettingWe = new ARKBreedingStats.settings.MultiplierSetting(); + this.multiplierSettingFo = new ARKBreedingStats.settings.MultiplierSetting(); + this.multiplierSettingOx = new ARKBreedingStats.settings.MultiplierSetting(); + this.multiplierSettingSt = new ARKBreedingStats.settings.MultiplierSetting(); + this.multiplierSettingHP = new ARKBreedingStats.settings.MultiplierSetting(); this.buttonOK = new System.Windows.Forms.Button(); this.buttonCancel = new System.Windows.Forms.Button(); this.checkBoxAutoSave = new System.Windows.Forms.CheckBox(); @@ -53,42 +53,48 @@ private void InitializeComponent() this.label4 = new System.Windows.Forms.Label(); this.cbOCRApp = new System.Windows.Forms.ComboBox(); this.label1 = new System.Windows.Forms.Label(); - this.chkExperimentalOCR = new System.Windows.Forms.CheckBox(); this.chkCollectionSync = new System.Windows.Forms.CheckBox(); this.label6 = new System.Windows.Forms.Label(); this.label5 = new System.Windows.Forms.Label(); - this.numericUpDownAutosaveMinutes = new System.Windows.Forms.NumericUpDown(); + this.numericUpDownAutosaveMinutes = new ARKBreedingStats.uiControls.Nud(); this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.nudBabyFoodConsumptionEvent = new ARKBreedingStats.uiControls.Nud(); + this.nudMatingIntervalEvent = new ARKBreedingStats.uiControls.Nud(); + this.nudCuddleIntervalEvent = new ARKBreedingStats.uiControls.Nud(); + this.nudMaturationSpeedEvent = new ARKBreedingStats.uiControls.Nud(); + this.nudHatchingSpeedEvent = new ARKBreedingStats.uiControls.Nud(); this.labelBabyFoodConsumptionSpeed = new System.Windows.Forms.Label(); - this.nudBabyFoodConsumptionSpeed = new System.Windows.Forms.NumericUpDown(); + this.nudBabyFoodConsumptionSpeed = new ARKBreedingStats.uiControls.Nud(); this.label3 = new System.Windows.Forms.Label(); - this.nudMatingInterval = new System.Windows.Forms.NumericUpDown(); + this.nudMatingInterval = new ARKBreedingStats.uiControls.Nud(); this.label17 = new System.Windows.Forms.Label(); - this.numericUpDownBabyCuddleIntervalMultiplier = new System.Windows.Forms.NumericUpDown(); + this.numericUpDownBabyCuddleIntervalMultiplier = new ARKBreedingStats.uiControls.Nud(); this.label13 = new System.Windows.Forms.Label(); this.label9 = new System.Windows.Forms.Label(); - this.numericUpDownMaturation = new System.Windows.Forms.NumericUpDown(); - this.numericUpDownImprintingM = new System.Windows.Forms.NumericUpDown(); + this.numericUpDownMaturation = new ARKBreedingStats.uiControls.Nud(); + this.numericUpDownImprintingM = new ARKBreedingStats.uiControls.Nud(); this.label8 = new System.Windows.Forms.Label(); - this.numericUpDownHatching = new System.Windows.Forms.NumericUpDown(); + this.numericUpDownHatching = new ARKBreedingStats.uiControls.Nud(); this.groupBox3 = new System.Windows.Forms.GroupBox(); - this.numericUpDownMaxChartLevel = new System.Windows.Forms.NumericUpDown(); + this.numericUpDownMaxChartLevel = new ARKBreedingStats.uiControls.Nud(); this.label18 = new System.Windows.Forms.Label(); this.label11 = new System.Windows.Forms.Label(); - this.numericUpDownMaxWildLevel = new System.Windows.Forms.NumericUpDown(); + this.numericUpDownMaxWildLevel = new ARKBreedingStats.uiControls.Nud(); this.label10 = new System.Windows.Forms.Label(); - this.numericUpDownDomLevelNr = new System.Windows.Forms.NumericUpDown(); + this.numericUpDownDomLevelNr = new ARKBreedingStats.uiControls.Nud(); this.groupBox4 = new System.Windows.Forms.GroupBox(); this.label16 = new System.Windows.Forms.Label(); this.radioButtonFahrenheit = new System.Windows.Forms.RadioButton(); this.radioButtonCelsius = new System.Windows.Forms.RadioButton(); this.label12 = new System.Windows.Forms.Label(); - this.numericUpDownMaxBreedingSug = new System.Windows.Forms.NumericUpDown(); + this.numericUpDownMaxBreedingSug = new ARKBreedingStats.uiControls.Nud(); this.groupBox5 = new System.Windows.Forms.GroupBox(); + this.nudTamingFoodRateEvent = new ARKBreedingStats.uiControls.Nud(); + this.nudTamingSpeedEvent = new ARKBreedingStats.uiControls.Nud(); this.label7 = new System.Windows.Forms.Label(); this.label14 = new System.Windows.Forms.Label(); - this.numericUpDownTamingFoodRate = new System.Windows.Forms.NumericUpDown(); - this.numericUpDownTamingSpeed = new System.Windows.Forms.NumericUpDown(); + this.numericUpDownTamingFoodRate = new ARKBreedingStats.uiControls.Nud(); + this.numericUpDownTamingSpeed = new ARKBreedingStats.uiControls.Nud(); this.label15 = new System.Windows.Forms.Label(); this.groupBox6 = new System.Windows.Forms.GroupBox(); this.label2 = new System.Windows.Forms.Label(); @@ -97,22 +103,29 @@ private void InitializeComponent() this.tabControl1 = new System.Windows.Forms.TabControl(); this.tabPage1 = new System.Windows.Forms.TabPage(); this.groupBox10 = new System.Windows.Forms.GroupBox(); + this.label21 = new System.Windows.Forms.Label(); + this.nudOverlayInfoDuration = new ARKBreedingStats.uiControls.Nud(); this.chkbSpeechRecognition = new System.Windows.Forms.CheckBox(); - this.groupBox9 = new System.Windows.Forms.GroupBox(); - this.label19 = new System.Windows.Forms.Label(); - this.nudEvolutionEvent = new System.Windows.Forms.NumericUpDown(); this.groupBox8 = new System.Windows.Forms.GroupBox(); + this.customSCWakeup = new ARKBreedingStats.settings.customSoundChooser(); + this.customSCBirth = new ARKBreedingStats.settings.customSoundChooser(); + this.customSCStarving = new ARKBreedingStats.settings.customSoundChooser(); this.label20 = new System.Windows.Forms.Label(); - this.customSCBirth = new ARKBreedingStats.uiControls.customSoundChooser(); - this.customSCWakeup = new ARKBreedingStats.uiControls.customSoundChooser(); - this.customSCStarving = new ARKBreedingStats.uiControls.customSoundChooser(); this.tabPage2 = new System.Windows.Forms.TabPage(); - this.nudOverlayInfoDuration = new System.Windows.Forms.NumericUpDown(); - this.label21 = new System.Windows.Forms.Label(); + this.buttonEventToDefault = new System.Windows.Forms.Button(); + this.buttonAllTBMultipliersOne = new System.Windows.Forms.Button(); + this.label22 = new System.Windows.Forms.Label(); + this.nudWhiteThreshold = new ARKBreedingStats.uiControls.Nud(); + this.label19 = new System.Windows.Forms.Label(); this.groupBoxMultiplier.SuspendLayout(); this.groupBox1.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDownAutosaveMinutes)).BeginInit(); this.groupBox2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.nudBabyFoodConsumptionEvent)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudMatingIntervalEvent)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudCuddleIntervalEvent)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudMaturationSpeedEvent)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudHatchingSpeedEvent)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.nudBabyFoodConsumptionSpeed)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.nudMatingInterval)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDownBabyCuddleIntervalMultiplier)).BeginInit(); @@ -126,6 +139,8 @@ private void InitializeComponent() this.groupBox4.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDownMaxBreedingSug)).BeginInit(); this.groupBox5.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.nudTamingFoodRateEvent)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudTamingSpeedEvent)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDownTamingFoodRate)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDownTamingSpeed)).BeginInit(); this.groupBox6.SuspendLayout(); @@ -133,11 +148,10 @@ private void InitializeComponent() this.tabControl1.SuspendLayout(); this.tabPage1.SuspendLayout(); this.groupBox10.SuspendLayout(); - this.groupBox9.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.nudEvolutionEvent)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudOverlayInfoDuration)).BeginInit(); this.groupBox8.SuspendLayout(); this.tabPage2.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.nudOverlayInfoDuration)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudWhiteThreshold)).BeginInit(); this.SuspendLayout(); // // groupBoxMultiplier @@ -212,7 +226,7 @@ private void InitializeComponent() // // buttonSetToOfficial // - this.buttonSetToOfficial.Location = new System.Drawing.Point(196, 288); + this.buttonSetToOfficial.Location = new System.Drawing.Point(194, 288); this.buttonSetToOfficial.Name = "buttonSetToOfficial"; this.buttonSetToOfficial.Size = new System.Drawing.Size(112, 23); this.buttonSetToOfficial.TabIndex = 14; @@ -329,7 +343,7 @@ private void InitializeComponent() // this.buttonOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.buttonOK.DialogResult = System.Windows.Forms.DialogResult.OK; - this.buttonOK.Location = new System.Drawing.Point(521, 491); + this.buttonOK.Location = new System.Drawing.Point(613, 491); this.buttonOK.Name = "buttonOK"; this.buttonOK.Size = new System.Drawing.Size(75, 23); this.buttonOK.TabIndex = 0; @@ -341,7 +355,7 @@ private void InitializeComponent() // this.buttonCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.buttonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.buttonCancel.Location = new System.Drawing.Point(440, 491); + this.buttonCancel.Location = new System.Drawing.Point(532, 491); this.buttonCancel.Name = "buttonCancel"; this.buttonCancel.Size = new System.Drawing.Size(75, 23); this.buttonCancel.TabIndex = 1; @@ -361,30 +375,31 @@ private void InitializeComponent() // // groupBox1 // + this.groupBox1.Controls.Add(this.label19); + this.groupBox1.Controls.Add(this.nudWhiteThreshold); this.groupBox1.Controls.Add(this.textBoxOCRCustom); this.groupBox1.Controls.Add(this.label4); this.groupBox1.Controls.Add(this.cbOCRApp); this.groupBox1.Controls.Add(this.label1); - this.groupBox1.Controls.Add(this.chkExperimentalOCR); this.groupBox1.Location = new System.Drawing.Point(258, 6); this.groupBox1.Name = "groupBox1"; - this.groupBox1.Size = new System.Drawing.Size(328, 189); + this.groupBox1.Size = new System.Drawing.Size(413, 240); this.groupBox1.TabIndex = 4; this.groupBox1.TabStop = false; this.groupBox1.Text = "OCR"; // // textBoxOCRCustom // - this.textBoxOCRCustom.Location = new System.Drawing.Point(133, 160); + this.textBoxOCRCustom.Location = new System.Drawing.Point(133, 214); this.textBoxOCRCustom.Name = "textBoxOCRCustom"; - this.textBoxOCRCustom.Size = new System.Drawing.Size(189, 20); + this.textBoxOCRCustom.Size = new System.Drawing.Size(274, 20); this.textBoxOCRCustom.TabIndex = 11; this.textBoxOCRCustom.Visible = false; // // label4 // this.label4.AutoSize = true; - this.label4.Location = new System.Drawing.Point(6, 143); + this.label4.Location = new System.Drawing.Point(6, 197); this.label4.Name = "label4"; this.label4.Size = new System.Drawing.Size(273, 13); this.label4.TabIndex = 10; @@ -399,7 +414,7 @@ private void InitializeComponent() "XboxApp", "VLC", "Custom"}); - this.cbOCRApp.Location = new System.Drawing.Point(6, 159); + this.cbOCRApp.Location = new System.Drawing.Point(6, 213); this.cbOCRApp.Name = "cbOCRApp"; this.cbOCRApp.Size = new System.Drawing.Size(121, 21); this.cbOCRApp.TabIndex = 9; @@ -407,22 +422,12 @@ private void InitializeComponent() // // label1 // - this.label1.Location = new System.Drawing.Point(6, 39); + this.label1.Location = new System.Drawing.Point(6, 16); this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(316, 97); + this.label1.Size = new System.Drawing.Size(401, 97); this.label1.TabIndex = 5; this.label1.Text = resources.GetString("label1.Text"); // - // chkExperimentalOCR - // - this.chkExperimentalOCR.AutoSize = true; - this.chkExperimentalOCR.Location = new System.Drawing.Point(6, 19); - this.chkExperimentalOCR.Name = "chkExperimentalOCR"; - this.chkExperimentalOCR.Size = new System.Drawing.Size(119, 17); - this.chkExperimentalOCR.TabIndex = 4; - this.chkExperimentalOCR.Text = "OCR (needs restart)"; - this.chkExperimentalOCR.UseVisualStyleBackColor = true; - // // chkCollectionSync // this.chkCollectionSync.AutoSize = true; @@ -458,10 +463,14 @@ private void InitializeComponent() this.numericUpDownAutosaveMinutes.Name = "numericUpDownAutosaveMinutes"; this.numericUpDownAutosaveMinutes.Size = new System.Drawing.Size(43, 20); this.numericUpDownAutosaveMinutes.TabIndex = 2; - this.numericUpDownAutosaveMinutes.Enter += new System.EventHandler(this.numericUpDown_Enter); // // groupBox2 // + this.groupBox2.Controls.Add(this.nudBabyFoodConsumptionEvent); + this.groupBox2.Controls.Add(this.nudMatingIntervalEvent); + this.groupBox2.Controls.Add(this.nudCuddleIntervalEvent); + this.groupBox2.Controls.Add(this.nudMaturationSpeedEvent); + this.groupBox2.Controls.Add(this.nudHatchingSpeedEvent); this.groupBox2.Controls.Add(this.labelBabyFoodConsumptionSpeed); this.groupBox2.Controls.Add(this.nudBabyFoodConsumptionSpeed); this.groupBox2.Controls.Add(this.label3); @@ -476,11 +485,101 @@ private void InitializeComponent() this.groupBox2.Controls.Add(this.numericUpDownHatching); this.groupBox2.Location = new System.Drawing.Point(333, 190); this.groupBox2.Name = "groupBox2"; - this.groupBox2.Size = new System.Drawing.Size(246, 177); + this.groupBox2.Size = new System.Drawing.Size(309, 177); this.groupBox2.TabIndex = 3; this.groupBox2.TabStop = false; this.groupBox2.Text = "Breeding-Multiplier"; // + // nudBabyFoodConsumptionEvent + // + this.nudBabyFoodConsumptionEvent.DecimalPlaces = 3; + this.nudBabyFoodConsumptionEvent.Location = new System.Drawing.Point(246, 149); + this.nudBabyFoodConsumptionEvent.Maximum = new decimal(new int[] { + 1000, + 0, + 0, + 0}); + this.nudBabyFoodConsumptionEvent.Name = "nudBabyFoodConsumptionEvent"; + this.nudBabyFoodConsumptionEvent.Size = new System.Drawing.Size(57, 20); + this.nudBabyFoodConsumptionEvent.TabIndex = 16; + this.nudBabyFoodConsumptionEvent.Value = new decimal(new int[] { + 1, + 0, + 0, + 0}); + // + // nudMatingIntervalEvent + // + this.nudMatingIntervalEvent.DecimalPlaces = 3; + this.nudMatingIntervalEvent.Location = new System.Drawing.Point(246, 19); + this.nudMatingIntervalEvent.Maximum = new decimal(new int[] { + 1000, + 0, + 0, + 0}); + this.nudMatingIntervalEvent.Name = "nudMatingIntervalEvent"; + this.nudMatingIntervalEvent.Size = new System.Drawing.Size(57, 20); + this.nudMatingIntervalEvent.TabIndex = 11; + this.nudMatingIntervalEvent.Value = new decimal(new int[] { + 1, + 0, + 0, + 0}); + // + // nudCuddleIntervalEvent + // + this.nudCuddleIntervalEvent.DecimalPlaces = 3; + this.nudCuddleIntervalEvent.Location = new System.Drawing.Point(246, 97); + this.nudCuddleIntervalEvent.Maximum = new decimal(new int[] { + 1000, + 0, + 0, + 0}); + this.nudCuddleIntervalEvent.Name = "nudCuddleIntervalEvent"; + this.nudCuddleIntervalEvent.Size = new System.Drawing.Size(57, 20); + this.nudCuddleIntervalEvent.TabIndex = 14; + this.nudCuddleIntervalEvent.Value = new decimal(new int[] { + 1, + 0, + 0, + 0}); + // + // nudMaturationSpeedEvent + // + this.nudMaturationSpeedEvent.DecimalPlaces = 3; + this.nudMaturationSpeedEvent.Location = new System.Drawing.Point(246, 71); + this.nudMaturationSpeedEvent.Maximum = new decimal(new int[] { + 1000, + 0, + 0, + 0}); + this.nudMaturationSpeedEvent.Name = "nudMaturationSpeedEvent"; + this.nudMaturationSpeedEvent.Size = new System.Drawing.Size(57, 20); + this.nudMaturationSpeedEvent.TabIndex = 13; + this.nudMaturationSpeedEvent.Value = new decimal(new int[] { + 1, + 0, + 0, + 0}); + // + // nudHatchingSpeedEvent + // + this.nudHatchingSpeedEvent.DecimalPlaces = 3; + this.nudHatchingSpeedEvent.Location = new System.Drawing.Point(246, 45); + this.nudHatchingSpeedEvent.Maximum = new decimal(new int[] { + 1000, + 0, + 0, + 0}); + this.nudHatchingSpeedEvent.Name = "nudHatchingSpeedEvent"; + this.nudHatchingSpeedEvent.Size = new System.Drawing.Size(57, 20); + this.nudHatchingSpeedEvent.TabIndex = 12; + this.nudHatchingSpeedEvent.Value = new decimal(new int[] { + 1, + 0, + 0, + 0}); + // // labelBabyFoodConsumptionSpeed // this.labelBabyFoodConsumptionSpeed.AutoSize = true; @@ -507,7 +606,6 @@ private void InitializeComponent() 0, 0, 0}); - this.nudBabyFoodConsumptionSpeed.Enter += new System.EventHandler(this.numericUpDown_Enter); // // label3 // @@ -535,7 +633,6 @@ private void InitializeComponent() 0, 0, 0}); - this.nudMatingInterval.Enter += new System.EventHandler(this.numericUpDown_Enter); // // label17 // @@ -563,7 +660,6 @@ private void InitializeComponent() 0, 0, 0}); - this.numericUpDownBabyCuddleIntervalMultiplier.Enter += new System.EventHandler(this.numericUpDown_Enter); // // label13 // @@ -600,7 +696,6 @@ private void InitializeComponent() 0, 0, 0}); - this.numericUpDownMaturation.Enter += new System.EventHandler(this.numericUpDown_Enter); // // numericUpDownImprintingM // @@ -619,7 +714,6 @@ private void InitializeComponent() 0, 0, 0}); - this.numericUpDownImprintingM.Enter += new System.EventHandler(this.numericUpDown_Enter); // // label8 // @@ -647,7 +741,6 @@ private void InitializeComponent() 0, 0, 0}); - this.numericUpDownHatching.Enter += new System.EventHandler(this.numericUpDown_Enter); // // groupBox3 // @@ -675,7 +768,6 @@ private void InitializeComponent() this.numericUpDownMaxChartLevel.Name = "numericUpDownMaxChartLevel"; this.numericUpDownMaxChartLevel.Size = new System.Drawing.Size(57, 20); this.numericUpDownMaxChartLevel.TabIndex = 2; - this.numericUpDownMaxChartLevel.Enter += new System.EventHandler(this.numericUpDown_Enter); // // label18 // @@ -706,7 +798,6 @@ private void InitializeComponent() this.numericUpDownMaxWildLevel.Name = "numericUpDownMaxWildLevel"; this.numericUpDownMaxWildLevel.Size = new System.Drawing.Size(57, 20); this.numericUpDownMaxWildLevel.TabIndex = 0; - this.numericUpDownMaxWildLevel.Enter += new System.EventHandler(this.numericUpDown_Enter); // // label10 // @@ -728,7 +819,6 @@ private void InitializeComponent() this.numericUpDownDomLevelNr.Name = "numericUpDownDomLevelNr"; this.numericUpDownDomLevelNr.Size = new System.Drawing.Size(57, 20); this.numericUpDownDomLevelNr.TabIndex = 1; - this.numericUpDownDomLevelNr.Enter += new System.EventHandler(this.numericUpDown_Enter); // // groupBox4 // @@ -795,21 +885,58 @@ private void InitializeComponent() this.numericUpDownMaxBreedingSug.Name = "numericUpDownMaxBreedingSug"; this.numericUpDownMaxBreedingSug.Size = new System.Drawing.Size(57, 20); this.numericUpDownMaxBreedingSug.TabIndex = 1; - this.numericUpDownMaxBreedingSug.Enter += new System.EventHandler(this.numericUpDown_Enter); // // groupBox5 // + this.groupBox5.Controls.Add(this.nudTamingFoodRateEvent); + this.groupBox5.Controls.Add(this.nudTamingSpeedEvent); this.groupBox5.Controls.Add(this.label7); this.groupBox5.Controls.Add(this.label14); this.groupBox5.Controls.Add(this.numericUpDownTamingFoodRate); this.groupBox5.Controls.Add(this.numericUpDownTamingSpeed); this.groupBox5.Location = new System.Drawing.Point(333, 112); this.groupBox5.Name = "groupBox5"; - this.groupBox5.Size = new System.Drawing.Size(246, 72); + this.groupBox5.Size = new System.Drawing.Size(309, 72); this.groupBox5.TabIndex = 2; this.groupBox5.TabStop = false; this.groupBox5.Text = "Taming-Multiplier"; // + // nudTamingFoodRateEvent + // + this.nudTamingFoodRateEvent.DecimalPlaces = 3; + this.nudTamingFoodRateEvent.Location = new System.Drawing.Point(246, 45); + this.nudTamingFoodRateEvent.Maximum = new decimal(new int[] { + 1000, + 0, + 0, + 0}); + this.nudTamingFoodRateEvent.Name = "nudTamingFoodRateEvent"; + this.nudTamingFoodRateEvent.Size = new System.Drawing.Size(57, 20); + this.nudTamingFoodRateEvent.TabIndex = 4; + this.nudTamingFoodRateEvent.Value = new decimal(new int[] { + 1, + 0, + 0, + 0}); + // + // nudTamingSpeedEvent + // + this.nudTamingSpeedEvent.DecimalPlaces = 3; + this.nudTamingSpeedEvent.Location = new System.Drawing.Point(246, 19); + this.nudTamingSpeedEvent.Maximum = new decimal(new int[] { + 1000, + 0, + 0, + 0}); + this.nudTamingSpeedEvent.Name = "nudTamingSpeedEvent"; + this.nudTamingSpeedEvent.Size = new System.Drawing.Size(57, 20); + this.nudTamingSpeedEvent.TabIndex = 3; + this.nudTamingSpeedEvent.Value = new decimal(new int[] { + 1, + 0, + 0, + 0}); + // // label7 // this.label7.AutoSize = true; @@ -845,7 +972,6 @@ private void InitializeComponent() 0, 0, 0}); - this.numericUpDownTamingFoodRate.Enter += new System.EventHandler(this.numericUpDown_Enter); // // numericUpDownTamingSpeed // @@ -864,7 +990,6 @@ private void InitializeComponent() 0, 0, 0}); - this.numericUpDownTamingSpeed.Enter += new System.EventHandler(this.numericUpDown_Enter); // // label15 // @@ -926,13 +1051,12 @@ private void InitializeComponent() this.tabControl1.Location = new System.Drawing.Point(3, 3); this.tabControl1.Name = "tabControl1"; this.tabControl1.SelectedIndex = 0; - this.tabControl1.Size = new System.Drawing.Size(600, 460); + this.tabControl1.Size = new System.Drawing.Size(685, 460); this.tabControl1.TabIndex = 11; // // tabPage1 // this.tabPage1.Controls.Add(this.groupBox10); - this.tabPage1.Controls.Add(this.groupBox9); this.tabPage1.Controls.Add(this.groupBox8); this.tabPage1.Controls.Add(this.groupBox1); this.tabPage1.Controls.Add(this.groupBox7); @@ -941,7 +1065,7 @@ private void InitializeComponent() this.tabPage1.Location = new System.Drawing.Point(4, 22); this.tabPage1.Name = "tabPage1"; this.tabPage1.Padding = new System.Windows.Forms.Padding(3); - this.tabPage1.Size = new System.Drawing.Size(592, 434); + this.tabPage1.Size = new System.Drawing.Size(677, 434); this.tabPage1.TabIndex = 0; this.tabPage1.Text = "General"; this.tabPage1.UseVisualStyleBackColor = true; @@ -951,13 +1075,39 @@ private void InitializeComponent() this.groupBox10.Controls.Add(this.label21); this.groupBox10.Controls.Add(this.nudOverlayInfoDuration); this.groupBox10.Controls.Add(this.chkbSpeechRecognition); - this.groupBox10.Location = new System.Drawing.Point(258, 347); + this.groupBox10.Location = new System.Drawing.Point(6, 311); this.groupBox10.Name = "groupBox10"; - this.groupBox10.Size = new System.Drawing.Size(328, 81); + this.groupBox10.Size = new System.Drawing.Size(246, 81); this.groupBox10.TabIndex = 6; this.groupBox10.TabStop = false; this.groupBox10.Text = "Speech Recognition"; // + // label21 + // + this.label21.AutoSize = true; + this.label21.Location = new System.Drawing.Point(27, 44); + this.label21.Name = "label21"; + this.label21.Size = new System.Drawing.Size(138, 13); + this.label21.TabIndex = 2; + this.label21.Text = "Display info in overlay for [s]"; + // + // nudOverlayInfoDuration + // + this.nudOverlayInfoDuration.Location = new System.Drawing.Point(171, 42); + this.nudOverlayInfoDuration.Minimum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.nudOverlayInfoDuration.Name = "nudOverlayInfoDuration"; + this.nudOverlayInfoDuration.Size = new System.Drawing.Size(57, 20); + this.nudOverlayInfoDuration.TabIndex = 1; + this.nudOverlayInfoDuration.Value = new decimal(new int[] { + 1, + 0, + 0, + 0}); + // // chkbSpeechRecognition // this.chkbSpeechRecognition.AutoSize = true; @@ -968,88 +1118,58 @@ private void InitializeComponent() this.chkbSpeechRecognition.Text = "Speech Recognition (needs restart)"; this.chkbSpeechRecognition.UseVisualStyleBackColor = true; // - // groupBox9 - // - this.groupBox9.Controls.Add(this.label19); - this.groupBox9.Controls.Add(this.nudEvolutionEvent); - this.groupBox9.Location = new System.Drawing.Point(6, 311); - this.groupBox9.Name = "groupBox9"; - this.groupBox9.Size = new System.Drawing.Size(246, 46); - this.groupBox9.TabIndex = 3; - this.groupBox9.TabStop = false; - this.groupBox9.Text = "Evolution-Event"; - // - // label19 - // - this.label19.AutoSize = true; - this.label19.Location = new System.Drawing.Point(10, 21); - this.label19.Name = "label19"; - this.label19.Size = new System.Drawing.Size(126, 13); - this.label19.TabIndex = 5; - this.label19.Text = "Evolution-Event Multiplier"; - // - // nudEvolutionEvent - // - this.nudEvolutionEvent.DecimalPlaces = 1; - this.nudEvolutionEvent.Location = new System.Drawing.Point(183, 19); - this.nudEvolutionEvent.Maximum = new decimal(new int[] { - 10, - 0, - 0, - 0}); - this.nudEvolutionEvent.Name = "nudEvolutionEvent"; - this.nudEvolutionEvent.Size = new System.Drawing.Size(57, 20); - this.nudEvolutionEvent.TabIndex = 6; - // // groupBox8 // - this.groupBox8.Controls.Add(this.label20); - this.groupBox8.Controls.Add(this.customSCBirth); this.groupBox8.Controls.Add(this.customSCWakeup); + this.groupBox8.Controls.Add(this.customSCBirth); this.groupBox8.Controls.Add(this.customSCStarving); - this.groupBox8.Location = new System.Drawing.Point(258, 201); + this.groupBox8.Controls.Add(this.label20); + this.groupBox8.Location = new System.Drawing.Point(258, 252); this.groupBox8.Name = "groupBox8"; - this.groupBox8.Size = new System.Drawing.Size(328, 140); + this.groupBox8.Size = new System.Drawing.Size(413, 140); this.groupBox8.TabIndex = 5; this.groupBox8.TabStop = false; this.groupBox8.Text = "Timer Sounds"; // - // label20 + // customSCWakeup // - this.label20.Location = new System.Drawing.Point(6, 16); - this.label20.Name = "label20"; - this.label20.Size = new System.Drawing.Size(316, 33); - this.label20.TabIndex = 3; - this.label20.Text = "Only PCM-WAV-files are supported. The sound will play 1 min before the timer runs" + - " out."; + this.customSCWakeup.Location = new System.Drawing.Point(6, 81); + this.customSCWakeup.Name = "customSCWakeup"; + this.customSCWakeup.Size = new System.Drawing.Size(401, 23); + this.customSCWakeup.SoundFile = ""; + this.customSCWakeup.TabIndex = 6; // // customSCBirth // this.customSCBirth.Location = new System.Drawing.Point(6, 110); this.customSCBirth.Name = "customSCBirth"; - this.customSCBirth.Size = new System.Drawing.Size(300, 23); - this.customSCBirth.SoundFile = null; - this.customSCBirth.TabIndex = 2; - // - // customSCWakeup - // - this.customSCWakeup.Location = new System.Drawing.Point(6, 81); - this.customSCWakeup.Name = "customSCWakeup"; - this.customSCWakeup.Size = new System.Drawing.Size(300, 23); - this.customSCWakeup.SoundFile = null; - this.customSCWakeup.TabIndex = 1; + this.customSCBirth.Size = new System.Drawing.Size(401, 23); + this.customSCBirth.SoundFile = ""; + this.customSCBirth.TabIndex = 5; // // customSCStarving // this.customSCStarving.Location = new System.Drawing.Point(6, 52); this.customSCStarving.Name = "customSCStarving"; - this.customSCStarving.Size = new System.Drawing.Size(300, 23); + this.customSCStarving.Size = new System.Drawing.Size(401, 23); this.customSCStarving.SoundFile = null; - this.customSCStarving.TabIndex = 0; + this.customSCStarving.TabIndex = 4; + // + // label20 + // + this.label20.Location = new System.Drawing.Point(6, 16); + this.label20.Name = "label20"; + this.label20.Size = new System.Drawing.Size(316, 33); + this.label20.TabIndex = 3; + this.label20.Text = "Only PCM-WAV-files are supported. The sound will play 1 min before the timer runs" + + " out."; // // tabPage2 // this.tabPage2.AllowDrop = true; + this.tabPage2.Controls.Add(this.buttonEventToDefault); + this.tabPage2.Controls.Add(this.buttonAllTBMultipliersOne); + this.tabPage2.Controls.Add(this.label22); this.tabPage2.Controls.Add(this.groupBoxMultiplier); this.tabPage2.Controls.Add(this.groupBox2); this.tabPage2.Controls.Add(this.groupBox3); @@ -1058,38 +1178,61 @@ private void InitializeComponent() this.tabPage2.Location = new System.Drawing.Point(4, 22); this.tabPage2.Name = "tabPage2"; this.tabPage2.Padding = new System.Windows.Forms.Padding(3); - this.tabPage2.Size = new System.Drawing.Size(592, 419); + this.tabPage2.Size = new System.Drawing.Size(677, 434); this.tabPage2.TabIndex = 1; this.tabPage2.Text = "Multipliers"; this.tabPage2.UseVisualStyleBackColor = true; this.tabPage2.DragDrop += new System.Windows.Forms.DragEventHandler(this.tabPage2_DragDrop); this.tabPage2.DragEnter += new System.Windows.Forms.DragEventHandler(this.tabPage2_DragEnter); // - // nudOverlayInfoDuration + // buttonEventToDefault // - this.nudOverlayInfoDuration.Location = new System.Drawing.Point(171, 42); - this.nudOverlayInfoDuration.Minimum = new decimal(new int[] { - 1, - 0, - 0, - 0}); - this.nudOverlayInfoDuration.Name = "nudOverlayInfoDuration"; - this.nudOverlayInfoDuration.Size = new System.Drawing.Size(57, 20); - this.nudOverlayInfoDuration.TabIndex = 1; - this.nudOverlayInfoDuration.Value = new decimal(new int[] { - 1, + this.buttonEventToDefault.Location = new System.Drawing.Point(506, 373); + this.buttonEventToDefault.Name = "buttonEventToDefault"; + this.buttonEventToDefault.Size = new System.Drawing.Size(136, 23); + this.buttonEventToDefault.TabIndex = 11; + this.buttonEventToDefault.Text = "Copy non-Event to Event"; + this.buttonEventToDefault.UseVisualStyleBackColor = true; + this.buttonEventToDefault.Click += new System.EventHandler(this.buttonEventToDefault_Click); + // + // buttonAllTBMultipliersOne + // + this.buttonAllTBMultipliersOne.Location = new System.Drawing.Point(333, 373); + this.buttonAllTBMultipliersOne.Name = "buttonAllTBMultipliersOne"; + this.buttonAllTBMultipliersOne.Size = new System.Drawing.Size(167, 23); + this.buttonAllTBMultipliersOne.TabIndex = 10; + this.buttonAllTBMultipliersOne.Text = "Set all Taming, Breeding to 1"; + this.buttonAllTBMultipliersOne.UseVisualStyleBackColor = true; + this.buttonAllTBMultipliersOne.Click += new System.EventHandler(this.buttonAllTBMultipliersOne_Click); + // + // label22 + // + this.label22.AutoSize = true; + this.label22.Location = new System.Drawing.Point(593, 96); + this.label22.Name = "label22"; + this.label22.Size = new System.Drawing.Size(78, 13); + this.label22.TabIndex = 9; + this.label22.Text = "↓ Event-values"; + // + // nudWhiteThreshold + // + this.nudWhiteThreshold.Location = new System.Drawing.Point(335, 143); + this.nudWhiteThreshold.Maximum = new decimal(new int[] { + 255, 0, 0, 0}); + this.nudWhiteThreshold.Name = "nudWhiteThreshold"; + this.nudWhiteThreshold.Size = new System.Drawing.Size(72, 20); + this.nudWhiteThreshold.TabIndex = 12; // - // label21 + // label19 // - this.label21.AutoSize = true; - this.label21.Location = new System.Drawing.Point(27, 44); - this.label21.Name = "label21"; - this.label21.Size = new System.Drawing.Size(138, 13); - this.label21.TabIndex = 2; - this.label21.Text = "Display info in overlay for [s]"; + this.label19.Location = new System.Drawing.Point(6, 145); + this.label19.Name = "label19"; + this.label19.Size = new System.Drawing.Size(296, 20); + this.label19.TabIndex = 13; + this.label19.Text = "White Threshold (increase if you increased gamma ingame)"; // // Settings // @@ -1098,7 +1241,7 @@ private void InitializeComponent() this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.CancelButton = this.buttonCancel; - this.ClientSize = new System.Drawing.Size(608, 526); + this.ClientSize = new System.Drawing.Size(700, 526); this.Controls.Add(this.tabControl1); this.Controls.Add(this.buttonCancel); this.Controls.Add(this.buttonOK); @@ -1113,6 +1256,11 @@ private void InitializeComponent() ((System.ComponentModel.ISupportInitialize)(this.numericUpDownAutosaveMinutes)).EndInit(); this.groupBox2.ResumeLayout(false); this.groupBox2.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.nudBabyFoodConsumptionEvent)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudMatingIntervalEvent)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudCuddleIntervalEvent)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudMaturationSpeedEvent)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudHatchingSpeedEvent)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.nudBabyFoodConsumptionSpeed)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.nudMatingInterval)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDownBabyCuddleIntervalMultiplier)).EndInit(); @@ -1129,6 +1277,8 @@ private void InitializeComponent() ((System.ComponentModel.ISupportInitialize)(this.numericUpDownMaxBreedingSug)).EndInit(); this.groupBox5.ResumeLayout(false); this.groupBox5.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.nudTamingFoodRateEvent)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudTamingSpeedEvent)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDownTamingFoodRate)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDownTamingSpeed)).EndInit(); this.groupBox6.ResumeLayout(false); @@ -1139,12 +1289,11 @@ private void InitializeComponent() this.tabPage1.ResumeLayout(false); this.groupBox10.ResumeLayout(false); this.groupBox10.PerformLayout(); - this.groupBox9.ResumeLayout(false); - this.groupBox9.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.nudEvolutionEvent)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudOverlayInfoDuration)).EndInit(); this.groupBox8.ResumeLayout(false); this.tabPage2.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)(this.nudOverlayInfoDuration)).EndInit(); + this.tabPage2.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.nudWhiteThreshold)).EndInit(); this.ResumeLayout(false); } @@ -1172,41 +1321,40 @@ private void InitializeComponent() private System.Windows.Forms.CheckBox checkBoxAutoSave; private System.Windows.Forms.GroupBox groupBox1; private System.Windows.Forms.Label label5; - private System.Windows.Forms.NumericUpDown numericUpDownAutosaveMinutes; + private ARKBreedingStats.uiControls.Nud numericUpDownAutosaveMinutes; private System.Windows.Forms.Label label6; private System.Windows.Forms.GroupBox groupBox2; private System.Windows.Forms.Label label8; - private System.Windows.Forms.NumericUpDown numericUpDownHatching; + private ARKBreedingStats.uiControls.Nud numericUpDownHatching; private System.Windows.Forms.Label label9; - private System.Windows.Forms.NumericUpDown numericUpDownMaturation; + private ARKBreedingStats.uiControls.Nud numericUpDownMaturation; private System.Windows.Forms.GroupBox groupBox3; private System.Windows.Forms.Label label10; - private System.Windows.Forms.NumericUpDown numericUpDownDomLevelNr; + private ARKBreedingStats.uiControls.Nud numericUpDownDomLevelNr; private System.Windows.Forms.Label label11; - private System.Windows.Forms.NumericUpDown numericUpDownMaxWildLevel; + private ARKBreedingStats.uiControls.Nud numericUpDownMaxWildLevel; private System.Windows.Forms.GroupBox groupBox4; private System.Windows.Forms.Label label12; - private System.Windows.Forms.NumericUpDown numericUpDownMaxBreedingSug; - private System.Windows.Forms.CheckBox chkExperimentalOCR; + private ARKBreedingStats.uiControls.Nud numericUpDownMaxBreedingSug; private System.Windows.Forms.Label label13; - private System.Windows.Forms.NumericUpDown numericUpDownImprintingM; + private ARKBreedingStats.uiControls.Nud numericUpDownImprintingM; private System.Windows.Forms.GroupBox groupBox5; private System.Windows.Forms.Label label7; private System.Windows.Forms.Label label14; - private System.Windows.Forms.NumericUpDown numericUpDownTamingFoodRate; - private System.Windows.Forms.NumericUpDown numericUpDownTamingSpeed; + private ARKBreedingStats.uiControls.Nud numericUpDownTamingFoodRate; + private ARKBreedingStats.uiControls.Nud numericUpDownTamingSpeed; private System.Windows.Forms.CheckBox chkCollectionSync; private System.Windows.Forms.Label label15; private System.Windows.Forms.Label label16; private System.Windows.Forms.RadioButton radioButtonFahrenheit; private System.Windows.Forms.RadioButton radioButtonCelsius; private System.Windows.Forms.Label label17; - private System.Windows.Forms.NumericUpDown numericUpDownBabyCuddleIntervalMultiplier; + private ARKBreedingStats.uiControls.Nud numericUpDownBabyCuddleIntervalMultiplier; private System.Windows.Forms.GroupBox groupBox6; private System.Windows.Forms.GroupBox groupBox7; private System.Windows.Forms.CheckBox checkBoxOxygenForAll; private System.Windows.Forms.Label label1; - private System.Windows.Forms.NumericUpDown numericUpDownMaxChartLevel; + private ARKBreedingStats.uiControls.Nud numericUpDownMaxChartLevel; private System.Windows.Forms.Label label18; private System.Windows.Forms.Label label2; private System.Windows.Forms.TabControl tabControl1; @@ -1216,20 +1364,29 @@ private void InitializeComponent() private System.Windows.Forms.TextBox textBoxOCRCustom; private System.Windows.Forms.Label label4; private System.Windows.Forms.ComboBox cbOCRApp; - private System.Windows.Forms.GroupBox groupBox9; - private System.Windows.Forms.Label label19; - private System.Windows.Forms.NumericUpDown nudEvolutionEvent; - private uiControls.customSoundChooser customSCBirth; - private uiControls.customSoundChooser customSCWakeup; - private uiControls.customSoundChooser customSCStarving; private System.Windows.Forms.GroupBox groupBox10; private System.Windows.Forms.CheckBox chkbSpeechRecognition; private System.Windows.Forms.Label label3; - private System.Windows.Forms.NumericUpDown nudMatingInterval; + private ARKBreedingStats.uiControls.Nud nudMatingInterval; private System.Windows.Forms.Label labelBabyFoodConsumptionSpeed; - private System.Windows.Forms.NumericUpDown nudBabyFoodConsumptionSpeed; + private ARKBreedingStats.uiControls.Nud nudBabyFoodConsumptionSpeed; private System.Windows.Forms.Label label20; private System.Windows.Forms.Label label21; - private System.Windows.Forms.NumericUpDown nudOverlayInfoDuration; + private ARKBreedingStats.uiControls.Nud nudOverlayInfoDuration; + private customSoundChooser customSCWakeup; + private customSoundChooser customSCBirth; + private customSoundChooser customSCStarving; + private ARKBreedingStats.uiControls.Nud nudBabyFoodConsumptionEvent; + private ARKBreedingStats.uiControls.Nud nudMatingIntervalEvent; + private ARKBreedingStats.uiControls.Nud nudCuddleIntervalEvent; + private ARKBreedingStats.uiControls.Nud nudMaturationSpeedEvent; + private ARKBreedingStats.uiControls.Nud nudHatchingSpeedEvent; + private ARKBreedingStats.uiControls.Nud nudTamingFoodRateEvent; + private ARKBreedingStats.uiControls.Nud nudTamingSpeedEvent; + private System.Windows.Forms.Button buttonEventToDefault; + private System.Windows.Forms.Button buttonAllTBMultipliersOne; + private System.Windows.Forms.Label label22; + private uiControls.Nud nudWhiteThreshold; + private System.Windows.Forms.Label label19; } } \ No newline at end of file diff --git a/ARKBreedingStats/Settings.cs b/ARKBreedingStats/settings/Settings.cs similarity index 85% rename from ARKBreedingStats/Settings.cs rename to ARKBreedingStats/settings/Settings.cs index 70015284..5131ed56 100644 --- a/ARKBreedingStats/Settings.cs +++ b/ARKBreedingStats/settings/Settings.cs @@ -1,16 +1,10 @@ using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Windows.Forms; using System.Text.RegularExpressions; using System.IO; +using ARKBreedingStats; -namespace ARKBreedingStats +namespace ARKBreedingStats.settings { public partial class Settings : Form { @@ -48,7 +42,6 @@ private void initStuff() // Tooltips tt = new ToolTip(); tt.SetToolTip(numericUpDownAutosaveMinutes, "To disable set to 0"); - tt.SetToolTip(chkExperimentalOCR, "Experimental! Works well for 1920 and mostly for 1680. May not work for other resolutions at all."); tt.SetToolTip(chkCollectionSync, "If checked, the tool automatically reloads the library if it was changed. Use if multiple persons editing the file, e.g. via a shared folder.\nIt's recommened to check this along with \"Auto Save\""); tt.SetToolTip(checkBoxAutoSave, "If checked, the library is saved after each change automatically.\nIt's recommened to check this along with \"Auto Update Collection File\""); tt.SetToolTip(numericUpDownMaxChartLevel, "This number defines the level that is shown as maximum in the charts.\nUsually it's good to set this value to one third of the max wild level."); @@ -86,9 +79,18 @@ private void loadSettings(CreatureCollection cc) numericUpDownTamingFoodRate.Value = (decimal)cc.tamingFoodRateMultiplier; nudMatingInterval.Value = (decimal)cc.MatingIntervalMultiplier; nudBabyFoodConsumptionSpeed.Value = (decimal)cc.BabyFoodConsumptionSpeedMultiplier; + // event-multiplier + nudCuddleIntervalEvent.Value = (decimal)cc.babyCuddleIntervalMultiplierEvent; + nudTamingSpeedEvent.Value = (decimal)cc.tamingSpeedMultiplierEvent; + nudTamingFoodRateEvent.Value = (decimal)cc.tamingFoodRateMultiplierEvent; + nudMatingIntervalEvent.Value = (decimal)cc.MatingIntervalMultiplierEvent; + nudHatchingSpeedEvent.Value = (decimal)cc.EggHatchSpeedMultiplierEvent; + nudMaturationSpeedEvent.Value = (decimal)cc.BabyMatureSpeedMultiplierEvent; + nudBabyFoodConsumptionEvent.Value = (decimal)cc.BabyFoodConsumptionSpeedMultiplierEvent; + checkBoxAutoSave.Checked = Properties.Settings.Default.autosave; numericUpDownAutosaveMinutes.Value = Properties.Settings.Default.autosaveMinutes; - chkExperimentalOCR.Checked = Properties.Settings.Default.OCR; + nudWhiteThreshold.Value = Properties.Settings.Default.OCRWhiteThreshold; chkbSpeechRecognition.Checked = Properties.Settings.Default.SpeechRecognition; nudOverlayInfoDuration.Value = Properties.Settings.Default.OverlayInfoDuration; chkCollectionSync.Checked = Properties.Settings.Default.syncCollection; @@ -106,7 +108,6 @@ private void loadSettings(CreatureCollection cc) else cbOCRApp.SelectedIndex = i; - nudEvolutionEvent.Value = (decimal)Properties.Settings.Default.evolutionMultiplier; customSCStarving.SoundFile = Properties.Settings.Default.soundStarving; customSCWakeup.SoundFile = Properties.Settings.Default.soundWakeup; customSCBirth.SoundFile = Properties.Settings.Default.soundBirth; @@ -131,10 +132,18 @@ private void saveSettings() cc.tamingFoodRateMultiplier = (double)numericUpDownTamingFoodRate.Value; cc.MatingIntervalMultiplier = (double)nudMatingInterval.Value; cc.BabyFoodConsumptionSpeedMultiplier = (double)nudBabyFoodConsumptionSpeed.Value; + // event-multiplier + cc.babyCuddleIntervalMultiplierEvent = (double)nudCuddleIntervalEvent.Value; + cc.tamingSpeedMultiplierEvent = (double)nudTamingSpeedEvent.Value; + cc.tamingFoodRateMultiplierEvent = (double)nudTamingFoodRateEvent.Value; + cc.MatingIntervalMultiplierEvent = (double)nudMatingIntervalEvent.Value; + cc.EggHatchSpeedMultiplierEvent = (double)nudHatchingSpeedEvent.Value; + cc.BabyMatureSpeedMultiplierEvent = (double)nudMaturationSpeedEvent.Value; + cc.BabyFoodConsumptionSpeedMultiplierEvent = (double)nudBabyFoodConsumptionEvent.Value; Properties.Settings.Default.autosave = checkBoxAutoSave.Checked; Properties.Settings.Default.autosaveMinutes = (int)numericUpDownAutosaveMinutes.Value; - Properties.Settings.Default.OCR = chkExperimentalOCR.Checked; + Properties.Settings.Default.OCRWhiteThreshold = (int)nudWhiteThreshold.Value; Properties.Settings.Default.SpeechRecognition = chkbSpeechRecognition.Checked; Properties.Settings.Default.OverlayInfoDuration = (int)nudOverlayInfoDuration.Value; Properties.Settings.Default.syncCollection = chkCollectionSync.Checked; @@ -145,8 +154,6 @@ private void saveSettings() ocrApp = textBoxOCRCustom.Text; Properties.Settings.Default.OCRApp = ocrApp; - Properties.Settings.Default.evolutionMultiplier = (double)nudEvolutionEvent.Value; - Properties.Settings.Default.soundStarving = customSCStarving.SoundFile; Properties.Settings.Default.soundWakeup = customSCWakeup.SoundFile; Properties.Settings.Default.soundBirth = customSCBirth.SoundFile; @@ -187,15 +194,6 @@ private void checkBoxAutoSave_CheckedChanged(object sender, EventArgs e) numericUpDownAutosaveMinutes.Enabled = checkBoxAutoSave.Checked; } - private void numericUpDown_Enter(object sender, EventArgs e) - { - NumericUpDown n = (NumericUpDown)sender; - if (n != null) - { - n.Select(0, n.Text.Length); - } - } - private void tabPage2_DragEnter(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop)) e.Effect = DragDropEffects.Copy; @@ -312,5 +310,28 @@ public void DisposeToolTips() { tt.RemoveAll(); } + + private void buttonAllTBMultipliersOne_Click(object sender, EventArgs e) + { + numericUpDownTamingSpeed.Value = 1; + numericUpDownTamingFoodRate.Value = 1; + nudMatingInterval.Value = 1; + numericUpDownHatching.Value = 1; + numericUpDownMaturation.Value = 1; + numericUpDownImprintingM.Value = 1; + numericUpDownBabyCuddleIntervalMultiplier.Value = 1; + nudBabyFoodConsumptionSpeed.Value = 1; + } + + private void buttonEventToDefault_Click(object sender, EventArgs e) + { + nudTamingSpeedEvent.Value = numericUpDownTamingSpeed.Value; + nudTamingFoodRateEvent.Value = numericUpDownTamingFoodRate.Value; + nudMatingIntervalEvent.Value = nudMatingInterval.Value; + nudHatchingSpeedEvent.Value = numericUpDownHatching.Value; + nudMaturationSpeedEvent.Value = numericUpDownMaturation.Value; + nudCuddleIntervalEvent.Value = numericUpDownBabyCuddleIntervalMultiplier.Value; + nudBabyFoodConsumptionEvent.Value = nudBabyFoodConsumptionSpeed.Value; + } } } diff --git a/ARKBreedingStats/Settings.resx b/ARKBreedingStats/settings/Settings.resx similarity index 100% rename from ARKBreedingStats/Settings.resx rename to ARKBreedingStats/settings/Settings.resx diff --git a/ARKBreedingStats/uiControls/customSoundChooser.Designer.cs b/ARKBreedingStats/settings/customSoundChooser.Designer.cs similarity index 94% rename from ARKBreedingStats/uiControls/customSoundChooser.Designer.cs rename to ARKBreedingStats/settings/customSoundChooser.Designer.cs index aedde808..4af1f7b6 100644 --- a/ARKBreedingStats/uiControls/customSoundChooser.Designer.cs +++ b/ARKBreedingStats/settings/customSoundChooser.Designer.cs @@ -1,4 +1,4 @@ -namespace ARKBreedingStats.uiControls +namespace ARKBreedingStats.settings { partial class customSoundChooser { @@ -37,13 +37,13 @@ private void InitializeComponent() // this.labelName.Location = new System.Drawing.Point(3, 5); this.labelName.Name = "labelName"; - this.labelName.Size = new System.Drawing.Size(187, 18); + this.labelName.Size = new System.Drawing.Size(285, 18); this.labelName.TabIndex = 0; this.labelName.Text = "Event"; // // buttonFileChooser // - this.buttonFileChooser.Location = new System.Drawing.Point(196, 0); + this.buttonFileChooser.Location = new System.Drawing.Point(294, 0); this.buttonFileChooser.Name = "buttonFileChooser"; this.buttonFileChooser.Size = new System.Drawing.Size(75, 23); this.buttonFileChooser.TabIndex = 1; @@ -53,7 +53,7 @@ private void InitializeComponent() // // buttonPlay // - this.buttonPlay.Location = new System.Drawing.Point(277, 0); + this.buttonPlay.Location = new System.Drawing.Point(375, 0); this.buttonPlay.Name = "buttonPlay"; this.buttonPlay.Size = new System.Drawing.Size(23, 23); this.buttonPlay.TabIndex = 2; @@ -69,7 +69,7 @@ private void InitializeComponent() this.Controls.Add(this.buttonFileChooser); this.Controls.Add(this.labelName); this.Name = "customSoundChooser"; - this.Size = new System.Drawing.Size(300, 23); + this.Size = new System.Drawing.Size(401, 23); this.ResumeLayout(false); } diff --git a/ARKBreedingStats/uiControls/customSoundChooser.cs b/ARKBreedingStats/settings/customSoundChooser.cs similarity index 98% rename from ARKBreedingStats/uiControls/customSoundChooser.cs rename to ARKBreedingStats/settings/customSoundChooser.cs index a8e4345b..020c873c 100644 --- a/ARKBreedingStats/uiControls/customSoundChooser.cs +++ b/ARKBreedingStats/settings/customSoundChooser.cs @@ -3,7 +3,7 @@ using System.Windows.Forms; using System.IO; -namespace ARKBreedingStats.uiControls +namespace ARKBreedingStats.settings { public partial class customSoundChooser : UserControl { diff --git a/ARKBreedingStats/uiControls/customSoundChooser.resx b/ARKBreedingStats/settings/customSoundChooser.resx similarity index 100% rename from ARKBreedingStats/uiControls/customSoundChooser.resx rename to ARKBreedingStats/settings/customSoundChooser.resx diff --git a/ARKBreedingStats/uiControls/Trough.cs b/ARKBreedingStats/uiControls/Trough.cs index 69d279ca..1ea0294f 100644 --- a/ARKBreedingStats/uiControls/Trough.cs +++ b/ARKBreedingStats/uiControls/Trough.cs @@ -36,7 +36,7 @@ public void Tick() } } - public static bool foodAmount(int speciesIndex, out double babyFood, out double totalFood) + public static bool foodAmount(int speciesIndex, double babyFoodConsumptionSpeedMultiplier, out double babyFood, out double totalFood) { babyFood = 0; totalFood = 0; @@ -47,6 +47,9 @@ public static bool foodAmount(int speciesIndex, out double babyFood, out double // babyfood = 0.1*growing * (2.7 - 0.1*1.3) babyFood = 0.1 * Values.V.species[speciesIndex].breeding.maturationTimeAdjusted * 2.57; + totalFood *= babyFoodConsumptionSpeedMultiplier; + babyFood *= babyFoodConsumptionSpeedMultiplier; + // roughly the spoiling totalFood *= 1.1; babyFood *= 1.1; @@ -55,7 +58,7 @@ public static bool foodAmount(int speciesIndex, out double babyFood, out double return false; } - public static bool foodAmountFromUntil(int speciesIndex, double currentMaturation, double untilMaturation, out double totalFood) + public static bool foodAmountFromUntil(int speciesIndex, double babyFoodConsumptionSpeedMultiplier, double currentMaturation, double untilMaturation, out double totalFood) { totalFood = 0; if (speciesIndex >= 0 && currentMaturation < untilMaturation && untilMaturation <= 1) @@ -65,6 +68,8 @@ public static bool foodAmountFromUntil(int speciesIndex, double currentMaturatio - currentMaturation * (2.7 - 1.3 * currentMaturation) - (1.4 - untilMaturation * (2.7 - 1.3 * untilMaturation))); + totalFood *= babyFoodConsumptionSpeedMultiplier; + // roughly the spoiling totalFood *= 1.1; return true; diff --git a/ARKBreedingStats/uiControls/nud.cs b/ARKBreedingStats/uiControls/nud.cs new file mode 100644 index 00000000..7ab045f3 --- /dev/null +++ b/ARKBreedingStats/uiControls/nud.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace ARKBreedingStats.uiControls +{ + class Nud : NumericUpDown + { + protected override void OnEnter(EventArgs e) + { + base.OnEnter(e); + Select(0, Text.Length); + } + } +} diff --git a/ARKBreedingStats/values.json b/ARKBreedingStats/values.json deleted file mode 100644 index 0f96dc29..00000000 --- a/ARKBreedingStats/values.json +++ /dev/null @@ -1 +0,0 @@ -{"version":2563400,"foodData":[{"Key":"Raw Meat","Value":{"d":[50,50]}},{"Key":"Cooked Meat","Value":{"d":[25,25]}},{"Key":"Cooked Meat Jerky","Value":{"d":[25,25]}},{"Key":"Raw Prime Meat","Value":{"d":[50,150]}},{"Key":"Cooked Prime Meat","Value":{"d":[49.945,75]}},{"Key":"Prime Meat Jerky","Value":{"d":[49.945,75]}},{"Key":"Raw Fish Meat","Value":{"d":[25,20]}},{"Key":"Raw Prime Fish Meat","Value":{"d":[25,60]}},{"Key":"Cooked Fish Meat","Value":{"d":[12.5,10]}},{"Key":"Cooked Prime Fish Meat","Value":{"d":[25.7,30]}},{"Key":"Raw Mutton","Value":{"d":[50,375]}},{"Key":"Cooked Lamb Chop","Value":{"d":[49.945,206.25]}},{"Key":"Spoiled Meat","Value":{"d":[50,100]}},{"Key":"Vegetables","Value":{"d":[40,40]}},{"Key":"Mejoberry","Value":{"d":[30,30]}},{"Key":"Berries","Value":{"d":[19.9999995,20]}},{"Key":"Stimberry","Value":{"d":[-15,1.5]}},{"Key":"Kibble","Value":{"d":[79.95,400]}}],"imprintingMultiplier":1,"statMultipliers":[[0.14,0.44,0.2,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[0.14,0.44,0.17,1],[1,1,1,1],[1,1,1,1]],"tamingMultiplier":1,"species":[{"name":"Achatina","colors":[{"name":"Body","colorIds":[49,22,33,34,42,43]},{"name":"Shell","colorIds":[19,21,22,23,24,28,30,32,33,34,8,13,35,14]},{"name":null,"colorIds":[]},{"name":"Shell Highlights","colorIds":[19,28,33,30,32,21,43,25,23]},{"name":"Stripe","colorIds":[19,21,32,30,25,23,50]},{"name":"Underside","colorIds":[19,21,33,30,50,25,23]}],"statsRaw":[[75,0.2,0.27,0.5,0],[100,0.1,0.1,0,0],[150,0.1,0.1,0,0],[450,0.1,0.1,0,0],[150,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0,0],[50,0.06,0,0.5,0]],"doesNotUseOxygen":true,"taming":{"eats":["Sweet Vegetable Cake"],"nonViolent":false,"specialFoodValues":[{"Key":"Sweet Vegetable Cake","Value":{"d":[180,450]}}],"tamingIneffectiveness":0.2,"affinityNeeded0":4000,"affinityIncreasePL":150,"torporDepletionPS0":0.3,"foodConsumptionBase":0.001736,"foodConsumptionMult":864.055298,"violent":true},"immobilizedBy":["Bola","Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":0.5,"Value":"Tail"},{"Key":1,"Value":"Neck"}]},{"name":"Allosaurus","breeding":{"gestationTime":0,"incubationTime":5999.520508,"maturationTime":166666.65625,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":26,"eggTempMax":32},"colors":[{"name":"Body","colorIds":[20,21,22,23,24,25,26,27,32,33,34,8,13,35,14]},{"name":"unknown","colorIds":[20,21,22,23,24,25,26,27,32,33,34,8,13,35,14]},{"name":"unknown","colorIds":[20,21,22,23,24,25,26,27,32,33,34,8,13,35,14]},{"name":"unknown","colorIds":[20,21,22,23,24,25,26,27,32,33,34,8,13,35,14]},{"name":"Spine","colorIds":[20,21,22,23,24,25,26,27,32,33,34,8,13,35,14]},{"name":"Belly","colorIds":[20,21,22,23,24,25,26,27,32,33,34,8,13,35,14]}],"statsRaw":[[630,0.2,0.27,0.5,0],[250,0.1,0.1,0,0],[150,0.1,0.1,0,0],[3000,0.1,0.1,0,0.15],[380,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0,0],[1000,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Diplo","nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":1.875,"affinityNeeded0":2400,"affinityIncreasePL":100,"torporDepletionPS0":0.8,"foodConsumptionBase":0.002052,"foodConsumptionMult":180.063385,"violent":true},"immobilizedBy":["Chain Bola","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Head, Neck"}]},{"name":"Angler","breeding":{"gestationTime":0,"incubationTime":17998.560547,"maturationTime":133333.328125,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":-75,"eggTempMax":75},"colors":[{"name":"Body","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,14,36,1,4,3,2]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"unknown","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,14,36]},{"name":"Tail fin and Accents","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,14,36]}],"statsRaw":[[450,0.2,0.27,0.3,0],[240,0.1,0.1,0,0],[150,0.1,0.1,0,0],[1500,0.1,0.1,0,0.15],[350,0.02,0.04,0,0],[1,0.05,0.1,1,0.4],[1,0,0.025,0,0],[900,0.06,0,0.5,0]],"doesNotUseOxygen":true,"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Kairuku","nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":2.5,"affinityNeeded0":1800,"affinityIncreasePL":90,"torporDepletionPS0":2.8,"foodConsumptionBase":0.001852,"foodConsumptionMult":149.988007,"violent":true}},{"name":"Ankylosaurus","breeding":{"gestationTime":0,"incubationTime":9472.926758,"maturationTime":175438.59375,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":16,"eggTempMax":20},"colors":[{"name":null,"colorIds":[]},{"name":"Spikes","colorIds":[21,23,32,33,8,14]},{"name":"Leg Plates","colorIds":[20,22,24,33,34,13,35,14]},{"name":"Spike Tips","colorIds":[20,22,24,33,34,13,35,14]},{"name":"Head and Back","colorIds":[20,22,24,33,34,13,35,14]},{"name":"Underside","colorIds":[21,23,32,33,8,14]}],"statsRaw":[[700,0.2,0.27,0.5,0],[175,0.1,0.1,0,0],[150,0.1,0.1,0,0],[3000,0.1,0.1,0,0.15],[250,0.02,0.04,0,0],[1,0.05,0.1,1,0.4],[1,0,0.025,0.5,0],[420,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Vegetables","Mejoberry","Berries","Stimberry"],"favoriteKibble":"Dilo","nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":0.2,"affinityNeeded0":3000,"affinityIncreasePL":150,"torporDepletionPS0":0.3,"foodConsumptionBase":0.003156,"foodConsumptionMult":176.03154,"violent":true},"immobilizedBy":["Chain Bola","Large Bear Trap","Plant Species Y"]},{"name":"Araneo","colors":[{"name":"Thorax and Head","colorIds":[20,22,24,26,27,29,31,33,34,13,35,14]},{"name":null,"colorIds":[]},{"name":"Lower Abdomen","colorIds":[20,22,24,26,27,29,31,33,34,13,35,14]},{"name":"Leg","colorIds":[20,22,24,26,27,29,31,33,34,13,35,14]},{"name":"Scutes","colorIds":[19,21,23,25,26,28,30,32,33,8,14]},{"name":"Upper Abdomen and Markings","colorIds":[20,22,24,26,27,29,31,33,34,13,35,14]}],"statsRaw":[[150,0.2,0.135,0.5,0],[100,0.1,0.1,0,0],[150,0.1,0.1,0,0],[900,0.1,0.1,0,0],[100,0.02,0.08,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0.67,0],[80,0.06,0,0.5,0]],"taming":{"eats":["Spoiled Meat","Raw Meat","Raw Fish Meat"],"nonViolent":true,"specialFoodValues":[{"Key":"Raw Meat","Value":{"d":[15,15]}},{"Key":"Raw Fish Meat","Value":{"d":[7.5,6]}}],"tamingIneffectiveness":4.166667,"affinityNeeded0":4000,"affinityIncreasePL":120,"foodConsumptionBase":0.001736,"foodConsumptionMult":864.055298,"wakeAffinityMult":1,"wakeFoodDeplMult":2,"violent":false},"immobilizedBy":["Bola","Bear Trap","Plant Species Y"]},{"name":"Archaeopteryx","breeding":{"gestationTime":0,"incubationTime":9472.926758,"maturationTime":55555.554688,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":16,"eggTempMax":20},"colors":[{"name":"Sides, Tail, Wings and Face","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,8,13,35,14]},{"name":"unknown","colorIds":[21,23,32,33,8,14]},{"name":"Skin","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"unknown","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Top and Wing Tips","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,8,13,35,14,36]},{"name":"Underside and Accents","colorIds":[19,21,23,25,26,28,30,32,33,8,14]}],"statsRaw":[[125,0.2,0.27,0.5,0],[150,0.1,0.1,0,0],[150,0.1,0.1,0,0],[900,0.1,0.1,0,0],[30,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0,0],[100,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Chitin"],"favoriteKibble":"Pelagornis","nonViolent":false,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[25,400]}},{"Key":"Chitin","Value":{"d":[50,50]}}],"tamingIneffectiveness":1.333333,"affinityNeeded0":500,"affinityIncreasePL":22.5,"torporDepletionPS0":0.8333,"foodConsumptionBase":0.001302,"foodConsumptionMult":1152.07373,"violent":true},"immobilizedBy":["Bola","Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Head, Neck"}]},{"name":"Argentavis","breeding":{"gestationTime":0,"incubationTime":10587.388672,"maturationTime":196078.421875,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":12,"eggTempMax":13.5},"colors":[{"name":"Main Body","colorIds":[20,22,24,33,34,13,35,14,18]},{"name":null,"colorIds":[]},{"name":"Wing Tips","colorIds":[20,22,24,33,34,13,35,14,18]},{"name":"Legs","colorIds":[20,22,24,33,34,13,35,14,18]},{"name":"Head Feathers","colorIds":[20,22,24,33,34,13,35,14,18]},{"name":"Underside","colorIds":[21,23,32,33,8,14,18]}],"statsRaw":[[365,0.2,0.3375,0.5,0],[400,0.05,0.075,0,0],[150,0.1,0.1,0,0],[2000,0.1,0.1,0,0],[400,0.02,0.055,0,0],[1,0.05,0.15,0.5,0.4],[1,0,0,0,0],[600,0.06,0,0.5,0]],"NoImprintingForSpeed":true,"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Stegosaurus","nonViolent":false,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[79.919998,400]}}],"tamingIneffectiveness":1.875,"affinityNeeded0":2000,"affinityIncreasePL":100,"torporDepletionPS0":0.3,"foodConsumptionBase":0.001852,"foodConsumptionMult":199.983994,"violent":true},"immobilizedBy":["Bola","Chain Bola","Bear Trap","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Neck"}]},{"name":"Arthropluera","colors":[{"name":"Segments","colorIds":[20,22,24,26,27,29,31,33,34,13,35,14]},{"name":"Head","colorIds":[19,21,23,25,26,28,30,32,33,8,14]},{"name":"Sternites","colorIds":[19,21,23,25,26,28,30,32,33,8,14]},{"name":"Legs, Antennae, and Forcipules","colorIds":[19,21,23,25,26,28,30,32,33,8,14]},{"name":"unknown","colorIds":[19,21,23,25,26,28,30,32,33,8,14]},{"name":"Underside of Head/Segments","colorIds":[19,21,23,25,26,28,30,32,33,8,14]}],"statsRaw":[[500,0.2,0.27,0.5,0],[200,0.1,0.1,0,0],[150,0.1,0.1,0,0],[1200,0.1,0.1,0,0],[100,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0.2,0],[175,0.06,0,0.5,0]],"doesNotUseOxygen":true,"taming":{"eats":["Broth of Enlightenment","Spoiled Meat","Raw Meat","Raw Fish Meat"],"nonViolent":true,"specialFoodValues":[{"Key":"Broth of Enlightenment","Value":{"d":[20,1500]}},{"Key":"Raw Meat","Value":{"d":[15,15]}},{"Key":"Raw Fish Meat","Value":{"d":[7.5,6]}}],"tamingIneffectiveness":2.5,"affinityNeeded0":3000,"affinityIncreasePL":75,"foodConsumptionBase":0.001543,"foodConsumptionMult":648.088135,"wakeAffinityMult":1.6,"wakeFoodDeplMult":2,"violent":false},"boneDamageAdjusters":[{"Key":2.5,"Value":"Head"}]},{"name":"Baryonyx","breeding":{"gestationTime":0,"incubationTime":7199.423828,"maturationTime":166666.65625,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":29,"eggTempMax":35},"colors":[{"name":"Body","colorIds":[22,24,26,27,33,34,13,35,14]},{"name":"Spines","colorIds":[23,37,26,27,33,34,13,35,14]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Stripes","colorIds":[32,33,39,34,24,13]},{"name":"Underside","colorIds":[37,32,33,39,38,23,8]}],"statsRaw":[[440,0.2,0.27,0.5,0],[325,0.1,0.1,0,0],[225,0.1,0.1,0,0],[2250,0.1,0.1,0,0],[325,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0.2,0],[400,0.06,0,0.5,0]],"doesNotUseOxygen":true,"taming":{"eats":["Kibble","Raw Prime Fish Meat","Cooked Prime Fish Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Pachyrhino","nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":2.5,"affinityNeeded0":2500,"affinityIncreasePL":100,"torporDepletionPS0":0.3,"foodConsumptionBase":0.001543,"foodConsumptionMult":648.088135,"violent":true},"immobilizedBy":["Bola","Bear Trap","Large Bear Trap","Plant Species Y"]},{"name":"Basilosaurus","breeding":{"gestationTime":28571.427734,"incubationTime":0,"maturationTime":666666.625,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"Body Main","colorIds":[19,20,21,22,23,24,28,29,14]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Belly","colorIds":[21,23,28,32,33,8,14,36]}],"statsRaw":[[2400,0.2,0.243,0.3,0],[300,0.1,0.1,0,0],[150,0.1,0.1,0,0],[8000,0.1,0.1,0,0.15],[700,0.02,0.04,0,0],[1,0.05,0.1,0.9,0.4],[1,0,0.025,0,0],[2000,0.06,0,0.5,0]],"doesNotUseOxygen":true,"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Therizinosaurus","nonViolent":true,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[319.679993,500]}}],"tamingIneffectiveness":2.5,"affinityNeeded0":6600,"affinityIncreasePL":250,"foodConsumptionBase":0.002929,"foodConsumptionMult":420,"wakeAffinityMult":1.6,"wakeFoodDeplMult":5,"violent":false}},{"name":"Beelzebufo","breeding":{"gestationTime":0,"incubationTime":17998.560547,"maturationTime":133333.328125,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":-75,"eggTempMax":75},"colors":[{"name":"Body","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,8,13,35,14,36]},{"name":"Spikes","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,8,13,35,14,36]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Stripes","colorIds":[20,22,24,26,27,29,31,33,34,13,35,14]},{"name":"Belly and Accents","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,8,13,35,14,36]}],"statsRaw":[[220,0.2,0.27,0.5,0],[190,0.1,0.1,0,0],[150,0.1,0.1,0,0],[1500,0.1,0.1,0,0],[160,0.02,0.04,0,0],[1,0.05,0.1,0.2,0.25],[1,0,0.025,1,0],[200,0.06,0,0.5,0]],"doesNotUseOxygen":true,"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Pulmonoscorpius","nonViolent":false,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[79.919998,400]}}],"tamingIneffectiveness":0.4,"affinityNeeded0":1800,"affinityIncreasePL":75,"torporDepletionPS0":0.6666,"foodConsumptionBase":0.001929,"foodConsumptionMult":648.00415,"violent":true},"immobilizedBy":["Bola","Bear Trap","Plant Species Y"]},{"name":"Brontosaurus","breeding":{"gestationTime":0,"incubationTime":17998.560547,"maturationTime":333333.3125,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":28,"eggTempMax":31},"colors":[{"name":"Body","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Spine","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Back","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Legs","colorIds":[21,23,25,26,32,33,8,14]}],"statsRaw":[[2300,0.2,0.19,0.5,0],[240,0.1,0.1,0,0],[150,0.1,0.1,0,0],[10000,0.1,0.1,0,0],[1600,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0,0],[2000,0.06,0,0.5,0]],"TamedBaseHealthMultiplier":0.9,"taming":{"eats":["Kibble","Vegetables","Mejoberry","Berries","Stimberry"],"favoriteKibble":"Carbonemys","nonViolent":false,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[53.279999,400]}}],"tamingIneffectiveness":0.06,"affinityNeeded0":10000,"affinityIncreasePL":500,"torporDepletionPS0":0.3,"foodConsumptionBase":0.007716,"foodConsumptionMult":180.001144,"violent":true},"immobilizedBy":["Large Bear Trap"]},{"name":"Carbonemys","breeding":{"gestationTime":0,"incubationTime":4499.640137,"maturationTime":83333.328125,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":30,"eggTempMax":34},"colors":[{"name":"Body","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Shell Base","colorIds":[19,21,23,28,30,32,33,8,14]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Shell, Plates, and Claws","colorIds":[20,22,24,29,31,33,34,13,35,14]},{"name":"Body Accent","colorIds":[21,23,25,26,32,33,8,14]}],"statsRaw":[[700,0.2,0.27,0.5,0],[200,0.1,0.1,0,0],[150,0.1,0.1,0,0],[3000,0.1,0.1,0,0],[270,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0.7,0],[275,0.06,0,0.5,0]],"TamedBaseHealthMultiplier":0.9,"doesNotUseOxygen":true,"taming":{"eats":["Kibble","Vegetables","Mejoberry","Berries","Stimberry"],"favoriteKibble":"Pteranodon","nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":0.2,"affinityNeeded0":3000,"affinityIncreasePL":150,"torporDepletionPS0":0.3,"foodConsumptionBase":0.003156,"foodConsumptionMult":352.06308,"violent":true},"immobilizedBy":["Chain Bola","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":0.2,"Value":"Body"},{"Key":0.5,"Value":"Tail"},{"Key":1,"Value":"Neck"}]},{"name":"Carnotaurus","breeding":{"gestationTime":0,"incubationTime":5999.520508,"maturationTime":166666.65625,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":26,"eggTempMax":32},"colors":[{"name":"Body","colorIds":[20,21,22,23,24,25,26,27,32,33,34,8,13,35,14,36]},{"name":"Horns","colorIds":[21,23,25,26,28,32,33,8,14]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Patterning","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Belly","colorIds":[21,23,25,26,28,32,33,8,14]}],"statsRaw":[[420,0.2,0.27,0.5,0],[300,0.1,0.1,0,0],[150,0.1,0.1,0,0],[2000,0.1,0.1,0,0.15],[300,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0,0],[350,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Ankylosaurus","nonViolent":false,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[79.919998,400]}}],"tamingIneffectiveness":1.875,"affinityNeeded0":2000,"affinityIncreasePL":100,"torporDepletionPS0":0.3,"foodConsumptionBase":0.001852,"foodConsumptionMult":199.983994,"violent":true},"immobilizedBy":["Chain Bola","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Head, Neck"}]},{"name":"Castoroides","breeding":{"gestationTime":28571.427734,"incubationTime":0,"maturationTime":222222.21875,"matingCooldownMin":64800,"matingCooldownMax":142800},"colors":[{"name":"Body","colorIds":[21,22,32,33,34,8,13,35,14,37,37,37,37,37,38,39]},{"name":"Feet","colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":"Stripe","colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":"Tail","colorIds":[21,22,32,33,34,8,13,35,14,37,38,39,39,39,39,39]}],"statsRaw":[[450,0.2,0.27,0.5,0],[180,0.1,0.1,0,0],[380,0.1,0.1,0,0],[2000,0.1,0.1,0,0],[300,0.02,0.04,0,0],[1,0.04,0.1,0.5,0.4],[1,0,0.025,0.7,0],[350,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Vegetables","Mejoberry","Berries","Stimberry"],"favoriteKibble":"Gallimimus","nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":0.3,"affinityNeeded0":2000,"affinityIncreasePL":100,"torporDepletionPS0":1.5,"foodConsumptionBase":0.002314,"foodConsumptionMult":160.056335,"violent":true},"immobilizedBy":["Bola","Large Bear Trap","Plant Species Y"]},{"name":"Chalicotherium","breeding":{"gestationTime":28571.427734,"incubationTime":0,"maturationTime":296296.28125,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"Body","colorIds":[20,22,39,37,33,34,13,35,14]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Fur Highlights","colorIds":[20,33,34,13,35]},{"name":"Stripes and Belly","colorIds":[21,38,32,33,8,14]}],"statsRaw":[[600,0.2,0.27,0.5,0],[300,0.1,0.1,0,0],[150,0.1,0.1,0,0],[4000,0.1,0.1,0,0],[400,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0,0],[500,0.06,0,0.5,0]],"taming":{"eats":["Beer Jar","Stimberry"],"nonViolent":true,"specialFoodValues":[{"Key":"Beer Jar","Value":{"d":[45,400]}}],"tamingIneffectiveness":0.16,"affinityNeeded0":5000,"affinityIncreasePL":275,"foodConsumptionBase":0.003156,"foodConsumptionMult":352.06308,"wakeAffinityMult":1.6,"wakeFoodDeplMult":2,"violent":false},"immobilizedBy":["Chain Bola","Large Bear Trap","Plant Species Y"]},{"name":"Compy","breeding":{"gestationTime":0,"incubationTime":2999.760254,"maturationTime":333333.3125,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":24,"eggTempMax":32},"colors":[{"name":"Body","colorIds":[21,23,25,26,28,32,33,8,14]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Feathers","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,8,13,35,14,36]},{"name":"Patterning","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,8,13,35,14,36]},{"name":"Belly","colorIds":[20,22,24,26,27,33,34,13,35,14]}],"statsRaw":[[50,0.2,0.32,0.5,0],[100,0.1,0.1,0,0],[150,0.1,0.1,0,0],[450,0.1,0.1,0,0.15],[25,0.02,0.04,0,0],[1,0.05,0.1,1,0.4],[1,0,0.025,1,0],[25,0.06,0,0.5,0]],"taming":{"eats":["Raw Mutton","Raw Prime Meat","Raw Prime Fish Meat"],"nonViolent":false,"specialFoodValues":[{"Key":"Raw Mutton","Value":{"d":[20,1500]}},{"Key":"Raw Prime Meat","Value":{"d":[20,600]}},{"Key":"Raw Prime Fish Meat","Value":{"d":[10,240]}}],"tamingIneffectiveness":8.333333,"affinityNeeded0":500,"affinityIncreasePL":65,"torporDepletionPS0":1.3,"foodConsumptionBase":0.000868,"foodConsumptionMult":1728.110596,"violent":true},"immobilizedBy":["Bola","Bear Trap","Plant Species Y"]},{"name":"Dilophosaur","breeding":{"gestationTime":0,"incubationTime":4090.581787,"maturationTime":75757.570313,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":28,"eggTempMax":32},"colors":[{"name":"Body","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Back and Face","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Spike Tips","colorIds":[19,21,23,25,26,28,30,32,33,8,14,36]},{"name":"Spine and Spike Base","colorIds":[19,21,23,25,26,28,30,32,33,8,14,36]},{"name":"Frill, Crest and Belly","colorIds":[21,23,25,26,28,32,33,8,14]},{"name":"Legs and Arms","colorIds":[21,23,25,26,28,32,33,8,14]}],"statsRaw":[[130,0.2,0.27,0.5,0],[100,0.1,0.1,0,0],[150,0.1,0.1,0,0],[450,0.1,0.1,0,0.15],[45,0.02,0.04,0,0],[1,0.05,0.1,1,0.4],[1,0,0.025,2,0],[75,0.06,0,0.5,0]],"taming":{"eats":["Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":8.333333,"affinityNeeded0":450,"affinityIncreasePL":22.5,"torporDepletionPS0":0.3,"foodConsumptionBase":0.000868,"foodConsumptionMult":1728.110596,"violent":true},"immobilizedBy":["Bola","Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Head, Neck"}]},{"name":"Dimetrodon","breeding":{"gestationTime":0,"incubationTime":8999.280273,"maturationTime":166666.65625,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":30,"eggTempMax":34},"colors":[{"name":"Body","colorIds":[21,23,25,26,32,33,8,14]},{"name":"Side Fin","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,8,13,35,14]},{"name":"Sail","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,8,13,35,14]},{"name":"Sail Spines","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,8,13,35,14]},{"name":"Legs and Belly","colorIds":[20,21,22,23,24,25,26,27,32,33,34,8,13,35,14]},{"name":null,"colorIds":[]}],"statsRaw":[[350,0.2,0.27,0.65,0],[300,0.1,0.1,0,0],[500,0.1,0.1,0,0],[1500,0.1,0.1,0,0],[250,0.02,0.04,0,0],[1,0.02,0.04,0.8,0.5],[1,0,0.025,0,0],[750,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Quetzal","nonViolent":false,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[79.919998,400]}}],"tamingIneffectiveness":2.5,"affinityNeeded0":1500,"affinityIncreasePL":90,"torporDepletionPS0":25,"foodConsumptionBase":0.001736,"foodConsumptionMult":160.010239,"violent":true},"immobilizedBy":["Chain Bola","Large Bear Trap","Plant Species Y"]},{"name":"Dimorphodon","breeding":{"gestationTime":0,"incubationTime":4864.475586,"maturationTime":90090.085938,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":35,"eggTempMax":38},"colors":[{"name":"Body","colorIds":[20,21,22,23,24,32,33,34,8,13,35,14,36]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Face and Wing Membrane","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,8,13,35,14,36]},{"name":"Feathers","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,8,13,35,14,36]}],"statsRaw":[[125,0.2,0.27,0.5,0],[150,0.1,0.1,0,0],[150,0.1,0.1,0,0],[900,0.1,0.1,0,0],[50,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0,0],[100,0.06,0,0.5,0]],"taming":{"eats":["Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":4.166666,"affinityNeeded0":900,"affinityIncreasePL":45,"torporDepletionPS0":0.8333,"foodConsumptionBase":0.001302,"foodConsumptionMult":1152.07373,"violent":true},"immobilizedBy":["Bola","Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Head"}]},{"name":"Diplocaulus","breeding":{"gestationTime":0,"incubationTime":17998.560547,"maturationTime":133333.328125,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":-75,"eggTempMax":75},"colors":[{"name":"Body","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Fins","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,14]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Body Highlights","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,14]},{"name":"Underbelly","colorIds":[21,23,25,26,28,32,33,8,14]}],"statsRaw":[[190,0.2,0.27,0.5,0],[165,0.1,0.1,0,0],[1050,0.1,0.1,0,0],[1500,0.1,0.1,0,0],[150,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.25],[1,0,0.025,0,0],[220,0.06,0,0.5,0]],"doesNotUseOxygen":true,"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Archaeopteryx","nonViolent":false,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[119.969994,400]}}],"tamingIneffectiveness":2.5,"affinityNeeded0":2000,"affinityIncreasePL":75,"torporDepletionPS0":0.3,"foodConsumptionBase":0.001543,"foodConsumptionMult":225,"violent":true},"immobilizedBy":["Bola","Bear Trap","Plant Species Y"]},{"name":"Diplodocus","breeding":{"gestationTime":0,"incubationTime":17998.560547,"maturationTime":333333.3125,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":26,"eggTempMax":29},"colors":[{"name":"Sides, Legs, and Accents","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Spines","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"unknown","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"unknown","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Back","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Underside","colorIds":[21,23,25,26,32,33,8,14]}],"statsRaw":[[1700,0.2,0.27,0.5,0],[550,0.1,0.1,0,0],[300,0.1,0.1,0,0],[10000,0.1,0.1,0,0],[800,0.02,0.04,0,0],[1,0,0,0.5,0.4],[1,0,0.025,0,0],[3000,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Vegetables","Mejoberry","Berries","Stimberry"],"favoriteKibble":"Lystrosaurus","nonViolent":true,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[53.279999,275]}}],"tamingIneffectiveness":0.08,"affinityNeeded0":7500,"affinityIncreasePL":375,"torporDepletionPS0":0.75,"foodConsumptionBase":0.007716,"foodConsumptionMult":180.001144,"wakeAffinityMult":3,"wakeFoodDeplMult":2,"violent":true},"immobilizedBy":["Chain Bola","Large Bear Trap"]},{"name":"Direbear","breeding":{"gestationTime":14285.713867,"incubationTime":0,"maturationTime":166666.65625,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"Back and Head","colorIds":[21,22,32,33,34,8,13,35,14,37,37,37,37,37,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":"Belly and Legs","colorIds":[21,22,32,33,34,8,13,35,14,37,38,39,39,39,39,39]}],"statsRaw":[[400,0.2,0.27,0.5,0],[500,0.1,0.1,0,0],[270,0.1,0.1,0,0],[3000,0.1,0.1,0,0],[650,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,1.226,0],[1000,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Mejoberry","Cooked Meat","Berries","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Carnotaurus","nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":1.25,"affinityNeeded0":4000,"affinityIncreasePL":125,"torporDepletionPS0":0.9,"foodConsumptionBase":0.003156,"foodConsumptionMult":150,"violent":true},"immobilizedBy":["Chain Bola","Large Bear Trap"]},{"name":"Direwolf","breeding":{"gestationTime":15037.592773,"incubationTime":0,"maturationTime":175438.59375,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"Body","colorIds":[32,33,34,8,8,13,35,14,18,21]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Tail, Back, and Face","colorIds":[32,33,34,8,8,13,35,14,18,21]},{"name":"Feet","colorIds":[32,33,34,8,8,13,35,14,18,21]}],"statsRaw":[[330,0.2,0.27,0.66,0],[260,0.1,0.1,0,0],[150,0.1,0.1,0,0],[1200,0.1,0.1,0,0.15],[170,0.02,0.04,0,0],[1,0.05,0.1,0.4,0.35],[1,0,0.025,0.3,0],[450,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Carnotaurus","nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":3.125,"affinityNeeded0":1200,"affinityIncreasePL":60,"torporDepletionPS0":0.5,"foodConsumptionBase":0.001543,"foodConsumptionMult":288.039185,"violent":true},"immobilizedBy":["Bola","Bear Trap","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":2.5,"Value":"Head"}]},{"name":"Dodo","breeding":{"gestationTime":0,"incubationTime":2999.760254,"maturationTime":55555.554688,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":22,"eggTempMax":30},"colors":[{"name":"Body","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,8,13,35,14]},{"name":"Face","colorIds":[21,23,32,33,8,14]},{"name":"Beak","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Forehead, Neck, and Feet","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Head","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,8,13,35,14,36]},{"name":"Wings and Patterning","colorIds":[19,21,23,25,26,28,30,32,33,8,14]}],"statsRaw":[[40,0.2,0.27,0.5,0],[100,0.1,0.1,0,0],[150,0.1,0.1,0,0],[450,0.1,0.1,0,0.15],[50,0.02,0.04,0,0],[1,0.05,0.1,1,0.4],[1,0,0.025,2,0],[30,0.06,0,0.5,0]],"taming":{"eats":["Vegetables","Mejoberry","Berries","Stimberry"],"nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":1.333333,"affinityNeeded0":450,"affinityIncreasePL":22.5,"torporDepletionPS0":0.3,"foodConsumptionBase":0.000868,"foodConsumptionMult":2880.184326,"violent":true},"immobilizedBy":["Bola","Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Head, Neck"}]},{"name":"Doedicurus","breeding":{"gestationTime":17857.142578,"incubationTime":0,"maturationTime":208333.328125,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"Shell and Plates","colorIds":[21,22,32,33,34,8,13,35,14,37,37,37,37,37,38,39,29]},{"name":"Spikes and Claws","colorIds":[21,22,32,33,34,8,13,35,14,37,37,37,37,37,38,39,29]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Shell Patterning","colorIds":[21,22,32,33,34,8,13,35,14,37,37,37,37,37,38,39,29]},{"name":"Underside","colorIds":[21,22,32,33,34,8,13,35,14,37,37,37,37,37,38,39,29]}],"statsRaw":[[850,0.2,0.27,0.5,0],[300,0.1,0.1,0,0],[150,0.1,0.1,0,0],[3000,0.1,0.1,0,0.15],[250,0.02,0.04,0,0],[1,0.05,0.1,1,0.4],[1,0,0.025,1.25,0],[800,0.06,0,0.5,0]],"TamedBaseHealthMultiplier":0.9,"taming":{"eats":["Kibble","Vegetables","Mejoberry","Berries","Stimberry"],"favoriteKibble":"Dilo","nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":0.2,"affinityNeeded0":4000,"affinityIncreasePL":150,"torporDepletionPS0":0.75,"foodConsumptionBase":0.003156,"foodConsumptionMult":176.03154,"violent":true},"immobilizedBy":["Chain Bola","Large Bear Trap","Plant Species Y"]},{"name":"Dragon","statsRaw":[[20000,0.2,0.2,0.3,0],[400,0.1,0.1,0,0],[2000,0.1,0.1,0,0],[2600,0.1,0.1,0,0],[3000,0.02,0.02,0,0],[1,0.05,0.04,0.3,0.3],[1,0,0,0,0],[350,0.06,0,0.5,0]],"taming":{"nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":1.5,"affinityNeeded0":8500,"affinityIncreasePL":150,"foodConsumptionBase":0.002066,"foodConsumptionMult":150,"violent":false}},{"name":"Dung Beetle","colors":[{"name":"Shell","colorIds":[20,22,24,26,27,29,31,14]},{"name":"Legs","colorIds":[20,22,24,26,27,29,31,33,34,13,35,14]},{"name":null,"colorIds":[]},{"name":"Palps and Leg Patterning","colorIds":[19,21,23,25,26,28,30,32,33,8,14]},{"name":"Shell Patterning","colorIds":[20,22,24,26,27,29,31,14]},{"name":"Underside","colorIds":[20,22,24,26,27,29,31,33,34,13,35,14]}],"statsRaw":[[200,0.2,0.135,0.5,0],[100,0.1,0.1,0,0],[150,0.1,0.1,0,0],[900,0.1,0.1,0,0],[5,0.02,0.08,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0,0],[200,0.06,0,0.5,0]],"taming":{"eats":["Large Animal Feces","Medium Animal Feces","Spoiled Meat","Small Animal Feces","Human Feces","Raw Meat","Raw Fish Meat"],"nonViolent":true,"specialFoodValues":[{"Key":"Large Animal Feces","Value":{"d":[37.5,225]}},{"Key":"Medium Animal Feces","Value":{"d":[25,150]}},{"Key":"Small Animal Feces","Value":{"d":[12.5,75]}},{"Key":"Human Feces","Value":{"d":[10,60]}},{"Key":"Raw Meat","Value":{"d":[15,15]}},{"Key":"Raw Fish Meat","Value":{"d":[7.5,6]}}],"tamingIneffectiveness":4.166667,"affinityNeeded0":900,"affinityIncreasePL":50,"foodConsumptionBase":0.001488,"foodConsumptionMult":336.021515,"wakeAffinityMult":1,"wakeFoodDeplMult":2,"violent":false},"immobilizedBy":["Bola","Bear Trap","Plant Species Y"]},{"name":"Dunkleosteus","breeding":{"gestationTime":28571.427734,"incubationTime":0,"maturationTime":333333.3125,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"Body","colorIds":[19,20,21,22,23,24,28,29,14]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Spots","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Head","colorIds":[21,23,28,32,33,8,14,36]}],"statsRaw":[[710,0.2,0.27,0.3,0],[200,0.1,0.1,0,0],[150,0.1,0.1,0,0],[2000,0.1,0.1,0,0.15],[910,0.02,0.04,0,0],[1,0.05,0.1,1,0.4],[1,0,0.025,0,0],[1150,0.06,0,0.5,0]],"doesNotUseOxygen":true,"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Titanoboa","nonViolent":false,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[79.800003,400]}}],"tamingIneffectiveness":3.275,"affinityNeeded0":1300,"affinityIncreasePL":60,"torporDepletionPS0":1,"foodConsumptionBase":0.001852,"foodConsumptionMult":199.983994,"violent":true}},{"name":"Electrophorus","breeding":{"gestationTime":0,"incubationTime":17998.560547,"maturationTime":166666.65625,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":-75,"eggTempMax":75},"colors":[{"name":"Body Main","colorIds":[19,20,21,22,23,24,25,28,29,30,31,14,36]},{"name":"Fins","colorIds":[19,20,21,22,28,30,43,48]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"**Not Used**","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,14,36]},{"name":"Belly","colorIds":[19,43,21,42,23,24,25,28,48,30,49,14,36]}],"statsRaw":[[180,0.2,0.27,-0.2,0],[165,0.1,0.1,0,0],[1050,0.1,0.1,0,0],[1500,0.1,0.1,0,0],[150,0.02,0.04,0,0],[1,0.05,0.1,-0.25,0.25],[1,0,0.025,0,0],[175,0.06,0,0.5,0]],"doesNotUseOxygen":true,"taming":{"eats":["Raw Mutton","Cooked Lamb Chop","Bio Toxin","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"nonViolent":true,"specialFoodValues":[{"Key":"Bio Toxin","Value":{"d":[45,200]}}],"tamingIneffectiveness":2.5,"affinityNeeded0":2250,"affinityIncreasePL":90,"foodConsumptionBase":0.002929,"foodConsumptionMult":420,"wakeAffinityMult":1.6,"wakeFoodDeplMult":4,"violent":false}},{"name":"Equus","breeding":{"gestationTime":47619.042969,"incubationTime":0,"maturationTime":208333.328125,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"BodyMain","colorIds":[9,32,33,34,8,13,35,14,56,42,55]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Stripes","colorIds":[21,22,32,33,34,8,13,35,14,37,37,37,37,37,38,39,55]},{"name":"Underbelly and Highlights","colorIds":[21,22,32,33,34,8,13,35,14,37,37,37,37,37,38,39,55]}],"statsRaw":[[240,0.2,0.27,0.5,0],[560,0.1,0.1,0,0],[150,0.1,0.1,0,0],[1500,0.1,0.1,0,0],[350,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.0175,0.2,0],[420,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Vegetables","Sweet Vegetable Cake","Mejoberry","Berries","Stimberry"],"favoriteKibble":"Troodon","nonViolent":true,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[13.33,400]}},{"Key":"Vegetables","Value":{"d":[20,210]}},{"Key":"Sweet Vegetable Cake","Value":{"d":[20,20]}},{"Key":"Mejoberry","Value":{"d":[30,8]}},{"Key":"Berries","Value":{"d":[20,5]}}],"tamingIneffectiveness":0.4,"affinityNeeded0":3600,"affinityIncreasePL":180,"foodConsumptionBase":0.001929,"foodConsumptionMult":432.002777,"wakeAffinityMult":1.6,"wakeFoodDeplMult":2,"violent":false},"immobilizedBy":["Bola","Bear Trap","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":2,"Value":"Head"}]},{"name":"Gallimimus","breeding":{"gestationTime":0,"incubationTime":5142.445801,"maturationTime":95238.09375,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":24,"eggTempMax":28},"colors":[{"name":"Body","colorIds":[19,20,21,22,23,24,25,26,27,32,33,34,8,13,35,14]},{"name":"Feathers","colorIds":[20,22,24,26,27,33,34,13,35,14,36]},{"name":null,"colorIds":[]},{"name":"unknown","colorIds":[20,21,22,23,24,25,26,27,32,33,34,8,13,35,14,36]},{"name":"Spine and Feather Tips","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Lower Body","colorIds":[19,21,23,25,26,32,33,8,14]}],"statsRaw":[[150,0.2,0.27,0.5,0],[300,0.1,0.1,0,0],[150,0.1,0.1,0,0],[1000,0.1,0.1,0,0],[270,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0,0],[420,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Vegetables","Mejoberry","Berries","Stimberry"],"favoriteKibble":"Dimetrodon","nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":0.4,"affinityNeeded0":2200,"affinityIncreasePL":95,"torporDepletionPS0":4.175,"foodConsumptionBase":0.001929,"foodConsumptionMult":432.002777,"violent":true},"immobilizedBy":["Bola","Bear Trap","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":2,"Value":"Head"}]},{"name":"Giganotosaurus","breeding":{"gestationTime":0,"incubationTime":179985.609375,"maturationTime":1010100.875,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":43,"eggTempMax":44},"colors":[{"name":"Body","colorIds":[20,23,24,25,26,27,32,33,34,8,13,35,14]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Back, Hands, and Feet","colorIds":[20,23,25,26,32,33,8,14]},{"name":"Belly","colorIds":[20,26,27,33,34,13,35,14]}],"statsRaw":[[80000,0.0005,0.002,-63000,0],[400,0.0005,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],[1,0.05,0.05,-0.8,0],[1,0,0.0031,0,0],[10000,0.06,0,0,0]],"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Quetzal","nonViolent":false,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[79.919998,400]}}],"tamingIneffectiveness":1.25,"affinityNeeded0":5000,"affinityIncreasePL":160,"torporDepletionPS0":120.000008,"foodConsumptionBase":0.002314,"foodConsumptionMult":160.056335,"violent":true},"immobilizedBy":["Large Bear Trap"]},{"name":"Gigantopithecus","breeding":{"gestationTime":23809.521484,"incubationTime":0,"maturationTime":277777.75,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"Fur Mane","colorIds":[21,22,32,33,34,8,13,35,14,37,37,37,37,37,38,39]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Fur Accent","colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":"Skins","colorIds":[21,22,32,33,34,8,13,35,14,37,38,39,39,39,39,39]}],"statsRaw":[[640,0.1,0.27,0.5,0],[300,0.1,0.1,0,0],[150,0.1,0.1,0,0],[1500,0.1,0.1,0,0],[220,0.02,0.04,0,0],[1,0.04,0.1,0.5,0.4],[1,0,0.025,0.06,0],[1100,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Vegetables","Mejoberry","Berries","Stimberry"],"favoriteKibble":"Titanoboa","nonViolent":true,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[79.979996,300]}}],"tamingIneffectiveness":2.5,"affinityNeeded0":4600,"affinityIncreasePL":75,"foodConsumptionBase":0.004156,"foodConsumptionMult":176.03154,"wakeAffinityMult":1.65,"wakeFoodDeplMult":2,"violent":false},"immobilizedBy":["Bola","Chain Bola","Bear Trap","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3.5,"Value":"Head"}]},{"name":"Ichthyornis","breeding":{"gestationTime":0,"incubationTime":5999.520508,"maturationTime":133333.328125,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":29,"eggTempMax":32},"colors":[{"name":"Main Body","colorIds":[22,21,32,33,34,8,13,35,14,36,28]},{"name":"Feet","colorIds":[19,21,23,46,28,30,32,33,8,14]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Facial Highlights","colorIds":[22,24,33,34,13,35,14]}],"statsRaw":[[100,0.2,0.27,0.5,0],[150,0.1,0.1,0,0],[150,0.1,0.1,0,0],[1000,0.1,0.1,0,0.15],[55,0.02,0.04,0,0],[1,0.05,0.1,0.65,0.4],[1,0,0.025,0.365,0],[120,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Raw Prime Fish Meat","Cooked Prime Fish Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Pegomastax","nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":3.125,"affinityNeeded0":1750,"affinityIncreasePL":85,"torporDepletionPS0":0.3,"foodConsumptionBase":0.001543,"foodConsumptionMult":216.029373,"violent":true},"immobilizedBy":["Bola","Bear Trap","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Neck"}]},{"name":"Ichthy","breeding":{"gestationTime":28571.427734,"incubationTime":0,"maturationTime":95238.09375,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"Body","colorIds":[19,20,21,22,23,24,28,29,14]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Back and Fins","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Belly","colorIds":[21,23,28,32,33,8,14,36]}],"statsRaw":[[275,0.05,0.0675,0.3,0],[300,0.2,0.2,0,0],[150,0.1,0.1,0,0],[1000,0.1,0.1,0,0.15],[250,0.02,0.04,0,0],[1,0.05,0.05,1,0.4],[1,0,0.03,0,0],[300,0.06,0,0.5,0]],"doesNotUseOxygen":true,"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Dodo","nonViolent":true,"specialFoodValues":null,"tamingIneffectiveness":2.5,"affinityNeeded0":1500,"affinityIncreasePL":75,"foodConsumptionBase":0.001929,"foodConsumptionMult":420,"wakeAffinityMult":1.6,"wakeFoodDeplMult":2.5,"violent":false}},{"name":"Iguanodon","breeding":{"gestationTime":0,"incubationTime":5142.445801,"maturationTime":166666.65625,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":24,"eggTempMax":28},"colors":[{"name":"MainBody","colorIds":[42,21,22,23,24,25,45,46,32,33,34,8,13,35,14,52]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Stripes","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Highlights and Belly","colorIds":[43,21,23,25,47,32,37,8,14]}],"statsRaw":[[250,0.2,0.27,0.5,0],[200,0.1,0.1,0,0],[150,0.1,0.1,0,0],[1800,0.1,0.1,0,0],[375,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.02,0,0],[210,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Vegetables","Mejoberry","Berries","Stimberry"],"favoriteKibble":"Microraptor","nonViolent":false,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[90,400]}}],"tamingIneffectiveness":0.4,"affinityNeeded0":2800,"affinityIncreasePL":140,"torporDepletionPS0":0.3,"foodConsumptionBase":0.001929,"foodConsumptionMult":864.005554,"violent":true},"immobilizedBy":["Bola","Bear Trap","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":2,"Value":"Head"}]},{"name":"Kairuku","breeding":{"gestationTime":0,"incubationTime":5454.108887,"maturationTime":101010.101563,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":22,"eggTempMax":30},"colors":[{"name":"Back and Markings","colorIds":[20,22,24,27,34,13,35,14]},{"name":"Beak","colorIds":[19,21,23,28,30,32,33,14,36]},{"name":"Feet","colorIds":[20,22,24,26,27,29,31,33,34,13,35,14]},{"name":null,"colorIds":[]},{"name":"Osteoderms","colorIds":[20,22,24,27,29,31,34,14]},{"name":null,"colorIds":[]}],"statsRaw":[[95,0.2,0.27,0.5,0],[200,0.1,0.1,0,0],[150,0.1,0.1,0,0],[900,0.1,0.1,0,0.15],[70,0.02,0.04,0,0],[1,0.05,0.1,1,0.4],[1,0,0.025,2,0],[300,0.06,0,0.5,0]],"doesNotUseOxygen":true,"taming":{"eats":["Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":4.166667,"affinityNeeded0":900,"affinityIncreasePL":45,"torporDepletionPS0":1,"foodConsumptionBase":0.001389,"foodConsumptionMult":1079.913574,"violent":true},"immobilizedBy":["Bola","Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Neck, Head"}]},{"name":"Kaprosuchus","breeding":{"gestationTime":0,"incubationTime":7199.423828,"maturationTime":133333.328125,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":29,"eggTempMax":35},"colors":[{"name":"Body","colorIds":[23,24,26,27,33,34,13,35,14]},{"name":"Top Fins","colorIds":[23,24,26,27,33,34,13,35,14]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Top Scales","colorIds":[23,24,26,27,33,34,13,35,14]},{"name":"Underbelly","colorIds":[23,24,26,27,33,34,13,35,14]}],"statsRaw":[[200,0.2,0.27,0.5,0],[350,0.1,0.1,0,0],[150,0.1,0.1,0,0],[1200,0.1,0.1,0,0],[140,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0.2,0],[200,0.06,0,0.5,0]],"doesNotUseOxygen":true,"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Tapejara","nonViolent":false,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[119.969994,400]}}],"tamingIneffectiveness":2.5,"affinityNeeded0":2000,"affinityIncreasePL":75,"torporDepletionPS0":0.3,"foodConsumptionBase":0.001543,"foodConsumptionMult":648.088135,"violent":true},"immobilizedBy":["Bola","Bear Trap","Large Bear Trap","Plant Species Y"]},{"name":"Lystrosaurus","breeding":{"gestationTime":0,"incubationTime":2999.760254,"maturationTime":55555.554688,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":24,"eggTempMax":28},"colors":[{"name":"Body","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"unknown","colorIds":[20,22,24,26,27,29,31,33,34,13,35,14]},{"name":"unknown","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"unknown","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Underside","colorIds":[20,22,24,26,27,29,31,33,34,13,35,14]},{"name":"Spine and Feet","colorIds":[21,23,25,26,32,33,8,14]}],"statsRaw":[[90,0.2,0.27,0.5,0],[100,0.1,0.1,0,0],[215,0.1,0.1,0,0],[500,0.1,0.1,0,0.15],[90,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,2,0],[100,0.06,0,0.5,0]],"taming":{"eats":["Rare Flower","Vegetables","Mejoberry","Berries","Stimberry"],"nonViolent":true,"specialFoodValues":[{"Key":"Rare Flower","Value":{"d":[34.9995,200]}}],"tamingIneffectiveness":1.333333,"affinityNeeded0":2000,"affinityIncreasePL":22.5,"foodConsumptionBase":0.000868,"foodConsumptionMult":2880.184326,"wakeAffinityMult":1.6,"wakeFoodDeplMult":1.1,"violent":false},"immobilizedBy":["Bola","Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Head, Neck"}]},{"name":"Mammoth","breeding":{"gestationTime":28571.427734,"incubationTime":0,"maturationTime":296296.28125,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"Fur Mane","colorIds":[20,21,22,23,24,28,29,32,33,34,8,13,35,14,36]},{"name":null,"colorIds":[]},{"name":"Tusks and Toes","colorIds":[23,28,32,33,8,14]},{"name":null,"colorIds":[]},{"name":"Fur Accent","colorIds":[20,21,22,23,24,28,29,32,33,34,8,13,35,14,36]},{"name":"unknown","colorIds":[20,21,22,23,24,28,29,32,33,34,8,13,35,14,36]}],"statsRaw":[[850,0.2,0.27,0.5,0],[330,0.1,0.1,0,0],[150,0.1,0.1,0,0],[5000,0.1,0.1,0,0],[500,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,1.226,0],[550,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Vegetables","Mejoberry","Berries","Stimberry"],"favoriteKibble":"Raptor","nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":0.12,"affinityNeeded0":5000,"affinityIncreasePL":250,"torporDepletionPS0":0.3,"foodConsumptionBase":0.004133,"foodConsumptionMult":192.027771,"violent":true},"immobilizedBy":["Chain Bola","Large Bear Trap"]},{"name":"Manta","breeding":{"gestationTime":28571.427734,"incubationTime":0,"maturationTime":133333.328125,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"Body","colorIds":[19,20,21,22,23,24,28,29,14]},{"name":"Spots","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"unknown","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"unknown","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Patterning","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"unknown","colorIds":[21,23,28,32,33,8,14,36]}],"statsRaw":[[320,0.05,0.0675,0.5,0],[270,0.2,0.2,0,0],[150,0.1,0.1,0,0],[1000,0.1,0.1,0,0.15],[200,0.02,0.04,0,0],[1,0.05,0.05,1,0.4],[1,0,0.05,0,0],[700,0.06,0,0.5,0]],"doesNotUseOxygen":true,"taming":{"eats":["AnglerGel"],"nonViolent":true,"specialFoodValues":[{"Key":"AnglerGel","Value":{"d":[24,50]}}],"tamingIneffectiveness":2.5,"affinityNeeded0":1500,"affinityIncreasePL":75,"foodConsumptionBase":0.001929,"foodConsumptionMult":420,"wakeAffinityMult":1.6,"wakeFoodDeplMult":1,"violent":false}},{"name":"Megaloceros","breeding":{"gestationTime":21978.021484,"incubationTime":0,"maturationTime":256410.25,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"Body","colorIds":[21,22,32,33,34,8,13,35,14,37,37,37,37,37,38,39]},{"name":null,"colorIds":[]},{"name":"Antlers","colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":null,"colorIds":[]},{"name":"Patterning","colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":null,"colorIds":[]}],"statsRaw":[[300,0.2,0.27,0.5,0],[280,0.1,0.1,0,0],[150,0.1,0.1,0,0],[1200,0.1,0.1,0,0],[220,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0.2,0],[175,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Vegetables","Mejoberry","Berries","Stimberry"],"favoriteKibble":"Dimorph","nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":0.5,"affinityNeeded0":1200,"affinityIncreasePL":60,"torporDepletionPS0":0.2915,"foodConsumptionBase":0.001543,"foodConsumptionMult":432.058746,"violent":true},"immobilizedBy":["Bola","Bear Trap","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":2.5,"Value":"Neck"}]},{"name":"Megalodon","breeding":{"gestationTime":28571.427734,"incubationTime":0,"maturationTime":333333.3125,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"Body","colorIds":[19,20,21,22,23,24,28,29,14]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Stripes","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Belly","colorIds":[21,23,28,32,33,8,14,36]}],"statsRaw":[[600,0.2,0.27,0.3,0],[320,0.1,0.1,0,0],[150,0.1,0.1,0,0],[2000,0.1,0.1,0,0.15],[250,0.02,0.04,0,0],[1,0.05,0.1,1,0.4],[1,0,0.025,0,0],[800,0.06,0,0.5,0]],"doesNotUseOxygen":true,"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Spino","nonViolent":false,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[79.919998,400]}}],"tamingIneffectiveness":1.875,"affinityNeeded0":2000,"affinityIncreasePL":100,"torporDepletionPS0":0.3,"foodConsumptionBase":0.001852,"foodConsumptionMult":199.983994,"violent":true}},{"name":"Megalosaurus","breeding":{"gestationTime":0,"incubationTime":5999.520508,"maturationTime":333333.3125,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":26,"eggTempMax":32},"colors":[{"name":"Face, Appendages, Sides","colorIds":[42,21,22,23,24,25,46,45,32,33,34,8,13,35,14]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Feathers, Osteoderms, Patterning","colorIds":[42,22,24,46,45,33,34,13,35,14]},{"name":"Belly","colorIds":[47,23,25,47,28,32,33,8,14]}],"statsRaw":[[1025,0.2,0.27,0.5,0],[300,0.1,0.1,0,0],[150,0.1,0.1,0,0],[2000,0.1,0.1,0,0.15],[300,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0,0],[775,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Oviraptor","nonViolent":false,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[135,400]}}],"tamingIneffectiveness":1.875,"affinityNeeded0":3450,"affinityIncreasePL":150,"torporDepletionPS0":0.3,"foodConsumptionBase":0.001852,"foodConsumptionMult":199.983994,"violent":true},"immobilizedBy":["Chain Bola","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Head, Neck"}]},{"name":"Mesopithecus","breeding":{"gestationTime":9523.80957,"incubationTime":0,"maturationTime":111111.109375,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"Body","colorIds":[21,22,32,33,34,8,13,35,14,37,37,37,37,37,38,39]},{"name":null,"colorIds":[]},{"name":"Eye Markings","colorIds":[21,22,32,33,34,8,13,35,14,37,37,37,37,37,38,39,28,28,28,30,30,30]},{"name":null,"colorIds":[]},{"name":"Back, Lower Limbs, and Tail Tip","colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":"Skins","colorIds":[21,22,32,33,34,8,13,35,14,37,38,39,39,39,39,39]}],"statsRaw":[[115,0.2,0.27,0.5,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],[1,0.05,0.1,1,0.4],[1,0,0.025,1.3,0],[60,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Vegetables","Mejoberry","Berries","Stimberry"],"favoriteKibble":"Dodo","nonViolent":true,"specialFoodValues":null,"tamingIneffectiveness":2.5,"affinityNeeded0":2200,"affinityIncreasePL":65,"foodConsumptionBase":0.000868,"foodConsumptionMult":2880.184326,"wakeAffinityMult":1.65,"wakeFoodDeplMult":2,"violent":false},"immobilizedBy":["Bola","Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Head, Neck"}]},{"name":"Microraptor","breeding":{"gestationTime":0,"incubationTime":5142.445801,"maturationTime":196078.421875,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":24,"eggTempMax":28},"colors":[{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,37,37,37,37,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,39,39,39,39,39]}],"statsRaw":[[130,0.2,0.27,0.5,0],[100,0.1,0.1,0,0],[150,0.1,0.1,0,0],[450,0.1,0.1,0,0.15],[45,0.02,0.04,0,0],[1,0.05,0.1,1,0.4],[1,0,0.025,2,0],[75,0.06,0,0.5,0]],"taming":{"eats":["Rare Flower","Rare Mushroom","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"nonViolent":false,"specialFoodValues":[{"Key":"Rare Flower","Value":{"d":[60,3000]}},{"Key":"Rare Mushroom","Value":{"d":[60.000004,200]}},{"Key":"Raw Mutton","Value":{"d":[50,62.5]}},{"Key":"Cooked Lamb Chop","Value":{"d":[49.945,49.5]}},{"Key":"Raw Prime Meat","Value":{"d":[50,25]}},{"Key":"Cooked Prime Meat","Value":{"d":[49.945,18]}},{"Key":"Raw Prime Fish Meat","Value":{"d":[25,10]}},{"Key":"Raw Meat","Value":{"d":[50,10]}},{"Key":"Cooked Prime Fish Meat","Value":{"d":[25.686001,7.2]}},{"Key":"Cooked Meat","Value":{"d":[25,6]}},{"Key":"Raw Fish Meat","Value":{"d":[25,4]}},{"Key":"Cooked Fish Meat","Value":{"d":[12.5,2.4]}}],"tamingIneffectiveness":8.333333,"affinityNeeded0":450,"affinityIncreasePL":22.5,"torporDepletionPS0":0.8,"foodConsumptionBase":0.000868,"foodConsumptionMult":1728.110596,"violent":true},"immobilizedBy":["Bola","Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Head, Neck"}]},{"name":"Mosasaurus","breeding":{"gestationTime":28571.427734,"incubationTime":0,"maturationTime":1010100.875,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"Body","colorIds":[19,20,21,22,23,24,28,29,14]},{"name":"unknown","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Spinal Ridge","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"unknown","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Sides of the Back","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Underside","colorIds":[21,23,28,32,33,8,14,36]}],"statsRaw":[[3600,0.12,0.243,0.3,0],[400,0.1,0.1,0,0],[150,0.1,0.1,0,0],[8000,0.1,0.1,0,0.15],[1300,0.02,0.04,0,0],[1,0.05,0.1,0.9,0.4],[1,0,0.025,0,0],[3000,0.06,0,0.5,0]],"doesNotUseOxygen":true,"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Quetzal","nonViolent":false,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[79.919998,550]}}],"tamingIneffectiveness":0.06,"affinityNeeded0":11000,"affinityIncreasePL":600,"torporDepletionPS0":12.8,"foodConsumptionBase":0.005,"foodConsumptionMult":180.001144,"violent":true}},{"name":"Moschops","breeding":{"gestationTime":0,"incubationTime":9472.926758,"maturationTime":175438.59375,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":16,"eggTempMax":20},"colors":[{"name":"unknown","colorIds":[22,24,42,33,35,14]},{"name":"unknown","colorIds":[22,24,34,33,13,14]},{"name":"unknown","colorIds":[20,22,24,33,34,13,35,14]},{"name":"unknown","colorIds":[20,22,24,33,34,13,35,14]},{"name":"unknown","colorIds":[20,22,24,33,34,13,35,14]},{"name":"unknown","colorIds":[21,24,42,33,8,14]}],"statsRaw":[[375,0.2,0.27,0.5,0],[300,0.1,0.1,0,0],[150,0.1,0.1,0,0],[300,0.1,0.1,0,0.15],[200,0.02,0.04,0,0],[1,0.05,0.1,1,0.4],[1,0,0.025,0.2,0],[300,0.06,0,0.5,0]],"taming":{"eats":["Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Raw Prime Fish Meat","Cooked Prime Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Vegetables","Raw Fish Meat","Cooked Fish Meat","Berries","Mejoberry"],"nonViolent":true,"specialFoodValues":[{"Key":"Raw Mutton","Value":{"d":[50,500]}},{"Key":"Raw Prime Meat","Value":{"d":[50,200]}},{"Key":"Raw Prime Fish Meat","Value":{"d":[25,80]}},{"Key":"Vegetables","Value":{"d":[20,20]}},{"Key":"Berries","Value":{"d":[20,1.5]}},{"Key":"Mejoberry","Value":{"d":[30,1.5]}}],"tamingIneffectiveness":0.2,"affinityNeeded0":6000,"affinityIncreasePL":150,"torporDepletionPS0":3,"foodConsumptionBase":0.001736,"foodConsumptionMult":176.03154,"wakeAffinityMult":2.5,"wakeFoodDeplMult":1.2,"violent":true},"immobilizedBy":["Bola","Large Bear Trap","Plant Species Y"]},{"name":"Onyc","colors":[{"name":"Main Body","colorIds":[20,22,24,33,34,13,35,14]},{"name":"Claws","colorIds":[20,22,24,33,34,13,35,14]},{"name":"Membrane Shading","colorIds":[21,23,28,32,33,8,14]},{"name":null,"colorIds":[]},{"name":"Abdomen and Legs","colorIds":[21,23,28,32,33,8,14]},{"name":"Wing Membrane","colorIds":[21,23,28,32,33,8,14]}],"statsRaw":[[250,0.2,0.27,0.5,0],[100,0.1,0.1,0,0],[150,0.1,0.1,0,0],[1500,0.1,0.1,0,0],[50,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0,0],[200,0.06,0,0.5,0]],"taming":{"eats":["Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"nonViolent":true,"specialFoodValues":null,"tamingIneffectiveness":2.5,"affinityNeeded0":3000,"affinityIncreasePL":90,"foodConsumptionBase":0.002893,"foodConsumptionMult":192.034409,"wakeAffinityMult":1,"wakeFoodDeplMult":2,"violent":false}},{"name":"Oviraptor","breeding":{"gestationTime":0,"incubationTime":4090.581787,"maturationTime":75757.570313,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":26,"eggTempMax":30},"colors":[{"name":"Body","colorIds":[20,21,22,23,24,25,26,27,32,33,34,8,13,35,14]},{"name":"Crest and Beak","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,8,13,35,14,36]},{"name":"Feathers","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,8,13,35,14]},{"name":null,"colorIds":[]},{"name":"Patterning","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Belly","colorIds":[21,23,25,26,28,32,33,8,14]}],"statsRaw":[[140,0.2,0.27,0.5,0],[120,0.1,0.1,0,0],[150,0.1,0.1,0,0],[900,0.1,0.1,0,0.15],[100,0.02,0.04,0,0],[1,0.05,0.1,1,0.4],[1,0,0.025,1,0.15],[125,0.06,0,0.5,0]],"taming":{"eats":["Giganotosaurus Egg","Quetzal Egg","Rex Egg","Spino Egg","Bronto Egg","Carno Egg","Archaeopteryx Egg","Ankylo Egg","Oviraptor Egg","Baryonyx Egg","Pachyrhino Egg","Allosaurus Egg","Dimetrodon Egg","Dinosaur Egg"],"nonViolent":false,"specialFoodValues":[{"Key":"Giganotosaurus Egg","Value":{"d":[300,1200]}},{"Key":"Quetzal Egg","Value":{"d":[200,550]}},{"Key":"Rex Egg","Value":{"d":[200,100]}},{"Key":"Spino Egg","Value":{"d":[137.5,80]}},{"Key":"Bronto Egg","Value":{"d":[250,60]}},{"Key":"Carno Egg","Value":{"d":[137.5,30]}},{"Key":"Archaeopteryx Egg","Value":{"d":[20,9]}},{"Key":"Ankylo Egg","Value":{"d":[25,9]}},{"Key":"Oviraptor Egg","Value":{"d":[30,9]}},{"Key":"Baryonyx Egg","Value":{"d":[35,9]}},{"Key":"Pachyrhino Egg","Value":{"d":[45,9]}},{"Key":"Allosaurus Egg","Value":{"d":[55,9]}},{"Key":"Dimetrodon Egg","Value":{"d":[80,9]}},{"Key":"Dinosaur Egg","Value":{"d":[100,9]}}],"tamingIneffectiveness":16.666668,"affinityNeeded0":960,"affinityIncreasePL":42,"torporDepletionPS0":0.208,"foodConsumptionBase":0.001302,"foodConsumptionMult":768.049133,"violent":true},"immobilizedBy":["Bola","Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Head, Neck"}]},{"name":"Ovis","breeding":{"gestationTime":15037.592773,"incubationTime":0,"maturationTime":175438.59375,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,37,37,37,37,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,39,39,39,39,39]}],"statsRaw":[[100,0.2,0.27,0.5,0],[100,0.1,0.1,0,0],[150,0.1,0.1,0,0],[1200,0.1,0.1,0,0.15],[90,0.02,0.04,0,0],[1,0.05,0.1,1,0.4],[1,0,0.025,0,0],[85,0.06,0,0.5,0]],"taming":{"eats":["Sweet Vegetable Cake"],"nonViolent":true,"specialFoodValues":[{"Key":"Sweet Vegetable Cake","Value":{"d":[20,200000]}}],"tamingIneffectiveness":3.125,"affinityNeeded0":1200,"affinityIncreasePL":60,"foodConsumptionBase":0.003156,"foodConsumptionMult":1584.283936,"wakeAffinityMult":1.6,"wakeFoodDeplMult":2,"violent":false},"immobilizedBy":["Bola","Bear Trap","Plant Species Y"]},{"name":"Pachy","breeding":{"gestationTime":0,"incubationTime":5142.445801,"maturationTime":95238.09375,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":24,"eggTempMax":28},"colors":[{"name":"Body","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Spikes and Claws","colorIds":[20,21,22,23,24,25,26,27,32,33,34,8,13,35,14]},{"name":"Beak and Plates","colorIds":[19,21,23,25,26,28,30]},{"name":"Body Accent","colorIds":[21,23,25,26,28,32,33,8,14]}],"statsRaw":[[175,0.2,0.27,0.5,0],[150,0.1,0.1,0,0],[150,0.1,0.1,0,0],[1200,0.1,0.1,0,0],[150,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0.2,0],[160,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Vegetables","Mejoberry","Berries","Stimberry"],"favoriteKibble":"Dilo","nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":0.5,"affinityNeeded0":1200,"affinityIncreasePL":60,"torporDepletionPS0":0.2666,"foodConsumptionBase":0.001543,"foodConsumptionMult":648.088135,"violent":true},"immobilizedBy":["Bola","Bear Trap","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":0.125,"Value":"Head, Neck"}]},{"name":"Pachyrhinosaurus","breeding":{"gestationTime":0,"incubationTime":8999.280273,"maturationTime":166666.65625,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":22,"eggTempMax":28},"colors":[{"name":"unknown","colorIds":[42,22,24,46,45,33,34,13,35,14]},{"name":null,"colorIds":[]},{"name":"unknown","colorIds":[20,22,24,46,45,33,34,13,35,14]},{"name":null,"colorIds":[]},{"name":"unknown","colorIds":[20,22,24,46,45,29,31,33,34,13,35,14]},{"name":"unknown","colorIds":[21,23,25,47,32,33,8,14]}],"statsRaw":[[375,0.2,0.27,0.5,0],[150,0.1,0.1,0,0],[150,0.1,0.1,0,0],[3000,0.1,0.1,0,0],[365,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0,0],[250,0.06,0,0.5,0]],"taming":{"eats":["Bug Repellant","Vegetables","Mejoberry","Berries","Stimberry"],"nonViolent":false,"specialFoodValues":[{"Key":"Bug Repellant","Value":{"d":[25,200]}}],"tamingIneffectiveness":0.2,"affinityNeeded0":4500,"affinityIncreasePL":175,"torporDepletionPS0":3.5,"foodConsumptionBase":0.003156,"foodConsumptionMult":352.06308,"violent":true},"immobilizedBy":["Chain Bola","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":0.15,"Value":"Head"}]},{"name":"Paracer","breeding":{"gestationTime":28571.427734,"incubationTime":0,"maturationTime":333333.3125,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"Body","colorIds":[21,22,32,33,34,8,13,35,14,37,37,37,37,37,38,39]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Back","colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":"Underside","colorIds":[21,22,32,33,34,8,13,35,14,37,38,39,39,39,39,39]}],"statsRaw":[[1140,0.2,0.27,0.5,0],[300,0.1,0.1,0,0],[150,0.1,0.1,0,0],[6500,0.1,0.1,0,0],[850,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0,0],[1300,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Vegetables","Mejoberry","Berries","Stimberry"],"favoriteKibble":"Pachy","nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":0.0923,"affinityNeeded0":6500,"affinityIncreasePL":325,"torporDepletionPS0":0.9025,"foodConsumptionBase":0.0035,"foodConsumptionMult":327.6474,"violent":true},"immobilizedBy":["Chain Bola","Large Bear Trap"]},{"name":"Parasaur","breeding":{"gestationTime":0,"incubationTime":5142.445801,"maturationTime":95238.09375,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":24,"eggTempMax":28},"colors":[{"name":"Body","colorIds":[19,20,21,22,23,24,25,26,27,32,33,34,8,13,35,14]},{"name":"Beak and Frill","colorIds":[20,22,24,26,27,33,34,13,35,14,36]},{"name":"Frill Edge","colorIds":[19,21,23,25,26,32,33,8,14]},{"name":"Crest","colorIds":[20,21,22,23,24,25,26,27,32,33,34,8,13,35,14,36]},{"name":"Patterning","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Belly","colorIds":[19,21,23,25,26,32,33,8,14]}],"statsRaw":[[200,0.2,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],[280,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0.67,0],[150,0.06,0,0.5,0]],"taming":{"eats":["Vegetables","Mejoberry","Berries","Stimberry"],"nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":0.4,"affinityNeeded0":1500,"affinityIncreasePL":75,"torporDepletionPS0":0.3,"foodConsumptionBase":0.001929,"foodConsumptionMult":864.005554,"violent":true},"immobilizedBy":["Bola","Bear Trap","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":2,"Value":"Head"}]},{"name":"Pegomastax","breeding":{"gestationTime":0,"incubationTime":4090.581787,"maturationTime":111111.109375,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":28,"eggTempMax":32},"colors":[{"name":"Body Main","colorIds":[34,20,21,22,23,24,28,14,13,33]},{"name":"Quills","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Beak","colorIds":[21,23,33,47,43,28,50]},{"name":null,"colorIds":[]},{"name":"Back Fur","colorIds":[37,39,33,34,13,35,14]},{"name":"Limb Highlights","colorIds":[21,23,28,32,33,8,14,36]}],"statsRaw":[[200,0.2,0.27,0.5,0],[100,0.1,0.1,0,0],[150,0.1,0.1,0,0],[450,0.1,0.1,0,0.15],[55,0.02,0.04,0,0],[1,0.05,0.1,1,0.4],[1,0,0.025,0.5,0],[30,0.06,0,0.5,0]],"taming":{"eats":["Vegetables","Mejoberry","Berries","Stimberry"],"nonViolent":true,"specialFoodValues":null,"tamingIneffectiveness":1.333333,"affinityNeeded0":1900,"affinityIncreasePL":35,"foodConsumptionBase":0.000868,"foodConsumptionMult":2880.184326,"wakeAffinityMult":1.6,"wakeFoodDeplMult":2,"violent":false},"immobilizedBy":["Bola","Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Head, Neck"}]},{"name":"Pelagornis","breeding":{"gestationTime":0,"incubationTime":5999.520508,"maturationTime":133333.328125,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":29,"eggTempMax":32},"colors":[{"name":"Feathers","colorIds":[19,20,21,22,23,24,25,26,27,32,33,34,8,13,35,14,36]},{"name":"unknown","colorIds":[19,21,23,25,26,28,30,32,33,8,14]},{"name":null,"colorIds":[]},{"name":"unknown","colorIds":[19,21,23,25,26,28,30,32,33,8,14]},{"name":null,"colorIds":[]},{"name":"Skin and Wind/Tail Tips","colorIds":[20,22,24,26,27,33,34,13,35,14]}],"statsRaw":[[240,0.2,0.27,0.5,0],[180,0.05,0.04,0,0],[150,0.1,0.1,0,0],[1200,0.1,0.1,0,0.15],[150,0.02,0.03,0,0],[1,0.05,0.075,0.65,0.4],[1,0,0,0.365,0],[120,0.06,0,0.5,0]],"NoImprintingForSpeed":true,"taming":{"eats":["Kibble","Raw Prime Fish Meat","Cooked Prime Fish Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Pegomastax","nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":3.125,"affinityNeeded0":1200,"affinityIncreasePL":60,"torporDepletionPS0":0.3,"foodConsumptionBase":0.001543,"foodConsumptionMult":216.029373,"violent":true},"immobilizedBy":["Bola","Bear Trap","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Neck"}]},{"name":"Phiomia","breeding":{"gestationTime":35714.285156,"incubationTime":0,"maturationTime":416666.65625,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"Body","colorIds":[23,24,32,33,34,8,13,35,14]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Spots 1","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,8,13,35,14,36]},{"name":"Spots 2","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,8,13,35,14,36]}],"statsRaw":[[300,0.2,0.27,0.5,0],[300,0.1,0.1,0,0],[150,0.1,0.1,0,0],[3000,0.1,0.1,0,0.15],[200,0.02,0.04,0,0],[1,0.05,0.1,1,0.4],[1,0,0.025,0.35,0],[240,0.06,0,0.5,0]],"taming":{"eats":["Vegetables","Mejoberry","Berries","Stimberry"],"nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":0.2,"affinityNeeded0":3000,"affinityIncreasePL":150,"torporDepletionPS0":0.3,"foodConsumptionBase":0.003156,"foodConsumptionMult":1584.283936,"violent":true},"immobilizedBy":["Bola","Bear Trap","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Head"}]},{"name":"Plesiosaur","breeding":{"gestationTime":28571.427734,"incubationTime":0,"maturationTime":666666.625,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"Body","colorIds":[19,20,21,22,23,24,28,29,14]},{"name":"Facial Fins","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"unknown","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":null,"colorIds":[]},{"name":"Back","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Belly","colorIds":[21,23,28,32,33,8,14,36]}],"statsRaw":[[2400,0.12,0.162,0.15,0],[200,0.1,0.1,0,0],[150,0.1,0.1,0,0],[5000,0.1,0.1,0,0.15],[800,0.02,0.04,0,0],[1,0.05,0.1,1,0.4],[1,0,0.025,0,0],[1600,0.06,0,0.5,0]],"doesNotUseOxygen":true,"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Rex","nonViolent":false,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[79.919998,400]}}],"tamingIneffectiveness":0.75,"affinityNeeded0":5000,"affinityIncreasePL":250,"torporDepletionPS0":2.133333,"foodConsumptionBase":0.003858,"foodConsumptionMult":180.001144,"violent":true}},{"name":"Procoptodon","breeding":{"gestationTime":14285.713867,"incubationTime":0,"maturationTime":166666.65625,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"Body","colorIds":[21,22,32,33,34,8,13,35,14,37,37,37,37,37,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":"Back Stripes","colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":"Inner Ear, Snout, Belly, Appendages","colorIds":[21,22,32,33,34,8,13,35,14,37,38,39,39,39,39,39]}],"statsRaw":[[400,0.2,0.27,0.75,0],[350,0.1,0.1,0.1,0],[150,0.1,0.1,0,0],[1500,0.1,0.1,0,0],[450,0.02,0.04,0,0],[1,0.05,0.1,0.2,0.25],[1,0,0.02,0,0],[350,0.06,0,0.5,0]],"taming":{"eats":["Rare Mushroom","Plant Species X Seed"],"nonViolent":false,"specialFoodValues":[{"Key":"Rare Mushroom","Value":{"d":[75,90]}},{"Key":"Plant Species X Seed","Value":{"d":[50,45]}}],"tamingIneffectiveness":0.2,"affinityNeeded0":3000,"affinityIncreasePL":150,"torporDepletionPS0":0.6666,"foodConsumptionBase":0.001929,"foodConsumptionMult":648.00415,"violent":true},"immobilizedBy":["Bola","Large Bear Trap","Plant Species Y"]},{"name":"Pteranodon","breeding":{"gestationTime":0,"incubationTime":5999.520508,"maturationTime":133333.328125,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":29,"eggTempMax":32},"colors":[{"name":"Patterning","colorIds":[19,20,21,22,23,24,25,26,27,32,33,34,8,13,35,14,36]},{"name":"Wing Base","colorIds":[19,21,23,25,26,28,30,32,33,8,14]},{"name":"Face, Crest, and Hands","colorIds":[20,22,24,26,27,29,31,33,34,13,35,14]},{"name":"Inner Crest","colorIds":[19,21,23,25,26,28,30,32,33,8,14]},{"name":"Wing Membrane","colorIds":[19,21,23,25,26,28,30,32,33,8,14]},{"name":"Body","colorIds":[20,22,24,26,27,33,34,13,35,14]}],"statsRaw":[[210,0.2,0.15,0.5,0],[150,0.05,0.04,0,0],[150,0.1,0.1,0,0],[1200,0.1,0.1,0,0.15],[120,0.02,0.03,0,0],[1,0.05,0.075,0.65,0.4],[1,0,0,0.35,0],[120,0.06,0,0.5,0]],"TamedBaseHealthMultiplier":0.9,"NoImprintingForSpeed":true,"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Dodo","nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":3.125,"affinityNeeded0":1200,"affinityIncreasePL":60,"torporDepletionPS0":0.3,"foodConsumptionBase":0.001543,"foodConsumptionMult":216.029373,"violent":true},"immobilizedBy":["Bola","Chain Bola","Bear Trap","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Head"}]},{"name":"Pulmonoscorpius","colors":[{"name":"Plate Edges","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,8,13,35,14,36]},{"name":"Claw Stripes, Barb Patterning, Body Joints","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,8,13,35,14,36]},{"name":"Limb Joints","colorIds":[19,21,23,25,26,28,30,32,33,8,14]},{"name":"Body","colorIds":[19,21,23,25,26,28,30,32,33,8,14]},{"name":"Plates","colorIds":[20,22,24,26,27,29,31,33,34,13,35,14]},{"name":"Legs","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,8,13,35,14,36]}],"statsRaw":[[280,0.2,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],[200,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,1,0],[150,0.06,0,0.5,0]],"taming":{"eats":["Spoiled Meat","Raw Meat","Raw Fish Meat"],"nonViolent":false,"specialFoodValues":[{"Key":"Raw Meat","Value":{"d":[15,15]}},{"Key":"Raw Fish Meat","Value":{"d":[7.5,6]}}],"tamingIneffectiveness":2.5,"affinityNeeded0":1500,"affinityIncreasePL":75,"torporDepletionPS0":0.3,"foodConsumptionBase":0.001929,"foodConsumptionMult":432.002777,"violent":true},"immobilizedBy":["Bola","Bear Trap","Plant Species Y"]},{"name":"Purlovia","breeding":{"gestationTime":15037.592773,"incubationTime":0,"maturationTime":175438.59375,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"Main Body","colorIds":[20,22,39,37,33,34,13,35,14]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Belly","colorIds":[20,33,34,13,35]},{"name":"Highlights","colorIds":[21,38,32,33,8,14]}],"statsRaw":[[275,0.2,0.27,0.5,0],[300,0.1,0.1,0,0],[150,0.1,0.1,0,0],[4000,0.1,0.1,0,0],[400,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0,0],[500,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Moschops","nonViolent":false,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[53.279999,400]}}],"tamingIneffectiveness":3.125,"affinityNeeded0":2250,"affinityIncreasePL":100,"torporDepletionPS0":0.3,"foodConsumptionBase":0.001543,"foodConsumptionMult":288.039185,"violent":true},"immobilizedBy":["Chain Bola","Large Bear Trap","Plant Species Y"]},{"name":"Quetzal","breeding":{"gestationTime":0,"incubationTime":59995.199219,"maturationTime":666666.625,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":5,"eggTempMax":6},"colors":[{"name":"Wing Membrane","colorIds":[19,20,21,22,23,24,25,26,27,32,33,34,8,13,35,14]},{"name":"Crest","colorIds":[19,21,23,25,26,28,30,32,33,8,14]},{"name":"Skins","colorIds":[20,22,24,26,27,29,31,33,34,13,35,14]},{"name":"Freckles","colorIds":[19,21,23,25,26,28,30,32,33,8,14]},{"name":"Beak","colorIds":[21,22,32,33,34,8,13,35,14]},{"name":"Body Feathers","colorIds":[20,22,24,26,27,33,34,13,35,14]}],"statsRaw":[[1200,0.2,0.108,0.5,0],[800,0.05,0.05,0,0],[150,0.1,0.1,0,0],[1200,0.1,0.1,0,0.15],[800,0.02,0.05,0,0],[1,0.04,0.1,0.4,0.4],[1,0,0,0.365,0],[1850,0.06,0,0.5,0]],"TamedBaseHealthMultiplier":0.85,"NoImprintingForSpeed":true,"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Rex","nonViolent":false,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[79.919998,400]}}],"tamingIneffectiveness":0.9375,"affinityNeeded0":6850,"affinityIncreasePL":300,"torporDepletionPS0":3.4,"foodConsumptionBase":0.0035,"foodConsumptionMult":140,"violent":true},"immobilizedBy":["Chain Bola","Bear Trap","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Head"}]},{"name":"Raptor","breeding":{"gestationTime":0,"incubationTime":7199.423828,"maturationTime":133333.328125,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":20,"eggTempMax":28},"colors":[{"name":"Body Accent","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Feather Tips","colorIds":[19,21,23,25,26,28,30]},{"name":null,"colorIds":[]},{"name":"Body","colorIds":[20,21,22,23,24,25,26,27,32,33,34,8,13,35,14]},{"name":"Feathers","colorIds":[19,21,23,25,26,28,30]},{"name":"Belly","colorIds":[21,23,25,26,28,32,33,8,14]}],"statsRaw":[[200,0.2,0.27,0.5,0],[150,0.1,0.1,0,0],[150,0.1,0.1,0,0],[1200,0.1,0.1,0,0],[140,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0.2,0],[180,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Parasaur","nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":3.125,"affinityNeeded0":1200,"affinityIncreasePL":60,"torporDepletionPS0":0.3,"foodConsumptionBase":0.001543,"foodConsumptionMult":648.088135,"violent":true},"immobilizedBy":["Bola","Bear Trap","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Head, Neck"}]},{"name":"Rex","breeding":{"gestationTime":0,"incubationTime":17998.560547,"maturationTime":333333.3125,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":32,"eggTempMax":34},"colors":[{"name":"Body","colorIds":[20,22,24,27,33,34,13,35,14,36]},{"name":"Spine","colorIds":[20,22,24,27,33,34,13,35,14,36]},{"name":null,"colorIds":[]},{"name":"Back","colorIds":[20,22,24,27,33,34,13,35,14,36]},{"name":null,"colorIds":[]},{"name":"Belly","colorIds":[20,22,24,27,33,34,13,35,14,36]}],"statsRaw":[[1100,0.2,0.27,0.5,0],[420,0.1,0.1,0,0],[150,0.1,0.1,0,0],[3000,0.1,0.1,0,0],[500,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0,0],[1550,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Pulmonoscorpius","nonViolent":false,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[79.919998,400]}}],"tamingIneffectiveness":1.25,"affinityNeeded0":3450,"affinityIncreasePL":150,"torporDepletionPS0":0.725,"foodConsumptionBase":0.002314,"foodConsumptionMult":180.063385,"violent":true},"immobilizedBy":["Chain Bola","Large Bear Trap"]},{"name":"Sabertooth","breeding":{"gestationTime":15037.592773,"incubationTime":0,"maturationTime":175438.59375,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"Body","colorIds":[22,24,33,34,13,35,14]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Mane and Face","colorIds":[21,23,32,33,8,14]},{"name":"Stripes","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,8,13,35,14,36]}],"statsRaw":[[250,0.2,0.27,0.5,0],[200,0.1,0.1,0,0],[150,0.1,0.1,0,0],[1200,0.1,0.1,0,0.15],[200,0.02,0.04,0,0],[1,0.05,0.1,0.4,0.35],[1,0,0.025,0.3,0],[500,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Brontosaurus","nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":3.125,"affinityNeeded0":1200,"affinityIncreasePL":60,"torporDepletionPS0":0.3,"foodConsumptionBase":0.001543,"foodConsumptionMult":288.039185,"violent":true},"immobilizedBy":["Bola","Bear Trap","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Head"}]},{"name":"Sarco","breeding":{"gestationTime":0,"incubationTime":8999.280273,"maturationTime":166666.65625,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":30,"eggTempMax":34},"colors":[{"name":"Body","colorIds":[23,24,26,27,33,34,13,35,14]},{"name":null,"colorIds":[]},{"name":"Stripe, Face, and Tail","colorIds":[23,24,26,27,33,34,13,35,14]},{"name":"Snout and Tail Tip","colorIds":[23,24,26,27,33,34,13,35,14]},{"name":"Plates","colorIds":[23,24,26,27,33,34,13,35,14]},{"name":"Body Accent","colorIds":[23,24,26,27,33,34,13,35,14]}],"statsRaw":[[400,0.2,0.27,0.65,0],[450,0.1,0.1,0,0],[150,0.1,0.1,0,0],[1500,0.1,0.1,0,0],[300,0.02,0.04,0,0],[1,0.05,0.1,0.8,0.5],[1,0,0.025,0.6,0],[400,0.06,0,0.5,0]],"doesNotUseOxygen":true,"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Triceratops","nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":2.5,"affinityNeeded0":2000,"affinityIncreasePL":75,"torporDepletionPS0":0.3,"foodConsumptionBase":0.001578,"foodConsumptionMult":211.237854,"violent":true},"immobilizedBy":["Chain Bola","Large Bear Trap","Plant Species Y"]},{"name":"Spinosaur","breeding":{"gestationTime":0,"incubationTime":13845.046875,"maturationTime":256410.25,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":30,"eggTempMax":32},"colors":[{"name":"Body","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Sail Edge","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,14,36]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Face, Tail, Inner Sail, and Frill","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,14,36]},{"name":"Belly","colorIds":[21,23,25,26,28,32,33,8,14]}],"statsRaw":[[700,0.2,0.27,0.5,0],[350,0.1,0.1,0,0],[650,0.1,0.1,0,0],[2600,0.1,0.1,0,0],[350,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0,0],[850,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Argentavis","nonViolent":false,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[79.919998,400]}}],"tamingIneffectiveness":1.5,"affinityNeeded0":3200,"affinityIncreasePL":150,"torporDepletionPS0":2.133333,"foodConsumptionBase":0.002066,"foodConsumptionMult":150,"violent":true},"immobilizedBy":["Chain Bola","Large Bear Trap"]},{"name":"Stegosaurus","breeding":{"gestationTime":0,"incubationTime":9999.200195,"maturationTime":185185.171875,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":22,"eggTempMax":28},"colors":[{"name":"Body","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Spine","colorIds":[20,22,24,26,27,29,31,33,34,13,35,14]},{"name":"Plate Base and Spike Base","colorIds":[20,22,24,26,27,29,31,33,34,13,35,14]},{"name":"Back","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Plate Edge and Spike Tips","colorIds":[19,21,23,25,26,28,30,32,33,8,14]},{"name":"Belly","colorIds":[21,23,25,26,32,33,8,14]}],"statsRaw":[[650,0.2,0.27,0.5,0],[300,0.1,0.1,0,0],[150,0.1,0.1,0,0],[6000,0.1,0.1,0,0],[500,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0.964,0],[500,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Vegetables","Mejoberry","Berries","Stimberry"],"favoriteKibble":"Sarco","nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":0.1,"affinityNeeded0":6000,"affinityIncreasePL":300,"torporDepletionPS0":0.3,"foodConsumptionBase":0.005341,"foodConsumptionMult":208.034286,"violent":true},"immobilizedBy":["Chain Bola","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":1.67,"Value":"Head, Neck"}]},{"name":"Tapejara","breeding":{"gestationTime":0,"incubationTime":5999.520508,"maturationTime":196078.421875,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":29,"eggTempMax":32},"colors":[{"name":"Body","colorIds":[19,20,21,22,23,24,25,26,27,32,33,34,8,13,35,14,36]},{"name":"Wing and Sail Markings","colorIds":[19,21,23,25,26,28,30,32,33,8,14]},{"name":"unknown","colorIds":[20,22,24,26,27,29,31,33,34,13,35,14]},{"name":"Wings and Sail","colorIds":[19,21,23,25,26,28,30,32,33,8,14]},{"name":"Back, Beak and Sail Spines","colorIds":[19,21,23,25,26,28,30,32,33,8,14]},{"name":"Sail and Throat","colorIds":[20,22,24,26,27,33,34,13,35,14]}],"statsRaw":[[325,0.2,0.27,0.5,0],[250,0.05,0.06,0,0],[150,0.1,0.1,0,0],[1600,0.1,0.1,0,0.15],[280,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0,0.365,0],[450,0.06,0,0.5,0]],"NoImprintingForSpeed":true,"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Allosaurus","nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":3.125,"affinityNeeded0":2200,"affinityIncreasePL":100,"torporDepletionPS0":0.3,"foodConsumptionBase":0.001543,"foodConsumptionMult":216.029373,"violent":true},"immobilizedBy":["Bola","Chain Bola","Bear Trap","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Head"}]},{"name":"Terror Bird","breeding":{"gestationTime":0,"incubationTime":7199.423828,"maturationTime":166666.65625,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":20,"eggTempMax":28},"colors":[{"name":"Feathers","colorIds":[21,22,32,33,34,8,13,35,14,37,37,37,37,37,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":"Belly/Wings Accent","colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":"Beak, Skin, Legs","colorIds":[21,22,32,33,34,8,13,35,14,37,38,39,39,39,39,39]}],"statsRaw":[[270,0.2,0.27,0.5,0],[160,0.1,0.1,0,0],[150,0.1,0.1,0,0],[1500,0.1,0.1,0,0],[120,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0.2,0],[300,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Gallimimus","nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":2.5,"affinityNeeded0":1600,"affinityIncreasePL":85,"torporDepletionPS0":2.25,"foodConsumptionBase":0.001578,"foodConsumptionMult":352.06308,"violent":true},"immobilizedBy":["Bola","Bear Trap","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Head, Neck"}]},{"name":"Therizinosaurus","breeding":{"gestationTime":0,"incubationTime":5999.520508,"maturationTime":416666.65625,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":26,"eggTempMax":32},"colors":[{"name":"Feathers Main","colorIds":[20,22,24,56,52,33,34,13,35,14,36]},{"name":null,"colorIds":[]},{"name":"Body Highlights","colorIds":[48,23,24,25,32,8,36,50]},{"name":null,"colorIds":[]},{"name":"Feather Highlights","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Body Main","colorIds":[21,23,47,35,52,32,33,8,14]}],"statsRaw":[[870,0.2,0.27,0.5,0],[300,0.1,0.1,0,0],[150,0.1,0.1,0,0],[3000,0.1,0.1,0,0],[365,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0,0],[925,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Vegetables","Mejoberry","Berries","Stimberry"],"favoriteKibble":"Megalosaurus","nonViolent":false,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[119.969994,400]}}],"tamingIneffectiveness":0.06,"affinityNeeded0":6800,"affinityIncreasePL":160,"torporDepletionPS0":2.833333,"foodConsumptionBase":0.002314,"foodConsumptionMult":180.063385,"violent":true},"immobilizedBy":["Chain Bola","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Head, Neck"}]},{"name":"Thylacoleo","breeding":{"gestationTime":15037.592773,"incubationTime":0,"maturationTime":175438.59375,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"Main Body","colorIds":[20,22,33,34,13,14,43,8,42,9,10]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Fur Highlights","colorIds":[20,33,34,13,35,22,56,21,43,42,44]},{"name":"Stripes and Belly","colorIds":[21,38,32,33,8,14]}],"statsRaw":[[700,0.2,0.27,0.5,0],[400,0.1,0.1,0,0],[200,0.1,0.1,0,0],[1500,0.1,0.1,0,0.15],[400,0.02,0.04,0,0],[1,0.05,0.1,0.4,0.35],[1,0,0.025,0.3,0],[700,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Cooked Lamb Chop","Raw Mutton","Cooked Prime Meat","Cooked Meat","Raw Prime Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Fish Meat","Raw Prime Fish Meat","Raw Fish Meat"],"favoriteKibble":"Titanoboa","nonViolent":false,"specialFoodValues":[{"Key":"Cooked Lamb Chop","Value":{"d":[49.945,96.25]}},{"Key":"Raw Mutton","Value":{"d":[50,50]}},{"Key":"Cooked Prime Meat","Value":{"d":[49.945,35]}},{"Key":"Cooked Meat","Value":{"d":[25,20]}},{"Key":"Raw Prime Meat","Value":{"d":[50,20]}},{"Key":"Raw Meat","Value":{"d":[50,10]}},{"Key":"Cooked Prime Fish Meat","Value":{"d":[25.686001,7.2]}},{"Key":"Cooked Fish Meat","Value":{"d":[12.5,4]}},{"Key":"Raw Prime Fish Meat","Value":{"d":[25,4]}},{"Key":"Raw Fish Meat","Value":{"d":[25,2]}}],"tamingIneffectiveness":3.125,"affinityNeeded0":2250,"affinityIncreasePL":60,"torporDepletionPS0":1.85,"foodConsumptionBase":0.001543,"foodConsumptionMult":288.039185,"violent":true},"immobilizedBy":["Chain Bola","Bear Trap","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":1.5,"Value":"Head"}]},{"name":"Titanosaur","colors":[{"name":"Body","colorIds":[21,23,25,26,32,33,8,14]},{"name":"unknown","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"unknown","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"unknown","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Back","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Underside","colorIds":[21,23,25,26,32,33,8,14]}],"statsRaw":[[230000,0,0,-80000,0],[2000,0,0,0,0],[600,0,0,0,0],[8640,0,0,0,0],[50000,0,0,0,0],[1,0,0,0,0],[1,0,0,0,0],[25000,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Vegetables","Mejoberry","Berries","Stimberry"],"favoriteKibble":"Carbonemys","nonViolent":false,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[53.279999,400]}}],"tamingIneffectiveness":0.06,"affinityNeeded0":10000,"affinityIncreasePL":500,"foodConsumptionBase":0.1,"foodConsumptionMult":13,"violent":true}},{"name":"Triceratops","breeding":{"gestationTime":0,"incubationTime":8999.280273,"maturationTime":166666.65625,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":22,"eggTempMax":28},"colors":[{"name":"Body","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Face and Feet","colorIds":[20,22,24,26,27,29,31,33,34,13,35,14]},{"name":null,"colorIds":[]},{"name":"Patterning","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Frill","colorIds":[20,22,24,26,27,29,31,33,34,13,35,14]},{"name":"Body Accent","colorIds":[21,23,25,26,32,33,8,14]}],"statsRaw":[[375,0.2,0.27,0.5,0],[150,0.1,0.1,0,0],[150,0.1,0.1,0,0],[3000,0.1,0.1,0,0],[365,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,1.226,0],[250,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Vegetables","Mejoberry","Berries","Stimberry"],"favoriteKibble":"Carnotaurus","nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":0.2,"affinityNeeded0":3000,"affinityIncreasePL":150,"torporDepletionPS0":0.3,"foodConsumptionBase":0.003156,"foodConsumptionMult":352.06308,"violent":true},"immobilizedBy":["Chain Bola","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":0.15,"Value":"Head"}]},{"name":"Troodon","breeding":{"gestationTime":0,"incubationTime":4090.581787,"maturationTime":75757.570313,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":28,"eggTempMax":32},"colors":[{"name":"Main Body","colorIds":[20,22,24,48,52,33,34,13,35,14]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Body Highlights and Feathers","colorIds":[21,23,42,48,51,32,33,8,14]},{"name":"Belly","colorIds":[21,23,47,13,28,32,33,8,14]}],"statsRaw":[[200,0.2,0.27,0.5,0],[150,0.1,0.1,0,0],[150,0.1,0.1,0,0],[100,0.1,0.1,0,0],[140,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0.2,0],[180,0.06,0,0.5,0]],"taming":{"eats":["Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"nonViolent":true,"specialFoodValues":null,"tamingIneffectiveness":8.333333,"affinityNeeded0":480,"affinityIncreasePL":45,"foodConsumptionBase":0.001543,"foodConsumptionMult":648.088135,"wakeAffinityMult":1.6,"wakeFoodDeplMult":2,"violent":false},"immobilizedBy":["Bola","Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Head, Neck"}]},{"name":"Tusoteuthis","breeding":{"gestationTime":0,"incubationTime":17998.560547,"maturationTime":1010100.875,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":-75,"eggTempMax":75},"colors":[{"name":"Body Highlights","colorIds":[19,20,21,22,23,24,28,29,14]},{"name":"Tentacle Highlights","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Tentacle Main","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"Body Main","colorIds":[21,23,28,32,33,8,14,36]}],"statsRaw":[[3333,0.2,0.27,0.5,0],[300,0.1,0.1,0,0],[215,0.1,0.1,0,0],[3200,0.1,0.1,0,0.15],[800,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,1,0],[1800,0.06,0,0.5,0]],"doesNotUseOxygen":true,"taming":{"eats":["Black Pearl","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"nonViolent":true,"specialFoodValues":[{"Key":"Black Pearl","Value":{"d":[30,50,50]}},{"Key":"Raw Mutton","Value":{"d":[50,37.5]}},{"Key":"Cooked Lamb Chop","Value":{"d":[49.945,20.625,30]}},{"Key":"Raw Prime Meat","Value":{"d":[50,15]}},{"Key":"Cooked Prime Meat","Value":{"d":[49.945,7.5,30]}},{"Key":"Raw Prime Fish Meat","Value":{"d":[25,6]}},{"Key":"Raw Meat","Value":{"d":[50,5,20]}},{"Key":"Cooked Prime Fish Meat","Value":{"d":[25.686001,3,30]}},{"Key":"Cooked Meat","Value":{"d":[25,2.5,30]}},{"Key":"Raw Fish Meat","Value":{"d":[25,2,20]}},{"Key":"Cooked Fish Meat","Value":{"d":[12.5,1,30]}}],"tamingIneffectiveness":0.75,"affinityNeeded0":12500,"affinityIncreasePL":125,"foodConsumptionBase":0.005,"foodConsumptionMult":180.001144,"wakeAffinityMult":1,"wakeFoodDeplMult":2,"violent":false},"boneDamageAdjusters":[{"Key":3,"Value":"Beak"}]},{"name":"Unicorn","breeding":{"gestationTime":47619.042969,"incubationTime":0,"maturationTime":208333.328125,"matingCooldownMin":64800,"matingCooldownMax":172800},"statsRaw":[[240,0.2,0.27,0.5,0],[560,0.1,0.1,0,0],[150,0.1,0.1,0,0],[1500,0.1,0.1,0,0],[350,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.0175,0.2,0],[420,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Vegetables","Sweet Vegetable Cake","Mejoberry","Berries","Stimberry"],"favoriteKibble":"Troodon","nonViolent":true,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[13.33,400]}},{"Key":"Vegetables","Value":{"d":[20,210]}},{"Key":"Sweet Vegetable Cake","Value":{"d":[20,20]}},{"Key":"Mejoberry","Value":{"d":[30,8]}},{"Key":"Berries","Value":{"d":[20,5]}}],"tamingIneffectiveness":0.4,"affinityNeeded0":3600,"affinityIncreasePL":180,"foodConsumptionBase":0.001929,"foodConsumptionMult":432.002777,"wakeAffinityMult":1.6,"wakeFoodDeplMult":2,"violent":false},"immobilizedBy":["Bola","Bear Trap","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":2,"Value":"Head"}]},{"name":"Woolly Rhino","breeding":{"gestationTime":14285.713867,"incubationTime":0,"maturationTime":166666.65625,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"Skins","colorIds":[21,22,32,33,34,8,13,35,14,37,37,37,37,37,38,39]},{"name":"Back","colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":"Underside","colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":"Horn","colorIds":[21,22,32,33,34,8,13,35,14,37,38,39,39,39,39,39]}],"statsRaw":[[500,0.2,0.27,0.5,0],[120,0.1,0.1,0,0],[100,0.1,0.1,0,0],[3000,0.1,0.1,0,0],[750,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,1.226,0],[600,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Vegetables","Mejoberry","Berries","Stimberry"],"favoriteKibble":"Terror Bird","nonViolent":false,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[53.279999,400]}}],"tamingIneffectiveness":1.25,"affinityNeeded0":3450,"affinityIncreasePL":125,"torporDepletionPS0":0.9,"foodConsumptionBase":0.003156,"foodConsumptionMult":150,"violent":true},"immobilizedBy":["Chain Bola","Large Bear Trap"]},{"name":"Zomdodo","colors":[{"name":"unknown","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,8,13,35,14]},{"name":"unknown","colorIds":[21,23,32,33,8,14]},{"name":"unknown","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"unknown","colorIds":[20,22,24,26,27,33,34,13,35,14]},{"name":"unknown","colorIds":[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,8,13,35,14,36]},{"name":"unknown","colorIds":[19,21,23,25,26,28,30,32,33,8,14]}],"statsRaw":[[700,0.2,0.27,0.2,0],[1000,0.1,0.1,0,0],[150,0.1,0.1,0,0],[450,0,0,0,0.15],[170,0.02,0.04,0,0],[1,0.015,0.1,0.2,0],[1,0,0.025,2,0],[1000,0.06,0,0.5,0]],"doesNotUseOxygen":true,"taming":{"nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":1.333333,"affinityNeeded0":450,"affinityIncreasePL":22.5,"foodConsumptionBase":0,"foodConsumptionMult":0,"violent":false},"immobilizedBy":["Bola","Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":2,"Value":"Head, Neck"}]},{"name":"Fire Wyvern","breeding":{"gestationTime":0,"incubationTime":17998.560547,"maturationTime":333333.3125,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":80,"eggTempMax":90},"colors":[{"name":"Body Main","colorIds":[39,38,35,22,13,43]},{"name":null,"colorIds":[]},{"name":"Scales Main","colorIds":[13,21,33,39,42,43,22]},{"name":"Wings Main","colorIds":[39,38,35,22,13,43]},{"name":"Fins Highlight","colorIds":[10,44,20,21,35,42]},{"name":"Body Highlights","colorIds":[10,44,43,21,33,42]}],"statsRaw":[[1725,0.15,0.2025,-1050,0],[275,0.05,0.05,0,0],[150,0.1,0.1,0,0],[2000,0.1,0.1,0,0],[400,0.02,0.04,0,0],[1,0.05,0.1,-0.25,0.4],[1,0,0,0,0],[725,0.06,0,0.5,0]],"NoImprintingForSpeed":true,"taming":{"nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":1.5,"affinityNeeded0":8500,"affinityIncreasePL":150,"foodConsumptionBase":0.000185,"foodConsumptionMult":199.983994,"violent":false},"immobilizedBy":["Chain Bola","Large Bear Trap"]},{"name":"Jerboa","breeding":{"gestationTime":9523.80957,"incubationTime":0,"maturationTime":111111.109375,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"Paws and Back","colorIds":[13,14,15,20,22,34,35,37,39,55,56]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Stripes","colorIds":[8,9,10,13,14,36,20,22,33,31,35,20,17,55,56]},{"name":"Belly and Highlights","colorIds":[13,9,33,39,37,55,56]}],"statsRaw":[[55,0.2,0.27,0.5,0],[100,0.1,0.1,0,0],[150,0.1,0.1,0,0],[450,0.1,0.1,0,0.15],[55,0.02,0.04,0,0],[1,0.05,0.1,1,0.4],[1,0,0.025,0.5,0],[30,0.06,0,0.5,0]],"taming":{"eats":["Plant Species Y Seed","Vegetables","Mejoberry","Berries","Stimberry"],"nonViolent":false,"specialFoodValues":[{"Key":"Plant Species Y Seed","Value":{"d":[65,160]}}],"tamingIneffectiveness":1.333333,"affinityNeeded0":1350,"affinityIncreasePL":22.5,"torporDepletionPS0":0.3,"foodConsumptionBase":0.000868,"foodConsumptionMult":2880.184326,"violent":true},"immobilizedBy":["Bola","Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Head, Neck"}]},{"name":"Lightning Wyvern","breeding":{"gestationTime":0,"incubationTime":17998.560547,"maturationTime":333333.3125,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":80,"eggTempMax":90},"colors":[{"name":"Body Main","colorIds":[30,28,14,51,8,35]},{"name":"Fins","colorIds":[49,50,31,14,30,8,51,52]},{"name":"Wings","colorIds":[49,50,31,35,28,30,8,51]},{"name":"***NOT USED****","colorIds":[1]},{"name":"Scales Top","colorIds":[49,50,31,14,30,8,51,52]},{"name":"Fins","colorIds":[49,50,31,14,30,8,51,52]}],"statsRaw":[[1725,0.15,0.2025,-1050,0],[275,0.05,0.05,0,0],[150,0.1,0.1,0,0],[2000,0.1,0.1,0,0],[400,0.02,0.04,0,0],[1,0.05,0.1,-0.25,0.4],[1,0,0,0,0],[725,0.06,0,0.5,0]],"NoImprintingForSpeed":true,"taming":{"nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":1.5,"affinityNeeded0":8500,"affinityIncreasePL":150,"foodConsumptionBase":0.000185,"foodConsumptionMult":199.983994,"violent":false},"immobilizedBy":["Chain Bola","Large Bear Trap"]},{"name":"Lymantria","colors":[{"name":"Facial Highlights","colorIds":[33,21,28,8,32]},{"name":"Wings Main","colorIds":[53,10,11,19,25,28,30,13]},{"name":"Legs","colorIds":[33,21,28,8,32]},{"name":"Wing Highlights","colorIds":[29,4,54,31,16,17,27,8,14]},{"name":"Facial Main","colorIds":[33,21,28,8,32]},{"name":"Stinger and Underbody","colorIds":[33,21,28,8,32]}],"statsRaw":[[260,0.2,0.27,0.5,0],[150,0.05,0.06,0,0],[150,0.1,0.1,0,0],[2000,0.1,0.1,0,0],[175,0.02,0.03,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0,0,0],[550,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Vegetables","Mejoberry","Berries","Stimberry"],"favoriteKibble":"Thorny Dragon","nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":1.875,"affinityNeeded0":1800,"affinityIncreasePL":100,"torporDepletionPS0":0.3,"foodConsumptionBase":0.001852,"foodConsumptionMult":199.983994,"violent":true},"immobilizedBy":["Bola","Chain Bola","Bear Trap","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Head"}]},{"name":"Mantis","colors":[{"name":"Body","colorIds":[9,10,16,17,15,11,33,27,26]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Back","colorIds":[9,10,16,17,15,11,33,27,26]},{"name":"Underneath","colorIds":[9,10,16,17,15,11,33,27,26]}],"statsRaw":[[275,0.2,0.135,0.5,0],[150,0.1,0.1,0,0],[150,0.1,0.1,0,0],[900,0.1,0.1,0,0],[220,0.02,0.08,0,0],[1,0.025,0.1,0.5,0.4],[1,0,0.025,0.67,0],[350,0.06,0,0.5,0]],"taming":{"eats":["Deathworm Horn","Spoiled Meat","Raw Meat","Raw Fish Meat"],"nonViolent":true,"specialFoodValues":[{"Key":"Deathworm Horn","Value":{"d":[300,450]}},{"Key":"Raw Meat","Value":{"d":[15,15]}},{"Key":"Raw Fish Meat","Value":{"d":[7.5,6]}}],"tamingIneffectiveness":2.5,"affinityNeeded0":1800,"affinityIncreasePL":75,"foodConsumptionBase":0.002314,"foodConsumptionMult":360,"wakeAffinityMult":1,"wakeFoodDeplMult":2,"violent":false},"immobilizedBy":["Chain Bola","Bear Trap","Plant Species Y"]},{"name":"Morellatops","breeding":{"gestationTime":0,"incubationTime":8999.280273,"maturationTime":111111.109375,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":22,"eggTempMax":28},"colors":[{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,37,37,37,37,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,39,39,39,39,39]}],"statsRaw":[[400,0.2,0.27,0.5,0],[220,0.1,0.1,0,0],[150,0.1,0.1,0,0],[6000,0.1,0.1,0,0],[440,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0.964,0],[315,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Vegetables","Mejoberry","Berries","Stimberry"],"favoriteKibble":"Vulture","nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":0.2,"affinityNeeded0":3000,"affinityIncreasePL":150,"torporDepletionPS0":0.3,"foodConsumptionBase":0.005341,"foodConsumptionMult":208.034286,"violent":true},"immobilizedBy":["Chain Bola","Large Bear Trap"],"boneDamageAdjusters":[{"Key":0.5,"Value":"Tail"},{"Key":1,"Value":"Head"}]},{"name":"Poison Wyvern","breeding":{"gestationTime":0,"incubationTime":17998.560547,"maturationTime":333333.3125,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":80,"eggTempMax":90},"colors":[{"name":"Body Main","colorIds":[45,46,35,27,26,24,8,47,40]},{"name":"Wings Main","colorIds":[45,46,35,27,26,24,8]},{"name":"Scales Main","colorIds":[47,32,25,23,8]},{"name":"Wings Highlight","colorIds":[7,11,23,24,25,26,27,30,45,46]},{"name":"Scale Highlights","colorIds":[47,32,25,23,8,48]},{"name":"Body Highlights","colorIds":[32,25,23,8]}],"statsRaw":[[1725,0.15,0.2025,-1050,0],[275,0.05,0.05,0,0],[150,0.1,0.1,0,0],[2000,0.1,0.1,0,0],[400,0.02,0.04,0,0],[1,0.05,0.1,-0.25,0.4],[1,0,0,0,0],[725,0.06,0,0.5,0]],"NoImprintingForSpeed":true,"taming":{"nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":1.5,"affinityNeeded0":8500,"affinityIncreasePL":150,"foodConsumptionBase":0.000185,"foodConsumptionMult":199.983994,"violent":false},"immobilizedBy":["Chain Bola","Large Bear Trap"]},{"name":"Rock Elemental","colors":[{"name":null,"colorIds":[1]},{"name":"Body","colorIds":[1,17,19,23,24,28,36,14]},{"name":null,"colorIds":[1]},{"name":null,"colorIds":[1]},{"name":null,"colorIds":[1]},{"name":null,"colorIds":[1]}],"statsRaw":[[25000,0.0125,0.135,-22000,0],[300,0.1,0.1,0,0],[150,0.1,0.1,0,0],[6000,0.1,0.1,0,0],[660,0.02,0.04,0,0],[1,0.05,0.1,0.125,0.4],[1,0,0.025,0,0],[5000,0.02,0,0.5,0]],"doesNotUseOxygen":true,"taming":{"eats":["Kibble","Sulfur","Clay","Stone"],"favoriteKibble":"Mantis","nonViolent":false,"specialFoodValues":[{"Key":"Kibble","Value":{"d":[19.9995,400]}},{"Key":"Sulfur","Value":{"d":[25,25]}},{"Key":"Clay","Value":{"d":[25,15]}},{"Key":"Stone","Value":{"d":[50,7]}}],"tamingIneffectiveness":2.5,"affinityNeeded0":6500,"affinityIncreasePL":325,"torporDepletionPS0":0.325,"foodConsumptionBase":0.002543,"foodConsumptionMult":180.063385,"violent":true}},{"name":"Thorny Dragon","breeding":{"gestationTime":0,"incubationTime":8999.280273,"maturationTime":175438.59375,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":22,"eggTempMax":28},"colors":[{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,37,37,37,37,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,38,38,38,38,39]},{"name":null,"colorIds":[21,22,32,33,34,8,13,35,14,37,38,39,39,39,39,39]}],"statsRaw":[[260,0.2,0.27,0.66,0],[350,0.1,0.1,0,0],[150,0.1,0.1,0,0],[1200,0.1,0.1,0,0.15],[300,0.02,0.04,0,0],[1,0.05,0.1,0.4,0.35],[1,0,0.025,0.3,0],[450,0.06,0,0.5,0]],"taming":{"eats":["Kibble","Raw Mutton","Cooked Lamb Chop","Raw Prime Meat","Cooked Prime Meat","Raw Prime Fish Meat","Raw Meat","Cooked Prime Fish Meat","Cooked Meat","Raw Fish Meat","Cooked Fish Meat"],"favoriteKibble":"Camelsaurus","nonViolent":false,"specialFoodValues":[{"Key":"Raw Mutton","Value":{"d":[50,325]}},{"Key":"Cooked Lamb Chop","Value":{"d":[49.945,165]}},{"Key":"Raw Prime Meat","Value":{"d":[50,130]}},{"Key":"Cooked Prime Meat","Value":{"d":[49.945,60]}},{"Key":"Raw Prime Fish Meat","Value":{"d":[25,52]}},{"Key":"Raw Meat","Value":{"d":[50,40]}},{"Key":"Cooked Prime Fish Meat","Value":{"d":[25.686001,24]}},{"Key":"Cooked Meat","Value":{"d":[25,20]}},{"Key":"Raw Fish Meat","Value":{"d":[25,16]}},{"Key":"Cooked Fish Meat","Value":{"d":[12.5,8]}}],"tamingIneffectiveness":1.5,"affinityNeeded0":3000,"affinityIncreasePL":150,"torporDepletionPS0":0.5,"foodConsumptionBase":0.001543,"foodConsumptionMult":288.039185,"violent":true},"immobilizedBy":["Bola","Chain Bola","Bear Trap","Large Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":2.5,"Value":"Head"}]},{"name":"Vulture","breeding":{"gestationTime":0,"incubationTime":4864.475586,"maturationTime":90090.085938,"matingCooldownMin":64800,"matingCooldownMax":172800,"eggTempMin":35,"eggTempMax":38},"colors":[{"name":"Body Main","colorIds":[33,34,35,22,20,14,13]},{"name":"Head Highlight","colorIds":[19,20,21,22,28,29,30,31,14]},{"name":null,"colorIds":[]},{"name":null,"colorIds":[]},{"name":"Head Main","colorIds":[37,32,33,21,35]},{"name":"Body Highlights","colorIds":[33,34,35,22,20,14,13,32,21]}],"statsRaw":[[125,0.2,0.27,0.5,0],[150,0.1,0.1,0,0],[150,0.1,0.1,0,0],[900,0.1,0.1,0,0],[50,0.02,0.04,0,0],[1,0.05,0.1,0.5,0.4],[1,0,0.025,0,0],[100,0.06,0,0.5,0]],"taming":{"eats":["Spoiled Meat","Raw Meat","Raw Fish Meat"],"nonViolent":true,"specialFoodValues":[{"Key":"Raw Meat","Value":{"d":[15,15]}},{"Key":"Raw Fish Meat","Value":{"d":[7.5,6]}}],"tamingIneffectiveness":4.166666,"affinityNeeded0":655,"affinityIncreasePL":45,"foodConsumptionBase":0.001302,"foodConsumptionMult":1152.07373,"wakeAffinityMult":1.6,"wakeFoodDeplMult":2,"violent":false},"immobilizedBy":["Bola","Bear Trap","Plant Species Y"],"boneDamageAdjusters":[{"Key":3,"Value":"Head"}]},{"name":"Zombie Fire Wyvern","breeding":{"gestationTime":0,"incubationTime":0,"maturationTime":333333.3125,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"Body Main","colorIds":[39,38,35,22,13,43]},{"name":null,"colorIds":[]},{"name":"Scales Main","colorIds":[13,21,33,39,42,43,22]},{"name":"Wings Main","colorIds":[39,38,35,22,13,43]},{"name":"Fins Highlight","colorIds":[10,44,20,21,35,42]},{"name":"Body Highlights","colorIds":[10,44,43,21,33,42]}],"statsRaw":[[1725,0.15,0.2025,-1050,0],[275,0.05,0.05,0,0],[150,0.1,0.1,0,0],[2000,0.1,0.1,0,0],[400,0.02,0.04,0,0],[1,0.05,0.1,-0.25,0.4],[1,0,0,0,0],[725,0.06,0,0.5,0]],"taming":{"nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":1.5,"affinityNeeded0":8500,"affinityIncreasePL":150,"foodConsumptionBase":0.000185,"foodConsumptionMult":199.983994,"violent":false},"immobilizedBy":["Chain Bola","Large Bear Trap"]},{"name":"Zombie Lightning Wyvern","breeding":{"gestationTime":0,"incubationTime":0,"maturationTime":333333.3125,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"Body Main","colorIds":[30,28,14,51,8,35]},{"name":"Fins","colorIds":[49,50,31,14,30,8,51,52]},{"name":"Wings","colorIds":[49,50,31,35,28,30,8,51]},{"name":"wings","colorIds":[49,50,30,28,8,51]},{"name":"Scales Top","colorIds":[49,50,31,14,30,8,51,52]},{"name":"Fins","colorIds":[49,50,31,14,30,8,51,52]}],"statsRaw":[[1725,0.15,0.2025,-1050,0],[275,0.05,0.05,0,0],[150,0.1,0.1,0,0],[2000,0.1,0.1,0,0],[400,0.02,0.04,0,0],[1,0.05,0.1,-0.25,0.4],[1,0,0,0,0],[725,0.06,0,0.5,0]],"taming":{"nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":1.5,"affinityNeeded0":8500,"affinityIncreasePL":150,"foodConsumptionBase":0.000185,"foodConsumptionMult":199.983994,"violent":false},"immobilizedBy":["Chain Bola","Large Bear Trap"]},{"name":"Zombie Poison Wyvern","breeding":{"gestationTime":0,"incubationTime":0,"maturationTime":333333.3125,"matingCooldownMin":64800,"matingCooldownMax":172800},"colors":[{"name":"Body Main","colorIds":[45,46,35,27,26,24,8,47,40]},{"name":"Wings Main","colorIds":[45,46,35,27,26,24,8]},{"name":"Scales Main","colorIds":[47,32,25,23,8]},{"name":"Wings Highlight","colorIds":[7,11,23,24,25,26,27,30,45,46]},{"name":"Scale Highlights","colorIds":[47,32,25,23,8,48]},{"name":"Body Highlights","colorIds":[32,25,23,8]}],"statsRaw":[[1725,0.15,0.2025,-1050,0],[275,0.05,0.05,0,0],[150,0.1,0.1,0,0],[2000,0.1,0.1,0,0],[400,0.02,0.04,0,0],[1,0.05,0.1,-0.25,0.4],[1,0,0,0,0],[725,0.06,0,0.5,0]],"taming":{"nonViolent":false,"specialFoodValues":null,"tamingIneffectiveness":1.5,"affinityNeeded0":8500,"affinityIncreasePL":150,"foodConsumptionBase":0.000185,"foodConsumptionMult":199.983994,"violent":false},"immobilizedBy":["Chain Bola","Large Bear Trap"]}]} \ No newline at end of file diff --git a/ARKBreedingStats/ver.txt b/ARKBreedingStats/ver.txt index 05c03796..e7ebb15d 100644 --- a/ARKBreedingStats/ver.txt +++ b/ARKBreedingStats/ver.txt @@ -1 +1 @@ -2563400,0.22.5 \ No newline at end of file +256.34.00,0.23.0 \ No newline at end of file