Index: code/branches/wagnis_HS18/src/modules/wagnis/Wagnis.cc
===================================================================
--- code/branches/wagnis_HS18/src/modules/wagnis/Wagnis.cc	(revision 12169)
+++ code/branches/wagnis_HS18/src/modules/wagnis/Wagnis.cc	(revision 12170)
@@ -118,5 +118,5 @@
                     }else{
                         //No more troops left to place and player 1 is next.
-                        next->reinforcements = provincesOfPlayerCounter(1);
+                        next->reinforcements = this->reinforcementsCounter(1);
                     }
                 }else{
@@ -152,5 +152,11 @@
                     this->active_player = 1;
                 }
-                tc = provincesOfPlayerCounter(this->active_player);
+                
+                tc = 0;
+                for(WagnisProvince* p: this->gameBoard->provs){
+                    if(p->getOwner_ID() == this->active_player){
+                        tc++;
+                    }
+                }
             }while(tc == 0); //Skip players without provinces.
 
@@ -165,5 +171,5 @@
                 this->gameStage = REINFORCEMENT_STAGE;
                 next->setActive(true);
-                next->reinforcements = tc;
+                next->reinforcements = reinforcementsCounter(next->Player_ID);
             }
             
@@ -186,4 +192,5 @@
 
     this->gameBoard->initializeNeighbors();
+    this->gameBoard->initializeContinents();
     
     orxout() << "Game creation finished" << endl;
@@ -215,5 +222,5 @@
 }
 
-int Wagnis::provincesOfPlayerCounter(int player){
+int Wagnis::reinforcementsCounter(int player){
     int n = 0;
     for(WagnisProvince* p:this->gameBoard->provs){
@@ -226,17 +233,35 @@
         }
     }
+
+    n = n/3;
+    if(n<3)n=3;
+
+    int i = 0;
+    bool b = true;
+
+    for(std::vector<WagnisProvince*>* cont_vec:this->gameBoard->continents){
+        for(WagnisProvince* p: *(cont_vec)){
+            if(p->getOwner_ID() != player) b = false;
+        }
+
+        if(b) n += this->getContinentValue(i);
+        b = true; i++;
+    }
+
     return n;
 }
 
-
-
-
-
-
-
-
-
-
-
+int Wagnis::getContinentValue(int cont){
+    switch(cont){
+        case 1: return 7;
+        case 2: return 5;
+        case 3: return 5;
+        case 4: return 3;
+        case 5: return 2;
+        case 6: return 2;
+        default: return 0;
+    }
+    return 0;   
+}
 
 
Index: code/branches/wagnis_HS18/src/modules/wagnis/Wagnis.h
===================================================================
--- code/branches/wagnis_HS18/src/modules/wagnis/Wagnis.h	(revision 12169)
+++ code/branches/wagnis_HS18/src/modules/wagnis/Wagnis.h	(revision 12170)
@@ -52,5 +52,6 @@
         bool findGameBoard();
         int provinceCount();
-        int provincesOfPlayerCounter(int);
+        int reinforcementsCounter(int);
+        int getContinentValue(int);
     };
 }
Index: code/branches/wagnis_HS18/src/modules/wagnis/WagnisGameboard.cc
===================================================================
--- code/branches/wagnis_HS18/src/modules/wagnis/WagnisGameboard.cc	(revision 12169)
+++ code/branches/wagnis_HS18/src/modules/wagnis/WagnisGameboard.cc	(revision 12170)
@@ -14,5 +14,9 @@
         this->connections_string = "";
     }
-    WagnisGameboard::~WagnisGameboard(){}
+    WagnisGameboard::~WagnisGameboard(){
+        for(std::vector<WagnisProvince*>* vec: this->continents){
+            delete vec;
+        }
+    }
 
     void WagnisGameboard::XMLPort(Element& xmlelement,XMLPort::Mode mode){
@@ -107,4 +111,22 @@
     }
 
+    void WagnisGameboard::initializeContinents(){
+        int maxconts=0;
+        for(WagnisProvince* p:this->provs){
+            if(p->getContinent() > maxconts){
+                maxconts = p->getContinent();
+            }
+        }
+        for(int i=0;i<=maxconts;i++){
+            this->continents.push_back(new std::vector<WagnisProvince*>());
+            for(WagnisProvince* p:this->provs){
+                if(p->getContinent() == i){
+                    this->continents[i]->push_back(p);
+                }
+            }
+            orxout()<<"There are "<<this->continents[i]->size()<<" Provinces in Continent "<< i << endl;
+        }
+    }
+
     //Returns the parsed int and the offset encoded in an int. the upper 16bit(incl MSB) is the number
     //and the lower 16 bits is the new n(after the last digit)
Index: code/branches/wagnis_HS18/src/modules/wagnis/WagnisGameboard.h
===================================================================
--- code/branches/wagnis_HS18/src/modules/wagnis/WagnisGameboard.h	(revision 12169)
+++ code/branches/wagnis_HS18/src/modules/wagnis/WagnisGameboard.h	(revision 12170)
@@ -37,4 +37,5 @@
         
         void initializeNeighbors();
+        void initializeContinents();
 
 
@@ -42,4 +43,5 @@
         std::string connections_string;
         std::vector<WagnisProvince*> provs;
+        std::vector<std::vector<WagnisProvince*>*> continents;
         int parse_int(std::string,unsigned int);
     };
Index: code/branches/wagnis_HS18/src/modules/wagnis/WagnisProvince.cc
===================================================================
--- code/branches/wagnis_HS18/src/modules/wagnis/WagnisProvince.cc	(revision 12169)
+++ code/branches/wagnis_HS18/src/modules/wagnis/WagnisProvince.cc	(revision 12170)
@@ -23,5 +23,5 @@
         this->setRadarObjectColour(colour({128,128,128}, 100.0f));
         this->ID = -1;
-        this->continent = -1;
+        this->continent = 0;
         this->neighbors = std::vector<WagnisProvince*>();
         
