Index: code/branches/wagnis_HS18/data/levels/Wagnis_testlevel.oxw
===================================================================
--- code/branches/wagnis_HS18/data/levels/Wagnis_testlevel.oxw	(revision 12149)
+++ code/branches/wagnis_HS18/data/levels/Wagnis_testlevel.oxw	(revision 12150)
@@ -32,5 +32,5 @@
     <SpawnPoint position="-100, 45, 75" lookat="0,45,75" spawnclass=SpaceShip pawndesign=wagnisCursor />
 
-<WagnisGameboard position="20,20,20" connections_string="1=2+3, 2=1, 3=1">
+<WagnisGameboard position="20,20,20" connections_string="1=2+4+5, 2=1+3, 3=2+4, 4=3+1, 5=1+6, 6=7+5, 7=6+8, 8=7">
 
 
Index: code/branches/wagnis_HS18/src/modules/wagnis/Wagnis.cc
===================================================================
--- code/branches/wagnis_HS18/src/modules/wagnis/Wagnis.cc	(revision 12149)
+++ code/branches/wagnis_HS18/src/modules/wagnis/Wagnis.cc	(revision 12150)
@@ -16,6 +16,8 @@
     this->gameStage = NOT_READY;
     this->active_player = 1;
-
-    int n = 8;
+    this->initial_reinforcements_left = 5;
+    this->empty_provinces_left = 0;
+
+    int n = 3;
     for(int i = 0;i < n;i++){
         WagnisPlayer* p = new WagnisPlayer(context);
@@ -41,6 +43,8 @@
 
     this->gameStage = CHOOSE_PROVINCE_STAGE;
+    this->empty_provinces_left = this->provinceCount();
     this->players.at(0)->gameStage = this->gameStage;
-    this->players.at(0)->is_active = true;
+    this->players.at(0)->setActive(true);
+    this->players.at(0)->reinforcements = 0;
     orxout()<<"Player "<<1<<"\'s turn. Please choose province."<<endl;
 }
@@ -66,17 +70,30 @@
     switch(this->gameStage){
         case CHOOSE_PROVINCE_STAGE:{
-            player->is_active = false;
-            if(this->active_player < this->players.size()){
-                this->active_player++;
+            player->setActive(false);
+            this->empty_provinces_left -= 1;
+            if(this->empty_provinces_left > 0){
+                //Still empty provinces left
+                orxout()<<"DEBUG: Empty provs: "<<this->empty_provinces_left<<endl;
+
+                if(this->active_player < this->players.size()){
+                    this->active_player++;
+                }else{
+                    this->active_player = 1;
+                }
+
                 WagnisPlayer* next = this->players[this->active_player - 1];
                 next->gameStage = CHOOSE_PROVINCE_STAGE;
-                next->is_active = true;
+                next->setActive(true);
+                next->reinforcements = 0;
                 orxout()<<"Player "<<next->Player_ID<<"\'s turn. Please choose province."<<endl;
             }else{
+                //no empty provinces left
+                orxout()<<"DEBUG: Empty provs: "<<this->empty_provinces_left<<endl;
                 this->active_player = 1;
                 WagnisPlayer* next = this->players[this->active_player - 1];
                 next->gameStage = REINFORCEMENT_STAGE;
                 this->gameStage = REINFORCEMENT_STAGE;
-                next->is_active = true;
+                next->setActive(true);
+                next->reinforcements = 1;
                 orxout()<<"Player "<<next->Player_ID<<"\'s turn. Reinforcement."<<endl;
             }
@@ -84,4 +101,33 @@
         }
         case REINFORCEMENT_STAGE:{
+            
+            if(this->initial_reinforcements_left > 0){
+                player->setActive(false);
+                if(this->active_player == this->players.size()){
+                    //Last player finished this round of initial troops.
+                    this->initial_reinforcements_left -= 1;
+                    WagnisPlayer* next = this->players.at(0);
+                    this->active_player = 1;
+                    next->setActive(true);
+                    next->gameStage = REINFORCEMENT_STAGE;
+                    if(this->initial_reinforcements_left > 0){
+                        //Still more troops left to place and player 1 is next.
+                        next->reinforcements = 1;
+                    }else{
+                        //No more troops left to place and player 1 is next.
+                        next->reinforcements = provincesOfPlayerCounter(1);
+                    }
+                }else{
+                    //Player who finished was not the last player
+                    WagnisPlayer* next = this->players.at(this->active_player);
+                    this->active_player += 1;
+                    next->setActive(true);
+                    next->gameStage = REINFORCEMENT_STAGE;
+                    next->reinforcements = 1;
+                }
+                break;
+            }
+            //Standard Reinforcement
+
             player->gameStage = ATTACK_STAGE;
             this->gameStage = ATTACK_STAGE;
@@ -96,5 +142,5 @@
         }
         case MOVE_STAGE:{
-            player->is_active = false;
+            player->setActive(false);
             if(this->active_player < this->players.size()){
                 this->active_player++;
@@ -106,5 +152,5 @@
             next->gameStage = REINFORCEMENT_STAGE;
             this->gameStage = REINFORCEMENT_STAGE;
-            next->is_active = true;
+            next->setActive(true);
             break;
         }
@@ -143,4 +189,33 @@
 }
 
+//Counts legit provinces(not including buttons)
+int Wagnis::provinceCount(){
+    int n = 0;
+    for(WagnisProvince* p: this->gameBoard->provs){
+        if(p != nullptr){
+            if(p->ID < 1000){
+                n++;
+            }
+        }else{
+            orxout()<<"Nullpointer found in provines!!!"<<endl;
+        }
+    }
+    return n;
+}
+
+int Wagnis::provincesOfPlayerCounter(int player){
+    int n = 0;
+    for(WagnisProvince* p:this->gameBoard->provs){
+        if(p != nullptr){
+            if(p->getOwner_ID() == player){
+                n++;
+            }
+        }else{
+            orxout()<<"Nullpointer found in provines!!!"<<endl;
+        }
+    }
+    return n;
+}
+
 
 
Index: code/branches/wagnis_HS18/src/modules/wagnis/Wagnis.h
===================================================================
--- code/branches/wagnis_HS18/src/modules/wagnis/Wagnis.h	(revision 12149)
+++ code/branches/wagnis_HS18/src/modules/wagnis/Wagnis.h	(revision 12150)
@@ -46,8 +46,12 @@
         private:
         int active_player;
+        int initial_reinforcements_left;
+        int empty_provinces_left;
         GameStage gameStage;
         std::vector<WagnisPlayer*> players;
         void createGame();
         bool findGameBoard();
+        int provinceCount();
+        int provincesOfPlayerCounter(int);
     };
 }
Index: code/branches/wagnis_HS18/src/modules/wagnis/WagnisPlayer.cc
===================================================================
--- code/branches/wagnis_HS18/src/modules/wagnis/WagnisPlayer.cc	(revision 12149)
+++ code/branches/wagnis_HS18/src/modules/wagnis/WagnisPlayer.cc	(revision 12150)
@@ -80,4 +80,5 @@
                             {
                                 this->target_province->setTroops(this->target_province->getTroops()+1);
+                                this->reinforcements -= 1;
                                 orxout()<<"Province "<<this->target_province->getID()<<" owned by Player "<<this->target_province->getOwner_ID()<<" troops: "<<this->target_province->getTroops()<<endl;
                             }
@@ -89,5 +90,7 @@
 
                         if (checkMove(ATTACK))
+                        
                         {
+                            orxout()<<"Attack move check returned valid"<<endl;
                             while ((this->origin_province->getTroops() > 1) && (this->target_province->getTroops() > 0)) //still troops available
                             {
@@ -199,4 +202,6 @@
                                 this->origin_province->setTroops(1);
                             }
+                        }else{
+                            orxout()<<"Attack move check returned false"<<endl;
                         }
                         
@@ -337,3 +342,12 @@
             return b;    
     }
+
+    void WagnisPlayer::setActive(bool b){
+        this->is_active = b;
+        if(b == true) orxout()<<"Player "<<this->Player_ID<<"\'s turn"<<endl;
+    }
+
+    bool WagnisPlayer::isActive() const {
+        return this->is_active;
+    }
 }
Index: code/branches/wagnis_HS18/src/modules/wagnis/WagnisPlayer.h
===================================================================
--- code/branches/wagnis_HS18/src/modules/wagnis/WagnisPlayer.h	(revision 12149)
+++ code/branches/wagnis_HS18/src/modules/wagnis/WagnisPlayer.h	(revision 12150)
@@ -36,4 +36,6 @@
         void moveTroops(WagnisProvince*,WagnisProvince*);
         std::string toString();
+        void setActive(bool);
+        bool isActive() const;
 
 
@@ -42,5 +44,4 @@
         GameStage gameStage;
         bool province_selection_changed;
-        bool is_active;
         int Player_ID;
         WagnisGameboard* gameBoard;
@@ -55,4 +56,7 @@
         int second3(int, int, int);
         int second2(int, int);
+
+        private:
+        bool is_active;
     };
 }
Index: code/branches/wagnis_HS18/src/modules/wagnis/WagnisProvince.cc
===================================================================
--- code/branches/wagnis_HS18/src/modules/wagnis/WagnisProvince.cc	(revision 12149)
+++ code/branches/wagnis_HS18/src/modules/wagnis/WagnisProvince.cc	(revision 12150)
@@ -56,7 +56,7 @@
             case 2: this->setRadarObjectColour( colour({0,255,0}, 100.0f) );
                     break;
-            case 3: this->setRadarObjectColour( colour({0,0,255}, 100.0f) );
+            case 3: this->setRadarObjectColour( colour({255,255,0}, 100.0f) );
                     break;
-            case 4: this->setRadarObjectColour( colour({255,255,0}, 100.0f) );
+            case 4: this->setRadarObjectColour( colour({0,0,255}, 100.0f) );
                     break;
             case 5: this->setRadarObjectColour( colour({255,0,255}, 100.0f) );
@@ -77,10 +77,4 @@
         this->troops = troops;
         this->setRadarName(std::to_string(troops));
-        //TEST
-        if(troops == 5){
-            Ogre::ColourValue cv = colour({255,255,255}, 100.0f);
-            this->setRadarObjectColour(cv);
-        }
-        
     }
     //set ID
