Growth System

All growth related configurations have significant impacts on the plant growth system. Making any changes to the growth system requires thorough testing and debugging. We strongly recommend any changes are made carefully and methodically as any changes can have unintended consequences.

If you're looking to make changes to how the plant growth system works, you are in the right place! We will break down each aspect and explain the options you have available as thoroughly as possible. Lets get started!

Config.Growth

The first section we must understand is: Config.Growth, as seen below:

Config.Growth = {
    UpdateInterval = 15000,
    Rate = { min = 0.15, max = 0.35 },
    Stages = { stage2 = 40, stage3 = 90 },
    InitialThirst = 85,
    InitialHunger = 85
}

We'll start by looking at UpdateInterval. It is important to understand that each and every plant operates (grows) on it's own timer based on the time the plant was originally planted. The UpdateInterval is how often each plant will have all its values updated such as thirst, hunger, growth & quality levels. By default, this is 15000 milliseconds (or 15 seconds). Since we're looking at just the growth section, we'll be focusing on just the growth rate for now.

Looking below UpdateInterval, you'll find the following:

Rate = { min = 0.15, max = 0.35 },

This is the percentage the growth value of the plant will increase on every UpdateInterval cycle. For example, let's say we just planted a new plant. In approximately 15 seconds after planting, the growth value of your newly placed plant will increase by 0.1% to 0.3% and this change will be visible in the plant's status menu. This growth rate will continue to increase every UpdateInterval at the min and max values set in the rate table seen above until the plant reached 100% (full) growth.

Understanding Growth Speed

If you are looking to make the growth of a plant happen faster or slower, the above values are important! Both the UpdateInterval and growth rate min/max values above have significant impacts on growth speed. Experiment with both to achieve the desired result! Want to slow down growth? Lower the growth rate min/max values and consider increasing the UpdateInterval. Want to speed up growth? Simply increase the growth rate min/max values.

Moving down, we find the following:

Stages = { stage2 = 40, stage3 = 90 },

The stages section and therefore the numbers to the right of stage2 & stage3 are the growth values the plant must reach before being upgraded to that stage. For example, in order for a plant to reach stage 2 (and thus physically appears to "grow" by changing to the prop assigned) it must reach a growth value of 40%. Furthermore, for a plant to achieve the final stage of growth, stage 3, it must reach a growth value of 90%.

Currently only the default three stages are supported and you can not add additional stages. We are currently looking into the ability to add support for custom (unlimited) stages.

Moving on, we'll look at the final two values in Config.Growth:

InitialThirst = 85,
InitialHunger = 85

These values, InitialThirst & InitialHunger are the values that each new plant's thirst & hunger levels begin at. For example, when you first place a plant, the thirst & hunger levels (percentage) will be assigned to these values.

Config.Care

That completes the first section of our growth system. Now let's continue on to the next part, Config.Care which can be seen below:

Config.Care = {
    Watering = { min = 8.0, max = 13.0, consume = 1 },
    Fertilizing = { min = 10.0, max = 15.0, consume = 1 }
}

This section is our plant care related configurations and both operate the same but effect different values: thirst and hunger. Let's break it down:

Watering = { min = 8.0, max = 13.0, consume = 1 },

Starting with the watering value. You'll find min, max and consume. The min value is the minimum amount of thirst that will be applied when a plant is watered per action and max is of course the maximum amount of thirst applied. Every time a plant is watered (or fed) a value is randomly assigned between the min & max values and applied to the plant. For example, let's say you just planted a new plant, and our InitialThirst value is set to 85. Therefore our plants thirst level will currently be 85%. If you water the plant once, the value will increase anywhere from 8% to 13%, resulting anywhere from 93% to 98% meaning your plant is sufficiently watered.

The last part here is the consume value. This is simply the quantity of the watering or fertilizing item to remove from the player per action. For example if you set consume to 3 it will remove 3 watering_can from the player per action!

Everything stated above also applies exactly the same to the fertilizing section, so no need to repeat!

Config.Needs

Let's move on the next section, Config.Needs:

Config.Needs = {
    HungerDecrease = { min = 0.15, max = 0.4 },
    ThirstDecrease = { min = 0.15, max = 0.4 },
    DeathThreshold = 35
}

This section is our plant needs configurations and both the HungerDecrease & ThirstDecrease operate in the same way so again we'll look at just one for the example:

HungerDecrease = { min = 0.15, max = 0.4 },

In here we simply have two values: min and max. Just like above, a random value between these two numbers is selected each time. Similar to the other values as well, these numbers represent a percentage. Therefore, 0.15 means 0.15% and 0.4 means 0.4%. Remember the UpdateInterval we covered above? These values here are how much the hunger (and thirst) decrease per UpdateInterval. If your UpdateInterval is still set at 15000 (or 15 seconds), then with these values above, the hunger and thirst of your plant will decrease anywhere from 0.15% to 0.4% every 15 seconds. Again, both HungerDecrease and ThirstDecrease operate exactly the same way, so no need to repeat here!

Let's move on and look at the DeathThreshold, as seen below:

DeathThreshold = 35

Naturally, since we are in the Config.Needs section, this DeathThreshold refers to the value of the hunger and thirst. Again, this value represents a percentage, so by default the 35 means 35%. The DeathThreshold allows you to set the value at which a plant will die due to lack of hunger or thirst. For example, if you set the DeathThreshold here to 60, and a plant's hunger or thirst decreases and reaches a low of 60%, the plant will then die. Like anything else, customize this to your liking!

Config.Quality

The last section pertaining to the growth of a plant is the Config.Quality section! Let's get into it:

Config.Quality = {
    GoodQuality = 94,
    Threshold = 70,
    DeathThreshold = 60,
    Decrease = { min = 0.4, max = 0.9 }
}

Starting with the first variable, GoodQuality:

GoodQuality = 94,

This value is important and will impact the yield players receive upon harvesting a fully grown plant. All these values also represent a percentage value so 94 means 94% and refers to the quality of the plant. What this number does is, if a plant is at or above GoodQuality (94% quality) when the plant is fully grown then a player will receive a maximum yield when harvested. If a plant is fully grown and is below the GoodQuality variable, they will instead receive most often a lesser amount, randomized between the minimum and maximum values set in the harvest settings for that strain.

Next up, we look at:

Threshold = 70,

Threshold is the hunger or thirst percentage value a plant much reach before the quality starts to decrease for that plant. For example, let's say a player forgot to water or fertilize their plant and the thirst or hunger value begins dropping and reaches or goes below 70%, then that plant's quality will start to decrease. Similar to above functions, the plant's quality level will degrade every UpdateInterval while below the threshold. How much it will degrade depends on the min and max set at the bottom, seen here:

Decrease = { min = 0.4, max = 0.9 }

Just like above examples, how much the plants quality will decrease will be a value randomly selected between these two values of 0.4% and 0.9%. The plant's quality will continue to decrease this amount every UpdateInterval until (and if) the plant's thirst and hunger values are both back over the threshold, or 70% (or whatever value you set) and then it will stop decreasing any further.

Lastly, let's look at the final variable:

DeathThreshold = 60,

The DeathThreshold is simply the quality percentage value the plant will die at if reached. For example, if a plant's thirst or hunger values are below the threshold, and quality begins to decrease and reaches as low as 60%, then the plant will die. Like anything else, you can configure this to your liking!

Last updated