Index: /orxonox/trunk/core/player.cc
===================================================================
--- /orxonox/trunk/core/player.cc	(revision 1923)
+++ /orxonox/trunk/core/player.cc	(revision 1924)
@@ -78,5 +78,7 @@
   shootLaser->addShootExt(xCor, yCor, zCor, .1, .4, .0);
   shootLaser->addShootExt(xCor, yCor, zCor, -0.1, .4, .0);
-  shootRocket->addShoot(xCor, yCor, zCor);
+    shootRocket->addBackParable(xCor, yCor, zCor);
+    shootRocket->addSideAcc(xCor, yCor, zCor, RIGHT);
+    shootRocket->addSideAcc(xCor, yCor, zCor, LEFT);
   //cout << "Player::shoot" << endl;
 }
Index: /orxonox/trunk/core/shoot_rocket.cc
===================================================================
--- /orxonox/trunk/core/shoot_rocket.cc	(revision 1923)
+++ /orxonox/trunk/core/shoot_rocket.cc	(revision 1924)
@@ -48,9 +48,27 @@
       glPushMatrix(); 
       glTranslatef(tmpShoot->xCor, tmpShoot->yCor, tmpShoot->zCor);
-      tmpShoot->xCor+=tmpShoot->xVel;
-      tmpShoot->yCor+=tmpShoot->yVel;
-      tmpShoot->xVel+=tmpShoot->xAcc;
-      tmpShoot->yVel+=tmpShoot->yAcc;
-      
+      switch (tmpShoot->type)
+	{
+	case BACKPARABLE:
+	  tmpShoot->xCor+=tmpShoot->xVel;
+	  tmpShoot->yCor+=tmpShoot->yVel;
+	  tmpShoot->xVel+=tmpShoot->xAcc;
+	  tmpShoot->yVel+=tmpShoot->yAcc;
+	  break;
+	
+	case SIDEACC:
+	  if (tmpShoot->xVel >= .01 || tmpShoot->xVel <= -.01)
+	    {
+	      tmpShoot->xCor+=tmpShoot->xVel;
+	      tmpShoot->xVel*=tmpShoot->xAcc;
+	    }
+	  else
+	    {
+	      tmpShoot->yCor+=tmpShoot->yVel;
+	      tmpShoot->yVel+=tmpShoot->yVel*tmpShoot->yAcc;
+	    }
+	  break;
+	}
+	  
       glScalef(0.1, 0.1, 0.1);
       glutWireCube(1.0);
@@ -112,5 +130,5 @@
 }
 
-void ShootRocket::addShoot(float x, float y, float z)
+void ShootRocket::addBackParable(float x, float y, float z)
 {
   inhibitor++;
@@ -119,4 +137,5 @@
       //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; 
@@ -129,16 +148,30 @@
     }
 }
+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 = -.3; sh->yVel = .05; sh->zVel = 0;
+	   cout << "Left\n";
+	  break;
+	case RIGHT:
+	  sh->xVel = .3; sh->yVel = .05; sh->zVel = 0;
+	  break;
+	}
+      sh->xAcc = .9; sh->yAcc = .02; sh->zAcc = 0;
+      sh->next = lastShoot;
+      lastShoot = sh;
+      inhibitor =0;
+    }
+}
 
-void ShootRocket::addShootExt(float x, float y, float z, 
-			     float xVel, float yVel, float zVel)
-{
-  //cout << "ShootRocket::addShootExtended" << endl;
-  shoot* sh = new shoot;
-  sh->xCor = x; sh->yCor = y; sh->zCor = z;
-  sh->xVel = xVel/step; sh->yVel = yVel/step; sh->zVel = zVel/step;
-  sh->xAcc = 0; sh->yAcc = .02; sh->zAcc = 0;
-  sh->next = lastShoot;
-  lastShoot = sh;
-}
 
 void ShootRocket::setShootStep(float step) 
Index: /orxonox/trunk/core/shoot_rocket.h
===================================================================
--- /orxonox/trunk/core/shoot_rocket.h	(revision 1923)
+++ /orxonox/trunk/core/shoot_rocket.h	(revision 1924)
@@ -10,4 +10,7 @@
 #include "npc.h"
 
+enum RocketType { HOMING, SIDEACC, BACKPARABLE};
+enum RocketDirection {LEFT, RIGHT, UP, DOWN};
+
 class ShootRocket {
 
@@ -17,4 +20,5 @@
   /* a list of all shoot-amental objects */
   struct shoot {
+    enum RocketType type;
     shoot *next;
     float xCor;
@@ -39,6 +43,6 @@
   void drawShoot(void);
   void addShoot(shoot* sh);
-  void addShoot(float x, float y, float z);
-  void addShootExt(float x, float y, float z, float xVel, float yVel, float zVel);
+  void addBackParable(float x, float y, float z);
+  void addSideAcc(float x, float y, float z, enum RocketDirection direction);
   void setShootStep(float step);
   void removeShoot(shoot* sh);
