Index: code/branches/presentation2/src/libraries/util/Serialise.h
===================================================================
--- code/branches/presentation2/src/libraries/util/Serialise.h	(revision 6319)
+++ code/branches/presentation2/src/libraries/util/Serialise.h	(revision 6320)
@@ -549,5 +549,5 @@
         return checkEquality(variable.w, mem) && checkEquality(variable.x, mem+returnSize(variable.w)) &&
             checkEquality(variable.y, mem+returnSize(variable.w)+returnSize(variable.x)) &&
-            checkEquality(variable.y, mem+returnSize(variable.w)+returnSize(variable.x)+returnSize(variable.y));
+            checkEquality(variable.z, mem+returnSize(variable.w)+returnSize(variable.x)+returnSize(variable.y));
     }
     
@@ -579,5 +579,5 @@
         return checkEquality(variable.w, mem) && checkEquality(variable.x, mem+returnSize(variable.w)) &&
             checkEquality(variable.y, mem+returnSize(variable.w)+returnSize(variable.x)) &&
-            checkEquality(variable.y, mem+returnSize(variable.w)+returnSize(variable.x)+returnSize(variable.y));
+            checkEquality(variable.z, mem+returnSize(variable.w)+returnSize(variable.x)+returnSize(variable.y));
     }
     
Index: code/branches/presentation2/src/orxonox/controllers/NewHumanController.cc
===================================================================
--- code/branches/presentation2/src/orxonox/controllers/NewHumanController.cc	(revision 6319)
+++ code/branches/presentation2/src/orxonox/controllers/NewHumanController.cc	(revision 6320)
@@ -62,4 +62,13 @@
         , crossHairOverlay_(NULL)
         , centerOverlay_(NULL)
+        , arrowsOverlay1_(NULL)
+        , arrowsOverlay2_(NULL)
+        , arrowsOverlay3_(NULL)
+        , arrowsOverlay4_(NULL)
+        , damageOverlayTop_(NULL)
+        , damageOverlayRight_(NULL)
+        , damageOverlayBottom_(NULL)
+        , damageOverlayLeft_(NULL)
+        , damageOverlayTT_(0)
     {
         RegisterObject(NewHumanController);
@@ -560,4 +569,6 @@
 
     void NewHumanController::showOverlays() {
+        if( !GameMode::showsGraphics() )
+            return;
         this->crossHairOverlay_->show();
         this->centerOverlay_->show();
@@ -572,4 +583,6 @@
 
     void NewHumanController::hideOverlays() {
+        if( !GameMode::showsGraphics() )
+            return;
         this->crossHairOverlay_->hide();
         this->centerOverlay_->hide();
@@ -586,4 +599,6 @@
 
     void NewHumanController::hideArrows() {
+        if( !GameMode::showsGraphics() )
+            return;
         if (showArrows_) {
             this->arrowsOverlay1_->hide();
Index: code/branches/presentation2/src/orxonox/sound/AmbientSound.cc
===================================================================
--- code/branches/presentation2/src/orxonox/sound/AmbientSound.cc	(revision 6319)
+++ code/branches/presentation2/src/orxonox/sound/AmbientSound.cc	(revision 6320)
@@ -58,9 +58,8 @@
     {
         registerVariable(volume_, ObjectDirection::ToClient, new NetworkCallback<BaseSound>(static_cast<BaseSound*>(this), &BaseSound::volumeChanged));
-//         registerVariable(source_, ObjectDirection::ToClient, new NetworkCallback<BaseSound>(static_cast<BaseSound*>(this), &BaseSound::sourceChanged));
         registerVariable(ambientSource_, ObjectDirection::ToClient, new NetworkCallback<AmbientSound>(this, &AmbientSound::ambientSourceChanged));
         registerVariable(bLooping_, ObjectDirection::ToClient, new NetworkCallback<BaseSound>(static_cast<BaseSound*>(this), &BaseSound::loopingChanged));
         registerVariable(pitch_, ObjectDirection::ToClient, new NetworkCallback<BaseSound>(static_cast<BaseSound*>(this), &BaseSound::pitchChanged));
-        registerVariable((int&)(BaseSound::state_), ObjectDirection::ToClient);
+        registerVariable((int&)(BaseSound::state_), ObjectDirection::ToClient, new NetworkCallback<BaseSound>(static_cast<BaseSound*>(this), &BaseSound::stateChanged));
     }
 
@@ -84,4 +83,6 @@
             SoundManager::getInstance().registerAmbientSound(this);
         }
+        else
+            BaseSound::play();
     }
 
@@ -97,4 +98,6 @@
             SoundManager::getInstance().unregisterAmbientSound(this);
         }
+        else
+            BaseSound::stop();
     }
 
@@ -110,4 +113,6 @@
             SoundManager::getInstance().pauseAmbientSound(this);
         }
+        else
+            BaseSound::pause();
     }
     
@@ -136,5 +141,5 @@
     }
 
-    void AmbientSound::changedActivity() 
+    void AmbientSound::changedActivity()
     {
         SUPER(AmbientSound, changedActivity);
Index: code/branches/presentation2/src/orxonox/sound/BaseSound.cc
===================================================================
--- code/branches/presentation2/src/orxonox/sound/BaseSound.cc	(revision 6319)
+++ code/branches/presentation2/src/orxonox/sound/BaseSound.cc	(revision 6320)
@@ -221,3 +221,21 @@
             alSourcePause(this->audioSource_);
     }
+    
+    void BaseSound::stateChanged()
+    {
+        CCOUT(0) << "changed state to " << this->state_ << endl;
+        switch( this->state_ )
+        {
+            case Playing:
+                this->play();
+                break;
+            case Paused:
+                this->pause();
+                break;
+            case Stopped:
+            default:
+                this->stop();
+                break;
+        }
+    }
 }
Index: code/branches/presentation2/src/orxonox/sound/BaseSound.h
===================================================================
--- code/branches/presentation2/src/orxonox/sound/BaseSound.h	(revision 6319)
+++ code/branches/presentation2/src/orxonox/sound/BaseSound.h	(revision 6320)
@@ -59,7 +59,7 @@
         virtual void pause();
 
-        bool isPlaying() { return this->state_ == Playing; }
-        bool isPaused()  { return this->state_ == Paused; }
-        bool isStopped() { return this->state_ == Stopped; }
+        bool isPlaying() const { return this->state_ == Playing; }
+        bool isPaused()  const { return this->state_ == Paused; }
+        bool isStopped() const { return this->state_ == Stopped; }
 
         void setPlaying(bool val)
@@ -84,4 +84,6 @@
         void setPitch(float pitch);
         inline void pitchChanged(){ this->setPitch(this->pitch_); }
+        
+        void stateChanged();
 
         //ALuint getALAudioSource(void);
Index: code/branches/presentation2/src/orxonox/sound/WorldSound.cc
===================================================================
--- code/branches/presentation2/src/orxonox/sound/WorldSound.cc	(revision 6319)
+++ code/branches/presentation2/src/orxonox/sound/WorldSound.cc	(revision 6320)
@@ -60,5 +60,5 @@
         registerVariable(source_, ObjectDirection::ToClient, new NetworkCallback<BaseSound>(static_cast<BaseSound*>(this), &BaseSound::sourceChanged));
         registerVariable(bLooping_, ObjectDirection::ToClient, new NetworkCallback<BaseSound>(static_cast<BaseSound*>(this), &BaseSound::loopingChanged));
-        registerVariable((int&)(BaseSound::state_), ObjectDirection::ToClient);
+        registerVariable((int&)(BaseSound::state_), ObjectDirection::ToClient, new NetworkCallback<BaseSound>(static_cast<BaseSound*>(this), &BaseSound::stateChanged));
         registerVariable(pitch_, ObjectDirection::ToClient, new NetworkCallback<BaseSound>(static_cast<BaseSound*>(this), &BaseSound::pitchChanged));
     }
