Index: orxonox/trunk/src/world_entities/player.cc
===================================================================
--- orxonox/trunk/src/world_entities/player.cc	(revision 4953)
+++ orxonox/trunk/src/world_entities/player.cc	(revision 4954)
@@ -104,5 +104,4 @@
   bUp = bDown = bLeft = bRight = bAscend = bDescend = false;
   bFire = false;
-  this->bWeaponChange = false;
   acceleration = 10.0;
 
@@ -263,9 +262,4 @@
     {
       this->weaponMan->fire();
-    }
-  if( this->bWeaponChange)
-    {
-      this->weaponMan->nextWeaponConf();
-      this->bWeaponChange = false;
     }
 }
@@ -287,5 +281,5 @@
       this->bFire = event.bPressed;
   else if( event.type == KeyMapper::PEV_NEXT_WEAPON && event.bPressed)
-    this->weaponMan->nextWeaponConf();//if( !event.bPressed) this->bWeaponChange = !this->bWeaponChange;
+    this->weaponMan->nextWeaponConfig();//if( !event.bPressed) this->bWeaponChange = !this->bWeaponChange;
   else if ( event.type == KeyMapper::PEV_PREVIOUS_WEAPON && event.bPressed)
     this->weaponMan->previousWeaponConfig();
Index: orxonox/trunk/src/world_entities/player.h
===================================================================
--- orxonox/trunk/src/world_entities/player.h	(revision 4953)
+++ orxonox/trunk/src/world_entities/player.h	(revision 4954)
@@ -62,5 +62,4 @@
     bool                  bDescend;           //!< descend button presses.
     bool                  bFire;              //!< fire button pressed.
-    bool                  bWeaponChange;      //!< weapon change button pressed
 
     WeaponManager*        weaponMan;          //!< the weapon manager: managing a list of weapon to wepaon-slot mapping
Index: orxonox/trunk/src/world_entities/weapons/weapon_manager.cc
===================================================================
--- orxonox/trunk/src/world_entities/weapons/weapon_manager.cc	(revision 4953)
+++ orxonox/trunk/src/world_entities/weapons/weapon_manager.cc	(revision 4954)
@@ -203,9 +203,41 @@
 
 /**
+ * sets the capabilities of a Slot
+ * @param slot the slot to set the capability
+ * @param slotCapability the capability @see WM_SlotCapability
+ */
+void WeaponManager::setSlotCapability(int slot, long slotCapability)
+{
+  if (slot > slotCount)
+    return;
+  this->currentSlotConfig[slot].capability = slotCapability;
+}
+
+
+/**
  * removes a Weapon from the WeaponManager
+ *
+ * !! The weapon must be inactive before you can delete it,    !!
+ * !! because it will still be deactivated (if it is selected) !!
  */
 void WeaponManager::removeWeapon(Weapon* weapon, int configID)
 {
-  /* empty */
+  if (weapon == NULL)
+    return;
+  if (configID < 0)
+  {
+    for (int j = 0; j < WM_MAX_SLOTS; j++)
+    {
+      for (int i = 0; i < WM_MAX_CONFIGS; i++)
+      {
+        if (this->configs[i][j] == weapon)
+          this->configs[i][j] = NULL;
+      }
+      if (this->currentSlotConfig[j].currentWeapon == weapon)
+      {
+        this->currentSlotConfig[j].nextWeapon = NULL;
+      }
+    }
+  }
 }
 
@@ -214,5 +246,5 @@
  * changes to the next weapon configuration
  */
-void WeaponManager::nextWeaponConf()
+void WeaponManager::nextWeaponConfig()
 {
   ++this->currentConfigID;
Index: orxonox/trunk/src/world_entities/weapons/weapon_manager.h
===================================================================
--- orxonox/trunk/src/world_entities/weapons/weapon_manager.h	(revision 4953)
+++ orxonox/trunk/src/world_entities/weapons/weapon_manager.h	(revision 4954)
@@ -1,28 +1,12 @@
 /*!
-    \file weapon.h
-  *  a weapon that a player can use
-
-    A Player has a list of weapons, that can be choosen to shoot projectiles
-    (projectiles.{cc,h}) at ennemies. These weapons can be shooted sequentially
-    or (if able) combined. Therefore you can choose the weapon mode = choose
-    a weapon.
-
-    A weapon is characterized by:
-     o firing-rate: the initial firing rate of a weapon (1/s = Herz)
-     o slowdown-factor: this is a factor d: exp(-d*x), d is element of all positive R. it determines how fast the firing-rate will slow down. if no slowdown: d=0, the bigger d is, the faster the weapon will slow down!
-     o energy-consumption: this determines the energy that has to be used to produce this projectile = costs per projectile
-
-    Furthermore there are some other attributes, that will help to represent a firing
-    weapon in this world:
-     o sound file/ressource: this is a pointer to the sound-file/ressource. however it may be represented
-     o shooting animation
-
-
-     a player defines one or more weapon configurations. a player has got one to eight
-     weapon slots: places where weapons can be attached to. a weapon configuration
-     is a matching between weapons and slots.
-     Since its clear how many weapons a player will have, there is no list of weapons:
-     its hard coded and limited to 8 slots and 4 configs. More would be a waste of
-     memory and time you need to customize and change to a weapon config...
+ * @file weapon_manager.h
+ * every big WorldEntity has the ability to carry many different Weapons.
+ * for this to be easy there is the WeaponManager, that handels these weapons,
+ * and changes between them.
+ *
+ *
+ *
+ * @TODO 1. WeaponManager should also handle a List of availiableWeapons.
+ * @TODO 2. Weapons should now Types the counteract to capabilities, so we know where we can put them on the ship.
  */
 
@@ -90,11 +74,18 @@
     // setting up the WeaponManager with the following functions
     void setSlotPosition(int slot, const Vector& position);
-    void setSlotCapability(long slotCapability);
+    /** @param slot the slot to get the relative position from @returns the relative position of the Carrier to the Slot */
+    const Vector& getSlotPosition(int slot) const { return this->currentSlotConfig[slot].position.getRelCoor(); };
+    void setSlotCapability(int slot, long slotCapability);
+    /** @param slot the slot to get the capabilities from @returns the capabilies */
+    long getSlotCapability(int slot) const { return this->currentSlotConfig[slot].capability; };
+
     void setParent(PNode* parent);
+    /** @returns the Parent (carrier) of this WeaponManager */
+    PNode* getParent() const { return this->parent; };
 
     void addWeapon(Weapon* weapon, int configID = -1, int slotID = -1);
     void removeWeapon(Weapon* weapon, int configID = -1);
 
-    void nextWeaponConf();
+    void nextWeaponConfig();
     void previousWeaponConfig();
     void changeWeaponConfig(int weaponConfig);
@@ -113,16 +104,16 @@
 
   private:
-    PNode*                  parent;                                  //!< The parent, this WeaponManager is connected to.
+    PNode*                  parent;                                   //!< The parent, this WeaponManager is connected to.
 
-    int                     slotCount;                               //!< number of weapon slots the ship has.
-    int                     currentConfigID;                         //!< the currently selected config.
-    Weapon*                 configs[WM_MAX_CONFIGS][WM_MAX_SLOTS];   //!< An array of predefined configurations and assigned weapon.
-    WM_Slot                 currentSlotConfig[WM_MAX_SLOTS];         //!< The currentConfigureation.
+    int                     slotCount;                                //!< number of weapon slots the ship has.
+    int                     currentConfigID;                          //!< the currently selected config.
+    Weapon*                 configs[WM_MAX_CONFIGS][WM_MAX_SLOTS];    //!< An array of predefined configurations and assigned weapon.
+    WM_Slot                 currentSlotConfig[WM_MAX_SLOTS];          //!< The currentConfigureation.
 
-    Weapon*                 availiableWeapons[WM_MAX_LOADED_WEAPONS];
+    Weapon*                 availiableWeapons[WM_MAX_LOADED_WEAPONS]; //!< The availiable Weapons of this WeaponManager
 
     bool                    weaponChange;
 
-    Crosshair*              crosshair;                               //!< an aim.
-    tAnimation<Crosshair>*  crossHairSizeAnim;                       //!< An animation for the crosshair (scaling)
+    Crosshair*              crosshair;                                //!< an aim.
+    tAnimation<Crosshair>*  crossHairSizeAnim;                        //!< An animation for the crosshair (scaling)
 };
