Index: /branches/ai/src/world_entities/npcs/npc.cc
===================================================================
--- /branches/ai/src/world_entities/npcs/npc.cc	(revision 10267)
+++ /branches/ai/src/world_entities/npcs/npc.cc	(revision 10268)
@@ -23,4 +23,6 @@
 #include "ai_swarm.h"
 #include "ai_engine.h"
+
+#include "debug.h"
 
 #include "loading/load_param.h"
@@ -74,4 +76,64 @@
 
 
+/**
+ * @brief adds a Weapon to the NPC.
+ * @param weapon the Weapon to add.
+ * @param configID the Configuration ID to add this weapon to.
+ * @param slotID the slotID to add the Weapon to.
+ */
+bool NPC::addWeapon(Weapon* weapon, int configID, int slotID)
+{
+  weapon->setOwner(this->getOwner());
+
+
+  if(this->weaponMan.addWeapon(weapon, configID, slotID))
+  {
+    return true;
+  }
+  else
+  {
+    if (weapon != NULL)
+      PRINTF(2)("Unable to add Weapon (%s::%s) to %s::%s\n",
+                weapon->getClassCName(), weapon->getCName(), this->getClassCName(), this->getCName());
+    else
+      PRINTF(2)("No weapon defined\n");
+    return false;
+
+  }
+}
+
+/**
+ * @brief removes a Weapon.
+ * @param weapon the Weapon to remove.
+ */
+void NPC::removeWeapon(Weapon* weapon)
+{
+  this->weaponMan.removeWeapon(weapon);
+
+}
+
+/**
+ * @brief jumps to the next WeaponConfiguration
+ */
+void NPC::nextWeaponConfig()
+{
+  this->weaponMan.nextWeaponConfig();
+}
+
+/**
+ * @brief moves to the last WeaponConfiguration
+ */
+void NPC::previousWeaponConfig()
+{
+  this->weaponMan.previousWeaponConfig();
+}
+
+
+
+
+/**
+ * ticking
+ * @param dt  time since last tick
+ */
 void NPC::tick(float dt)
 {
@@ -79,3 +141,4 @@
   if (this->bFire)
     weaponMan.fire();
+  this->bFire = false;
 }
Index: /branches/ai/src/world_entities/npcs/npc.h
===================================================================
--- /branches/ai/src/world_entities/npcs/npc.h	(revision 10267)
+++ /branches/ai/src/world_entities/npcs/npc.h	(revision 10268)
@@ -19,6 +19,16 @@
   virtual void loadParams(const TiXmlElement* root = NULL);
 
+
+  bool addWeapon(Weapon* weapon, int configID = -1, int slotID = -1);
+  void removeWeapon(Weapon* weapon);
+  void nextWeaponConfig();
+  void previousWeaponConfig();
+  inline WeaponManager& getWeaponManager() { return this->weaponMan; };
+
+
   virtual void tick(float dt);
   inline int getTeam()  { return teamNumber; }
+
+  inline void fire() { this->bFire = true; }
 
 
Index: /branches/ai/src/world_entities/npcs/npc_test.cc
===================================================================
--- /branches/ai/src/world_entities/npcs/npc_test.cc	(revision 10267)
+++ /branches/ai/src/world_entities/npcs/npc_test.cc	(revision 10268)
@@ -31,4 +31,9 @@
 #include "playable.h"
 
+#include "weapons/test_gun.h"
+#include "weapons/turret.h"
+#include "weapons/cannon.h"
+
+
 #include "class_id_DEPRECATED.h"
 
@@ -45,6 +50,53 @@
     this->loadParams(root);
 
+  Weapon* wpRight = new TestGun(0);
+  wpRight->setName("testGun Right");
+  Weapon* wpLeft = new TestGun(1);
+  wpLeft->setName("testGun Left");
+  //Weapon* cannon = dynamic_cast<Weapon*>(Factory::fabricate(CL_CANNON));
 
+  //cannon->setName("BFG");
+
+  this->addWeapon(wpLeft, 1, 0);
+  this->addWeapon(wpRight,1 ,1);
+  //this->addWeapon(cannon, 0, 6);
+
+  this->getWeaponManager().changeWeaponConfig(1);
   // create the weapons and their manager
+
+  this->setHealthMax(100);
+  this->setHealth(80);
+
+  this->getWeaponManager().setSlotCount(7);
+
+  this->getWeaponManager().setSlotPosition(0, Vector(-2.6, .1, -3.0));
+  this->getWeaponManager().setSlotCapability(0, WTYPE_ALLDIRS | WTYPE_DIRECTIONAL);
+
+  this->getWeaponManager().setSlotPosition(1, Vector(-2.6, .1, 3.0));
+  this->getWeaponManager().setSlotCapability(1, WTYPE_ALLDIRS | WTYPE_DIRECTIONAL);
+
+  this->getWeaponManager().setSlotPosition(2, Vector(-1.5, .5, -.5));
+  this->getWeaponManager().setSlotDirection(2, Quaternion(-M_PI_4*.5, Vector(1,0,0)));
+
+  this->getWeaponManager().setSlotPosition(3, Vector(-1.5, .5, .5));
+  this->getWeaponManager().setSlotDirection(3, Quaternion(M_PI_4*.5, Vector(1,0,0)));
+
+  this->getWeaponManager().setSlotPosition(4, Vector(-1.5, -.5, .5));
+  this->getWeaponManager().setSlotDirection(4, Quaternion(-M_PI_4*.5+M_PI, Vector(1,0,0)));
+
+  this->getWeaponManager().setSlotPosition(5, Vector(-1.5, -.5, -.5));
+  this->getWeaponManager().setSlotDirection(5, Quaternion(+M_PI_4*.5-M_PI, Vector(1,0,0)));
+  //
+  this->getWeaponManager().setSlotPosition(6, Vector(-1, 0.0, 0));
+  this->getWeaponManager().setSlotCapability(6, WTYPE_ALLDIRS | WTYPE_DIRECTIONAL);
+  //
+  //   this->getWeaponManager().setSlotPosition(8, Vector(-2.5, -0.3, -2.0));
+  //   this->getWeaponManager().setSlotDirection(8, Quaternion(-M_PI, Vector(1,0,0)));
+  //
+  //   this->getWeaponManager().setSlotPosition(9, Vector(-2.5, -0.3, 2.0));
+  //   this->getWeaponManager().setSlotDirection(9, Quaternion(+M_PI, Vector(1,0,0)));:
+
+  this->getWeaponManager().getFixedTarget()->setParent(this);
+  this->getWeaponManager().getFixedTarget()->setRelCoor(100000,0,0);
 
 }
