Index: code/branches/modularships/src/orxonox/items/ShipPart.cc
===================================================================
--- code/branches/modularships/src/orxonox/items/ShipPart.cc	(revision 10058)
+++ code/branches/modularships/src/orxonox/items/ShipPart.cc	(revision 10067)
@@ -41,4 +41,6 @@
 #include "worldentities/StaticEntity.h"
 #include "items/PartDestructionEvent.h"
+#include "worldentities/BigExplosion.h"
+#include "chat/ChatManager.h"
 
 
@@ -70,23 +72,7 @@
         XMLPortParam(ShipPart, "damageabsorption", setDamageAbsorption, getDamageAbsorption, xmlelement, mode).defaultValues(0.5);
 
+        XMLPortParamTemplate(ShipPart, "explosionposition", setExplosionPosition, getExplosionPosition, xmlelement, mode, Vector3);
+
         XMLPortObject(ShipPart, PartDestructionEvent, "destructionevents", addDestructionEvent, getDestructionEvent, xmlelement, mode);
-
-        /*
-        XMLPortParam(ShipPart, "shieldhealth", setShieldHealth, getShieldHealth, xmlelement, mode).defaultValues(0);
-        XMLPortParam(ShipPart, "initialshieldhealth", setInitialShieldHealth, getInitialShieldHealth, xmlelement, mode).defaultValues(0);
-        XMLPortParam(ShipPart, "maxshieldhealth", setMaxShieldHealth, getMaxShieldHealth, xmlelement, mode).defaultValues(100);
-        XMLPortParam(ShipPart, "shieldabsorption", setShieldAbsorption, getShieldAbsorption, xmlelement, mode).defaultValues(0);
-
-        XMLPortParam(ShipPart, "sShipPartparticlesource", setSShipPartParticleSource, getSShipPartParticleSource, xmlelement, mode);
-        XMLPortParam(ShipPart, "sShipPartparticleduration", setSShipPartParticleDuration, getSShipPartParticleDuration, xmlelement, mode).defaultValues(3.0f);
-        XMLPortParam(ShipPart, "explosionchunks", setExplosionChunks, getExplosionChunks, xmlelement, mode).defaultValues(7);
-
-        XMLPortParam(ShipPart, "reloadrate", setReloadRate, getReloadRate, xmlelement, mode).defaultValues(0);
-        XMLPortParam(ShipPart, "reloadwaittime", setReloadWaitTime, getReloadWaitTime, xmlelement, mode).defaultValues(1.0f);
-
-        XMLPortParam(ShipPart, "explosionSound",  setExplosionSound,  getExplosionSound,  xmlelement, mode);
-
-        XMLPortParam ( RadarViewable, "radarname", setRadarName, getRadarName, xmlelement, mode );
-        */
     }
 
@@ -102,4 +88,5 @@
             return;
 
+        this->explode();
         this->setAlive(false);
 
@@ -115,5 +102,15 @@
         // Remove this ShipPart from the parent.
         this->parent_->removeShipPart(this);
-        orxout() << this->getName() << " has died." << endl;
+    }
+
+    void ShipPart::explode()
+    {
+        BigExplosion* chunk = new BigExplosion(this->getContext());
+        chunk->setPosition(this->parent_->getPosition() + this->parent_->getOrientation() * (this->explosionPosition_));
+        //chunk->setPosition(this->parent_->getPosition() + this->parent_->getOrientation() * Vector3(this->entityList_[0]->getLocalInertia()));
+        chunk->setVelocity(this->parent_->getVelocity());
+
+        // this->explosionSound_->setPosition(this->parent_->getPosition());
+        // this->explosionSound_->play();
     }
 
@@ -160,13 +157,4 @@
     }
 
-    void ShipPart::printEntities()
-    {
-        orxout() << "ShipPart " << this->getName() << " has the following entities assigned:" << endl;
-        for(unsigned int j = 0; j < this->entityList_.size(); j++)
-        {
-            orxout() << "  " << this->entityList_[j]->getName() << endl;
-        }
-    }
-
     /**
     @brief
@@ -221,6 +209,4 @@
     void ShipPart::handleHit(float damage, float healthdamage, float shielddamage, Pawn* originator)
     {
-        orxout() << "ShipPart " <<this->getName() << " is handling a hit!" << endl;
-
         if (parent_->getGametype() && parent_->getGametype()->allowPawnDamage(parent_, originator))
         {
@@ -247,5 +233,26 @@
         if (this->health_ < 0)
             this->death();
-        orxout() << "Health of ShipPart " << this->getName() << " is " << this->getHealth() << endl;
+
+        // (Ugly) Chatoutput of health, until a GUI for modularspaceships-shipparts is implemented.
+        if (this->health_ < 0.2 * this->maxHealth_)
+        {
+            ChatManager::message("ShipPart " + this->getName() + " remaining health is 20%!");
+            return;
+        }
+        if (this->health_ < 0.4 * this->maxHealth_)
+        {
+            ChatManager::message("ShipPart " + this->getName() + " remaining health is 40%!");
+            return;
+        }
+        if (this->health_ < 0.6 * this->maxHealth_)
+        {
+            ChatManager::message("ShipPart " + this->getName() + " remaining health is 60%!");
+            return;
+        }
+        if (this->health_ < 0.8 * this->maxHealth_)
+        {
+            ChatManager::message("ShipPart " + this->getName() + " remaining health is 80%!");
+            return;
+        }
     }
 
Index: code/branches/modularships/src/orxonox/items/ShipPart.h
===================================================================
--- code/branches/modularships/src/orxonox/items/ShipPart.h	(revision 10058)
+++ code/branches/modularships/src/orxonox/items/ShipPart.h	(revision 10067)
@@ -52,4 +52,5 @@
 
             virtual void death();
+            virtual void explode();
 
             //virtual void attachTo(Pawn* newParent);
@@ -62,6 +63,4 @@
             void addDestructionEvent(PartDestructionEvent* event);
             PartDestructionEvent* getDestructionEvent(unsigned int index);
-
-            void printEntities(); // FIXME: (noep) remove debug
 
             virtual void setDamageAbsorption(float value);
@@ -101,4 +100,9 @@
                 { return this->initialHealth_; }
 
+            inline void setExplosionPosition(Vector3 pos)
+                { this->explosionPosition_ = pos; }
+            inline Vector3 getExplosionPosition()
+                { return this->explosionPosition_; }
+
 
             // FIXME: (noep) Why doesn't this work? Works fine in Engine.h
@@ -121,4 +125,6 @@
             bool eventExecution_;
 
+            Vector3 explosionPosition_;
+
 
     }; // tolua_export
Index: code/branches/modularships/src/orxonox/worldentities/pawns/ModularSpaceShip.cc
===================================================================
--- code/branches/modularships/src/orxonox/worldentities/pawns/ModularSpaceShip.cc	(revision 10058)
+++ code/branches/modularships/src/orxonox/worldentities/pawns/ModularSpaceShip.cc	(revision 10067)
@@ -108,15 +108,7 @@
                     // An entry in the partMap_ is created, assigning the part to the entity.
                     this->addPartEntityAssignment((StaticEntity*)(this->getAttachedObject(i)), this->partList_[j]);
-                    orxout() << "A matching part-entity-pair with name " << this->partList_[j]->getName() << " was found!" << endl;
-                    this->partList_[j]->printEntities(); // FIXME: (noep) remove debug
                 }
             }
         }
-
-        orxout() << "List of all assignments:" << endl;
-        for (std::map<StaticEntity*, ShipPart*>::const_iterator it = this->partMap_.begin(); it != this->partMap_.end(); ++it)
-                {
-                    orxout() << "Entity: " << it->first << "   Part: " << it->second << endl;
-                }
     }
 
@@ -147,6 +139,4 @@
 
         this->partMap_[entity] = part;
-
-        orxout() << "New entity-part assignment created!" << endl;
     }
 
