Index: branches/playability/src/world_entities/space_ships/space_ship.cc
===================================================================
--- branches/playability/src/world_entities/space_ships/space_ship.cc	(revision 9949)
+++ branches/playability/src/world_entities/space_ships/space_ship.cc	(revision 9950)
@@ -521,4 +521,44 @@
 
 
-
-
+int SpaceShip::getShieldCur () { return this->shieldCur; }
+int SpaceShip::getShieldMax () { return this->shieldMax; }
+
+int SpaceShip::getArmorCur () { return this->armorCur; }
+int SpaceShip::getArmorMax () { return this->armorMax; }
+
+int SpaceShip::getElectronicCur () { return this->electronicCur; }
+int SpaceShip::getElectronicMax () { return this->electronicMax; }
+
+void SpaceShip::damage(int pDamage, int eDamage){
+if( this->shieldActive) {
+    if( this->shieldCur > pDamage) {
+      this->shieldCur = this->shieldCur - pDamage;
+    }
+    else { // shield <= pDamage
+      this->shieldCur = 0;
+      this->shieldActive = false; //shield collaptses
+      pDamage = pDamage - this->shieldCur;
+      if( !this->shieldActive) {
+        this->armorCur = this->armorCur -  pDamage / 2; // remaining damages hits armor at half rate
+        this->electronicCur = this->electronicCur - eDamage;
+      }
+    }
+  }
+  else {
+    this->armorCur = this->armorCur - pDamage;
+    this->electronicCur = this->electronicCur - eDamage;
+  }
+  if( this->armorCur <= 0) { /* FIXME implement shipcrash*/ }
+}
+
+void SpaceShip::shield(){
+  int time = 1; // FIXME implement tick time calculation
+  if( this->shieldCur + this->shieldRegen * time > shieldMax)
+    this->shield = this->shieldMax;
+  else
+    this-shieldCur = this->shieldCur + this->shieldRegen * time;
+
+  if( this->shieldCur > shieldTH)
+    this->shieldActive = true;
+}
+
Index: branches/playability/src/world_entities/space_ships/space_ship.h
===================================================================
--- branches/playability/src/world_entities/space_ships/space_ship.h	(revision 9949)
+++ branches/playability/src/world_entities/space_ships/space_ship.h	(revision 9950)
@@ -47,4 +47,17 @@
     virtual void process(const Event &event);
 
+    //Functions for GUI
+    virtual int getShieldCur();     //!< returns current shield value
+    virtual int getShieldMax();     //!< returns maximum shield value
+
+    virtual int getArmorCur();      //!< returns current armor value
+    virtual int getArmorMax();      //!< returns current armor value
+
+    virtual int getElectronicCur(); //!< returns current electronic value
+    virtual int getElectronicMax(); //!< returns current electronic value
+
+    //damage handler
+    virtual void damage(int pDamage, int eDamage);  //!< pDamage physical damage, eDamage electronic damage
+
   private:
     void init();
@@ -52,27 +65,32 @@
     void calculateVelocity(float time);
 
+    void shield();  //!< shield handeler
 
-	int					shield;				//!< current shield
-	int					shieldMax;			//!< maximum shield
-	float				shieldEnergyShare;	//!< percentage of reactor output
+    //ship atributes
+    int         shieldCur;          //!< current shield
+    int         shieldMax;          //!< maximum shield
+    float       shieldEnergyShare;  //!< percentage of reactor output
+    int         shieldRegen;        //!< shield regeneration rate
+    int         shieldTH;           //!< shield threshhold for reactivation
+    bool        shieldActive;       //!< wheather the shield is working
 
-	int					armor;				//!< current armor
-	int					armorMax;			//!< maximum armor
+    int         armorCur;           //!< current armor
+    int         armorMax;           //!< maximum armor
 
-	int					electronic;			//!< current electronic
-	int					electronicMax;		//!< maximum electronic
+    int         electronicCur;      //!< current electronic
+    int         electronicMax;      //!< maximum electronic
 
-	int					engineSpeed;		//!< speed output
-	int					enginePowerConsume; //!< energy needed
-	float				engineEnergyShare;	//!< percentage of reactor output
+    int         engineSpeedCur;     //!< speed output
+    int         enginePowerConsume; //!< energy needed
+    float       engineEnergyShare;  //!< percentage of reactor output
 
-	int					weaponEnergySlot;	//!< number of energy weapon slots
-	int					weaponEnergyUsed;
-	float				weaponEnergyShare;
-	int					weaponSpecialSlot;	//!< number of special weapon slots
-	int					weaponSpecialUsed;
+    int         weaponEnergySlot;   //!< number of energy weapon slots
+    int         weaponEnergyUsed;
+    float       weaponEnergyShare;
+    int         weaponSpecialSlot;  //!< number of special weapon slots
+    int         weaponSpecialUsed;
 
-	int					reactorOutput;		//!< reactor output
-	int					reactorCapacity;	//!< reactor capacity
+    int         reactorOutput;      //!< reactor output
+    int         reactorCapacity;    //!< reactor capacity
 
     bool                  bUp;                //!< up button pressed.
