Index: /code/branches/gamecontent/src/modules/pong/Pong.cc
===================================================================
--- /code/branches/gamecontent/src/modules/pong/Pong.cc	(revision 8899)
+++ /code/branches/gamecontent/src/modules/pong/Pong.cc	(revision 8900)
@@ -37,4 +37,5 @@
 #include "core/EventIncludes.h"
 #include "core/command/Executor.h"
+#include "core/ConfigValueIncludes.h"
 
 #include "gamestates/GSLevel.h"
@@ -75,5 +76,6 @@
         // Set the type of Bots for this particular Gametype.
         this->botclass_ = Class(PongBot);
-	this->scoreLimit_ = 3; //TODO: 21
+	this->scoreLimit_ = 10;
+	this->setConfigValues();
     }
 
@@ -291,4 +293,5 @@
             std::string message(name1 + " has won!");
             ChatManager::message(message);
+this->tick(0);
             this->end();
         }
@@ -298,4 +301,5 @@
              std::string message2(name2 + " has won!");
              ChatManager::message(message2);
+this->tick(0);
              this->end();
         }
@@ -342,3 +346,12 @@
             return 0;
     }
+
+    /**
+     @brief
+         Make scoreLimit_ configurable e.g. in the menu.
+     */
+    void Pong::setConfigValues()
+    {
+        SetConfigValue(scoreLimit_, 10).description("The player first reaching those points wins.");
+    }
 }
Index: /code/branches/gamecontent/src/modules/pong/Pong.h
===================================================================
--- /code/branches/gamecontent/src/modules/pong/Pong.h	(revision 8899)
+++ /code/branches/gamecontent/src/modules/pong/Pong.h	(revision 8900)
@@ -81,6 +81,7 @@
             void setCenterpoint(PongCenterpoint* center)
                 { this->center_ = center; }
-
-            PlayerInfo* getLeftPlayer() const; //!< Get the left player.
+            void setConfigValues(); //!< Makes scoreLimit configurable.
+            
+	    PlayerInfo* getLeftPlayer() const; //!< Get the left player.
             PlayerInfo* getRightPlayer() const; //!< Get the right player.
 
Index: /code/branches/gamecontent/src/modules/pong/PongScore.cc
===================================================================
--- /code/branches/gamecontent/src/modules/pong/PongScore.cc	(revision 8899)
+++ /code/branches/gamecontent/src/modules/pong/PongScore.cc	(revision 8900)
@@ -60,4 +60,6 @@
         this->bShowLeftPlayer_ = false;
         this->bShowRightPlayer_ = false;
+        this->player1_ = NULL;
+	this->player2_ = NULL;
     }
 
@@ -98,42 +100,49 @@
         if (this->owner_ != NULL)
         {
-            // Get the two players.
-            PlayerInfo* player1 = this->owner_->getLeftPlayer();
-            PlayerInfo* player2 = this->owner_->getRightPlayer();
-
-            std::string name1;
-            std::string name2;
-
-            std::string score1("0");
-            std::string score2("0");
-
-            // Save the name and score of each player as a string.
-            if (player1 != NULL)
+	    if(!this->owner_->hasEnded())
             {
-                name1 = player1->getName();
-                score1 = multi_cast<std::string>(this->owner_->getScore(player1));
-            }
-            if (player2 != NULL)
-            {
-                name2 = player2->getName();
-                score2 = multi_cast<std::string>(this->owner_->getScore(player2));
+                //get the two players
+                player1_ = this->owner_->getLeftPlayer();
+                player2_ = this->owner_->getRightPlayer();
             }
 
-            // Assemble the strings, depending on what should all be displayed.
-            std::string output1;
-            if (this->bShowLeftPlayer_)
+            if(this->owner_->hasStarted())
             {
-                if (this->bShowName_ && this->bShowScore_ && player1 != NULL)
-                    output1 = name1 + " - " + score1;
-                else if (this->bShowScore_)
-                    output1 = score1;
-                else if (this->bShowName_)
-                    output1 = name1;
-            }
+                // Get the two players.
 
-            std::string output2;
-            if (this->bShowRightPlayer_)
-            {
-                if (this->bShowName_ && this->bShowScore_ && player2 != NULL)
+                std::string name1;
+                std::string name2;
+
+                std::string score1("0");
+                std::string score2("0");
+
+                // Save the name and score of each player as a string.
+                if (player1_ != NULL)
+                {
+                    name1 = player1_->getName();
+                    score1 = multi_cast<std::string>(this->owner_->getScore(player1_));
+                }
+                if (player2_ != NULL)
+                {
+                    name2 = player2_->getName();
+                    score2 = multi_cast<std::string>(this->owner_->getScore(player2_));
+                }
+
+                // Assemble the strings, depending on what should all be displayed.
+                std::string output1;
+                if (this->bShowLeftPlayer_)
+                {
+                    if (this->bShowName_ && this->bShowScore_ && player1_ != NULL)
+                         output1 = name1 + " - " + score1;
+                    else if (this->bShowScore_)
+                         output1 = score1;
+                    else if (this->bShowName_)
+                         output1 = name1;
+                }
+
+                std::string output2;
+                if (this->bShowRightPlayer_)
+                {
+                if (this->bShowName_ && this->bShowScore_ && player2_ != NULL)
                     output2 = score2 + " - " + name2;
                 else if (this->bShowScore_)
@@ -143,14 +152,14 @@
             }
 
-            std::string output("PONG");
-            if (this->bShowName_ || this->bShowScore_)
-            {
-                if (this->bShowLeftPlayer_ && this->bShowRightPlayer_)
-                    output = output1 + ':' + output2;
-                else if (this->bShowLeftPlayer_ || this->bShowRightPlayer_)
-                    output = output1 + output2;
+                std::string output("PONG");
+                if (this->bShowName_ || this->bShowScore_)
+                {
+                    if (this->bShowLeftPlayer_ && this->bShowRightPlayer_)
+                        output = output1 + ':' + output2;
+                    else if (this->bShowLeftPlayer_ || this->bShowRightPlayer_)
+                        output = output1 + output2;
+                }
+                this->setCaption(output);
             }
-
-            this->setCaption(output);
         }
     }
Index: /code/branches/gamecontent/src/modules/pong/PongScore.h
===================================================================
--- /code/branches/gamecontent/src/modules/pong/PongScore.h	(revision 8899)
+++ /code/branches/gamecontent/src/modules/pong/PongScore.h	(revision 8900)
@@ -122,4 +122,6 @@
             bool bShowLeftPlayer_; //!< Whether the left player is shown.
             bool bShowRightPlayer_; //!< Whether the right player is shown.
+            PlayerInfo* player1_; //!< Store information about left player permanently.
+            PlayerInfo* player2_; //!< Same for the right player. To end the game properly.
     };
 }
