Index: /trunk/src/world_entities/mount_point.cc
===================================================================
--- /trunk/src/world_entities/mount_point.cc	(revision 10545)
+++ /trunk/src/world_entities/mount_point.cc	(revision 10546)
@@ -190,5 +190,7 @@
     else if( obj->isA( WeaponSlot::staticClassID()))
     {
-//       PRINTF(0)("=========+>we got a weapon slot\n");
+      PRINTF(0)("=========+>we got a weapon slot at\n");
+      this->getRelCoor().debug();
+
 
       // cast down the object to WE
@@ -196,6 +198,6 @@
 
       // now set the position, direction and reparent it to this node
-      this->_mount->setAbsCoor( this->getAbsCoor());
-      this->_mount->setAbsDir( this->getAbsDir());
+      this->_mount->setRelCoor( this->getRelCoor());
+      this->_mount->setRelDir( this->getRelDir());
       this->_mount->setParent( this);
     }
Index: /trunk/src/world_entities/npcs/npc.cc
===================================================================
--- /trunk/src/world_entities/npcs/npc.cc	(revision 10545)
+++ /trunk/src/world_entities/npcs/npc.cc	(revision 10546)
@@ -195,21 +195,8 @@
 
 
-  // now get slots from the mount points
-  std::map<int, MountPoint*>::iterator it = this->mountPointMap.begin();
-  for( ;it != this->mountPointMap.end(); it++)
-  {
-    WeaponSlot* ws = dynamic_cast<WeaponSlot*>((*it).second->getMount());
-    if( ws != NULL && ws->isA(WeaponSlot::staticClassID()))
-    {
-      int slot = ws->getWeaponSlot();
-      int side = ws->getWeaponSide();
-      this->getWeaponManager().setSlotPosition(slot, ws->getRelCoor());
-      this->getWeaponManager().setSlotDirection(slot, ws->getRelDir());
-      PRINTF(0)("setting slot %i\n", slot);
-    }
-  }
 
   this->getWeaponManager().getFixedTarget()->setParent(this);
   this->getWeaponManager().getFixedTarget()->setRelCoor(100000,0,0);
+  this->bInit = false;
 }
 
@@ -411,4 +398,26 @@
 void NPC::tick(float dt)
 {
+  if( !this->bInit)
+  {
+    // now get slots from the mount points
+    std::map<int, MountPoint*>::iterator it = this->mountPointMap.begin();
+    for( ;it != this->mountPointMap.end(); it++)
+    {
+      WeaponSlot* ws = dynamic_cast<WeaponSlot*>((*it).second->getMount());
+      if( ws != NULL && ws->isA(WeaponSlot::staticClassID()))
+      {
+        int slot = ws->getWeaponSlot();
+        int side = ws->getWeaponSide();
+        this->getWeaponManager().setSlotPosition(slot, ws->getRelCoor());
+        this->getWeaponManager().setSlotDirection(slot, ws->getRelDir());
+        PRINTF(0)("setting slot %i\n", slot);
+        ws->getRelCoor().debug();
+      }
+    }
+  this->bInit = true;
+  }
+
+
+
   this->weaponMan.tick(dt);
   if (this->bFire)
Index: /trunk/src/world_entities/npcs/npc.h
===================================================================
--- /trunk/src/world_entities/npcs/npc.h	(revision 10545)
+++ /trunk/src/world_entities/npcs/npc.h	(revision 10546)
@@ -57,4 +57,5 @@
   WeaponManager         weaponMan;    //!< weapon manager
   bool                  bFire;        //!< fire
+  bool                  bInit;
 
   AIModule*             aiModule;
Index: /trunk/src/world_entities/world_entity.cc
===================================================================
--- /trunk/src/world_entities/world_entity.cc	(revision 10545)
+++ /trunk/src/world_entities/world_entity.cc	(revision 10546)
@@ -426,5 +426,5 @@
 void WorldEntity::addMountPoint(int slot, MountPoint* mountPoint)
 {
-  if( this->mountPointMap.find(slot) == this->mountPointMap.end())
+  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());
@@ -442,5 +442,5 @@
 void WorldEntity::mount(int slot, WorldEntity* entity)
 {
-  if( this->mountPointMap.find(slot) == this->mountPointMap.end())
+  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);
