Colony Survival

Colony Survival

Not enough ratings
Threat: A Full Explanation
By Ardandal
This guide fully explains threat and related mechanics, from the sources to the quantities of each monster spawning at a specific outpost.
   
Award
Favorite
Favorited
Unfavorite
Introduction
First, I will explain the important concepts and outlines. The details follow in the "Full Explanation" section.

Concepts
A list of variables/concepts and their meaning:
  • Global Threat: The total threat for your colony.
  • Local Threat: The threat for a specific outpost.
  • Local Threat Weight: The threat weight for an outpost.
  • Total Threat Weight: The sum of the threat weights of all outposts.
  • Total HP: The sum of the HP of all monsters going for an outpost.
  • Individual Monster Count: The number of monsters of a certain type that will attack an outpost.
  • Monster HP: The HP of a monster type.

Math
  • The formula for the distribution of threat over the outposts is:
    localThreat = globalThreat * localWeight / totalWeight
  • The formula for the total HP using the local threat is too complicated to explain here, it's explained below instead.
  • The individual monster counts are calculated from the total HP using sets of linear formulas for different intervals of the total HP.
Global Threat
Threat sources
Science
Some sciences increase threat. Here's the list.

Science
Amount of threat
Merchant's Hub
10
Porridge
15
Tanner
10
Anvil
30
Bronze Age
50
Iron Age
100
Glider
25
Science Chest
50
Rails
25
Gunpowder
50
Printing Press
50
Rope Trap
25
Blast Furnace
25
Metal Lathe
75
Prestige I
250
Prestige II
350
Prestige III
500
Prestige IV
750
Prestige V
1000
Non-Prestige Total
540
Total
3390

Lockboxes
Every placed lockbox increases threat. Every copper lockbox increases the threat by 3, every bronze lockbox by 10 and every steel lockbox by 25.

Colonists
All colonists past the first 25 increase threat by 0.3. This means that the formula for the threat from colonists is:
max((25*colonists - 7.5), 0)

Threat banners
Every threat banner increases threat by 10.

Threat sources => Global Threat
The threat from all sources is simply summed to get the global threat.
globalThreat = scienceThreat + lockboxThreat + colonistThreat + bannerThreat
Threat distribution
Threat Weight sources
Colonists add 1 threat weight to their outpost and threat banners add 150 weight. Outposts have no base threat weight; they start at 0. Therefore, the formula is:
localWeight = localColonists + 150*localBanners

Global Threat & Threat Weight => Local threat
The formula for the Local Threat of an outpost given the Global Threat and its Threat Weight is:
localThreat = totalThreat * localWeight / totalWeight

Mathematical implications
This means that as you keep placing threat banners, the threat in other outposts tends to 1/15th of their local colonist count. However, you'll need a huge number of threat banners for this, so this only gets interesting once you get AoE.
Local Threat => Total HP
If the local threat is lower than 200, it follows this formula:
totalHP = 0.003 * localThreat^3 + 25 * localThreat
If the local threat is higher than 200, it follows this formula:
totalHP = 525 * localThreat + 140,000

Correcting for difficulty
If the difficulty isn't normal, the totalHP is multiplied with a factor for the difficulty, so that
totalHP = uncorrectedTotalHP * difficultyMultiplier
Here's the list (I'm not sure yet though):

Difficulty
Multiplier
None
0
Low
0.6 (not entirely sure though)
Normal
1.0
High
1.4
Very High
2.0
Total HP => Individual monster counts
There are 7 ranges of total HP. For each range, there is a different set of linear formulas for every monster. The floor() function rounds a number down to an integer. The documentation I had on this wasn't entirely clear, but I'm pretty sure this is how it works. [1]

totalHP < 1000
monster25 = floor(1/25*totalHP)

1000 < totalHP < 3000
monster25 = 40 + floor(1/100*totalHP - 10)
monster100 = floor(3/400*totalHP - 15/2)

3000 < totalHP < 15,000
monster25 = 60 + floor(1/600*totalHP - 5)
monster100 = 15 + floor(1/300*totalHP - 10)
monster250 = floor(1/400*totalHP - 15/2)

15,000 < totalHP < 50,000
monster25 = 80 + floor(1/1750*totalHP - 60/7)
monster100 = 55 + floor(1/875*totalHP - 120/7)
monster250 = 30 + floor(1/700*totalHP - 150/7)
monster1500 = floor(3/8750*totalHP - 36/7)

50,000 < totalHP < 100,000
monster25 = 100 + floor(1/2500*totalHP - 20)
monster100 = 95 + floor(1/2500*totalHP - 20)
monster250 = 80 + floor(23/25,000*totalHP - 46)
monster1500 = 12 + floor(3/6250*totalHP - 24)

100,000 < totalHP < 200,000
monster25 = 120 + floor(1/10,000*totalHP - 10)
monster100 = 115 + floor(3/20,000*totalHP - 15)
monster250 = 126 + floor(23/100,000*totalHP - 23)
monster1500 = 36 + floor(1/4000*totalHP - 25)
monster5000 = floor(11/100,000*totalHP - 11)

200,000 < totalHP
monster25 = 130 + floor(1/15,000*totalHP - 40/3)
monster100 = 130 + floor(1/10,000*totalHP - 20)
monster250 = 149 + floor(7/50,000*totalHP - 28)
monster1500 = 61 + floor(11/25,000/3*totalHP - 58/3)
monster5000 = 11 + floor(1/12,500*totalHP - 44/3)
monster25000 = floor(1/75,000*totalHP - 8/3)
Notes
[1] I'm not sure, there may be a check for the global threat (eg, if global threat is
lower than 500, don't spawn monsters with 250 health). I don't think this is the case though.

Author's note: If you find mistakes, please notify me in the comments!

4 Comments
TDarksword 8 May @ 8:20am 
Note the localHP is what is used to calculate the level of zombies. So say your total threat was 80, which gives a 3536 baseHP total on normal, so high enough to spawn 250HP zombies if it was just one colony. If you actually had a 60 threat and 20 threat colony, that HP total would be divided to 2652 to the 60 threat colony and 884 to the 20 threat one. Neither of these totals is high enough to spawn 250HP zombies, as the localHP needs to be over 3000, so you'll only see 100 and 25hp ones at the 60 threat colony, and only 25HP ones at the 20 colony, as the latter doesn't even reach the 1000 limit to spawn the 100HP ones.
TDarksword 8 May @ 8:20am 
The important things to note compared to the original Guide

As the baseHP is based off totalThreat and not localThreat, total HP will be higher. This is due to the cubing in the formula, eg totalThreat 50 is 1625 v using localThreat of 20 and 30, which are 524 and 831 respectively, giving a total baseHP of 1355. The difference become more and more acute the higher the threat due to the exponential growth of the cubing within the formula.

There is no massive jump in threat at threat 200, the +29000 is actually 0.003*200^3 + 25*200. Above 200 the increase in threat is no longer cubed, so no longer exponential, instead it is an additional 525 HP for each additional totalThreat, becoming linear.
TDarksword 8 May @ 8:20am 
For anyone coming along and looking at this like I did, this is no longer correct for 0.13.

For 0.13 the calculation from totalThreat to HP works as follows

For total threat less than 200

baseHP = 0.003 * totalThreat^3 + 25*totalThreat so same as above

For total threat over 200

baseHP = (totalThreat - 200) * 525 + 29000 different to above

This baseHP is then multiplied by the difficulty modifier, and then divided amongst all colonies based on their localThreatWeight

(damned comment char limits)
Ralsei 9 Jun, 2024 @ 3:10pm 
thanks! now i have a colony with around 3k people and still barely have any threat due to the formulas! worth the 3 hours of my life :):steamthumbsup: