From 82572754ddf188b9a97dc2dc6902e9859f37c5a1 Mon Sep 17 00:00:00 2001 From: dP Date: Mon, 18 May 2020 18:50:12 +0300 Subject: Fix: Trees disappear completely after a few years when they're not allowed to spread --- src/tree_cmd.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/tree_cmd.cpp b/src/tree_cmd.cpp index 012904fdc..cdc986920 100644 --- a/src/tree_cmd.cpp +++ b/src/tree_cmd.cpp @@ -632,6 +632,13 @@ static void TileLoopTreesAlps(TileIndex tile) MarkTileDirtyByTile(tile); } +static bool CanPlantExtraTrees(TileIndex tile) +{ + return ((_settings_game.game_creation.landscape == LT_TROPIC && GetTropicZone(tile) == TROPICZONE_RAINFOREST) ? + _settings_game.construction.extra_tree_placement != ETP_NONE : + _settings_game.construction.extra_tree_placement == ETP_ALL); +} + static void TileLoop_Trees(TileIndex tile) { if (GetTreeGround(tile) == TREE_GROUND_SHORE) { @@ -682,12 +689,7 @@ static void TileLoop_Trees(TileIndex tile) FALLTHROUGH; case 2: { // add a neighbouring tree - /* Don't plant extra trees if that's not allowed. */ - if ((_settings_game.game_creation.landscape == LT_TROPIC && GetTropicZone(tile) == TROPICZONE_RAINFOREST) ? - _settings_game.construction.extra_tree_placement == ETP_NONE : - _settings_game.construction.extra_tree_placement != ETP_ALL) { - break; - } + if (!CanPlantExtraTrees(tile)) break; TreeType treetype = GetTreeType(tile); @@ -715,6 +717,9 @@ static void TileLoop_Trees(TileIndex tile) /* more than one tree, delete it */ AddTreeCount(tile, -1); SetTreeGrowth(tile, 3); + } else if (!CanPlantExtraTrees(tile)) { + /* if trees can't spread just plant a new one to prevent deforestation */ + SetTreeGrowth(tile, 0); } else { /* just one tree, change type into MP_CLEAR */ switch (GetTreeGround(tile)) { -- cgit v1.2.3-54-g00ecf