Index: code/branches/presentation2012merge/src/orxonox/gametypes/Dynamicmatch.cc
===================================================================
--- code/branches/presentation2012merge/src/orxonox/gametypes/Dynamicmatch.cc	(revision 9338)
+++ code/branches/presentation2012merge/src/orxonox/gametypes/Dynamicmatch.cc	(revision 9339)
@@ -276,11 +276,7 @@
             else if (friendlyfire && (source == target))
             {
-                std::map<PlayerInfo*, Player>::iterator it = this->players_.find(originator->getPlayer());
-                if (it != this->players_.end())
-                    {
-                        it->second.frags_--;
-                    }
-            }
-        }// from far far away not to be removed!
+           	    this->playerScored(originator->getPlayer(), -1);
+            }
+        }
         return false; //default: no damage
     }
@@ -296,11 +292,7 @@
             if (playerParty_[originator->getPlayer()] == killer) //reward the killer
             {
-                std::map<PlayerInfo*, Player>::iterator it = this->players_.find(originator->getPlayer());
-                if (it != this->players_.end())
-                {
-                    it->second.frags_+=20; //value must be tested
-                }
-            }
-        return true;
+           	    this->playerScored(originator->getPlayer(), 25);
+            }
+            return true;
         }
         else return false;
@@ -342,4 +334,6 @@
         numberOf[chaser]++;
         Gametype::playerEntered(player);
+        orxout() << "# Players(2) : " << this->getNumberOfPlayers() <<endl;
+        orxout() << "# Players(3): " << this->getPlayerCount() <<endl;
         const std::string& message = player->getName() + " entered the game";
         ChatManager::message(message);
@@ -361,4 +355,6 @@
             //remove player from map
             playerParty_.erase (player);
+            orxout() << "# Players(2) : " << this->getNumberOfPlayers() <<endl;
+            orxout() << "# Players(3): " << this->getPlayerCount() <<endl;
             //adjust player parties
             evaluatePlayerParties();
@@ -375,7 +371,4 @@
         if (this->hasStarted() && !gameEnded_)
         {
-orxout() << " number of chasers:  " << numberOf[chaser] << endl;
-orxout() << " number of killers:  " << numberOf[killer] << endl;
-orxout() << " number of victims:  " << numberOf[piggy] << endl;
             pointsPerTime = pointsPerTime + dt; //increase points
             gameTime_ = gameTime_ - dt; // decrease game time
@@ -419,12 +412,7 @@
         for (std::map< PlayerInfo*, int >::iterator it = this->playerParty_.begin(); it != this->playerParty_.end(); ++it) //durch alle Spieler iterieren und alle piggys finden
         {
-            if (it->second==piggy)
-            {
-                 //Spieler mit der Pig-party frags++
-                 std::map<PlayerInfo*, Player>::iterator it2 = this->players_.find(it->first);
-                 if (it2 != this->players_.end())
-                 {
-                     it2->second.frags_++;
-                 }
+            if (it->second==piggy)//Spieler mit der Pig-party frags++
+            {
+            	 this->playerScored(it->first);
             }
         }
@@ -502,5 +490,5 @@
         }
         //killers: every 4th player is a killer
-        if (getPlayerCount()/4 > numberOf[killer])
+        if (getPlayerCount()/4 > (int)numberOf[killer])
         {
             notEnoughKillers=true;
Index: code/branches/presentation2012merge/src/orxonox/gametypes/Gametype.cc
===================================================================
--- code/branches/presentation2012merge/src/orxonox/gametypes/Gametype.cc	(revision 9338)
+++ code/branches/presentation2012merge/src/orxonox/gametypes/Gametype.cc	(revision 9339)
@@ -183,4 +183,5 @@
         this->players_[player].state_ = PlayerState::Joined;
         this->gtinfo_->playerEntered(player);
+        orxout() << "# Players: " << this->getNumberOfPlayers() <<endl;
     }
 
@@ -191,4 +192,5 @@
         {
             this->players_.erase(it);
+            orxout() << "# Players: " << this->getNumberOfPlayers() <<endl;
             return true;
         }
@@ -301,9 +303,9 @@
     }
 
-    void Gametype::playerScored(PlayerInfo* player)
+    void Gametype::playerScored(PlayerInfo* player, int score)
     {
         std::map<PlayerInfo*, Player>::iterator it = this->players_.find(player);
         if (it != this->players_.end())
-            it->second.frags_++;
+            it->second.frags_ += score;
     }
 
Index: code/branches/presentation2012merge/src/orxonox/gametypes/Gametype.h
===================================================================
--- code/branches/presentation2012merge/src/orxonox/gametypes/Gametype.h	(revision 9338)
+++ code/branches/presentation2012merge/src/orxonox/gametypes/Gametype.h	(revision 9339)
@@ -90,5 +90,5 @@
             virtual bool playerChangedName(PlayerInfo* player);
 
-            virtual void playerScored(PlayerInfo* player);
+            virtual void playerScored(PlayerInfo* player, int score = 1);
 
             virtual bool allowPawnHit(Pawn* victim, Pawn* originator = 0);
@@ -153,4 +153,8 @@
             virtual void resetTimer(float t);
 
+            /**
+            @brief Get number of Players.
+            Note that only those players are counted that were added before the game started.
+            */
             inline unsigned int getNumberOfPlayers() const
                 { return this->gtinfo_->getNumberOfPlayers(); }
