Index: code/branches/AI_HS15/src/orxonox/controllers/DivisionController.h
===================================================================
--- code/branches/AI_HS15/src/orxonox/controllers/DivisionController.h	(revision 10680)
+++ code/branches/AI_HS15/src/orxonox/controllers/DivisionController.h	(revision 10681)
@@ -38,15 +38,83 @@
     {
         public:
-        DivisionController(Context* context);
-        virtual ~DivisionController();
+        	DivisionController(Context* context);
+        	virtual ~DivisionController();
 
-        //virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+        	//virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
 
+        	//Using british military aircraft formations
+        	enum FormationMode {VEE,FINGER4,DIAMOND, WALL};
+        	void setFormationMode(FormationMode val);
+     		inline FormationMode getFormationMode() const
+           		{ return this->formationMode_; }
+			
+			virtual void doFire();
 
+			//WAYPOINT FUNCTIONS`
+            void addWaypoint(WorldEntity* waypoint);
+            WorldEntity* getWaypoint(unsigned int index) const;
 
+            inline void setAccuracy(float accuracy)
+                { this->squaredaccuracy_ = accuracy*accuracy; }
+            inline float getAccuracy() const
+                { return sqrt(this->squaredaccuracy_); }
+            void updatePointsOfInterest(std::string name, float distance);
+            void manageWaypoints();
 
         protected:
 
-    
+	     	//Target enemy, set by fleet controller.
+	        WeakPtr<Pawn> target_;
+	        bool bHasTargetPosition_;
+			Vector3 targetPosition_;
+			bool bHasTargetOrientation_;
+			Quaternion targetOrientation_;
+			void setTargetPosition(const Vector3& target);
+			void searchRandomTargetPosition();
+
+			void setTargetOrientation(const Quaternion& orient);
+			void setTargetOrientation(Pawn* target);
+
+			virtual void positionReached() {}
+
+			static bool sameTeam(ControllableEntity* entity1, ControllableEntity* entity2, Gametype* gametype); // hack
+
+
+			void setTarget(Pawn* target);
+
+			void searchNewTarget();
+		    void forgetTarget();
+
+			void targetDied();
+			bool bShooting_;
+			void aimAtTarget();
+
+            bool isCloseAtTarget(float distance) const;
+            bool isLookingAtTarget(float angle) const;
+
+	        //Has nothing to do with desiredRelativePosition_,
+	        //is set by fleet controller.
+	        Vector3* desiredAbsolutePosition_;
+
+    		enum Maneuver {NONE, SPIN, TURN180};
+    		Maneuver maneuver_;
+
+    		void moveToPosition(const Vector3& target);
+		    void moveToTargetPosition();
+		    void absoluteMoveToPosition(const Vector3& target);
+		    void copyOrientation(const Quaternion& orient);
+		    void copyTargetOrientation();
+
+			void turn180Init();
+		    void spinInit();
+		    void spin();
+      		void turn180();
+
+	        //WAYPOINT DATA
+	        std::vector<WeakPtr<WorldEntity> > waypoints_;
+	        size_t currentWaypoint_;
+	        float squaredaccuracy_;
+	        WorldEntity* defaultWaypoint_;
+	    
         private:
     };
Index: code/branches/AI_HS15/src/orxonox/controllers/FleetController.h
===================================================================
--- code/branches/AI_HS15/src/orxonox/controllers/FleetController.h	(revision 10680)
+++ code/branches/AI_HS15/src/orxonox/controllers/FleetController.h	(revision 10681)
@@ -67,36 +67,36 @@
     {
         public:
-        FleetController(Context* context);
-        virtual ~FleetController();
+          FleetController(Context* context);
+          virtual ~FleetController();
 
 
-        virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+          virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
 
-        //gameGoal_ is to be set in XML
-        //DOMINATE is default, makes AI want to be the only team alive
-        //MOVE makes a fleet move to a set absolute position (set in variable goalPosition_)
-        //DESTROY makes a fleet destroy a target (set in variable goalTarget_)
-        //PROTECT makes a fleet protect a target (set in variable goalProtect_)
-        enum GameGoal {DOMINATE, MOVE, DESTROY, PROTECT};
-        
-        /*void setGameGoal(GameGoal gameGoal)
-           { this->gameGoal_ = gameGoal; }
-        GameGoal getGameGoal() const
-           { return this->gameGoal_; }
-        
-        void setGoalPosition(Vector3* goalPosition)
-           { this->goalPosition_ = goalPosition; }
-        Vector3* getGoalPosition() const
-           { return this->goalPosition_; }
-        
-        void setGoalTarget(Pawn* goalTarget)
-           { this->goalTarget_ = goalTarget; }
-        Pawn* getGoalTarget() const
-           { return this->goalTarget_; }
-        
-        void setGoalProtect(Pawn* goalProtect)
-           { this->goalProtect_ = goalProtect; }
-        Pawn* getGoalProtect() const
-           { return this->goalProtect_; }*/
+          //gameGoal_ is to be set in XML
+          //DOMINATE is default, makes AI want to be the only team alive
+          //MOVE makes a fleet move to a set absolute position (set in variable goalPosition_)
+          //DESTROY makes a fleet destroy a target (set in variable goalTarget_)
+          //PROTECT makes a fleet protect a target (set in variable goalProtect_)
+          enum GameGoal {DOMINATE, MOVE, DESTROY, PROTECT};
+          
+          /*void setGameGoal(GameGoal gameGoal)
+             { this->gameGoal_ = gameGoal; }
+          GameGoal getGameGoal() const
+             { return this->gameGoal_; }
+          
+          void setGoalPosition(Vector3* goalPosition)
+             { this->goalPosition_ = goalPosition; }
+          Vector3* getGoalPosition() const
+             { return this->goalPosition_; }
+          
+          void setGoalTarget(Pawn* goalTarget)
+             { this->goalTarget_ = goalTarget; }
+          Pawn* getGoalTarget() const
+             { return this->goalTarget_; }
+          
+          void setGoalProtect(Pawn* goalProtect)
+             { this->goalProtect_ = goalProtect; }
+          Pawn* getGoalProtect() const
+             { return this->goalProtect_; }*/
 
 
Index: code/branches/AI_HS15/src/orxonox/controllers/LeaderController.cc
===================================================================
--- code/branches/AI_HS15/src/orxonox/controllers/LeaderController.cc	(revision 10680)
+++ code/branches/AI_HS15/src/orxonox/controllers/LeaderController.cc	(revision 10681)
@@ -59,8 +59,8 @@
     }
 //**********************************************NEW
-    void LeaderController::defaultBehaviour(float maxrand)
+   /* void LeaderController::defaultBehaviour(float maxrand)
     {  
        
-    }
+    }*/
 
 }
Index: code/branches/AI_HS15/src/orxonox/controllers/LeaderController.h
===================================================================
--- code/branches/AI_HS15/src/orxonox/controllers/LeaderController.h	(revision 10680)
+++ code/branches/AI_HS15/src/orxonox/controllers/LeaderController.h	(revision 10681)
@@ -38,18 +38,36 @@
     {
         public:
-        LeaderController(Context* context);
-        virtual ~LeaderController();
+           
+            LeaderController(Context* context);
+            virtual ~LeaderController();
 
-        virtual void tick(float dt); //<! Carrying out the targets set in action().
+            virtual void tick(float dt); //<! Carrying out the targets set in action().
 
         protected:
-        virtual void action(); //<! action() is called in regular intervals managing the bot's behaviour ~ setting targets.
-        void defaultBehaviour(float maxrand); //<! Helper function for code reusage. Some concrete commands for a bot.
+           
+            virtual void action(); //<! action() is called in regular intervals managing the bot's behaviour ~ setting targets.
+            //void defaultBehaviour(float maxrand); //<! Helper function for code reusage. Some concrete commands for a bot.
+
+
+            
+                
+            enum Mode {KEEPFORMATION, ROCKET, KILLENEMY};
+            Mode mode_;
+
+            //WEAPONSYSTEM DATA
+            std::map<std::string, int> weaponModes_; //<! Links each "weapon" to it's weaponmode - managed by setupWeapons()
+            //std::vector<int> projectiles_; //<! Displays amount of projectiles of each weapon. - managed by setupWeapons()
+            float timeout_; //<! Timeout for rocket usage. (If a rocket misses, a bot should stop using it.)
+            void setupWeapons(); //<! Defines which weapons are available for a bot. Is recalled whenever a bot was killed.
+            bool bSetupWorked; //<! If false, setupWeapons() is called.
+            int getFiremode(std::string name);
+
+            void boostControl(); //<! Sets and resets the boost parameter of the spaceship. Bots alternate between boosting and saving boost.
 
         private:
-        static const float ACTION_INTERVAL;
+            static const float ACTION_INTERVAL;
 
-        Timer actionTimer_; //<! Regularly calls action().
-           
+            Timer actionTimer_; //<! Regularly calls action().
+               
     };
 }
Index: code/branches/AI_HS15/src/orxonox/controllers/SectionController.h
===================================================================
--- code/branches/AI_HS15/src/orxonox/controllers/SectionController.h	(revision 10680)
+++ code/branches/AI_HS15/src/orxonox/controllers/SectionController.h	(revision 10681)
@@ -38,15 +38,25 @@
     {
         public:
-        SectionController(Context* context);
-        virtual ~SectionController();
+            SectionController(Context* context);
+            virtual ~SectionController();
 
-        //virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
-
+            //virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
 
 
 
         protected:
+      
+            //A division is the biggest block of spaceships.
+            //In division one section is leading, the other one always stays on the same position
+            //relative to the Leader of the leading section.
+            //In section a Wingman always stays on same position relative to the Leader.
+            //That position is desiredRelativePosition_
+            Vector3* desiredRelativePosition_;
+            
 
-    
+
+            LeaderController* leader_;
+            WingmanController* wingman_;
+        
         private:
     };
Index: code/branches/AI_HS15/src/orxonox/controllers/WingmanController.cc
===================================================================
--- code/branches/AI_HS15/src/orxonox/controllers/WingmanController.cc	(revision 10680)
+++ code/branches/AI_HS15/src/orxonox/controllers/WingmanController.cc	(revision 10681)
@@ -65,8 +65,8 @@
     }
 //**********************************************NEW
-    void WingmanController::defaultBehaviour(float maxrand)
+    /*void WingmanController::defaultBehaviour(float maxrand)
     {  
        
-    }
+    }*/
 
 }
Index: code/branches/AI_HS15/src/orxonox/controllers/WingmanController.h
===================================================================
--- code/branches/AI_HS15/src/orxonox/controllers/WingmanController.h	(revision 10680)
+++ code/branches/AI_HS15/src/orxonox/controllers/WingmanController.h	(revision 10681)
@@ -31,10 +31,10 @@
 
 
-#include "SectionController.h"
+#include "LeaderController.h"
 
 
 namespace orxonox
 {
-    class _OrxonoxExport WingmanController : public SectionController, public Tickable
+    class _OrxonoxExport WingmanController : public LeaderController
     {
         public:
@@ -46,7 +46,8 @@
         protected:
             virtual void action(); //<! action() is called in regular intervals managing the bot's behaviour ~ setting targets.
-            void defaultBehaviour(float maxrand); //<! Helper function for code reusage. Some concrete commands for a bot.
+            //void defaultBehaviour(float maxrand); //<! Helper function for code reusage. Some concrete commands for a bot.
 
 
+                     
         private:
             static const float ACTION_INTERVAL;
