Changeset - r24206:5b53b3a6898e
[Not reviewed]
master
0 1 0
dP - 4 years ago 2020-05-18 15:50:12
dp@dpointer.org
Fix: Trees disappear completely after a few years when they're not allowed to spread
1 file changed with 11 insertions and 6 deletions:
0 comments (0 inline, 0 general)
src/tree_cmd.cpp
Show inline comments
 
@@ -632,6 +632,13 @@ static void TileLoopTreesAlps(TileIndex 
 
	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 til
 
						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 til
 
				/* 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)) {
0 comments (0 inline, 0 general)