Index: branches/presentation/src/world_entities/creatures/fps_player.cc
===================================================================
--- branches/presentation/src/world_entities/creatures/fps_player.cc	(revision 10707)
+++ branches/presentation/src/world_entities/creatures/fps_player.cc	(revision 10708)
@@ -157,4 +157,5 @@
     wpRight->toList( this->getOMListNumber() );
     wpRight->setParent( this->cameraNode );
+    wpRight->setForwardDamageToParent( true );
     //wpRight->requestAction( WA_ACTIVATE );
     //wpRight->addChild(this->aimingSystem);
Index: branches/presentation/src/world_entities/npcs/adm_turret.cc
===================================================================
--- branches/presentation/src/world_entities/npcs/adm_turret.cc	(revision 10707)
+++ branches/presentation/src/world_entities/npcs/adm_turret.cc	(revision 10708)
@@ -242,5 +242,5 @@
 void AdmTurret::addCannons( const TiXmlElement * root )
 {
-  this->cannons = new WorldEntity();
+  this->cannons = new DamageForwardingWorldEntity( this );
 	this->cannons->setParent(this);
 	this->cannons->loadParams( root );
@@ -250,4 +250,5 @@
 
 	this->cannons->toList( getOMListNumber() );
+        this->cannons->setForwardDamageToParent( true );
 }
 
@@ -260,9 +261,11 @@
 	//this->weapon->setAbsCoor( this->cannons->getAbsCoor() );
 	this->weapon->setAbsDir( this->weapon->getAbsDir() * Quaternion( PI, Vector(0, 1, 0) ) );
+        
+        this->weapon->setForwardDamageToParent( true );
 }
 
 void AdmTurret::addSensor( const TiXmlElement * root )
 {
-  this->sensor = new WorldEntity();
+  this->sensor = new DamageForwardingWorldEntity( this );
 	this->sensor->setParent(this);
 	this->sensor->loadParams( root );
@@ -270,5 +273,5 @@
 	//this->sensor->addNodeFlags(PNODE_PROHIBIT_DELETE_WITH_PARENT);
 	//this->sensor->addNodeFlags(PNODE_PROHIBIT_CHILD_DELETE);
-	this->sensor->toList( getOMListNumber() );
+	
 }
 
Index: branches/presentation/src/world_entities/npcs/adm_turret.h
===================================================================
--- branches/presentation/src/world_entities/npcs/adm_turret.h	(revision 10707)
+++ branches/presentation/src/world_entities/npcs/adm_turret.h	(revision 10708)
@@ -12,4 +12,13 @@
 #include "world_entity.h"
 #include "weapons/bsp_weapon.h"
+
+class DamageForwardingWorldEntity: public WorldEntity
+{
+  public: 
+    DamageForwardingWorldEntity( WorldEntity* dfp ){ this->damPar = dfp; }
+    virtual void hit(float damage, WorldEntity* killer){ this->damPar->hit(damage, killer); }
+  private:
+    WorldEntity* damPar;
+};
 
 
Index: branches/presentation/src/world_entities/world_entity.cc
===================================================================
--- branches/presentation/src/world_entities/world_entity.cc	(revision 10707)
+++ branches/presentation/src/world_entities/world_entity.cc	(revision 10708)
@@ -97,4 +97,6 @@
   this->entityTrack = NULL;
   this->bDrawTrack = false;
+  
+  this->forwardDamageToParent = false;
 
   // registering default reactions:
@@ -179,4 +181,6 @@
   LoadParam(root, "drawTrack", this, WorldEntity, drawDebugTrack)
       .describe("draws the track for debugging purposes");
+  
+  LoadParam(root, "forwardDamageToParent", this, WorldEntity, setForwardDamageToParent);
 
   // Track
@@ -980,5 +984,14 @@
 void WorldEntity::hit(float damage, WorldEntity* killer)
 {
-
+  PRINTF(0)("TESTS: %i %i %i\n", (forwardDamageToParent), (this->getParent() != NullParent::getNullParent()), (this->getParent()->isA( WorldEntity::staticClassID() )));
+  if ( forwardDamageToParent && this->getParent() != NullParent::getNullParent() && this->getParent()->isA( WorldEntity::staticClassID() ) )
+  {
+    WorldEntity* pa = dynamic_cast<WorldEntity*>(this->getParent());
+    pa->hit( damage, killer );
+    return;
+  }
+  
+  bool dead = this->getHealth()<=0;
+  
   this->decreaseHealth(damage);
 
@@ -991,5 +1004,6 @@
   else
   {
-    this->destroy( killer );
+    if ( !dead )
+      this->destroy( killer );
   }
 }
Index: branches/presentation/src/world_entities/world_entity.h
===================================================================
--- branches/presentation/src/world_entities/world_entity.h	(revision 10707)
+++ branches/presentation/src/world_entities/world_entity.h	(revision 10708)
@@ -63,5 +63,5 @@
   void unmount(int slot);
 
-
+  void setForwardDamageToParent( bool val ){ this->forwardDamageToParent = val; }
 
   /** @param visibility if the Entity should be visible (been draw) */
@@ -262,7 +262,9 @@
   //!< started transfering shield/electronic/health from spaceship to WE! (nico, 4.Jun.07)
 
-  float                   damage;             //!< the damage dealt to other objects by colliding.
-  float                   health;             //!< The Energy of this Entity, if the Entity has any energy at all.
-  float                   healthMax;          //!< The Maximal energy this entity can take. 
+
+  float                   damage;                 //!< the damage dealt to other objects by colliding.
+  float                   health;                 //!< The Energy of this Entity, if the Entity has any energy at all.
+  bool                    forwardDamageToParent;  //!< if true, damage taken will be forwardet to parent
+  float                   healthMax;              //!< The Maximal energy this entity can take. 
   float						implantEnergy;		//!< energy of implants
   float                   healthRegen;        //!< Regeneration Rate of Health, mesured in units per second
