Index: code/branches/weapon2/src/orxonox/objects/weaponSystem/Munition.h
===================================================================
--- code/branches/weapon2/src/orxonox/objects/weaponSystem/Munition.h	(revision 2336)
+++ code/branches/weapon2/src/orxonox/objects/weaponSystem/Munition.h	(revision 2337)
@@ -59,4 +59,6 @@
 
         private:
+
+        protected:
             unsigned int bullets_;
             unsigned int magazines_;
Index: code/branches/weapon2/src/orxonox/objects/weaponSystem/Weapon.cc
===================================================================
--- code/branches/weapon2/src/orxonox/objects/weaponSystem/Weapon.cc	(revision 2336)
+++ code/branches/weapon2/src/orxonox/objects/weaponSystem/Weapon.cc	(revision 2337)
@@ -44,4 +44,7 @@
         this->bulletReadyToShoot_ = true;
         this->magazineReadyToShoot_ = true;
+        this->parentWeaponSystem_ = 0;
+        this->parentWeaponSlot_ = 0;
+        this->munition_ = 0;
     }
 
@@ -90,4 +93,5 @@
             {
                 //create new munition with identifier
+COUT(0) << "Weapon::attachNeededMunition, create new Munition of Type " << munitionName << std::endl;
                 this->munitionIdentifier_ = ClassByString(munitionName);
                 this->munition_ = this->munitionIdentifier_.fabricate(this);
@@ -108,6 +112,10 @@
     {   return this->munitionType_;  }
 
-    Munition * Weapon::getAttachedMunition()
-    {   return this->munition_; }
+    Munition * Weapon::getAttachedMunition(std::string munitionType)
+    {   
+COUT(0) << "Weapon::getAttachedMunition, parentWeaponSystem_="<< this->parentWeaponSystem_ << std::endl;   
+        this->parentWeaponSystem_->getMunitionType(munitionType);
+COUT(0) << "Weapon::getAttachedMunition, munition_="<< this->munition_ << std::endl;
+return this->munition_; }
 
     void Weapon::setBulletLoadingTime(float loadingTime)
Index: code/branches/weapon2/src/orxonox/objects/weaponSystem/Weapon.h
===================================================================
--- code/branches/weapon2/src/orxonox/objects/weaponSystem/Weapon.h	(revision 2336)
+++ code/branches/weapon2/src/orxonox/objects/weaponSystem/Weapon.h	(revision 2337)
@@ -52,5 +52,5 @@
             virtual void fire();
             void attachNeededMunition(std::string munitionType);
-            Munition * getAttachedMunition();
+            Munition * getAttachedMunition(std::string munitiontype);
 
             //reloading
@@ -83,4 +83,6 @@
 
         private:
+
+        protected:
             bool bulletReadyToShoot_;
             bool magazineReadyToShoot_;
Index: code/branches/weapon2/src/orxonox/objects/weaponSystem/WeaponPack.cc
===================================================================
--- code/branches/weapon2/src/orxonox/objects/weaponSystem/WeaponPack.cc	(revision 2336)
+++ code/branches/weapon2/src/orxonox/objects/weaponSystem/WeaponPack.cc	(revision 2337)
@@ -104,3 +104,12 @@
         return weapons_[index];
     }
+
+    void WeaponPack::setWeaponSystemToAllWeapons(WeaponSystem * weaponSystem)
+    {
+        for (int i=0; i < (int) this->weapons_.size(); i++)
+        {
+            this->weapons_[i]->setParentWeaponSystem(weaponSystem);
+        }
+        
+    }
 }
Index: code/branches/weapon2/src/orxonox/objects/weaponSystem/WeaponPack.h
===================================================================
--- code/branches/weapon2/src/orxonox/objects/weaponSystem/WeaponPack.h	(revision 2336)
+++ code/branches/weapon2/src/orxonox/objects/weaponSystem/WeaponPack.h	(revision 2337)
@@ -60,4 +60,6 @@
             Weapon * getWeapon(unsigned int index);
 
+            void setWeaponSystemToAllWeapons(WeaponSystem * weaponSystem);
+
             inline void setParentWeaponSystem(WeaponSystem *parentWeaponSystem)
                 { parentWeaponSystem_=parentWeaponSystem; }
Index: code/branches/weapon2/src/orxonox/objects/weaponSystem/WeaponSet.cc
===================================================================
--- code/branches/weapon2/src/orxonox/objects/weaponSystem/WeaponSet.cc	(revision 2336)
+++ code/branches/weapon2/src/orxonox/objects/weaponSystem/WeaponSet.cc	(revision 2337)
@@ -46,5 +46,5 @@
 
         this->parentWeaponSystem_ = 0;
-
+        this->attachedWeaponPack_ = 0;
     }
 
Index: code/branches/weapon2/src/orxonox/objects/weaponSystem/WeaponSystem.cc
===================================================================
--- code/branches/weapon2/src/orxonox/objects/weaponSystem/WeaponSystem.cc	(revision 2336)
+++ code/branches/weapon2/src/orxonox/objects/weaponSystem/WeaponSystem.cc	(revision 2337)
@@ -84,4 +84,6 @@
         this->munitionSet_[munitionType] = munitionToAdd;
     }
+
+    //returns the Pointer to the munitionType
     Munition * WeaponSystem::getMunitionType(std::string munitionType)
     {
Index: code/branches/weapon2/src/orxonox/objects/weaponSystem/munitions/LaserGunMunition.cc
===================================================================
--- code/branches/weapon2/src/orxonox/objects/weaponSystem/munitions/LaserGunMunition.cc	(revision 2336)
+++ code/branches/weapon2/src/orxonox/objects/weaponSystem/munitions/LaserGunMunition.cc	(revision 2337)
@@ -37,4 +37,6 @@
 namespace orxonox
 {
+    CreateFactory(LaserGunMunition);
+
     LaserGunMunition::LaserGunMunition(BaseObject* creator) : Munition(creator)
     {
Index: code/branches/weapon2/src/orxonox/objects/weaponSystem/weapons/LaserGun.cc
===================================================================
--- code/branches/weapon2/src/orxonox/objects/weaponSystem/weapons/LaserGun.cc	(revision 2336)
+++ code/branches/weapon2/src/orxonox/objects/weaponSystem/weapons/LaserGun.cc	(revision 2337)
@@ -61,6 +61,7 @@
         if ( this->getBulletReadyToShoot() && this->getMagazineReadyToShoot() )
         {
+COUT(0) << "LaserGun::fire - ready to shoot" << std::endl;    
             //take munition
-            this->getAttachedMunition()->removeBullets(1,this);
+            this->getAttachedMunition(this->munitionType_)->removeBullets(1,this);
             Weapon::bulletTimer();
             this->setBulletReadyToShoot(false);
Index: code/branches/weapon2/src/orxonox/objects/worldentities/pawns/Pawn.cc
===================================================================
--- code/branches/weapon2/src/orxonox/objects/worldentities/pawns/Pawn.cc	(revision 2336)
+++ code/branches/weapon2/src/orxonox/objects/worldentities/pawns/Pawn.cc	(revision 2337)
@@ -167,5 +167,9 @@
     {   
 COUT(0) << "Pawn::setWeaponPack" << std::endl;
-        this->weaponSystem_->attachWeaponPack( wPack,wPack->getFireMode() );   }
+        this->weaponSystem_->attachWeaponPack( wPack,wPack->getFireMode() );
+        wPack->setParentWeaponSystem(this->weaponSystem_);
+        wPack->setWeaponSystemToAllWeapons(this->weaponSystem_);
+    }
+
     WeaponPack * Pawn::getWeaponPack(unsigned int firemode) const
     {   return this->weaponSystem_->getWeaponPackPointer(firemode);    }
