Index: /trunk/src/world_entities/player.cc
===================================================================
--- /trunk/src/world_entities/player.cc	(revision 5440)
+++ /trunk/src/world_entities/player.cc	(revision 5441)
@@ -136,8 +136,8 @@
 
   this->weaponMan->setSlotPosition(0, Vector(-2.6, .1, -3.0));
-  this->weaponMan->setSlotCapability(0, WTYPE_ALLDIRS & WTYPE_DIRECTIONAL);
+  this->weaponMan->setSlotCapability(0, WTYPE_ALLDIRS | WTYPE_DIRECTIONAL);
 
   this->weaponMan->setSlotPosition(1, Vector(-2.6, .1, 3.0));
-  this->weaponMan->setSlotCapability(1, WTYPE_ALLDIRS & WTYPE_DIRECTIONAL);
+  this->weaponMan->setSlotCapability(1, WTYPE_ALLDIRS | WTYPE_DIRECTIONAL);
 
   this->weaponMan->setSlotPosition(2, Vector(-1.5, .5, -.5));
Index: /trunk/src/world_entities/weapons/test_gun.cc
===================================================================
--- /trunk/src/world_entities/weapons/test_gun.cc	(revision 5440)
+++ /trunk/src/world_entities/weapons/test_gun.cc	(revision 5441)
@@ -134,4 +134,5 @@
   this->setActionSound(WA_SHOOT, "sound/shot1.wav");
 
+  this->setCapability(WTYPE_ALLDIRS | WTYPE_DIRECTIONAL);
   this->setProjectileType(CL_TEST_BULLET);
   this->prepareProjectiles(20);
Index: /trunk/src/world_entities/weapons/turret.cc
===================================================================
--- /trunk/src/world_entities/weapons/turret.cc	(revision 5440)
+++ /trunk/src/world_entities/weapons/turret.cc	(revision 5441)
@@ -91,5 +91,5 @@
   //this->minCharge = 2;
 
-
+  this->setCapability(WTYPE_ALLDIRS | WTYPE_TURRET);
   this->setProjectileType(CL_TEST_BULLET);
 
Index: /trunk/src/world_entities/weapons/weapon.cc
===================================================================
--- /trunk/src/world_entities/weapons/weapon.cc	(revision 5440)
+++ /trunk/src/world_entities/weapons/weapon.cc	(revision 5441)
@@ -94,4 +94,5 @@
   this->energy = .0;
   this->energyMax = 10.0;
+  this->capability = WTYPE_ALL;
 
   this->setWeaponManager(NULL);
Index: /trunk/src/world_entities/weapons/weapon.h
===================================================================
--- /trunk/src/world_entities/weapons/weapon.h	(revision 5440)
+++ /trunk/src/world_entities/weapons/weapon.h	(revision 5441)
@@ -106,4 +106,8 @@
 
     // FUNCTIONS TO SET THE WEAPONS PROPERTIES.
+    /** sets the Weapons Capabilities */
+    inline void setCapability(long capabilities) { this->capability = capabilities; };
+    /** @returns the Capabilities of this Weapon */
+    inline long getCapability() { return this->capability; };
     void setProjectileType(ClassID projectile);
     void setProjectileType(const char* projectile);
@@ -185,4 +189,7 @@
 
   private:
+    // type of Weapon
+    long                 capability;                       //!< what capabilities the Weapon has @see W_Capability
+
     // it is all about energy
     float                energy;                           //!< The energy stored in the weapons secondary buffers (reserve)
Index: /trunk/src/world_entities/weapons/weapon_manager.cc
===================================================================
--- /trunk/src/world_entities/weapons/weapon_manager.cc	(revision 5440)
+++ /trunk/src/world_entities/weapons/weapon_manager.cc	(revision 5441)
@@ -229,10 +229,18 @@
   if (slotID == -1) // WM_FREE_SLOT
   {
-    slotID = this->getNextFreeSlot(configID);
+    slotID = this->getNextFreeSlot(configID, weapon->getCapability());
     if( slotID < 0 || slotID >= this->slotCount)
     {
-      PRINTF(0)("There is no free slot in this WeaponConfig to dock this weapon at! Aborting\n");
+      PRINTF(1)("There is no free slot in this WeaponConfig to dock this weapon at! Aborting\n");
       return;
     }
+  }
+
+  if (!(this->currentSlotConfig[slotID].capability & weapon->getCapability() & WTYPE_ALLKINDS) &&
+        this->currentSlotConfig[slotID].capability & weapon->getCapability() & WTYPE_ALLDIRS)
+  {
+    PRINTF(2)("Unable to add Weapon with wrong capatibility to Slot %d (W:%d M:%d)\n",
+              slotID, weapon->getCapability(), this->currentSlotConfig[slotID].capability);
+    return;
   }
 
@@ -407,5 +415,6 @@
   {
     if( this->configs[configID][i] == NULL &&
-        (this->currentSlotConfig[i].capability & capability == this->currentSlotConfig[i].capability))
+        (this->currentSlotConfig[i].capability & capability & WTYPE_ALLKINDS) &&
+        (this->currentSlotConfig[i].capability & capability & WTYPE_ALLDIRS))
       return i;
   }
