Index: /code/branches/campaignHS15/data/levels/AITest.oxw
===================================================================
--- /code/branches/campaignHS15/data/levels/AITest.oxw	(revision 10957)
+++ /code/branches/campaignHS15/data/levels/AITest.oxw	(revision 10958)
@@ -162,5 +162,5 @@
 <!-- HERE ENDS DEMO FOR THE ACTIONPOINTS -->
 <!-- HERE STARTS DEMO FOR FIGHTING -->
-    
+    <!-- 
 
     <SpaceShip position="-4000, 1500, -1000" lookat="0,0,0" team=0 name="d1sd1">
@@ -238,9 +238,9 @@
         </WingmanController>
       </controller>
-    </SpaceShip> 
+    </SpaceShip>  -->
 
 <!-- HERE ENDS DEMO FOR FIGHTING -->
 <!-- HERE STARTS DEMO FOR FORMATIONS -->
-    <!-- 
+    
     <Model mesh="cube.mesh" scale=8 position="   0,2000,    0" />
     <Model mesh="cube.mesh" scale=8 position="   0,2000,-2000" />
@@ -291,5 +291,5 @@
       </controller>
     </SpaceShip> 
-    -->
+   
 <!-- HERE ENDS DEMO FOR FORMATIONS -->
     <!-- 1 division is roughly equal to 6 AIControllers--!>
Index: /code/branches/campaignHS15/src/orxonox/controllers/ActionpointController.cc
===================================================================
--- /code/branches/campaignHS15/src/orxonox/controllers/ActionpointController.cc	(revision 10957)
+++ /code/branches/campaignHS15/src/orxonox/controllers/ActionpointController.cc	(revision 10958)
@@ -298,6 +298,4 @@
             }
         }
-
-
     }
     /**
@@ -307,10 +305,8 @@
     void ActionpointController::setProtect (ControllableEntity* protect)
     {
-
         this->protect_ = protect;
     }
     ControllableEntity* ActionpointController::getProtect ()
     {
-
         return this->protect_;
     }
Index: /code/branches/campaignHS15/src/orxonox/controllers/FightingController.h
===================================================================
--- /code/branches/campaignHS15/src/orxonox/controllers/FightingController.h	(revision 10957)
+++ /code/branches/campaignHS15/src/orxonox/controllers/FightingController.h	(revision 10958)
@@ -60,7 +60,6 @@
             virtual void maneuver(); //<! sets this->targetPosition_, which is a Vector3 of where this ship flies. Decision is made based on
                              //<! the distance to enemy, if being attacked, dodge() is called, otherwise ship just flies towards this->target_.
-            bool bShooting_;
+            bool bShooting_;    //<! if true, ship shoots each tick
             bool canFire(); //<! check if target_ is in radius and if this is looking at target_
-            virtual void action(){};//<! action() is called in regular intervals managing the bot's behaviour. Only gets called by MasterController, is implemented in ActionpointController
         protected:
             void setTarget(ControllableEntity* target); //set a target to shoot at
Index: /code/branches/campaignHS15/src/orxonox/controllers/FlyingController.cc
===================================================================
--- /code/branches/campaignHS15/src/orxonox/controllers/FlyingController.cc	(revision 10957)
+++ /code/branches/campaignHS15/src/orxonox/controllers/FlyingController.cc	(revision 10958)
@@ -45,4 +45,5 @@
         this->spread_ = 200;
         this->tolerance_ = 80;
+        this->bCopyOrientation_ = true;
     }
     FlyingController::~FlyingController() 
@@ -266,5 +267,5 @@
              + (orient* (targetRelativePosition)));
         //let ship finish rotating. also don't call copyOrientation too often as it is a slow function. Don't know how to do it different
-        if (static_cast<int>(rnd(1.0f) * 100) % 3 == 0)
+        if (this->bCopyOrientation_)
             this->setTargetOrientation (orient);
         //set a position to fly to
Index: /code/branches/campaignHS15/src/orxonox/controllers/FlyingController.h
===================================================================
--- /code/branches/campaignHS15/src/orxonox/controllers/FlyingController.h	(revision 10957)
+++ /code/branches/campaignHS15/src/orxonox/controllers/FlyingController.h	(revision 10958)
@@ -72,5 +72,6 @@
             FormationMode::Value getFormationMode() const
                 { return this->formationMode_; }
-
+            bool bCopyOrientation_;                             //<! set to true by default, MasterController sets it in its tick(),
+                                                                //<! if true, this will set its leader orientation as target orientation in action()
         protected:
             void stopMoving();                                  //<! don't call moveToTargetPosition() in tick, call lookAtTarget() from FightingController instead
@@ -86,6 +87,7 @@
             void setTargetOrientation(ControllableEntity* target);      //<! preset a desired orientation
             virtual void boostControl();                                //<! boost if you can
-            void keepFormation (const ControllableEntity* leaderEntity, Vector3& targetRelativePosition);   //<! preset targetPosition, so that 
-                                                                                                            //<! this stays in a certain position relative to leader      
+            void keepFormation (const ControllableEntity* leaderEntity, 
+                                Vector3& targetRelativePosition);   //<! preset targetPosition, so that 
+                                                                    //<! this stays in a certain position relative to leader      
             
             FormationMode::Value formationMode_;
Index: /code/branches/campaignHS15/src/orxonox/controllers/MasterController.cc
===================================================================
--- /code/branches/campaignHS15/src/orxonox/controllers/MasterController.cc	(revision 10957)
+++ /code/branches/campaignHS15/src/orxonox/controllers/MasterController.cc	(revision 10958)
@@ -35,5 +35,5 @@
 
     //Leaders share the fact that they have Wingmans
-    MasterController::MasterController(Context* context) : FightingController(context)
+    MasterController::MasterController(Context* context) : Controller(context)
     {
         RegisterObject(MasterController);
@@ -120,5 +120,7 @@
                 }
                 //orxout (internal_error) << "Executing action of Controller # " << this->indexOfCurrentController_ << endl;
-                this->controllers_.at(this->indexOfCurrentController_)->action();
+                this->controllers_.at(this->indexOfCurrentController_)->action();    
+                //bCopyOrientation makes ship oscillate like crazy if set to true all the time.s
+                this->controllers_.at(this->indexOfCurrentController_)->bCopyOrientation_ = this->ticks_ % 3 == 0;
 
                 ++this->numberOfTicksPassedSinceLastActionCall_;
Index: /code/branches/campaignHS15/src/orxonox/controllers/MasterController.h
===================================================================
--- /code/branches/campaignHS15/src/orxonox/controllers/MasterController.h	(revision 10957)
+++ /code/branches/campaignHS15/src/orxonox/controllers/MasterController.h	(revision 10958)
@@ -30,5 +30,6 @@
 #define _MasterController_H__
 
-#include "controllers/FightingController.h"
+#include "controllers/Controller.h"
+#include "controllers/ActionpointController.h"
 #include "tools/interfaces/Tickable.h"
 
@@ -50,5 +51,5 @@
       </Pawn>
     */
-    class _OrxonoxExport MasterController : public FightingController, public Tickable
+    class _OrxonoxExport MasterController : public Controller, public Tickable
     {
         public:
@@ -67,5 +68,5 @@
           
         private:
-            std::vector<WeakPtr<FightingController> > controllers_;  //<! vector of controllers, which action(), canFire() and maneuver() methods are to be called
+            std::vector<WeakPtr<ActionpointController> > controllers_;  //<! vector of controllers, which action(), canFire() and maneuver() methods are to be called
             size_t indexOfCurrentController_;                        //<! index of current controller
             unsigned int numberOfTicksPassedSinceLastActionCall_;
