Index: code/branches/sfxThilo/data/levels/pong.oxw
===================================================================
--- code/branches/sfxThilo/data/levels/pong.oxw	(revision 9691)
+++ code/branches/sfxThilo/data/levels/pong.oxw	(revision 9720)
@@ -34,5 +34,7 @@
 
 <Template name=pongball>
-  <PongBall>
+  <PongBall 
+   defScoreSound = "sounds/Button.ogg"
+   defBoundarySound = "sounds/Button_press2.ogg">
     <attached>
       <Model mesh="sphere.mesh" scale=2 />
Index: code/branches/sfxThilo/src/modules/pong/Pong.cc
===================================================================
--- code/branches/sfxThilo/src/modules/pong/Pong.cc	(revision 9691)
+++ code/branches/sfxThilo/src/modules/pong/Pong.cc	(revision 9720)
@@ -47,4 +47,5 @@
 #include "PongBot.h"
 #include "PongAI.h"
+
 namespace orxonox
 {
@@ -117,4 +118,5 @@
             }
         }
+
     }
 
Index: code/branches/sfxThilo/src/modules/pong/PongBall.cc
===================================================================
--- code/branches/sfxThilo/src/modules/pong/PongBall.cc	(revision 9691)
+++ code/branches/sfxThilo/src/modules/pong/PongBall.cc	(revision 9720)
@@ -40,4 +40,7 @@
 
 #include "PongBat.h"
+
+#include "sound/WorldSound.h" //Thilo
+#include "core/XMLPort.h"
 
 namespace orxonox
@@ -66,4 +69,19 @@
 
         this->registerVariables();
+
+        //Thilo
+        if (GameMode::isMaster())
+             {
+                 this->defScoreSound_ = new WorldSound(this->getContext());
+                 this->defScoreSound_->setLooping(false);
+                 this->defBatSound_ = new WorldSound(this->getContext());
+                 this->defBatSound_->setLooping(false);
+                 this->defBoundarySound_ = new WorldSound(this->getContext());
+                 this->defBoundarySound_->setLooping(false);
+             }
+             else
+             {
+                 this->defScoreSound_ = 0;
+             }
     }
 
@@ -81,4 +99,13 @@
             delete[] this->batID_;
         }
+    }
+
+    //Thilo
+    void PongBall::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(PongBall, XMLPort, xmlelement, mode);
+        XMLPortParam(PongBall, "defScoreSound",  setDefScoreSound,  getDefScoreSound,  xmlelement, mode);
+        XMLPortParam(PongBall, "defBatSound",  setDefBatSound,  getDefBatSound,  xmlelement, mode);
+        XMLPortParam(PongBall, "defBoundarySound",  setDefBoundarySound,  getDefBoundarySound,  xmlelement, mode);
     }
 
@@ -155,4 +182,5 @@
                     else if (GameMode::isMaster() && position.x > this->fieldWidth_ / 2 * (1 + this->relMercyOffset_))
                     {
+                    	defScoreSound_->play();//Thilo
                         if (this->getGametype() && this->bat_[0])
                         {
@@ -182,4 +210,5 @@
                     else if (GameMode::isMaster() && position.x < -this->fieldWidth_ / 2 * (1 + this->relMercyOffset_))
                     {
+                    	defScoreSound_->play();//Thilo
                         if (this->getGametype() && this->bat_[1])
                         {
@@ -262,3 +291,54 @@
             this->bat_[1] = orxonox_cast<PongBat*>(Synchronisable::getSynchronisable(this->batID_[1]));
     }
+
+    void PongBall::setDefScoreSound(const std::string &pongSound)
+    {
+        if( defScoreSound_ )
+            defScoreSound_->setSource(pongSound);
+        else
+            assert(0); // This should never happen, because soundpointer is only available on master
+    }
+
+    const std::string& PongBall::getDefScoreSound()
+    {
+        if( defScoreSound_ )
+            return defScoreSound_->getSource();
+        else
+            assert(0);
+        return BLANKSTRING;
+    }
+
+    void PongBall::setDefBatSound(const std::string &pongSound)
+    {
+        if( defBatSound_ )
+            defBatSound_->setSource(pongSound);
+        else
+            assert(0); // This should never happen, because soundpointer is only available on master
+    }
+
+    const std::string& PongBall::getDefBatSound()
+    {
+        if( defBatSound_ )
+            return defBatSound_->getSource();
+        else
+            assert(0);
+        return BLANKSTRING;
+    }
+
+    void PongBall::setDefBoundarySound(const std::string &pongSound)
+    {
+        if( defBoundarySound_ )
+            defBoundarySound_->setSource(pongSound);
+        else
+            assert(0); // This should never happen, because soundpointer is only available on master
+    }
+
+    const std::string& PongBall::getDefBoundarySound()
+    {
+        if( defBoundarySound_ )
+            return defBoundarySound_->getSource();
+        else
+            assert(0);
+        return BLANKSTRING;
+    }
 }
Index: code/branches/sfxThilo/src/modules/pong/PongBall.h
===================================================================
--- code/branches/sfxThilo/src/modules/pong/PongBall.h	(revision 9691)
+++ code/branches/sfxThilo/src/modules/pong/PongBall.h	(revision 9720)
@@ -42,4 +42,5 @@
 #include "worldentities/MovableEntity.h"
 
+
 namespace orxonox
 {
@@ -63,4 +64,6 @@
 
             virtual void tick(float dt);
+
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
 
             /**
@@ -123,4 +126,7 @@
             static const float MAX_REL_Z_VELOCITY;
 
+            void setDefScoreSound(const std::string& engineSound); //Thilo
+            const std::string& getDefScoreSound(); //Thilo
+
         private:
             void registerVariables();
@@ -135,4 +141,5 @@
             unsigned int* batID_; //!< The object IDs of the bats, to be able to synchronize them over the network.
             float relMercyOffset_; //!< Offset, that makes the player not loose, when, in all fairness, he would have.
+            WorldSound* defScoreSound_;//Thilo
     };
 }
Index: code/branches/sfxThilo/src/modules/pong/PongScore.cc
===================================================================
--- code/branches/sfxThilo/src/modules/pong/PongScore.cc	(revision 9691)
+++ code/branches/sfxThilo/src/modules/pong/PongScore.cc	(revision 9720)
@@ -41,4 +41,5 @@
 
 #include "Pong.h"
+#include "sound/WorldSound.h" /////////////////////////////
 
 namespace orxonox
Index: code/branches/sfxThilo/src/modules/pong/PongScore.h
===================================================================
--- code/branches/sfxThilo/src/modules/pong/PongScore.h	(revision 9691)
+++ code/branches/sfxThilo/src/modules/pong/PongScore.h	(revision 9720)
@@ -124,4 +124,6 @@
             WeakPtr<PlayerInfo> player1_; //!< Store information about left player permanently.
             WeakPtr<PlayerInfo> player2_; //!< Same for the right player. To end the game properly.
+            WorldSound* scoreSound_;
+
     };
 }
Index: code/branches/sfxThilo/src/orxonox/gamestates/GSMainMenu.cc
===================================================================
--- code/branches/sfxThilo/src/orxonox/gamestates/GSMainMenu.cc	(revision 9691)
+++ code/branches/sfxThilo/src/orxonox/gamestates/GSMainMenu.cc	(revision 9720)
@@ -85,5 +85,5 @@
     {
         if (GameMode::playsSound())
-            this->ambient_->destroy();
+            this->ambient_->destroy(); //CHECK Thilo destroy ?preDestroy()? !!!!!!!
 
         InputManager::getInstance().destroyState("MainMenuHackery");
