<img src="http://brendanmyers.net/games/LastForest-title.jpg">
=><=
[[Enter the forest->Setting Up]]
[[Learn the story->story]] • [[How to play->continue story]]
<font size=-1 color=grey>\
<==>
"The Last Forest" version 1.7. (24th February, 2021). Copyright by <a href="http://brendanmyers.net">Brendan Myers</a>, 2020. Created using <a href="http://twinery.org">Twine</a> (version 2.3.7). [[Photo credits and developer's notes->Developer notes]]
</font>
<i>The world ignored the warnings of the scientists, and so the climate crisis continued.
Two hundred and fifty years of heat waves, droughts, wild fires, and megastorms, damaged the delicate ecology of the planet, until most of land and sea turned into deadzone.
In a sheltered and remote valley, near the transition between the temperate forest and the boreal forest, and far from the refugee camps and the corporate zones, there lay three hundred square kilometers where trees still grew tall, flowers still bloomed, birds still sang, and rivers ran clean.
The Last Forest.
And you are its chief ecologist, in charge of its protection.
If you can keep the forest alive, then other lands and peoples will follow your lead, helping you to restore life to the whole planet.
And to restore a better future for humanity.</i>
|=
[[How to play->continue story]]
=|=
<p align=right>[[Begin the game->Setting Up]]
</p?
|==|
setting up the initial state of the world...
\
<!-- array data for ecosystems: size km2, habitats for trees and plants per unit of size, prev turn size, checksum for use in succession calc. Note that total area is 300 km2.-->
(set: $shield to (a: 30, 250, 10, 1))
(set: $wetland to (a: 45, 1500, 25, 1))
(set: $grassland to (a: 75, 1500, 25, 1))
(set: $deciduous to (a: 75, 1200, 120, 1))
(set: $coniferous to (a: 75, 1200, 120, 1))
\
\<!-- array data: population, fertility, (used only by eco engineers), prev turn pop, checksum for use in food web calculations. -->
(set: $aquaplant to (a: (1st of $wetland * 2nd of $wetland), 30, 0, (1st of $wetland * 2nd of $wetland),1 ))
(set: $landplant to (a: ((1st of $grassland * 2nd of $grassland)+(1st of $deciduous * 2nd of $deciduous)+(1st of $coniferous *2nd of $coniferous)), 40, 0, ((1st of $grassland * 2nd of $grassland)+(1st of $deciduous * 2nd of $deciduous)+(1st of $coniferous *2nd of $coniferous)), 1 ))
(set: $broadleaf to (a: (1st of $deciduous * 2nd of $deciduous), 12, 0, (1st of $deciduous * 2nd of $deciduous), 1 ))
(set: $evergreen to (a: (1st of $coniferous * 2nd of $coniferous), 7, 0, (1st of $coniferous * 2nd of $coniferous), 1))
(set: $smallherb to (a: 0, 12, 0, 0, 1))
(set: $midherb to (a: 0, 3, 0, 0, 1))
(set: $wetmammal to (a: 0, 3, 0, 0, 1))
(set: $largeherb to (a: 0, 2, 0, 0, 1))
(set: $midcarn to (a: 0, 1.3, 0, 0, 1))
(set: $topfeline to (a: 0, 1.2, 0, 0, 1))
(set: $topcanid to (a: 0, 1.2, 0, 0, 1))
(set: $scavenger to (a: 0, 2, 0, 0, 1))
(set: $smallbird to (a: 0, 20, 0, 0, 1))
(set: $midbird to (a: 0, 2, 0, 0, 1))
(set: $wetbird to (a: 0, 1.5, 0, 0, 1))
(set: $topavian to (a: 0, 1.2, 0, 0, 1))
(set: $reptile to (a: 0, 3, 0, 0, 1))
(set: $amphibian to (a: 0, 20, 0, 0, 1))
(set: $smallfish to (a: 0, 20, 0, 0, 1))
(set: $midfish to (a: 0, 3, 0, 0, 1))
(set: $topfish to (a: 0, 1.2, 0, 0, 1))
\
\(set: $totalarea to 300, $deadzone to "place holder", $milestone to "None", $biodiversity to 14, $chemistry to (a: "none", 0))
(goto: "interface")
//How to play://
In each turn of the game, you'll be shown the overall state of the forest: which kinds of life-forms are present, how many they are, and whether their popluations are trending up or down.
Every kind of life-form in the forest has some relation to every other: some relations are distant, some are very close. Some species grow directly from the landscape, in proportion to how large its home ecosystem is. Some grow in proportion to how much prey there is to eat. Some species gain habitat from other species without causing their benefactors any harm.
Furthermore, the landscapes themselves-- the five ecosystems of shield land, grassland, wetland, coniferous forest, and deciduous forest-- also grow and change over time, under the influence of some of the animals and plants that live in them.
And finally pollution will poison the waters, airs, and soils of the forest, causing the forest to decline into deadzone, slowly but relentlessly. If one of your ecosystems loses all its plants, the deadzone will claim it faster.
[[Continue->how to play]]
Ecologist's Report 2: Species Loss.
<!-- Next, put the new pop number into the 1st variable of the org's array, so that all interactions happen simultaneously, and are ready for the next turn. Round the numbers to make next turn's math easier. -->\
\(if: last of $aquaplant is 0 and 1st of $aquaplant is not 0)[
All of the wetland plants have died!]
\(set: 4th of $aquaplant to 1st of $aquaplant)
\(set: 1st of $aquaplant to (round: last of $aquaplant))
\(if: last of $landplant is 0 and 1st of $landplant is not 0)[
All of the ground cover plants have died!]
\(set: 4th of $landplant to 1st of $landplant)
\(set: 1st of $landplant to (round: last of $landplant))
\(if: last of $broadleaf is 0 and 1st of $broadleaf is not 0)[
All of the broadleaf trees have died!]
\(set: 4th of $broadleaf to 1st of $broadleaf)
\(set: 1st of $broadleaf to (round: last of $broadleaf))
\(if: last of $evergreen is 0 and 1st of $evergreen is not 0)[
All of the evergreen trees have died!]
\(set: 4th of $evergreen to 1st of $evergreen)
\(set: 1st of $evergreen to (round: last of $evergreen))
\(if: last of $smallherb is 0 and 1st of $smallherb is not 0)[
All of the small herbivores have died!]
\(set: 4th of $smallherb to 1st of $smallherb)
\(set: 1st of $smallherb to (round: last of $smallherb))
\(if: last of $midherb is 0 and 1st of $midherb is not 0)[
All of the midsize herbivores have died!]
\(set: 4th of $midherb to 1st of $midherb)
\(set: 1st of $midherb to (round: last of $midherb))
\(if: last of $wetmammal is 0 and 1st of $wetmammal is not 0)[
All of the wetland mammals have died!]
\(set: 4th of $wetmammal to 1st of $wetmammal)
\(set: 1st of $wetmammal to (round: last of $wetmammal))
\(if: last of $largeherb is 0 and 1st of $largeherb is not 0)[
All of the large herbivores have died!]
\(set: 4th of $largeherb to 1st of $largeherb)
\(set: 1st of $largeherb to (round: last of $largeherb))
\(if: last of $midcarn is 0 and 1st of $midcarn is not 0)[
All of the midsize carnivores have died!]
\(set: 4th of $midcarn to 1st of $midcarn)
\(set: 1st of $midcarn to (round: last of $midcarn))
\(if: last of $topfeline is 0 and 1st of $topfeline is not 0)[
All of the top feline carnivores have died!]
\(set: 4th of $topfeline to 1st of $topfeline)
\(set: 1st of $topfeline to (round: last of $topfeline))
\(if: last of $topcanid is 0 and 1st of $topcanid is not 0)[
All of the top canid carnivores have died!]
\(set: 4th of $topcanid to 1st of $topcanid)
\(set: 1st of $topcanid to (round: last of $topcanid))
\(if: last of $scavenger is 0 and 1st of $scavenger is not 0)[
All of the scavengers have died!]
\(set: 4th of $scavenger to 1st of $scavenger)
\(set: 1st of $scavenger to (round: last of $scavenger))
\(if: last of $smallbird is 0 and 1st of $smallbird is not 0)[
All of the small forest birds have died!]
\(set: 4th of $smallbird to 1st of $smallbird)
\(set: 1st of $smallbird to (round: last of $smallbird))
\(if: last of $midbird is 0 and 1st of $midbird is not 0)[
All of the midsize forest birds have died!]
\(set: 4th of $midbird to 1st of $midbird)
\(set: 1st of $midbird to (round: last of $midbird))
\(if: last of $wetbird is 0 and 1st of $wetbird is not 0)[
All of the wetland birds have died!]
\(set: 4th of $wetbird to 1st of $wetbird)
\(set: 1st of $wetbird to (round: last of $wetbird))
\(if: last of $topavian is 0 and 1st of $topavian is not 0)[
All of the top predator birds have died!]
\(set: 4th of $topavian to 1st of $topavian)
\(set: 1st of $topavian to (round: last of $topavian))
\(if: last of $reptile is 0 and 1st of $reptile is not 0)[
All of the reptiles have died!]
\(set: 4th of $reptile to 1st of $reptile)
\(set: 1st of $reptile to (round: last of $reptile))
\(if: last of $amphibian is 0 and 1st of $amphibian is not 0)[
All of the amphibians have died!]
\(set: 4th of $amphibian to 1st of $amphibian)
\(set: 1st of $amphibian to (round: last of $amphibian))
\(if: last of $smallfish is 0 and 1st of $smallfish is not 0)[
All of the small fish have died!]
\(set: 4th of $smallfish to 1st of $smallfish)
\(set: 1st of $smallfish to (round: last of $smallfish))
\(if: last of $midfish is 0 and 1st of $midfish is not 0)[
All of the midsize fish have died!]
\(set: 4th of $midfish to 1st of $midfish)
\(set: 1st of $midfish to (round: last of $midfish))
\(if: last of $topfish is 0 and 1st of $topfish is not 0)[
All of the top predator fish have died!]
\(set: 4th of $topfish to 1st of $topfish)
\(set: 1st of $topfish to (round: last of $topfish))
<p align=right> [[continue to new month->interface]] </p>
<!--first thing to do is detect whether the forest reached a new milestone. -->
\(set: $biodiversity to 0)
\(if: 1st of $aquaplant is > 0)[(set: $biodiversity to it +1)]
\(if: 1st of $landplant is > 0)[(set: $biodiversity to it +1)]
\(if: 1st of $broadleaf is > 0)[(set: $biodiversity to it +1)]
\(if: 1st of $evergreen is > 0)[(set: $biodiversity to it +1)]
\(if: 1st of $smallherb is > 0)[(set: $biodiversity to it +1)]
\(if: 1st of $midherb is > 0)[(set: $biodiversity to it +1)]
\(if: 1st of $wetmammal is > 0)[(set: $biodiversity to it +1)]
\(if: 1st of $largeherb is > 0)[(set: $biodiversity to it +1)]
\(if: 1st of $midcarn is > 0)[(set: $biodiversity to it +1)]
\(if: 1st of $topfeline is > 0)[(set: $biodiversity to it +1)]
\(if: 1st of $topcanid is > 0)[(set: $biodiversity to it +1)]
\(if: 1st of $scavenger is > 0)[(set: $biodiversity to it +1)]
\(if: 1st of $smallbird is > 0)[(set: $biodiversity to it +1)]
\(if: 1st of $midbird is > 0)[(set: $biodiversity to it +1)]
\(if: 1st of $wetbird is > 0)[(set: $biodiversity to it +1)]
\(if: 1st of $topavian is > 0)[(set: $biodiversity to it +1)]
\(if: 1st of $reptile is > 0)[(set: $biodiversity to it +1)]
\(if: 1st of $amphibian is > 0)[(set: $biodiversity to it +1)]
\(if: 1st of $smallfish is > 0)[(set: $biodiversity to it +1)]
\(if: 1st of $midfish is > 0)[(set: $biodiversity to it +1)]
\(if: 1st of $topfish is > 0)[(set: $biodiversity to it +1)]
\(if: $totalarea is >= 350 and $milestone is "None")[(goto: "first milestone reached")]
\(if: $totalarea is >= 400 and $biodiversity is >= 12 and $milestone is "First")[(goto: "second milestone reached")]
\(if: $totalarea is >= 450 and $biodiversity is >= 15 and $milestone is "Second")[(goto: "third milestone reached")]
\(if: $totalarea is >= 500 and $biodiversity is >= 18 and $milestone is "Third")[(goto: "fourth milestone reached")]
\(display: "display organisms") <!-- show the player the state of the forest. -->
|=
<center>[[Skip this turn.->ecological succession]]
[[Engineering team->engineering team]]
Add organisms to the forest:
• [[Plants->add plants]]
• [[Mammals->add land animals]]
• [[Birds->add birds]]
• [[Amphibians->add amphibians]]
• [[Reptiles->add reptiles]]
• [[Fish->add fish]]
• [[The kraken->kraken]] </center>
=|=
<center>[[Clean the deadzone->clean deadzone]]
[[Genetics lab->genetics lab]]
Hire hunters and anglers:
• [[Mid herbivores->hunt deer]]
• [[Large herbivores->hunt moose]]
• [[Mid carnivores->hunt foxes]]
• [[Top felines->hunt cats]]
• [[Top canids->hunt dogs]]
• [[Top avians->hunt birds]]
• [[Top fish->catch fish]] </center>
|==|
Need a tip?
(either:
"Don't be afraid to remove one type of organism. You can re-introduce it again later.",
"Start from a stable position with relatively few species present, and find the right order to introduce the others.",
"What if the point of this game is not to win, but rather to teach you how ecosystems work, and how everything is inter-connected?",
"However difficult it might be to play this game and to win, managing real-world ecosystems is enormously harder.",
"The biomes have a carrying capacity for plants: a maximum number X their area. If the plants grow larger than that capacity, they die back a little.",
"You might have to use the genetics lab on a given species several times before you notice results.",
"This game requires patience. Lots of patience. It can take hours to reach the fourth milestone.",
"Try to grow the size of the five biomes (shield, grassland, etc) to 100 or more km2, so that you have buffer time if their plants die.",
"Each organism consumes about ten times its mass in the organisms it preys upon.",
"Each organism grows by about one-tenth the number of the organisms it preys upon.",
"The biomes (shield land, grassland, etc.) includes the insects, fungi, and microscopic organisms that live in it.",
"The scavengers don't hurt the populations they prey upon, and they have no predators.",
"If one of your biomes gets very small, introduce the plants or animals that can help it grow. Your engineers can help with that, too.",
"Ground covering plants can help change both shield lands and wetlands into grasslands.",
"Cleaning the deadzone adds 10 square kilometers to the shield land.",
"Some of the small creatures eat plants as well as the insects and microbes of its biome.",
"Some of your actions might look like they produce no results. They may be preventing something else from happening that is hard to see.",
"Some organisms eat more than one species. If that organism's population is high, it can be hard to re-introduce one of its prey species.",
"Every once in a while, let nature take its course for a few turns, just to see what happens.",
"The small herbivores eat land plants and broadleaf trees.",
"The mid-sized herbivores eat land plants and broad leaf trees.",
"Some species are eaten by more than one predator. Amphibians, for instance, are eaten by mid-sized fish, and by top predator fish.",
"Wetland mammals like beavers are ecosystem engineers. They can help you restore a dying wetland.",
"The engineering team can help you save a dying grassland.",
"The mid-sized carnivores eat small herbivores, reptiles, and wetland mammals.",
"The top felines (pumas, mountain lions, cougars) eat mid and large herbivores, and the mid sized carnivores.",
"The top canids (wolves and bears) eat mid and large herbivores, and the mid and large fish.",
"If the plants die, their corresponding biome will fade into deadzone more quickly.",
"Think of the forest like a puzzle. How do all the pieces fit together? What should the picture look like when it's finished?",
)
<center> [[I need to start all over again!->resign]] </center>
<!-- the formula for each species' growth is a four step system as noted in the wetland plants: -->
<!~- Wetland plants -->
(if: 1st of $aquaplant > 0)[
(set: last of $aquaplant to 1st of $aquaplant * ( (1st of $wetland * 2nd of $wetland) / 1st of $aquaplant))] <!-- growth from habitats and predation. -->
(if: last of $aquaplant > (1st of $aquaplant * 2nd of $aquaplant))[(set: last of $aquaplant to (1st of $aquaplant * 2nd of $aquaplant))] <!-- cap on growth based on fertility rate -->
(set: last of $aquaplant to it - (10 * 1st of $smallfish)) <!-- death from predator action -->
(if: last of $aquaplant is < 0)[(set: last of $aquaplant to 0)] <!-- correct for negative values -->
<!--Ground covering plants: grasses, flowers, ferns. -->
(if: 1st of $landplant is > 0)[
(set: last of $landplant to 1st of $landplant * ( ( (1st of $grassland * 2nd of $grassland) + (1st of $deciduous * 2nd of $deciduous) + (1st of $coniferous * 2nd of $coniferous) ) / 1st of $landplant) ) ]
(if: last of $landplant > 1st of $landplant * 2nd of $landplant)[(set: last of $landplant to 1st of $landplant * 2nd of $landplant)]
(set: last of $landplant to it - ( (2.5 * 1st of $smallherb) + (2.5 * 1st of $midherb) + (2.5 * 1st of $wetmammal) + (2.5 * 1st of $largeherb)))
(if: last of $landplant is < 0)[(set: last of $landplant to 0)]
<!-- Broadleaf deciduous trees: maple, oak, cherry, ash, etc. -->
(if: 1st of $broadleaf is > 0)[
(set: last of $broadleaf to 1st of $broadleaf * ((1st of $deciduous * 2nd of $deciduous) / 1st of $broadleaf))]
(if: last of $broadleaf > 1st of $broadleaf * 2nd of $broadleaf)[(set: last of $broadleaf to 1st of $broadleaf * 2nd of $broadleaf)]
(set: last of $broadleaf to it - (3.3 * 1st of $wetmammal) - (3.3 * 1st of $smallherb) - (3.3 * 1st of $midherb))
(if: last of $broadleaf is < 0)[(set: last of $broadleaf to 0)]
<!-- Evergreen trees: cedar, pine, spruce. -->
(if: 1st of $evergreen is > 0)[
(set: last of $evergreen to 1st of $evergreen * ((1st of $coniferous * 2nd of $coniferous) / 1st of $evergreen) ) ]
(if: last of $evergreen > 1st of $evergreen * 2nd of $evergreen)[(set: last of $evergreen to 1st of $evergreen * 2nd of $evergreen)]
(set: last of $evergreen to it - (10 * 1st of $largeherb) )
(if: last of $evergreen is < 0)[(set: last of $evergreen to 0)]
<!-- Small herbivores: rabbits, mice, chipmunks, squirrels, voles. -->
(if: 1st of $smallherb > 0 )[
(set: last of $smallherb to 1st of $smallherb * ( ((0.05 * 1st of $landplant) + (0.05 * 1st of $broadleaf) ) / 1st of $smallherb )) ]
(if: last of $smallherb > (1st of $smallherb * 2nd of $smallherb))[(set: last of $smallherb to 1st of $smallherb * 2nd of $smallherb)]
(set: last of $smallherb to it - ((2.5 * 1st of $midcarn) + (2.5 * 1st of $topfeline) + (2.5 * 1st of $topcanid) + (2.5 * 1st of $midbird) ) )
(if: last of $smallherb is < 0)[(set: last of $smallherb to 0)]
<!-- Mid sized herbivores: deer, boar. -->
(if: 1st of $midherb > 0)[
(set: last of $midherb to 1st of $midherb * (((0.05 * 1st of $landplant) + (0.05 * 1st of $broadleaf)) / 1st of $midherb)) ]
(if: last of $midherb > 1st of $midherb * 2nd of $midherb)[(set: last of $midherb to 1st of $midherb * 2nd of $midherb)]
(set: last of $midherb to it - ( (5 * 1st of $topfeline) + (5 * 1st of $topcanid) ))
(if: last of $midherb is < 0)[(set: last of $midherb to 0)]
<!-- Wetland mammals: beaver, otter, muskrat. -->
(if: 1st of $wetmammal > 0)[
(set: last of $wetmammal to 1st of $wetmammal * (((0.05 * 1st of $broadleaf) + (0.05 * 1st of $aquaplant) ) / 1st of $wetmammal))]
(if: last of $wetmammal > 1st of $wetmammal * 2nd of $wetmammal)[(set: last of $wetmammal to 1st of $wetmammal * 2nd of $wetmammal)]
(set: last of $wetmammal to it - ((5 * 1st of $midcarn) + (5 * 1st of $topavian)) )
(if: last of $wetmammal is < 0)[(set: last of $wetmammal to 0)]
<!-- large herbivores: deer, moose, elk, caribou. -->
(if: 1st of $largeherb > 0)[
(set: last of $largeherb to 1st of $largeherb * (((0.05 * 1st of $landplant) + (0.05 * 1st of $evergreen)) / 1st of $largeherb))]
(if: last of $largeherb > 1st of $largeherb * 2nd of $largeherb)[(set: last of $largeherb to 1st of $largeherb * 2nd of $largeherb)]
(set: last of $largeherb to it - ( (5 * 1st of $topfeline) + (5 * 1st of $topcanid)))
(if: last of $largeherb is < 0)[(set: last of $largeherb to 0)]
<!-- Mid size carnivores: foxes, coyotes, bobcats, wolverine (even though wolverine is mostly a scavenger) -->
(if: 1st of $midcarn > 0)[
(set: last of $midcarn to 1st of $midcarn * (((0.03 * 1st of $smallherb) + (0.03 * 1st of $reptile) + (0.03 * 1st of $wetmammal)) / 1st of $midcarn))]\
(if: last of $midcarn > 1st of $midcarn * 2nd of $midcarn)[(set: last of $midcarn to 1st of $midcarn * 2nd of $midcarn)]
(set: last of $midcarn to it - (10 * 1st of $topfeline))
(if: last of $midcarn is < 0)[(set: last of $midcarn to 0)]
<!-- top cat predators: lynx, cougar. -->
(if: 1st of $topfeline > 0)[
(set: last of $topfeline to 1st of $topfeline * (( (0.03 * 1st of $midherb) + (0.03 * 1st of $largeherb) + (0.03 * 1st of $midcarn) ) / 1st of $topfeline ) )]
(if: last of $topfeline > 1st of $topfeline * 2nd of $topfeline)[(set: last of $topfeline to 1st of $topfeline * 2nd of $topfeline)]
<!-- no predator action -->
(if: last of $topfeline is < 0)[(set: last of $topfeline to 0)]
<!-- top dog predators: wolf, bear. -->
(if: 1st of $topcanid > 0)[
(set: last of $topcanid to 1st of $topcanid * (( (0.025 * 1st of $midherb) + (0.025 * 1st of $largeherb) + (0.025 * 1st of $midfish) + (0.025 * 1st of $topfish) ) / 1st of $topcanid ))]
(if: last of $topcanid > 1st of $topcanid * 2nd of $topcanid)[(set: last of $topcanid to 1st of $topcanid * 2nd of $topcanid)]
<!-- no predator action -->
(if: last of $topcanid is < 0)[(set: last of $topcanid to 0)]
(goto: "the food web 2")
<!-- First, let's add the influence of the engineering team (yeah I know it says chemistry). -->\
\ (if: 2nd of $chemistry is 0)[(set: 1st of $chemistry to "none")]
\ (if: 1st of $chemistry is "shield")[(set: 1st of $shield to it -3, 1st of $grassland to it +3, 2nd of $chemistry to it -1)] <!-- shield to grass. -->
\ (if: 1st of $chemistry is "grassland")[(set: 1st of $landplant to it + (1st of $landplant * 0.15), 2nd of $chemistry to it -1)] <!-- stimulates grass growth. -->
\ (if: 1st of $chemistry is "temperate")[(set: 1st of $grassland to it -3, 1st of $deciduous to it +3, 2nd of $chemistry to it -1)] <!-- grass to temperate. -->
\ (if: 1st of $chemistry is "boreal")[(set: 1st of $deciduous to it -3, 1st of $coniferous to it +3, 2nd of $chemistry to it -1)] <!-- temperate to boreal. -->
\ (if: 1st of $chemistry is "wetland")[(set: 1st of $wetland to it +3, 1st of $grassland to it -3, 2nd of $chemistry to it -1)] <!-- grass to wetland. -->
\
Ecologist's report 1: Ecosystem change.
\<!~- Ecosystems will change when the pop of the species who drive the change reaches 70% of carrying capacity. -->
(if: 1st of $landplant is >= ((1st of $grassland * 2nd of $grassland) * 0.7) )[
\(set: 1st of $shield to it - 1, 1st of $grassland to it + 1)
The ground cover plants turned some of the shieldland into grassland!]
\
\(if: 1st of $landplant is >= ((1st of $grassland * 2nd of $grassland) + (1st of $deciduous * 2nd of $deciduous) + (1st of $coniferous * 2nd of $coniferous) * 0.7) )[
\(set: 1st of $wetland to it - 1, 1st of $grassland to it + 1)
The ground cover plants turned some of the wetland into grassland!]
\
\(if: 1st of $broadleaf is >= ((1st of $deciduous * 2nd of $deciduous) * 0.7) )[
\(set: 1st of $grassland to it - 1, 1st of $deciduous to it + 1)
The broadleaf trees have turned some of the grassland into temperate forest!]
\
\(if: 1st of $evergreen is >= ((1st of $coniferous * 2nd of $coniferous) * 0.7) )[
\(set: 1st of $shield to it - 1, 1st of $coniferous to it + 1)
The evergreen trees have turned some of the temperate forest into boreal forest!]
\
\<!-- Beavers use a different carrying capacity number for wetlands. Five beavers per km2.-->
\(if: 1st of $wetmammal is >= (1st of $wetland * 4.5)) [
\(set: 1st of $deciduous to it - 1, 1st of $wetland to it + 1)
The beavers and other wetland mammals have turned some of the temperate forest into wetland!]
\
<!-- deadzone growth from random spread of pollution -->
\(if: (random: 1,9) is 1)[(set: $deadzone to (either: "shield", "wetland", "grassland", "deciduous", "coniferous")) ]
\(if: $deadzone is "shield" and 1st of $shield is > 0)[(set: 1st of $shield to it -1, $deadzone to "place holder")
Pollution has caused some of the shield land to turn into deadzone!]
\(if: $deadzone is "wetland" and 1st of $wetland is > 0)[(set: 1st of $wetland to it -1, $deadzone to "place holder")
Pollution has caused some of the wetland to turn into deadzone!]
\(if: $deadzone is "grassland" and 1st of $grassland is > 0)[(set: 1st of $grassland to it -1, $deadzone to "place holder")
Pollution has caused some of the grassland to turn into deadzone!]
\(if: $deadzone is "coniferous" and 1st of $coniferous is > 0)[(set: 1st of $coniferous to it -1, $deadzone to "place holder")
Pollution has caused some of the coniferous forest to turn into deadzone!]
\(if: $deadzone is "deciduous" and 1st of $deciduous is > 0)[(set: 1st of $deciduous to it -1, $deadzone to "place holder")
Pollution has caused some of the deciduous forest to turn into deadzone!]
\<!--deadzone growth from loss of plant life -->
\(if: 1st of $aquaplant is 0)[(set: 1st of $wetland to it -(random: 1,5))
The absence of wetland plants has caused some of the wetland to turn into deadzone!]
\(if: 1st of $landplant is 0)[(set: 1st of $grassland to it -(random: 1,5))
The absence of grasses and flowers has caused some of the grassland to turn into deadzone!]
\(if: 1st of $evergreen is 0)[(set: 1st of $coniferous to it -(random: 1,5))
The absence of evergreen trees has caused some of the coniferous forest to turn into deadzone!]
\(if: 1st of $broadleaf is 0)[(set: 1st of $deciduous to it -(random: 1,5))
The absence of broadleaf trees has caused some of the deciduous forest to turn into deadzone!]
\
\<!--correcting for negative values, and avoiding glitch that makes it impossible to win if a biome gets to zero -->
\(if: 1st of $shield is < 1)[(set: 1st of $shield to 1)]
\(if: 1st of $wetland is < 1)[(set: 1st of $wetland to 1)]
\(if: 1st of $grassland is < 1)[(set: 1st of $grassland to 1)]
\(if: 1st of $deciduous is < 1)[(set: 1st of $deciduous to 1)]
\(if: 1st of $coniferous is < 1)[(set: 1st of $coniferous to 1)]
\
\<!--clean up the last bits here -->
\(set: $totalarea to 1st of $shield + 1st of $wetland + 1st of $grassland + 1st of $coniferous + 1st of $deciduous)
\<!-- detect fail -->
\(if: $totalarea is < 200)[(goto: "fail")]
<p align=right> [[continue->the food web 1]] </p>
<!-- Scavengers: crow, raven, vulture, magpie. Scavengers treat these four species like a biome. -->
(if: 1st of $scavenger > 0)[
(set: last of $scavenger to 1st of $scavenger * ( ( (1st of $midherb + 1st of $largeherb + 1st of $midcarn + 1st of $topfeline + 1st of $topcanid) * 0.1 ) / 1st of $scavenger))]
(if: last of $scavenger > (1st of $scavenger * 2nd of $scavenger))[(set: last of $scavenger to 1st of $scavenger * 2nd of $scavenger)]
<!-- no predator action -->
(if: last of $scavenger is < 0)[(set: last of $scavenger to 0)]
\<!-- Small birds: chickadee, goldfinch, cardinal, bluejay, robin, woodpecker -->
\(if: 1st of $smallbird > 0)[
\(set: last of $smallbird to 1st of $smallbird * ( ( (1st of $deciduous * 2nd of $deciduous) + (1st of $coniferous * 2nd of $coniferous) + (0.03 * 1st of $broadleaf) ) / 1st of $smallbird) ) ]
\(if: last of $smallbird > 1st of $smallbird * 2nd of $smallbird)[(set: last of $smallbird to 1st of $smallbird * 2nd of $smallbird)]
(set: last of $smallbird to it - (10 * 1st of $midbird) )
(if: last of $smallbird is < 0)[(set: last of $smallbird to 0)]
\<!-- Mid size birds: owls, falcons. -->
\(if: 1st of $midbird > 0)[
\(set: last of $midbird to 1st of $midbird * ( ( (0.05 * 1st of $smallbird) + (0.05 * 1st of $smallherb) ) / 1st of $midbird ) )]
\(if: last of $midbird > 1st of $midbird * 2nd of $midbird)[(set: last of $midbird to 1st of $midbird * 2nd of $midbird)]
<!-- no predator action -->
(if: last of $midbird is < 0)[(set: last of $midbird to 0)]
\<!-- Wetland birds: heron, crane, duck, gull, loon. -->
\(if: 1st of $wetbird > 0)[
\(set: last of $wetbird to 1st of $wetbird * ( ( (0.03 * 1st of $smallfish) + (0.03 * 1st of $amphibian) + (0.03 * 1st of $reptile) / 1st of $wetbird ) )]
\(if: last of $wetbird > 1st of $wetbird * 2nd of $wetbird)[(set: last of $wetbird to 1st of $wetbird * 2nd of $wetbird)]
(set: last of $wetbird to it - (10 * 1st of $topavian))
(if: last of $wetbird is < 0)[(set: last of $wetbird to 0)]
\<!-- top birds of prey: hawks, eagles. -->
\(if: 1st of $topavian > 0)[
\(set: last of $topavian to 1st of $topavian * ( ( (0.02 * 1st of $midfish) + (0.02 * 1st of $topfish) + (0.02 * 1st of $wetbird) + (0.02 * 1st of $wetmammal) + (0.02 * 1st of $reptile) ) / 1st of $topavian ) )]
\(if: last of $topavian > 1st of $topavian * 2nd of $topavian)[(set: last of $topavian to 1st of $topavian * 2nd of $topavian)]
<!-- no predator action -->
(if: last of $topavian is < 0)[(set: last of $topavian to 0)]
\<!-- Reptiles: snake, turtle, lizard. -->
\(if: 1st of $reptile > 0)[
\(set: last of $reptile to 1st of $reptile * ( ( (0.025 * 1st of $smallfish) + (0.025 * 1st of $amphibian) + (1st of $wetland * 2nd of $wetland) + (1st of $deciduous * 2nd of $deciduous) ) / 1st of $reptile) ) ]
\(if: last of $reptile > 1st of $reptile * 2nd of $reptile)[(set: last of $reptile to 1st of $reptile * 2nd of $reptile)]
(set: last of $reptile to it - (5 * 1st of $topavian) - (5 * 1st of $wetbird))
(if: last of $reptile is < 0)[(set: last of $reptile to 0)]
\<!-- Amphibians: frogs, toads, salamanders -->
\(if: 1st of $amphibian > 0)[
\(set: last of $amphibian to 1st of $amphibian * ( ((1st of $wetland * 2nd of $wetland) + (0.1 * 1st of $aquaplant) ) / 1st of $amphibian))]
\(if: last of $amphibian > 1st of $amphibian * 2nd of $amphibian)[(set: last of $amphibian to 1st of $amphibian * 2nd of $amphibian)]
(set: last of $amphibian to it - ((2.5 * 1st of $wetbird) + (2.5 * 1st of $reptile) + (2.5 * 1st of $midfish) + (2.5 * 1st of $topfish) ) )
(if: last of $amphibian is < 0)[(set: last of $amphibian to 0)]
\<!-- Small fish: minnows, crayfish. -->
\(if: 1st of $smallfish > 0)[
\(set: last of $smallfish to 1st of $smallfish * ( ((1st of $wetland * 2nd of $wetland) + (0.1 * 1st of $aquaplant) ) / 1st of $smallfish) ) ]
\(if: last of $smallfish > 1st of $smallfish * 2nd of $smallfish)[(set: last of $smallfish to 1st of $smallfish * 2nd of $smallfish)]\
(set: last of $smallfish to it - ((3.3 * 1st of $wetbird) + (3.3 * 1st of $reptile) + (3.3 * 1st of $midfish) ) )
(if: last of $smallfish is < 0)[(set: last of $smallfish to 0)]
\<!-- Mid size fish: bass, trout, walleye. -->
\(if: 1st of $midfish > 0)[
\(set: last of $midfish to 1st of $midfish * ( ( (0.05 * 1st of $smallfish) + (0.05 * 1st of $amphibian) / 1st of $midfish) ) )]
\(if: last of $midfish > 1st of $midfish * 2nd of $midfish)[(set: last of $midfish to 1st of $midfish * 2nd of $midfish)]\
(set: last of $midfish to it - ((3.3 * 1st of $topcanid) + (3.3 * 1st of $topavian) + (3.3 * 1st of $topfish) ) )
(if: last of $midfish is < 0)[(set: last of $midfish to 0)]
\<!-- Top carnivore fish: pike, salmon. -->
\(if: 1st of $topfish > 0)[
\(set: last of $topfish to 1st of $topfish * ( ( (0.05 * 1st of $midfish) + (0.05 * 1st of $amphibian) ) / 1st of $topfish ) )]
\(if: last of $topfish > 1st of $topfish * 2nd of $topfish)[(set: last of $topfish to 1st of $topfish * 2nd of $topfish)]
(set: last of $topfish to it - ((5 * 1st of $topcanid) + (5 * 1st of $topavian)))
(if: last of $topfish is < 0)[(set: last of $topfish to 0)]
(goto: "natural history")
(set: 1st of $shield to it + 10)
(goto: "ecological succession")The genetics lab can release a special virus into the ecosystem which will increase the fertility rate of a certain organism group by 20% (rounded up). Select an organism group's name to increase its fertility.
<font size=3>
|=
(link: "Broadleaf Trees")[(set: 2nd of $broadleaf to (ceil: 2nd of $broadleaf * 1.2)) (goto: "ecological succession")]
(print: 2nd of $broadleaf)
(link: "Evergreen trees")[(set: 2nd of $evergreen to (ceil: 2nd of $evergreen * 1.2)) (goto: "ecological succession")]
(print: 2nd of $evergreen)
(link: "Land plants")[(set: 2nd of $landplant to (ceil: 2nd of $landplant * 1.2)) (goto: "ecological succession")]
(print: 2nd of $landplant)
=|=
(link: "Small Herbivores")[(set: 2nd of $smallherb to (ceil: 2nd of $smallherb * 1.2)) (goto: "ecological succession")]
(print: 2nd of $smallherb)
(link: "Midsize Herbivores")[(set: 2nd of $midherb to (ceil: 2nd of $midherb * 1.2)) (goto: "ecological succession")]
(print: 2nd of $midherb)
(link: "Large Herbivores")[(set: 2nd of $largeherb to (ceil: 2nd of $largeherb * 1.2)) (goto: "ecological succession")]
(print: 2nd of $largeherb)
=|=
(link: "Midsize Predators")[(set: 2nd of $midcarn to (ceil: 2nd of $midcarn * 1.2)) (goto: "ecological succession")]
(print: 2nd of $midcarn)
(link: "Top Feline Predators")[(set: 2nd of $topfeline to (ceil: 2nd of $topfeline * 1.2)) (goto: "ecological succession")]
(print: 2nd of $topfeline)
(link: "Top Canid Predators")[(set: 2nd of $topcanid to (ceil: 2nd of $topcanid * 1.2)) (goto: "ecological succession")]
(print: 2nd of $topcanid)
=|=
(link: "Small Birds")[(set: 2nd of $smallbird to (ceil: 2nd of $smallbird * 1.2)) (goto: "ecological succession")]
(print: 2nd of $smallbird)
(link: "Midsize Birds")[(set: 2nd of $midbird to it * (ceil: 2nd of $midbird * 1.2)) (goto: "ecological succession")]
(print: 2nd of $midbird)
(link: "Top Avian Predators")[(set: 2nd of $topavian to (ceil: 2nd of $topavian * 1.2)) (goto: "ecological succession")]
(print: 2nd of $topavian)
=|=
(link: "Scavengers")[(set: 2nd of $scavenger to (ceil: 2nd of $scavenger * 1.2)) (goto: "ecological succession")]
(print: 2nd of $scavenger)
(link: "Reptiles")[(set: 2nd of $reptile to (ceil: 2nd of $reptile * 1.2)) (goto: "ecological succession")]
(print: 2nd of $reptile)
(link: "Amphibians")[(set: 2nd of $amphibian to (ceil: 2nd of $amphibian * 1.2)) (goto: "ecological succession")]
(print: 2nd of $amphibian)
=|=
(link: "Wetland Plants")[(set: 2nd of $aquaplant to (ceil: 2nd of $aquaplant * 1.2)) (goto: "ecological succession")]
(print: 2nd of $aquaplant)
(link: "Wetland Birds")[(set: 2nd of $wetbird to (ceil: 2nd of $wetbird * 1.2)) (goto: "ecological succession")]
(print: 2nd of $wetbird)
(link: "Wetland Mammals")[(set: 2nd of $wetmammal to (ceil: 2nd of $wetmammal * 1.2)) (goto: "ecological succession")]
(print: 2nd of $wetmammal)
=|=
(link: "Small Fish")[(set: 2nd of $smallfish to (ceil: 2nd of $smallfish * 1.2)) (goto: "ecological succession")]
(print: 2nd of $smallfish)
(link: "Midsize Fish")[(set: 2nd of $midfish to (ceil: 2nd of $midfish * 1.2)) (goto: "ecological succession")]
(print: 2nd of $midfish)
(link: "Top Predator Fish")[(set: 2nd of $topfish to (ceil: 2nd of $topfish * 1.2)) (goto: "ecological succession")]
(print: 2nd of $topfish)
|==|
</font>
Release a virus that kills [[all mammals.->kill mammals]]
Release a virus that kills [[all birds.->kill birds]]
Release a virus that kills [[all fish.->kill fish]]
Release a virus that kills [[all reptiles and amphibians->all rep and amp]]
<p align=right> [[I need to do something else instead.->interface]] </p>
The engineering team can build berms, water courses, fire breaks, and other earthworks, to help transition the biomes from one type to another. They can also spread fertilizers to stimulate the growth of plants, microbes, and fungi, which in turn stimulates grass growth.
Select which of the biomes you would like the engineers to work on for the next ten rounds. You may have only one of these programs active at a time, so selecting a new program will automatically end the current one.
Current engineering job: (print: 1st of $chemistry)
(link: "Transition shield into grassland.") [(set: 1st of $chemistry to "shield", 2nd of $chemistry to 11) (goto: "ecological succession")]
(link: "Fertilize the grassland.") [(set: 1st of $chemistry to "grassland", 2nd of $chemistry to 11) (goto: "ecological succession")]
(link: "Transition grassland into temperate forest.") [(set: 1st of $chemistry to "temperate", 2nd of $chemistry to 11) (goto: "ecological succession")]
(link: "Transition temperate forest into boreal forest.") [(set: 1st of $chemistry to "boreal", 2nd of $chemistry to 11) (goto: "ecological succession")]
(link: "Transition grassland into wetland.") [(set: 1st of $chemistry to "wetland", 2nd of $chemistry to 11) (goto: "ecological succession")]
(if: 1st of $chemistry is not "none")[(link-reveal: "Stop the program. ") [(set: 1st of $chemistry to "none") The (print: 1st of $chemistry) improvement job is stopped.)] ]
<p align=right> [[I need to do something else instead.->interface]] </p>
//Winning and losing://
The game asks you to reach four milestones. In each of them, you have to grow the forest by at least 50 km^^2^^. You do this by decontaminating some of the deadzone that surrounds the forest.
For some milestones, you also have to preserve a minimum number of organism groups.
If the size of the forest falls to less than 200 km^^2^^, then the forest is lost, and the game is over.
But if you can reach the fourth and final milestone, you win!
[[Enter the forest and begin the game.->Setting Up]] //How to play://
Each turn of the game represents one month on the job, in which you'll make a choice affecting the state of the forest. For example, you can:
• Plant trees or ground cover plants,
• Add animals or remove them.
• Clean up some of the dead zone, adding new area to the forest,
• Manipulate the genetics of a species, so that it can reproduce faster.
To play this game, you have to think like a scientist. Add and remove different species, then watch what happens. Try to predict what will happen next. See if you can figure out how the various species interact with each other, and where points of balance might be found. Once you think you know how the forest works, make a plan for which species to support, and how to support them, so you can grow your forest and keep as many of its animals and plants alive as you can.
[[How to win->Winning and losing]]The forest has fallen to fewer than two hundred square kilometers.
<p align=center><img src="http://brendanmyers.net/games/LastForest-fail.jpg"></p>
This is a tipping point; the decline of the forest is now inevitable. The forest is lost.
[[Can you do better? Play again!->Setting Up]]
<font size=3>[[Developer notes]] </font>
=><=
The Last Forest
by Brendan Myers
<==>
//Photo Credits//
<font size=3>
• Title page photo by David Marcu / Unsplash.com
• Milestone 4 photo by Reid Wiseman / NASA ISS mission 40.
• Lost Forest photo by Abhay Vyas / Unsplash.com
• Legacy photo by Arthur Poulin / Unsplash.com
• All other photos by Brendan Myers.
</font>
//Developer Notes//
<font size=3>
Thank you for playing my game!
I have been interested in ecology as a science, and in game design, since I was a teenager. Partly because I find it fun to think about complex systems like the biosphere. Partly because I used to make games like this on my old Commodore 128 computer (yeah, that shows my age) and Twine gives me the chance to make games like this again. Partly because I plan to use this game, and Twine in general, as a teaching tool in my classes (I'm a college prof by day).
But mostly because I find that the Earth is the most wonderful and beautiful world, the Great Mother of all life, the only home we have, and possibly the only home we will ever have.
The relations of predator, prey, habitat, and ecological succession are modelled in this game as close to how they are in nature as my programming skills allow. This meant I had to make some hard decisions. In which biome should the game be set? What, for example, is the carrying capacity of a hardwood forest for moose and caribou? In the real world, top predators eat almost all kinds of herbivores and aquatic microbiovores, but what will they eat in this game? You get the idea. So, if you did some ecological research to help you win this game: first of all, you had the right idea and I am proud of you, and second of all, I apologise if your research led you to the right idea for the real world but the wrong one for this game.
This is the first public release of this game, but it’s actually the second version. The first had 56 forms of life instead of the 21 you see here. It included insect biomass, for instance, and the mycorrizhal networks beneath the soils. It made the game much more complicated, but for that reason more interesting to me, and a little more true to life. But that first version actually broke the game— Twine was unable to handle the huge numbers involved and the long lines of code I wrote to model their interactions, producing weird results like shield lands of infinite size, and population numbers that included Euler's constant. Some day I shall have to learn a more advanced programming language to make my original vision happen.
By the way, you might have noticed the button that says "Release the kraken!". I put it there while I was still troubleshooting a beta version of the game. I had expected that it would kill most of the forest. In fact it stabilized the forest for several turns: it created what ecologists call a trophic cascade. (Look it up; it's kind of a beautiful thing.) So I decided to keep it in the game. Players might find it produces different results, depending on the state of things at the time the kraken is released.
A personal note: I think that ecology will be the science of the future. It is already the science of the food we eat, the water and air we take, the planet we love. It is the science of the climate crisis, and I sometimes wonder if climate-crisis denialism remains popular because, at least in part, people don't understand the basics of ecology. Or economics. Or ethics.
My hope is that people will treat this game, first of all, as a fun and challenging puzzle to solve. I also hope people will treat it as an educational experience: a way to learn how fragile complex systems are, how there is no such thing as a "balance of nature", and how we need patience-- a <i>lot</i> of patience-- to care for the planet and to end the crisis.
But that's enough polemic from me, for now.
If you don't mind me saying so, I'm kind of proud of myself for this little game, and I do hope you enjoyed it. If you manage to win, send me a note to let me know how you did it. And maybe tell your friends about it too.
And then, go and visit your nearest real-world green space, and find out what you can do to help take care of it.
<p align=right>Brendan.</p>
</font>
[[Play again?->Setting Up]]
(if: $milestone is "None")[<p align=center>Grow the forest to 350 km^^2^^.</p>]
\(if: $milestone is "First")[<p align=center>Grow the forest to 400 km^^2^^, and keep 12 organism groups alive.</p>]
\(if: $milestone is "Second")[<p align=center>Grow the forest to 450 km^^2^^, and keep 15 organism groups alive.</p>]
\(if: $milestone is "Third")[<p align=center>Grow the forest to 500 km^^2^^ and keep 18 organism groups alive.</p>]
\(if: $milestone is "Success")[<p align=center>Experiment and see what happens!</p>]
\<font size=3>
|=
Shield Land
(if: 1st of $shield > 1)[(print: 1st of $shield) `(` (print: (round: ((1st of $shield * 100) / $totalarea))) `% )`]\
(if: 1st of $shield is 1)[(colour: red)[(print: 1st of $shield) `(` (print: (round: ((1st of $shield * 100) / $totalarea))) `% )`]]\
=|=
Grassland
(if: 1st of $grassland > 1)[(print: 1st of $grassland) `(` (print: (round: ((1st of $grassland * 100) / $totalarea))) `% )`]\
(if: 1st of $grassland is 1)[(colour: red)[(print: 1st of $grassland) `(` (print: (round: ((1st of $grassland * 100) / $totalarea))) `% )`]]\
=|=
Temperate
(if: 1st of $deciduous > 1)[(print: 1st of $deciduous) `(` (print: (round: ((1st of $deciduous * 100) / $totalarea))) `% )`]\
(if: 1st of $deciduous is 1)[(colour: red)[(print: 1st of $deciduous) `(` (print: (round: ((1st of $deciduous * 100) / $totalarea))) `% )`]]\
=|=
Boreal
(if: 1st of $coniferous > 1)[(print: 1st of $coniferous) `(` (print: (round: ((1st of $coniferous * 100) / $totalarea))) `% )`]\
(if: 1st of $coniferous is 1)[(colour: red)[(print: 1st of $coniferous) `(` (print: (round: ((1st of $coniferous * 100) / $totalarea))) `% )`]]\
=|=
Wetland
(if: 1st of $wetland > 1)[(print: 1st of $wetland) `(` (print: (round: ((1st of $wetland * 100) / $totalarea))) `% )`]\
(if: 1st of $wetland is 1)[(colour: red)[(print: 1st of $wetland) `(` (print: (round: ((1st of $wetland * 100) / $totalarea))) `% )`]]\
=|=
Total area:
(print: $totalarea) km^^2^^
=|=
Biodiversity:
(print: $biodiversity)
|==|
<hr>
|=
Broadleaf Trees
(if: 1st of $broadleaf > 4th of $broadleaf )[(colour: green)[(print: 1st of $broadleaf)]]\
(if: 1st of $broadleaf is 4th of $broadleaf and 1st of $broadleaf is not 0)[(colour: cyan)[(print: 1st of $broadleaf)]]\
(if: 1st of $broadleaf < 4th of $broadleaf or 1st of $broadleaf is 0)[(colour: red)[(print: 1st of $broadleaf)]]\
=|=
Small Herbivores
(if: 1st of $smallherb > 4th of $smallherb)[(colour: green)[(print: 1st of $smallherb)]]\
(if: 1st of $smallherb is 4th of $smallherb and 1st of $smallherb is not 0)[(colour: cyan)[(print: 1st of $smallherb)]]\
(if: 1st of $smallherb < 4th of $smallherb or 1st of $smallherb is 0)[(colour: red)[(print: 1st of $smallherb)]]\
=|=
Midsize Predators
(if: 1st of $midcarn > 4th of $midcarn)[(colour: green)[(print: 1st of $midcarn)]]\
(if: 1st of $midcarn is 4th of $midcarn and 1st of $midcarn is not 0)[(colour: cyan)[(print: 1st of $midcarn)]]\
(if: 1st of $midcarn < 4th of $midcarn or 1st of $midcarn is 0)[(colour: red)[(print: 1st of $midcarn)]]\
=|=
Small Birds
(if: 1st of $smallbird > 4th of $smallbird)[(colour: green)[(print: 1st of $smallbird)]]\
(if: 1st of $smallbird is 4th of $smallbird and 1st of $smallbird is not 0)[(colour: cyan)[(print: 1st of $smallbird)]]\
(if: 1st of $smallbird < 4th of $smallbird or 1st of $smallbird is 0)[(colour: red)[(print: 1st of $smallbird)]]\
=|=
Scavenger Birds
(if: 1st of $scavenger > 4th of $scavenger)[(colour: green)[(print: 1st of $scavenger)]]\
(if: 1st of $scavenger is 4th of $scavenger and 1st of $scavenger is not 0)[(colour: cyan)[(print: 1st of $scavenger)]]\
(if: 1st of $scavenger < 4th of $scavenger or 1st of $scavenger is 0)[(colour: red)[(print: 1st of $scavenger)]]\
=|=
Wetland Plants
(if: 1st of $aquaplant > 4th of $aquaplant)[(colour: green)[(print: 1st of $aquaplant)]]\
(if: 1st of $aquaplant is 4th of $aquaplant and 1st of $aquaplant is not 0)[(colour: cyan)[(print: 1st of $aquaplant)]]\
(if: 1st of $aquaplant < 4th of $aquaplant or 1st of $aquaplant is 0)[(colour: red)[(print: 1st of $aquaplant)]]\
=|=
Small Fish
(if: 1st of $smallfish > 4th of $smallfish)[(colour: green)[(print: 1st of $smallfish)]]\
(if: 1st of $smallfish is 4th of $smallfish and 1st of $smallfish is not 0)[(colour: cyan)[(print: 1st of $smallfish)]]\
(if: 1st of $smallfish < 4th of $smallfish or 1st of $smallfish is 0)[(colour: red)[(print: 1st of $smallfish)]]\
|==|
|=
Evergreen Trees
(if: 1st of $evergreen > 4th of $evergreen )[(colour: green)[(print: 1st of $evergreen)]]\
(if: 1st of $evergreen is 4th of $evergreen and 1st of $evergreen is not 0)[(colour: cyan)[(print: 1st of $evergreen)]]\
(if: 1st of $evergreen < 4th of $evergreen or 1st of $evergreen is 0)[(colour: red)[(print: 1st of $evergreen)]]\
=|=
Midsize Herbivores
(if: 1st of $midherb > 4th of $midherb)[(colour: green)[(print: 1st of $midherb)]]\
(if: 1st of $midherb is 4th of $midherb and 1st of $midherb is not 0)[(colour: cyan)[(print: 1st of $midherb)]]\
(if: 1st of $midherb < 4th of $midherb or 1st of $midherb is 0)[(colour: red)[(print: 1st of $midherb)]]\
=|=
Top Feline Predators
(if: 1st of $topfeline > 4th of $topfeline)[(colour: green)[(print: 1st of $topfeline)]]\
(if: 1st of $topfeline is 4th of $topfeline and 1st of $topfeline is not 0)[(colour: cyan)[(print: 1st of $topfeline)]]\
(if: 1st of $topfeline < 4th of $topfeline or 1st of $topfeline is 0)[(colour: red)[(print: 1st of $topfeline)]]\
=|=
Midsize Birds
(if: 1st of $midbird > 4th of $midbird)[(colour: green)[(print: 1st of $midbird)]]\
(if: 1st of $midbird is 4th of $midbird and 1st of $midbird is not 0)[(colour: cyan)[(print: 1st of $midbird)]]\
(if: 1st of $midbird < 4th of $midbird or 1st of $midbird is 0)[(colour: red)[(print: 1st of $midbird)]]\
=|=
Reptiles
(if: 1st of $reptile > 4th of $reptile)[(colour: green)[(print: 1st of $reptile)]]\
(if: 1st of $reptile is 4th of $reptile and 1st of $reptile is not 0)[(colour: cyan)[(print: 1st of $reptile)]]\
(if: 1st of $reptile < 4th of $reptile or 1st of $reptile is 0)[(colour: red)[(print: 1st of $reptile)]]\
=|=
Wetland Birds
(if: 1st of $wetbird > 4th of $wetbird)[(colour: green)[(print: 1st of $wetbird)]]\
(if: 1st of $wetbird is 4th of $wetbird and 1st of $wetbird is not 0)[(colour: cyan)[(print: 1st of $wetbird)]]\
(if: 1st of $wetbird < 4th of $wetbird or 1st of $wetbird is 0)[(colour: red)[(print: 1st of $wetbird)]]\
=|=
Midsize Fish
(if: 1st of $midfish > 4th of $midfish)[(colour: green)[(print: 1st of $midfish)]]\
(if: 1st of $midfish is 4th of $midfish and 1st of $midfish is not 0)[(colour: cyan)[(print: 1st of $midfish)]]\
(if: 1st of $midfish < 4th of $midfish or 1st of $midfish is 0)[(colour: red)[(print: 1st of $midfish)]]\
|==|
|=
Land Plants
(if: 1st of $landplant > 4th of $landplant )[(colour: green)[(print: 1st of $landplant)]]\
(if: 1st of $landplant is 4th of $landplant and 1st of $landplant is not 0)[(colour: cyan)[(print: 1st of $landplant)]]\
(if: 1st of $landplant < 4th of $landplant or 1st of $landplant is 0)[(colour: red)[(print: 1st of $landplant)]]\
=|=
Large Herbivores
(if: 1st of $largeherb > 4th of $largeherb)[(colour: green)[(print: 1st of $largeherb)]]\
(if: 1st of $largeherb is 4th of $largeherb and 1st of $largeherb is not 0)[(colour: cyan)[(print: 1st of $largeherb)]]\
(if: 1st of $largeherb < 4th of $largeherb or 1st of $largeherb is 0)[(colour: red)[(print: 1st of $largeherb)]]\
=|=
Top Canid Predators
(if: 1st of $topcanid > 4th of $topcanid)[(colour: green)[(print: 1st of $topcanid)]]\
(if: 1st of $topcanid is 4th of $topcanid and 1st of $topcanid is not 0)[(colour: cyan)[(print: 1st of $topcanid)]]\
(if: 1st of $topcanid < 4th of $topcanid or 1st of $topcanid is 0)[(colour: red)[(print: 1st of $topcanid)]]\
=|=
Top Avian Predators
(if: 1st of $topavian > 4th of $topavian)[(colour: green)[(print: 1st of $topavian)]]\
(if: 1st of $topavian is 4th of $topavian and 1st of $topavian is not 0)[(colour: cyan)[(print: 1st of $topavian)]]\
(if: 1st of $topavian < 4th of $topavian or 1st of $topavian is 0)[(colour: red)[(print: 1st of $topavian)]]\
=|=
Amphibians
(if: 1st of $amphibian > 4th of $amphibian)[(colour: green)[(print: 1st of $amphibian)]]\
(if: 1st of $amphibian is 4th of $amphibian and 1st of $amphibian is not 0)[(colour: cyan)[(print: 1st of $amphibian)]]\
(if: 1st of $amphibian < 4th of $amphibian or 1st of $amphibian is 0)[(colour: red)[(print: 1st of $amphibian)]]\
=|=
Wetland Mammals
(if: 1st of $wetmammal > 4th of $wetmammal)[(colour: green)[(print: 1st of $wetmammal)]]\
(if: 1st of $wetmammal is 4th of $wetmammal and 1st of $wetmammal is not 0)[(colour: cyan)[(print: 1st of $wetmammal)]]\
(if: 1st of $wetmammal < 4th of $wetmammal or 1st of $wetmammal is 0)[(colour: red)[(print: 1st of $wetmammal)]]\
=|=
Top Predator Fish
(if: 1st of $topfish > 4th of $topfish)[(colour: green)[(print: 1st of $topfish)]]\
(if: 1st of $topfish is 4th of $topfish and 1st of $topfish is not 0)[(colour: cyan)[(print: 1st of $topfish)]]\
(if: 1st of $topfish < 4th of $topfish or 1st of $topfish is 0)[(colour: red)[(print: 1st of $topfish)]]\
|==|
<hr>
<center> (if: 1st of $chemistry is not "none")[The engineering team is working on the (print: 1st of $chemistry) area for (print: 2nd of $chemistry) more turns.] </center> \
</font>
You have chosen to step down from the position of Chief Ecologist of the Last Forest. What will be your legacy?
<p align=center><img src="http://brendanmyers.net/games/LastForest-legacy.jpg"></p>
Total forest area = (print: $totalarea)
Total organism groups conserved = (print: $biodiversity)
Milestone reached = (print: $milestone)
[[Can you do better? Play again!->Setting Up]]
<font size=3>[[Developer notes]] </font>
Under your guidance, the forest has grown to (print: $totalarea) km^^2^^!
<p align=center><img src="http://brendanmyers.net/games/LastForest-milestone1.jpg"></p>
Your next task is to grow the forest to more than four hundred km^^2^^, while at the same time keeping at least twelve organism-groups alive. Can you do it?
\(set: $milestone to "First")
[[Yes, I can do it!->interface]]
[[No, I think I've done all that I can.->resign]]
Well done! Under your guidance, the forest has grown to (print: $totalarea) km^^2^^, and you have kept (print: $biodiversity) organism-groups alive!
<p align=center><img src="http://brendanmyers.net/games/LastForest-milestone2.jpg"></p>
Your next task is to grow the forest to more than 450 km^^2^^, while at the same time keeping at least fifteen organism-groups alive. Can you do it?
\(set: $milestone to "Second")
[[Yes, I can do it!->interface]]
[[No, I think I've done all that I can.->resign]]
Incredible work! Under your expert care, the forest has grown to (print: $totalarea) km^^2^^, and you have kept (print: $biodiversity) organism-groups alive!
<p align=center><img src="http://brendanmyers.net/games/LastForest-milestone3.jpg"></p>
Your next task is to grow the forest to more than five hundred km^^2^^, while at the same time keeping at least eighteen organism-groups alive. Most other scientists think this task is impossible.
\(set: $milestone to "Third")
[[Nothing is impossible. I can do it!->interface]]
[[It's time for me to retire.->resign]]
Incredible! The forest has grown to (print: $totalarea) km^^2^^ and you have preserved or restored (print: $biodiversity) organism groups!
<p align=center><img src="http://brendanmyers.net/games/LastForest-milestone4.jpg"></p>
The ecological knowledge you have gained will help to restore forests and other ecosystems all over the world.
Because of you, the Earth, and all humanity, can be saved.
\(set: $milestone to "Success")
[[I'd like to keep working, just to see what will happen.->interface]]
[[It's a good time to retire.->resign]]
The greenhouse can plant new trees, flowers, and grasses in the forest for you.
[[Plant 1000 broadleaf trees->1000broadleaf]]
[[Plant 1000 evergreen trees->1000evergreen]]
[[Plant 10,000 ground-covering plants->10k-grass]]
[[Plant 10,000 wetland plants->10k-wetplants]]
<p align=right> [[I need to do something else instead.->interface]] </p>
The breeders can release animals into the forest for you.
[[Release two hundred small herbivores.->200herbs]]
[[Release five hundred small herbivores.->500herbs]]
[[Release twenty mid-size herbivores->20midherbs]]
[[Release ten large herbivores.->10largeherbs]]
[[Release ten mid-size predators.->10midcarn]]
[[Release two top feline predators.->2cats]]
[[Release two top canid predators.->2dogs]]
[[Release five wetland mammals.->5beavers]]
<p align=right> [[I need to do something else instead.->interface]] </p>
The aviary can release birds into the forest for you.
[[Release two hundred small birds->200smallbirds]]
[[Release five hundred small birds->500smallbirds]]
[[Release ten mid-size birds of prey.->10midbirds]]
[[Release two top birds of prey.->2topbirds]]
[[Release ten scavenger birds->10scavengers]]
[[Release ten wetland birds->10wetbirds]]
<p align=right> [[I need to do something else instead.->interface]] </p>
Two hundred (either: "frogs", "salamanders", "toads") jump from their breeding boxes, and into the water.
(set: 1st of $amphibian to it + 200)
[[continue->ecological succession]] The hatchery workers release thirty (either: "snakes", "turtles", "lizards") into the forest.
(set: 1st of $reptile to it + 30)
[[Continue->ecological succession]]
The fish hatchery can release new species of fish into the wetlands for you.
[[Release one hundred small fish->100smallfish]]
[[Release five hundred small fish->2000smallfish]]
[[Release ten mid-size fish->10midfish]]
[[Release two top predator fish->2topfish]]
<p align=right> [[I need to do something else instead.->interface]] </p>
Oh no!
Someone hit a wrong button on a computer, causing the breeders, aviaries, and hatcheries to release all the top predators into the forest!
[[Order them to cach the animals before it's too late->interface]]
(link: "Release the kraken!") [(set: 1st of $topcanid to it +10, 1st of $topfeline to it +10, 1st of $topavian to it +10, 1st of $topfish to it +10) (goto: "ecological succession") ]
Two hundred (either: "rabbits", "mice", "squirrels", "voles", "chipmunks", "rats", "genetically engineered intelligent rabbits") run into the forest, in search of their new homes.
(set: 1st of $smallherb to it + 200)
<p align=right> [[Continue->ecological succession]] </p>
Five hundred (either: "rabbits", "mice", "squirrels", "voles", "chipmunks", "rats") run into the forest, (either: "eating everything in front of them", "to find a new home").
(set: 1st of $smallherb to it + 500)
<p align=right> [[Continue->ecological succession]] </p>
Ten (either: "elk", "moose", "caribou") lumber away, into the forest.
(set: 1st of $largeherb to it + 10)
<p align=right> [[Continue->ecological succession]] </p>
Ten (either: "foxes", "coyote") rush off into the forest.
(set: 1st of $midcarn to it + 10)
<p align=right> [[Continue->ecological succession]] </p>
Two (either: "lynx", "cougars", "mountain lions") dash away from their handlers, and into the forest.
(set: 1st of $topfeline to it + 2)
<p align=right> [[Continue->ecological succession]] </p>
Two (either: "bears", "wolves") dash away from their cages, and into the forest.
(set: 1st of $topcanid to it + 2)
<p align=right> [[Continue->ecological succession]] </p>
Five (either: "beavers", "muskrats", "otters") slide away into the water, in search of a new home in the forest.
(set: 1st of $wetmammal to it + 5)
<p align=right> [[Continue->ecological succession]] </p>
Two hundred newly hatched (either: "goldfinch", "bluejays", "greyjays", "cardinals", "chickadees", "woodpeckers") fly off into the forest, singing as they go.
(set: 1st of $smallbird to it + 200)
<p align=right> [[Continue->ecological succession]] </p>
Five hundred newly hatched (either: "goldfinch", "bluejays", "greyjays", "cardinals", "chickadees", "woodpeckers") fly off into the forest, (either: "singing", "dropping turds", "swooping and singing happily") as they go.
(set: 1st of $smallbird to it + 500)
<p align=right> [[Continue->ecological succession]] </p>
Ten (either: "falcons", "hawks", "owls") fly into the forest, in search of a new home.
(set: 1st of $midbird to it +10)
<p align=right> [[Continue->ecological succession]] </p>
Two eagles fly away into the forest, in search of a new home.
(set: 1st of $topavian to it + 2)
<p align=right> [[Continue->ecological succession]] </p>
Twenty (either: "white-tailed deer", "reindeer", "wild boar") run into the forest, in search of their new homes.
(set: 1st of $midherb to it + 20)
<p align=right> [[Continue->ecological succession]] </p>
Ten (either: "ravens", "crows", "magpies", "vultures"), blessed by a druid of The Morrigan, fly off into the forest in search of (either: "a new home", "dead things to eat", "shiny things to collect in their nests", "a witch's circle", "a writer of gothic horror novels to inspire").
(set: 1st of $scavenger to it + 10 )
<p align=right> [[Continue->ecological succession]] </p>
The fish hatchery workers release one hundred (either: "minnows", "crayfish", "pinkeen") into the wetlands.
(set: 1st of $smallfish to it + 100)
<p align=right> [[Continue->ecological succession]] </p>
The fish hatchery workers release ten (either: "bass", "trout", "catfish") into the wetlands.
(set: 1st of $midfish to it + 10)
<p align=right> [[Continue->ecological succession]] </p>
The fish hatchery workers release two (either: "salmon", "pike", "sturgeon") into the rivers and wetlands.
(set: 1st of $topfish to it + 2)
<p align=right> [[Continue->ecological succession]] </p>
The fish hatchery workers release five hundred (either: "minnows", "crayfish", "pinkeen") into the wetlands.
(set: 1st of $smallfish to it + 500)
<p align=right> [[Continue->ecological succession]] </p>
The greenhouse workers plant one thousand (either: "oaks", "maples", "alders", "cherry trees", "chestnut trees", "rowan trees") in the forest.
(set: 1st of $broadleaf to it + 1000)
<p align=right> [[Continue->ecological succession]] </p>
The greenhouse workers plant one thousand (either: "cedar", "spruce", "pine") trees in the forest.
(set: 1st of $evergreen to it +1000)
<p align=right> [[Continue->ecological succession]] </p>
The greenhouse workers plant ten thousand (either: "grass clumps", "flowers", "ferns") in the forest.
(set: 1st of $landplant to it +10000)
<p align=right> [[Continue->ecological succession]] </p>
The greenhouse workers plant ten thousand (either: "water lilies", "cattails", "pond weeds", "jewel weeds", "skunk cabbages", "reeds") in the wetlands.
(set: 1st of $aquaplant to it +10000)
<p align=right> [[Continue->ecological succession]] </p>
Your hunters have caught all of the foxes, coyotes, and other mid-level predators in the forest.
(set: 1st of $midcarn to 0)
<p align=right> [[Continue->ecological succession]] </p>
Your hunters have caught all of the lynx, mountain lions, and cougars in the forest.
(set: 1st of $topfeline to 0)
<p align=right> [[Continue->ecological succession]] </p>
Your hunters have caught all of the bears and wolves in the forest.
(set: 1st of $topcanid to 0)
<p align=right> [[Continue->ecological succession]] </p>
Your hunters have caught all of the eagles in the forest.
(set: 1st of $topavian to 0)
<p align=right> [[Continue->ecological succession]] </p>
Your anglers have caught all of the top predator fish in the forest.
(set: 1st of $topfish to 0)
<p align=right> [[Continue->ecological succession]] </p>
Your hunters have caught all of the deer and wild boar in the forest.
(set: 1st of $midherb to 0)
<p align=right> [[Continue->ecological succession]] </p>
Your hunters have caught all of the elk, moose, and caribou in the forest.
(set: 1st of $largeherb to 0)
<p align=right> [[Continue->ecological succession]] </p>
The geneticists release the virus. Within a few days, all the land mammals peacefully pass away in their sleep.
(set: 1st of $smallherb to 0, 1st of $midherb to 0, 1st of $largeherb to 0, 1st of $midcarn to 0, 1st of $topfeline to 0, 1st of $topcanid to 0, 1st of $wetmammal to 0)
<p align=right> [[Continue->ecological succession]] </p>
The geneticists release the virus. Within a few days, all the birds peacefully pass away in their sleep.
(set: 1st of $smallbird to 0, 1st of $midbird to 0, 1st of $topavian to 0, 1st of $scavenger to 0, 1st of $wetbird to 0)
<p align=right> [[Continue->ecological succession]] </p>
The geneticists release the virus. Within a few days, all the fish peacefully pass away in their sleep.
(set: 1st of $smallfish to 0, 1st of $midfish to 0, 1st of $topfish to 0)
<p align=right> [[Continue->ecological succession]] </p>
The geneticists release the virus. Within a few days, all the reptiles and amphibians peacefully pass away in their sleep.
(set: 1st of $reptile to 0, 1st of $amphibian to 0)
<p align=right> [[Continue->ecological succession]] </p>
Ten (either: "ducks", "loons", "herons", "cranes", "gulls", "kingfishers") fly off into the wetlands.
(set: 1st of $wetbird to it + 10 )
<p align=right> [[Continue->ecological succession]] </p>