Index: code/branches/core5/src/modules/overlays/hud/HUDHealthBar.cc
===================================================================
--- code/branches/core5/src/modules/overlays/hud/HUDHealthBar.cc	(revision 5825)
+++ code/branches/core5/src/modules/overlays/hud/HUDHealthBar.cc	(revision 5826)
@@ -85,4 +85,9 @@
             this->textoverlay_->setCaption(multi_cast<std::string>(static_cast<int>(this->owner_->getHealth())));
         }
+        else
+        {
+            this->setValue(0);
+            this->textoverlay_->setCaption("0");
+        }
 
         if (this->bUseBarColour_)
Index: code/branches/core5/src/modules/overlays/hud/HUDHealthBar.h
===================================================================
--- code/branches/core5/src/modules/overlays/hud/HUDHealthBar.h	(revision 5825)
+++ code/branches/core5/src/modules/overlays/hud/HUDHealthBar.h	(revision 5826)
@@ -111,5 +111,5 @@
 
         private:
-            Pawn* owner_;
+            WeakPtr<Pawn> owner_;
             OverlayText* textoverlay_;
             bool bUseBarColour_;
Index: code/branches/core5/src/orxonox/gametypes/UnderAttack.cc
===================================================================
--- code/branches/core5/src/orxonox/gametypes/UnderAttack.cc	(revision 5825)
+++ code/branches/core5/src/orxonox/gametypes/UnderAttack.cc	(revision 5826)
@@ -46,4 +46,5 @@
         this->teams_ = 2;
         this->destroyer_ = 0;
+        this->destroyer_.addCallback(createFunctor(&UnderAttack::killedDestroyer)->setObject(this));
         this->gameEnded_ = false;
 
@@ -65,24 +66,21 @@
 
 
-    void UnderAttack::destroyedPawn(Pawn* pawn)
+    void UnderAttack::killedDestroyer()
     {
-        if (pawn == this->destroyer_)
+        this->end(); //end gametype
+        std::string message = "Ship destroyed! Team 0 has won!";
+        COUT(0) << message << std::endl;
+        Host::Broadcast(message);
+        this->gameEnded_ = true;
+
+        for (std::map<PlayerInfo*, int>::iterator it = this->teamnumbers_.begin(); it != this->teamnumbers_.end(); ++it)
         {
-            this->end(); //end gametype
-            std::string message = "Ship destroyed! Team 0 has won!";
-            COUT(0) << message << std::endl;
-            Host::Broadcast(message);
-            this->gameEnded_ = true;
+            if (it->first->getClientID() == CLIENTID_UNKNOWN)
+                continue;
 
-            for (std::map<PlayerInfo*, int>::iterator it = this->teamnumbers_.begin(); it != this->teamnumbers_.end(); ++it)
-            {
-                if (it->first->getClientID() == CLIENTID_UNKNOWN)
-                    continue;
-
-                if (it->second == 0)
-                    this->gtinfo_->sendAnnounceMessage("You have won the match!", it->first->getClientID());
-                else
-                    this->gtinfo_->sendAnnounceMessage("You have lost the match!", it->first->getClientID());
-            }
+            if (it->second == 0)
+                this->gtinfo_->sendAnnounceMessage("You have won the match!", it->first->getClientID());
+            else
+                this->gtinfo_->sendAnnounceMessage("You have lost the match!", it->first->getClientID());
         }
     }
Index: code/branches/core5/src/orxonox/gametypes/UnderAttack.h
===================================================================
--- code/branches/core5/src/orxonox/gametypes/UnderAttack.h	(revision 5825)
+++ code/branches/core5/src/orxonox/gametypes/UnderAttack.h	(revision 5826)
@@ -32,10 +32,9 @@
 #include "OrxonoxPrereqs.h"
 
-#include "interfaces/PawnListener.h"
 #include "TeamDeathmatch.h"
 
 namespace orxonox
 {
-    class _OrxonoxExport UnderAttack : public TeamDeathmatch, public PawnListener
+    class _OrxonoxExport UnderAttack : public TeamDeathmatch
     {
         public:
@@ -54,7 +53,7 @@
 
         protected:
-            virtual void destroyedPawn(Pawn* pawn);
+            virtual void killedDestroyer();
 
-            Destroyer* destroyer_;
+            WeakPtr<Destroyer> destroyer_;
             unsigned int teams_;
             float gameTime_;
