Index: /orxonox/trunk/core/player.cc
===================================================================
--- /orxonox/trunk/core/player.cc	(revision 1925)
+++ /orxonox/trunk/core/player.cc	(revision 1926)
@@ -78,7 +78,8 @@
   shootLaser->addShootExt(xCor, yCor, zCor, .1, .4, .0);
   shootLaser->addShootExt(xCor, yCor, zCor, -0.1, .4, .0);
-    shootRocket->addBackParable(xCor, yCor, zCor);
-    shootRocket->addSideAcc(xCor, yCor, zCor, RIGHT);
-    shootRocket->addSideAcc(xCor, yCor, zCor, LEFT);
+   shootRocket->addBackParable(xCor, yCor, zCor);
+  shootRocket->addSideAcc(xCor, yCor, zCor, RIGHT);
+  shootRocket->addSideAcc(xCor, yCor, zCor, LEFT);
+  shootRocket->addRotater(xCor, yCor, zCor);
   //cout << "Player::shoot" << endl;
 }
Index: /orxonox/trunk/core/shoot_rocket.cc
===================================================================
--- /orxonox/trunk/core/shoot_rocket.cc	(revision 1925)
+++ /orxonox/trunk/core/shoot_rocket.cc	(revision 1926)
@@ -31,4 +31,5 @@
   step = 1.0;
   inhibitor =0;
+  rotateAngle = 0.0;
 }
 
@@ -71,6 +72,14 @@
 	    }
 	  break;
+	
+	case ROTATER:
+	  // tmpShoot->xCor+=tmpShoot->xVel;
+	  tmpShoot->yCor+=tmpShoot->yVel;
+	  //tmpShoot->zCor+=tmpShoot->zVel;
+	  //tmpShoot->xVel+=tmpShoot->xVel;
+	  break;
+	
 	}
-	  
+      
       glScalef(0.1, 0.1, 0.1);
       glutWireCube(1.0);
@@ -134,45 +143,55 @@
 void ShootRocket::addBackParable(float x, float y, float z)
 {
-  inhibitor++;
-  if (inhibitor >= 10)
+  
+  //cout << "ShootRocket::addShoot" << endl;
+  shoot* sh = new shoot;
+  sh->type = BACKPARABLE;
+  sh->xCor = x; sh->yCor = y; sh->zCor = z;
+  sh->xVel = (-1+(float)random() / 1000000000/step)/5; 
+  sh->yVel = -.3;
+  sh->zVel = (1-(float)random() / 1000000000/step)/5;
+  sh->xAcc = 0; sh->yAcc = .01/step; sh->zAcc = 0;
+  sh->next = lastShoot;
+  lastShoot = sh;
+  inhibitor =0;
+}
+void ShootRocket::addSideAcc(float x, float y, float z, enum RocketDirection direction)
+{
+  //cout << "ShootRocket::addShoot" << endl;
+  shoot* sh = new shoot;
+  sh->type = SIDEACC;
+  sh->xCor = x; sh->yCor = y; sh->zCor = z;
+  switch (direction)
     {
-      //cout << "ShootRocket::addShoot" << endl;
-      shoot* sh = new shoot;
-      sh->type = BACKPARABLE;
-      sh->xCor = x; sh->yCor = y; sh->zCor = z;
-      sh->xVel = (-1+(float)random() / 1000000000/step)/5; 
-      sh->yVel = -.3;
-      sh->zVel = (1-(float)random() / 1000000000/step)/5;
-      sh->xAcc = 0; sh->yAcc = .01/step; sh->zAcc = 0;
-      sh->next = lastShoot;
-      lastShoot = sh;
-      inhibitor =0;
+    case LEFT:
+      sh->xVel = -.5; sh->yVel = .05; sh->zVel = 0;
+      break;
+    case RIGHT:
+      sh->xVel = .5; sh->yVel = .05; sh->zVel = 0;
+      break;
     }
-}
-void ShootRocket::addSideAcc(float x, float y, float z, enum RocketDirection direction)
-{
-  inhibitor++;
-  if (inhibitor >= 10)
-    {
-      //cout << "ShootRocket::addShoot" << endl;
-      shoot* sh = new shoot;
-      sh->type = SIDEACC;
-      sh->xCor = x; sh->yCor = y; sh->zCor = z;
-      switch (direction)
-	{
-	case LEFT:
-	  sh->xVel = -.5; sh->yVel = .05; sh->zVel = 0;
-	  break;
-	case RIGHT:
-	  sh->xVel = .5; sh->yVel = .05; sh->zVel = 0;
-	  break;
-	}
-      sh->xAcc = .9; sh->yAcc = .02; sh->zAcc = 0;
-      sh->next = lastShoot;
-      lastShoot = sh;
-      inhibitor =0;
-    }
-}
-
+  sh->xAcc = .9; sh->yAcc = .02; sh->zAcc = 0;
+  sh->next = lastShoot;
+  lastShoot = sh;
+  inhibitor =0;
+
+}
+void ShootRocket::addRotater(float x, float y, float z)
+{
+  
+  static float radius = 2;
+  rotateAngle+=.5;
+  //cout << "ShootRocket::addShoot" << endl;
+  shoot* sh = new shoot;
+  sh->type = ROTATER;
+  sh->xCor = x+radius*sin(rotateAngle); sh->yCor = y; sh->zCor = z+radius*cos(rotateAngle);
+  sh->xVel = .05*sin(rotateAngle);
+  sh->yVel = .4;
+  sh->xVel = .05*cos(rotateAngle);
+  sh->xAcc = 0; sh->yAcc = .01/step; sh->zAcc = 0;
+  sh->next = lastShoot;
+  lastShoot = sh;
+  inhibitor =0;
+}
 
 void ShootRocket::setShootStep(float step) 
Index: /orxonox/trunk/core/shoot_rocket.h
===================================================================
--- /orxonox/trunk/core/shoot_rocket.h	(revision 1925)
+++ /orxonox/trunk/core/shoot_rocket.h	(revision 1926)
@@ -5,4 +5,5 @@
 /* openGL Headers */
 #include <GL/glut.h>
+#include <math.h>
 
 #include "stdincl.h"
@@ -10,5 +11,5 @@
 #include "npc.h"
 
-enum RocketType { HOMING, SIDEACC, BACKPARABLE};
+enum RocketType { HOMING, SIDEACC, BACKPARABLE, ROTATER};
 enum RocketDirection {LEFT, RIGHT, UP, DOWN};
 
@@ -35,9 +36,10 @@
   };
   shoot* lastShoot;
-
+  
   ShootRocket ();
   ~ShootRocket ();
   
   int inhibitor;
+  float rotateAngle;
 
   void drawShoot(void);
@@ -45,4 +47,6 @@
   void addBackParable(float x, float y, float z);
   void addSideAcc(float x, float y, float z, enum RocketDirection direction);
+  void addRotater(float x, float y, float z);
+
   void setShootStep(float step);
   void removeShoot(shoot* sh);
