Index: branches/presentation/src/world_entities/npcs/actionbox_enemy.cc
===================================================================
--- branches/presentation/src/world_entities/npcs/actionbox_enemy.cc	(revision 10748)
+++ branches/presentation/src/world_entities/npcs/actionbox_enemy.cc	(revision 10749)
@@ -191,5 +191,5 @@
     Vector targetDir = State::getPlayer()->getPlayable()->getAbsCoor()-this->getAbsCoor();
     moveTowards( targetPos, targetDir, dt );
-    if ( this->getAbsDir().apply( Vector(1, 0, 0) ).dot(targetDir) > 0.9 )
+    if ( this->getAbsDir().apply( Vector(1, 0, 0) ).dot(targetDir) > 0.9 && State::getPlayer()->getPlayable()->getOMListNumber()!=OM_DEAD )
     {
       this->bFire = true;
Index: branches/presentation/src/world_entities/projectiles/projectile.cc
===================================================================
--- branches/presentation/src/world_entities/projectiles/projectile.cc	(revision 10748)
+++ branches/presentation/src/world_entities/projectiles/projectile.cc	(revision 10749)
@@ -157,5 +157,5 @@
 void Projectile::collidesWith (WorldEntity* target, const Vector& location)
 {
-  dynamic_cast<SpaceShip*>(target)->damage(this->getPhysDamage(),this->getElecDamage());
+  //dynamic_cast<SpaceShip*>(target)->damage(this->getPhysDamage(),this->getElecDamage());
 //   this->destroy(NULL);
   this->destroy(target);
Index: branches/presentation/src/world_entities/projectiles/projectile_weapon.cc
===================================================================
--- branches/presentation/src/world_entities/projectiles/projectile_weapon.cc	(revision 10748)
+++ branches/presentation/src/world_entities/projectiles/projectile_weapon.cc	(revision 10749)
@@ -150,5 +150,5 @@
 void ProjectileWeapon::collidesWith (WorldEntity* target, const Vector& location)
 {
-  dynamic_cast<SpaceShip*>(target)->damage(this->getPhysDamage(),this->getElecDamage());
+//  dynamic_cast<SpaceShip*>(target)->damage(this->getPhysDamage(),this->getElecDamage());
 //   this->destroy(NULL);
   this->destroy(target);
Index: branches/presentation/src/world_entities/space_ships/space_ship.cc
===================================================================
--- branches/presentation/src/world_entities/space_ships/space_ship.cc	(revision 10748)
+++ branches/presentation/src/world_entities/space_ships/space_ship.cc	(revision 10749)
@@ -74,4 +74,8 @@
 #include "track/track.h"
 #include "track/action_box.h"
+
+#include "event_handler.h"
+
+#include "story_entity.h"
 
 
@@ -421,4 +425,8 @@
 void SpaceShip::tick (float time)
 {
+  if ( deadBox != NULL )
+  {
+    OrxGui::GLGuiHandler::getInstance()->tick( time );
+  }
  // printf("SSGROUP: %d\n", this->getOMListNumber());
 
@@ -597,76 +605,8 @@
 }
 
-void SpaceShip::destroy( WorldEntity* killer )
-{
-  if(this->hasPlayer())
-    Playable::destroy( killer);
-
-  PRINTF(5)("spaceship destroy\n");
-
-  EmitterNode* node  = NULL;
-  DotEmitter* emitter = NULL;
-  SpriteParticles*  explosionParticles  = NULL;
-
-  explosionParticles = new SpriteParticles(200);
-  explosionParticles->setName("SpaceShipExplosionParticles");
-  explosionParticles->setLifeSpan(.2, .3);
-  explosionParticles->setRadius(0.0, 10.0);
-  explosionParticles->setRadius(.5, 6.0);
-  explosionParticles->setRadius(1.0, 3.0);
-  explosionParticles->setColor(0.0, 1,1,1,.9);
-  explosionParticles->setColor(0.1,  1,1,0,.9);
-  explosionParticles->setColor(0.5, .8,.4,0,.5);
-  explosionParticles->setColor(1.0, .2,.2,.2,.5);
-
-
-  emitter = new DotEmitter( 2000, 70, 360);
-  //emitter->setSpread( 0, M_2_PI);
-  emitter->setEmissionRate( 200.0);
-  //emitter->setEmissionVelocity( 200.0);
-  //emitter->setSystem( explosionParticles);
-  //emitter->setAbsCoor( this->getAbsCoor());
-
-  node  = new EmitterNode( .1f);
-  node->setupParticle( emitter, explosionParticles);
-  node->setAbsDir( this->getAbsDir());
-  node->setVelocity( this->getVelocity() * .9f);
-  node->setAbsCoor( this->getAbsCoor());
-  if( !node->start())
-    PRINTF(0)("Explosion node not correctly started!");
-/*
-  PNode* node          = new PNode();
-  node->setAbsCoor(this->getAbsCoor());
-  Explosion* explosion = new Explosion();
-  explosion->explode( node, Vector(5,5,5));
-*/
-/*
-  if( this->hasPlayer())
-  {
-	this->setAbsCoor(Vector(-10000,10000,10000));
-	this->hide();
-  }
-  else
-  {*/
-    this->setAbsCoor( this->getAbsCoor() + Vector(100,0,0) + Vector(1,0,0) * VECTOR_RAND(150).dot(Vector(1,0,0)));
-  //}
-
-}
-
 void SpaceShip::respawn( )
 {
   Playable::respawn();
 }
-
-
-void SpaceShip::damage(float pDamage, float eDamage){
-  PRINTF(5)("ship hit for (%f,%f) \n",pDamage,eDamage);
-
-  static float tmp = this->decreaseShield(pDamage);
-  if( tmp > 0)
-  if ( this->decreaseHealth(tmp / 2) > 0)
-    this->destroy(this);
-
-}
-
 
 
@@ -1036,9 +976,4 @@
   this->weaponMan.previousWeaponConfig();
   Playable::weaponConfigChanged();
-}
-
-void SpaceShip::hit( float damage, WorldEntity* killer)
-{
-  this->damage(killer->getDamage(),0);
 }
 
@@ -1135,3 +1070,59 @@
 };
 
-
+void SpaceShip::hit( float damage, WorldEntity * killer )
+{
+  PRINTF(0)("SS HIT: %f\n", this->getHealth() );
+  Playable::hit( damage, killer );
+  PRINTF(0)("SS HIT: %f\n", this->getHealth() );  
+}
+
+void SpaceShip::destroy( WorldEntity * killer )
+{
+  Playable::destroy( killer );
+  this->showDeadScreen();
+  myList = this->getOMListNumber();
+  toList( OM_DEAD );
+}
+
+void SpaceShip::onButtonContinue( )
+{
+  OrxGui::GLGuiHandler::getInstance()->deactivateCursor( true );
+  EventHandler::getInstance()->popState();
+  WorldEntity::reset();
+  toList( myList );
+  deadBox->hideAll();
+}
+
+void SpaceShip::onButtonExit( )
+{
+  State::getCurrentStoryEntity()->setNextStoryID( 0 );
+  State::getCurrentStoryEntity()->stop();
+}
+
+void SpaceShip::showDeadScreen( )
+{
+  EventHandler::getInstance()->pushState( ES_MENU );
+
+  OrxGui::GLGuiHandler::getInstance()->activateCursor();
+  
+  if ( deadBox )
+    delete deadBox;
+  deadBox = new OrxGui::GLGuiBox();
+  deadBox->setAbsCoor2D( 100, 100 );
+
+  OrxGui::GLGuiText* text = new OrxGui::GLGuiText();
+  text->setText( "Game Over! - You died!" );
+  OrxGui::GLGuiPushButton* exitButton = new OrxGui::GLGuiPushButton( "exit" );
+  exitButton->released.connect(this, &SpaceShip::onButtonExit);
+  OrxGui::GLGuiPushButton* continueButton = new OrxGui::GLGuiPushButton( "continue" );
+  continueButton->released.connect(this, &SpaceShip::onButtonContinue);
+
+  deadBox->pack( text );
+  deadBox->pack( continueButton );
+  deadBox->pack( exitButton );
+
+  deadBox->showAll();
+}
+
+
+
Index: branches/presentation/src/world_entities/space_ships/space_ship.h
===================================================================
--- branches/presentation/src/world_entities/space_ships/space_ship.h	(revision 10748)
+++ branches/presentation/src/world_entities/space_ships/space_ship.h	(revision 10749)
@@ -13,4 +13,6 @@
 #include "extendable.h"
 #include "world_entity.h"
+
+#include "glgui.h"
 
 // Forward Declaration
@@ -43,4 +45,7 @@
     //void setAirFriction(float friction) { this->airFriction = friction; };
 
+    virtual void hit(float damage, WorldEntity* killer);
+    virtual void destroy( WorldEntity* killer );
+    
     virtual void enter();
     virtual void leave();
@@ -51,5 +56,4 @@
     virtual void leftWorld();
 
-    virtual void destroy(WorldEntity* killer);
     virtual void respawn();
 
@@ -79,6 +83,4 @@
     inline PNode* getTravelNode() { return this->travelNode; };
 
-    //damage handler
-    virtual void damage(float pDamage, float eDamage);  //!< pDamage physical damage, eDamage electronic damage
 
     //included by Michel: 
@@ -90,11 +92,7 @@
     virtual void movement (float dt);
 
-
-
     void nextWeaponConfig();
     void previousWeaponConfig();
-
-    virtual void hit(float damage, WorldEntity* killer);
-
+    
     void setCameraDistance(float dist);
 
@@ -221,4 +219,9 @@
     Trail*                trailR;              //!< Burst trail
 */
+    OM_LIST myList;
+    OrxGui::GLGuiBox* deadBox;
+    void onButtonContinue();
+    void onButtonExit();
+    void showDeadScreen();
 
 };
