diff --git a/planet/Objects.ocd/Libraries.ocd/Plant.ocd/Script.c b/planet/Objects.ocd/Libraries.ocd/Plant.ocd/Script.c
--- a/planet/Objects.ocd/Libraries.ocd/Plant.ocd/Script.c
+++ b/planet/Objects.ocd/Libraries.ocd/Plant.ocd/Script.c
@@ -189,10 +189,46 @@
 			i--;
 		}
 	}
-	SetRDir(10);
-	if (Random(2)) SetRDir(-10);
-	// Crack!
-	if (GetCon() > 50) Sound("TreeDown?");
+	Sound("TreeCrack");
+	AddEffect("TreeFall",this,1,1,this);
+}
+
+//determine a random falling direction and passes it on to the FxTreeFallTimer.
+func FxTreeFallStart(object target, proplist effect)
+{
+	effect.direction = Random(2); 
+	if (effect.direction == 0) effect.direction -= 1;
+}
+
+/**animates the falling of the tree: First 10 slow degress then speed up and play the landing sound at 80+ degrees. 
+remember that degrees range from -180 to 180.*/
+func FxTreeFallTimer(object target, proplist effect)
+{
+	//simple falling if tree is not fully grown
+	if (GetCon() <= 50){
+		SetRDir(effect.direction*10);
+	//else rotate slowly first until about 10 degree. This will be the time needed for the crack sound and makes sense as a tree will start falling slowly.
+	}else{
+		if(Abs(GetR())<10){
+				SetRDir(effect.direction*1);
+				//Turn of gravity so the tree doesn't get stuck before its done falling.
+				SetYDir(0);
+		}else{
+				//Then speed up and let gravity do the rest.
+				SetRDir(effect.direction*10);
+		}	
+	}
+	//if the tree does not lend on a cliff or sth. (is rotated more then 80 degrees in the plus or minus direction) Play the landing sound of the tree.
+	if(Abs(GetR())>80){
+		SetRDir(0);
+		if (GetCon() > 50)Sound("TreeLanding");
+		return -1;
+	}
+	//check every frame if the tree is stuck and stop rotation in that case this is necessary as a tree could get stuck before reaching 80 degrees
+	if((GetContact(-1, CNAT_Left)|GetContact(-1, CNAT_Right))>0){
+		SetRDir(0);
+		return -1;
+	}
 }
 
 /* Harvesting */
diff --git a/planet/Objects.ocd/Vegetation.ocd/Trees.ocd/Coniferous.ocd/Script.c b/planet/Objects.ocd/Vegetation.ocd/Trees.ocd/Coniferous.ocd/Script.c
--- a/planet/Objects.ocd/Vegetation.ocd/Trees.ocd/Coniferous.ocd/Script.c
+++ b/planet/Objects.ocd/Vegetation.ocd/Trees.ocd/Coniferous.ocd/Script.c
@@ -30,8 +30,9 @@
 
 public func ChopDown()
 {
+	// Use Special Vertex Mode 1 (see documentation) so the removed vertex won't come back when rotating the tree.
+	SetVertex(0, VTX_Y, 0, 1);
 	// Remove the bottom vertex
-	SetVertex(0, VTX_Y, 0, 1);
 	RemoveVertex(0);
 
 	_inherited(...);
diff --git a/planet/Sound.ocg/TreeCrack.ogg b/planet/Sound.ocg/TreeCrack.ogg
new file mode 100644
index 0000000000000000000000000000000000000000..f20f99c9e5520f1e97eadd7a28d69594a609c9a2
GIT binary patch
diff --git a/planet/Sound.ocg/TreeLanding.ogg b/planet/Sound.ocg/TreeLanding.ogg
new file mode 100644
index 0000000000000000000000000000000000000000..9f9acfc923883516edf26e7794ee20bad1facd01
GIT binary patch
