Index: /trunk/src/world_entities/mount_point.cc
===================================================================
--- /trunk/src/world_entities/mount_point.cc	(revision 10539)
+++ /trunk/src/world_entities/mount_point.cc	(revision 10540)
@@ -140,5 +140,5 @@
   if( this->_mount != NULL)
   {
-    PRINTF(0)("Got detail informations\n");
+    PRINTF(0)("Got detailed informations\n");
     this->_mount->loadParams( root);
 
Index: /trunk/src/world_entities/mount_point.h
===================================================================
--- /trunk/src/world_entities/mount_point.h	(revision 10539)
+++ /trunk/src/world_entities/mount_point.h	(revision 10540)
@@ -31,5 +31,5 @@
     void mount(PNode* entity);
     void unmount();
-
+    PNode* getMount() { return this->_mount; }
 
   private:
Index: /trunk/src/world_entities/npcs/npc.cc
===================================================================
--- /trunk/src/world_entities/npcs/npc.cc	(revision 10539)
+++ /trunk/src/world_entities/npcs/npc.cc	(revision 10540)
@@ -52,4 +52,7 @@
 #include "weapons/turret.h"
 #include "weapons/cannon.h"
+
+#include "mount_point.h"
+#include "weapons/weapon_slot.h"
 
 #include "npc.h"
@@ -169,4 +172,27 @@
 
   this->getWeaponManager().setSlotCount(7);
+
+
+  // now get slots from the mount points
+//   const std::vector<MountPoint*>::const_iterator it = this->beginMountPoints();
+//   std::vector<MountPoint*> list = this->getMountPoints();
+  std::map<int, MountPoint*>::iterator it = this->mountPointMap.begin();
+//   PRINTF(0)("\n\n\n\nsize: %i\n", this->mountPointMap.size());
+  for( ;it != this->mountPointMap.end(); it++)
+  {
+    PRINTF(0)("5555555555 this npc got mountss\n\n\n");
+    WeaponSlot* ws = dynamic_cast<WeaponSlot*>((*it).second->getMount());
+    printf("more\n");
+    if( ws != NULL && ws->isA(WeaponSlot::staticClassID()))
+    {
+      //
+      PRINTF(0)("5555555555 this npc got slots\n\n\n");
+
+      this->getWeaponManager().setSlotPosition(ws->getWeaponSlot(), ws->getRelCoor());
+      this->getWeaponManager().setSlotDirection(ws->getWeaponSlot(), ws->getRelDir());
+    }
+  }
+
+
 
   this->getWeaponManager().setSlotPosition(0, Vector(-2.6, .1, -3.0));
Index: /trunk/src/world_entities/world_entity.cc
===================================================================
--- /trunk/src/world_entities/world_entity.cc	(revision 10539)
+++ /trunk/src/world_entities/world_entity.cc	(revision 10540)
@@ -416,5 +416,6 @@
 {
   // add the mount point at the last position
-  this->mountPoints.push_back(mountPoint);
+//   this->mountPointMap[](mountPoint);
+  assert(false);
 }
 
@@ -425,16 +426,11 @@
 void WorldEntity::addMountPoint(int slot, MountPoint* mountPoint)
 {
-  if( this->mountPoints.capacity() < (unsigned int)slot)
-  {
-    // reserve 5 more slots than needed so this function is called as rare as possible
-    this->mountPoints.reserve(slot + 5);
-  }
-  else if( this->mountPoints[slot] != NULL)
-  {
-    PRINTF(4)("adding a mount point to a slot, that already is occupied! ignoring - maybe some object did not get connected well (object: %s)\n", this->getClassCName());
+  if( this->mountPointMap.find(slot) == this->mountPointMap.end())
+  {
+    PRINTF(2)("adding a mount point to a slot, that already is occupied! ignoring - maybe some object did not get connected well (object: %s)\n", this->getClassCName());
   }
 
   // just connect the mount point
-  this->mountPoints[slot] = mountPoint;
+  this->mountPointMap[slot] = mountPoint;
 }
 
@@ -446,5 +442,5 @@
 void WorldEntity::mount(int slot, WorldEntity* entity)
 {
-  if( this->mountPoints[slot] == NULL)
+  if( this->mountPointMap.find(slot) == this->mountPointMap.end())
   {
     PRINTF(0)("you tried to add an entity to a mount point that doesn't exist (slot %i)\n", slot);
Index: /trunk/src/world_entities/world_entity.h
===================================================================
--- /trunk/src/world_entities/world_entity.h	(revision 10539)
+++ /trunk/src/world_entities/world_entity.h	(revision 10540)
@@ -62,4 +62,6 @@
   void mount(int slot, WorldEntity* entity);
   void unmount(int slot);
+
+
 
   /** @param visibility if the Entity should be visible (been draw) */
@@ -176,5 +178,5 @@
   ;  ///FIXME
   void debugEntity() const;
-  
+
   void pauseTrack(bool stop);
 
@@ -194,5 +196,11 @@
   void updateHealthWidget();
   void addTrack(const TiXmlElement* root);
-  
+
+
+
+  protected:
+      std::vector<MountPoint*> mountPoints;       //!< A list with mount points for this model
+      std::map<int, MountPoint*> mountPointMap;
+
 
 
@@ -206,5 +214,4 @@
   std::vector<Model*>     models;             //!< The model that should be loaded for this entity.
   ObjectInformationFile*  oiFile;             //!< Reference to the object information file discribing the model of this WE
-  std::vector<MountPoint*> mountPoints;       //!< A list with mount points for this model
   std::string             md2TextureFileName; //!< the file name of the md2 model texture, only if this
   std::string             modelLODName;       //!< the name of the model lod file
