Index: /code/trunk/src/orxonox/OrxonoxPrereqs.h
===================================================================
--- /code/trunk/src/orxonox/OrxonoxPrereqs.h	(revision 2892)
+++ /code/trunk/src/orxonox/OrxonoxPrereqs.h	(revision 2893)
@@ -182,4 +182,5 @@
     class LaserGun;
     class LaserGunMunition;
+    class FusionMunition;
 
     class EventListener;
Index: /code/trunk/src/orxonox/objects/weaponSystem/Munition.cc
===================================================================
--- /code/trunk/src/orxonox/objects/weaponSystem/Munition.cc	(revision 2892)
+++ /code/trunk/src/orxonox/objects/weaponSystem/Munition.cc	(revision 2893)
@@ -105,5 +105,4 @@
     void Munition::fillBullets()
     {
-//COUT(0) << "Munition::fillBullets maxBullets_=" << this->maxBullets_ << std::endl;
         this->bullets_ = this->maxBullets_;
     }
Index: /code/trunk/src/orxonox/objects/weaponSystem/Weapon.cc
===================================================================
--- /code/trunk/src/orxonox/objects/weaponSystem/Weapon.cc	(revision 2892)
+++ /code/trunk/src/orxonox/objects/weaponSystem/Weapon.cc	(revision 2893)
@@ -42,13 +42,16 @@
     {
         RegisterObject(Weapon);
+
         this->bulletReadyToShoot_ = true;
         this->magazineReadyToShoot_ = true;
         this->parentWeaponSystem_ = 0;
         this->attachedToWeaponSlot_ = 0;
-        this->munition_ = 0;
         this->bulletLoadingTime_ = 0;
         this->magazineLoadingTime_ = 0;
         this->bReloading_ = false;
-
+        this->bulletAmount_= 0;
+        this->magazineAmount_ = 0;
+        this->munition_ = 0;
+        this->unlimitedMunition_ = false;
         this->setObjectMode(0x0);
     }
@@ -65,4 +68,7 @@
         XMLPortParam(Weapon, "bulletLoadingTime", setBulletLoadingTime, getBulletLoadingTime, xmlelement, mode);
         XMLPortParam(Weapon, "magazineLoadingTime", setMagazineLoadingTime, getMagazineLoadingTime, xmlelement, mode);
+        XMLPortParam(Weapon, "bullets", setBulletAmount, getBulletAmount, xmlelement, mode);
+        XMLPortParam(Weapon, "magazines", setMagazineAmount, getMagazineAmount, xmlelement, mode);
+        XMLPortParam(Weapon, "unlimitedMunition", setUnlimitedMunition, getUnlimitedMunition, xmlelement, mode);
     }
 
@@ -73,35 +79,46 @@
     }
 
+    void Weapon::setMunition()
+    {
+        this->munition_->setMaxBullets(this->bulletAmount_);
+        this->munition_->setMaxMagazines(this->magazineAmount_);
+    }
 
     void Weapon::fire()
     {
-//COUT(0) << "LaserGun::fire, this=" << this << std::endl;
         if ( this->bulletReadyToShoot_ && this->magazineReadyToShoot_ && !this->bReloading_)
         {
-//COUT(0) << "LaserGun::fire - ready to shoot" << std::endl;
-//COUT(0) << "LaserGun::fire - bullets" << this->munition_->bullets() << std::endl;
             this->bulletReadyToShoot_ = false;
-            if ( this->munition_->bullets() > 0)
+            if ( this->unlimitedMunition_== true )
             {
                 //shoot
-                this->takeBullets();
+                this->reloadBullet();
                 this->createProjectile();
             }
-            //if there are no bullets, but magazines
-            else if ( this->munition_->magazines() > 0 && this->munition_->bullets() == 0 )
-            {
-//COUT(0) << "LaserGun::fire - no bullets" << std::endl;
-                this->takeMagazines();
-            }
             else
             {
-//COUT(0) << "LaserGun::fire - no magazines" << std::endl;
-                //actions
+                if ( this->munition_->bullets() > 0)
+                {
+                    //shoot and reload
+                    this->takeBullets();
+                    this->reloadBullet();
+                    this->createProjectile();
+                }
+                //if there are no bullets, but magazines
+                else if ( this->munition_->magazines() > 0 && this->munition_->bullets() == 0 )
+                {
+                    //reload magazine
+                    this->takeMagazines();
+                    this->reloadMagazine();
+                }
+                else
+                {
+                    //no magazines
+                }
             }
         }
         else
         {
-//COUT(0) << "LaserGun::fire - weapon not reloaded - bullets remaining:" << this->munition_->bullets() << std::endl;
-            //actions
+            //weapon not reloaded
         }
 
@@ -109,7 +126,7 @@
 
 
+    //weapon reloading
     void Weapon::bulletTimer(float bulletLoadingTime)
     {
-//COUT(0) << "Weapon::bulletTimer started" << std::endl;
         this->bReloading_ = true;
         this->bulletReloadTimer_.setTimer( bulletLoadingTime , false , this , createExecutor(createFunctor(&Weapon::bulletReloaded)));
@@ -117,5 +134,4 @@
     void Weapon::magazineTimer(float magazineLoadingTime)
     {
-//COUT(0) << "Weapon::magazineTimer started" << std::endl;
         this->bReloading_ = true;
         this->magazineReloadTimer_.setTimer( magazineLoadingTime , false , this , createExecutor(createFunctor(&Weapon::magazineReloaded)));
@@ -132,26 +148,28 @@
         this->bReloading_ = false;
         this->munition_->fillBullets();
-        this->magazineReadyToShoot_ = true;
-        this->bulletReadyToShoot_ = true;
-    }
+    }
+
 
 
     void Weapon::attachNeededMunition(std::string munitionName)
     {
-//COUT(0) << "Weapon::attachNeededMunition, parentWeaponSystem=" << this->parentWeaponSystem_ << std::endl;
-        //if munition type already exists attach it, else create a new one of this type and attach it to the weapon and to the WeaponSystem
+        /*  if munition type already exists attach it, else create a new one of this type and attach it to the weapon and to the WeaponSystem
+        */
         if (this->parentWeaponSystem_)
         {
-//COUT(0) << "Weapon::attachNeededMunition " << munitionName << std::endl;
+            //getMunitionType returns 0 if there is no such munitionType
             Munition* munition = this->parentWeaponSystem_->getMunitionType(munitionName);
             if ( munition )
+            {
                 this->munition_ = munition;
+                this->setMunition();
+            }
             else
             {
-                //create new munition with identifier
-//COUT(0) << "Weapon::attachNeededMunition, create new Munition of Type " << munitionName << std::endl;
+                //create new munition with identifier because there is no such munitionType
                 this->munitionIdentifier_ = ClassByString(munitionName);
                 this->munition_ = this->munitionIdentifier_.fabricate(this);
                 this->parentWeaponSystem_->setNewMunition(munitionName, this->munition_);
+                this->setMunition();
             }
         }
@@ -159,38 +177,55 @@
 
 
-     /*get and set functions
-     *
-     */
-
-    void Weapon::setMunitionType(std::string munitionType)
-    {   this->munitionType_ = munitionType; }
-
-    const std::string Weapon::getMunitionType()
-    {   return this->munitionType_;  }
-
-    void Weapon::setBulletLoadingTime(float loadingTime)
-    {   this->bulletLoadingTime_ = loadingTime; }
-
-    const float Weapon::getBulletLoadingTime()
-    {   return this->bulletLoadingTime_;  }
-
-    void Weapon::setMagazineLoadingTime(float loadingTime)
-    {   this->magazineLoadingTime_ = loadingTime; }
-
-    const float Weapon::getMagazineLoadingTime()
-    {   return this->magazineLoadingTime_;  }
-
-
     Munition * Weapon::getAttachedMunition(std::string munitionType)
     {
-//COUT(0) << "Weapon::getAttachedMunition, parentWeaponSystem_="<< this->parentWeaponSystem_ << std::endl;
         this->munition_ = this->parentWeaponSystem_->getMunitionType(munitionType);
-//COUT(0) << "Weapon::getAttachedMunition, munition_="<< this->munition_ << std::endl;
         return this->munition_;
     }
 
+
+    //these function are defined in the weapon classes
     void Weapon::takeBullets() { };
     void Weapon::createProjectile() { };
     void Weapon::takeMagazines() { };
+    void Weapon::reloadBullet() { };
+    void Weapon::reloadMagazine() { };
+
+
+    //get and set functions for XMLPort
+    void Weapon::setMunitionType(std::string munitionType)
+    {   this->munitionType_ = munitionType; }
+
+    const std::string Weapon::getMunitionType()
+    {   return this->munitionType_;  }
+
+    void Weapon::setBulletLoadingTime(float loadingTime)
+    {   this->bulletLoadingTime_ = loadingTime; }
+
+    const float Weapon::getBulletLoadingTime()
+    {   return this->bulletLoadingTime_;  }
+
+    void Weapon::setMagazineLoadingTime(float loadingTime)
+    {   this->magazineLoadingTime_ = loadingTime; }
+
+    const float Weapon::getMagazineLoadingTime()
+    {   return this->magazineLoadingTime_;  }
+
+    void Weapon::setBulletAmount(unsigned int amount)
+    {   this->bulletAmount_ = amount; }
+
+    const unsigned int Weapon::getBulletAmount()
+    {   return this->bulletAmount_;  }
+
+    void Weapon::setMagazineAmount(unsigned int amount)
+    {   this->magazineAmount_ = amount; }
+
+    const unsigned int Weapon::getMagazineAmount()
+    {   return this->magazineAmount_;   }
+
+    void Weapon::setUnlimitedMunition(bool unlimitedMunition)
+    {   this->unlimitedMunition_ = unlimitedMunition;   }
+
+    const bool Weapon::getUnlimitedMunition()
+    {   return this->unlimitedMunition_;    }
 
 }
Index: /code/trunk/src/orxonox/objects/weaponSystem/Weapon.h
===================================================================
--- /code/trunk/src/orxonox/objects/weaponSystem/Weapon.h	(revision 2892)
+++ /code/trunk/src/orxonox/objects/weaponSystem/Weapon.h	(revision 2893)
@@ -62,4 +62,5 @@
             void magazineReloaded();
 
+            //XMLPort functions
             virtual void setMunitionType(std::string munitionType);
             virtual const std::string getMunitionType();
@@ -68,9 +69,22 @@
             virtual void setMagazineLoadingTime(float loadingTime);
             virtual const float getMagazineLoadingTime();
+            virtual void setBulletAmount(unsigned int amount);
+            virtual const unsigned int getBulletAmount();
+            virtual void setMagazineAmount(unsigned int amount);
+            virtual const unsigned int getMagazineAmount();
+            virtual void setUnlimitedMunition(bool unlimitedMunition);
+            virtual const bool getUnlimitedMunition();
 
+            //weapon actions
             virtual void takeBullets();
             virtual void takeMagazines();
             virtual void createProjectile();
+            virtual void reloadBullet();
+            virtual void reloadMagazine();
 
+            //manually set or reset
+            virtual void setWeapon();
+            virtual void setMunition();
+            
             inline void setParentWeaponSystem(WeaponSystem *parentWeaponSystem)
                 { this->parentWeaponSystem_=parentWeaponSystem; };
@@ -83,5 +97,4 @@
                 { return this->attachedToWeaponSlot_; }
 
-            virtual void setWeapon();
 
         private:
@@ -91,6 +104,9 @@
             bool bulletReadyToShoot_;
             bool magazineReadyToShoot_;
+            bool unlimitedMunition_;
             float bulletLoadingTime_;
             float magazineLoadingTime_;
+            unsigned int bulletAmount_;
+            unsigned int magazineAmount_;
             std::string munitionType_;
 
Index: /code/trunk/src/orxonox/objects/weaponSystem/WeaponPack.cc
===================================================================
--- /code/trunk/src/orxonox/objects/weaponSystem/WeaponPack.cc	(revision 2892)
+++ /code/trunk/src/orxonox/objects/weaponSystem/WeaponPack.cc	(revision 2893)
@@ -63,5 +63,4 @@
         for (int i=0; i < (int) this->weapons_.size(); i++)
         {
-//COUT(0) << "WeaponPack::fire (attached from WeaponSet)  from Weapon: "<< i << std::endl;
             this->weapons_[i]->getAttachedToWeaponSlot()->fire();
         }
@@ -83,5 +82,4 @@
     void WeaponPack::setFireMode(unsigned int firemode)
     {
-//COUT(0) << "WeaponPack::setFireMode " << std::endl;
         this->firemode_ = firemode;
     }
@@ -94,5 +92,4 @@
     void WeaponPack::addWeapon(Weapon * weapon)
     {
-//COUT(0) << "WeaponPack::addWeapon:" << weapon << "   munition " << weapon->getMunitionType() << std::endl;
         this->weapons_.push_back(weapon);
     }
@@ -117,5 +114,4 @@
         {
             this->weapons_[i]->attachNeededMunition(weapons_[i]->getMunitionType());
-            //hack!
             this->weapons_[i]->setWeapon();
         }
Index: /code/trunk/src/orxonox/objects/weaponSystem/WeaponPack.h
===================================================================
--- /code/trunk/src/orxonox/objects/weaponSystem/WeaponPack.h	(revision 2892)
+++ /code/trunk/src/orxonox/objects/weaponSystem/WeaponPack.h	(revision 2893)
@@ -59,4 +59,5 @@
             const Weapon * getWeapon(unsigned int index);
 
+            //functions with effect to all weapons of the weaponPack
             //functions needed for creating Pointer to the right objects (-->Pawn.cc)
             void setParentWeaponSystemToAllWeapons(WeaponSystem * weaponSystem);
Index: /code/trunk/src/orxonox/objects/weaponSystem/WeaponSet.cc
===================================================================
--- /code/trunk/src/orxonox/objects/weaponSystem/WeaponSet.cc	(revision 2892)
+++ /code/trunk/src/orxonox/objects/weaponSystem/WeaponSet.cc	(revision 2893)
@@ -56,20 +56,17 @@
     void WeaponSet::attachWeaponPack(WeaponPack *wPack)
     {
-//COUT(0) << "WeaponSet::attachWeaponPack" << std::endl;
-//COUT(0) << "........ parentWeaponSystem_=" << this->parentWeaponSystem_ << std::endl;
-//COUT(0) << "........ this->parentWeaponSystem_->getWeaponSlotSize()" << this->parentWeaponSystem_->getWeaponSlotSize() << std::endl;
-//COUT(0) << "........ wPack->getSize()" << wPack->getSize() << std::endl;
         if ( this->parentWeaponSystem_->getWeaponSlotSize()>0 && wPack->getSize()>0 && ( wPack->getSize() <= this->parentWeaponSystem_->getWeaponSlotSize() ) )
         {
-//COUT(0) << "WeaponSet::attachWeaponPack after if" << std::endl;
             this->attachedWeaponPack_ = wPack;
             int wPackWeapon = 0;    //WeaponCounter for Attaching
+           
             //should be possible to choose which slot to use
+            //attach every weapon of the weaponPack to a weaponSlot
             for (  int i=0; i < wPack->getSize() ; i++  )
             {
                 //at the moment this function only works for one weaponPack in the entire WeaponSystem...
+                //it also takes the first free weaponSlot...
                 if ( this->parentWeaponSystem_->getWeaponSlotPointer(i)->getAttachedWeapon() == 0 && this->parentWeaponSystem_->getWeaponSlotPointer(i) != 0) //if slot not full
                 {
-//COUT(0) << "WeaponSet::attachWeaponPack attaching Weapon" << std::endl;
                     this->setWeaponSlots_.push_back( this->parentWeaponSystem_->getWeaponSlotPointer(i) );
                     this->parentWeaponSystem_->getWeaponSlotPointer(i)->attachWeapon( wPack->getWeaponPointer(wPackWeapon) );
@@ -83,5 +80,4 @@
                         if ( this->parentWeaponSystem_->getWeaponSlotPointer(k)->getAttachedWeapon() == 0 )
                         {
-//COUT(0) << "WeaponSet::attachWeaponPack mode 2 k="<< k << std::endl;
                             this->setWeaponSlots_.push_back( this->parentWeaponSystem_->getWeaponSlotPointer(k) );
                             this->parentWeaponSystem_->getWeaponSlotPointer(k)->attachWeapon( wPack->getWeaponPointer(wPackWeapon) );
@@ -99,5 +95,4 @@
     {
         //fires all WeaponSlots available for this weaponSet attached from the WeaponPack
-//COUT(0) << "WeaponSet::fire from Pack: " << this->attachedWeaponPack_ << std::endl;
         if (this->attachedWeaponPack_)
             this->attachedWeaponPack_->fire();
Index: /code/trunk/src/orxonox/objects/weaponSystem/WeaponSystem.cc
===================================================================
--- /code/trunk/src/orxonox/objects/weaponSystem/WeaponSystem.cc	(revision 2892)
+++ /code/trunk/src/orxonox/objects/weaponSystem/WeaponSystem.cc	(revision 2893)
@@ -38,8 +38,7 @@
 
 
-/* WEAPONSYSTEM
- * creates the WeaponSystem and the ability to use weapons and munition
- * loads the weapon the whole weaponSystem setting from an xml file
+/* WeaponSystem
  *
+ *  www.orxonox.net/wiki/WeaponSystem
  */
 
@@ -52,5 +51,4 @@
         RegisterObject(WeaponSystem);
 
-        this->activeWeaponSet_ = 0;
         this->parentPawn_ = 0;
     }
@@ -84,8 +82,8 @@
     }
 
-    //returns the Pointer to the munitionType
+
+    //returns the Pointer to the munitionType, if this munitionType doesn't exist returns 0, see Weapon::attachNeededMunition
     Munition * WeaponSystem::getMunitionType(std::string munitionType)
     {
-//COUT(0) << "WeaponSystem::getMunitionType " << munitionType << std::endl;
         std::map<std::string, Munition *>::const_iterator it = this->munitionSet_.find(munitionType);
         if (it != this->munitionSet_.end())
@@ -96,18 +94,7 @@
 
 
-/*
-    //the first weaponSet is at n=0
-    void WeaponSystem::setActiveWeaponSet(unsigned int n)
-    {
-        if (n < this->weaponSets_.size())
-            this->activeWeaponSet_ = this->weaponSets_[n];
-        else
-            this->activeWeaponSet_ = this->weaponSets_[0];
-    }
-*/
-
-
     //n is the n'th weaponSet, starting with zero
-    //SpaceShip.cc only needs to have the keybinding to a specific Set-number n
+    //SpaceShip.cc only needs to have the keybinding to a specific Set-number n (=firemode)
+    //in future this could be well defined and not only for 3 different WeaponModes
     void WeaponSystem::fire(WeaponMode::Enum n)
     {
@@ -125,7 +112,5 @@
                 break;
         }
-//COUT(0) << "WeaponSystem::fire" << std::endl;
         if (set < (int)this->weaponSets_.size())
-//COUT(0) << "WeaponSystem::fire - after if" << std::endl;
             this->weaponSets_[set]->fire();
     }
Index: /code/trunk/src/orxonox/objects/weaponSystem/WeaponSystem.h
===================================================================
--- /code/trunk/src/orxonox/objects/weaponSystem/WeaponSystem.h	(revision 2892)
+++ /code/trunk/src/orxonox/objects/weaponSystem/WeaponSystem.h	(revision 2893)
@@ -53,5 +53,4 @@
             //void fire();
             void fire(WeaponMode::Enum fireMode);
-            //void setActiveWeaponSet(unsigned int n);
             void attachWeaponPack(WeaponPack * wPack, unsigned int firemode);
             WeaponSet * getWeaponSetPointer(unsigned int n);
@@ -59,4 +58,5 @@
             WeaponPack * getWeaponPackPointer(unsigned int n);
             void setNewMunition(std::string munitionType, Munition * munitionToAdd);
+            void setNewSharedMunition(std::string munitionType, Munition * munitionToAdd);
             Munition * getMunitionType(std::string munitionType);
 
@@ -74,5 +74,4 @@
             std::vector<WeaponPack *> weaponPacks_;
             std::map<std::string, Munition *> munitionSet_;
-            WeaponSet *activeWeaponSet_;
             Pawn *parentPawn_;
     };
Index: /code/trunk/src/orxonox/objects/weaponSystem/munitions/CMakeLists.txt
===================================================================
--- /code/trunk/src/orxonox/objects/weaponSystem/munitions/CMakeLists.txt	(revision 2892)
+++ /code/trunk/src/orxonox/objects/weaponSystem/munitions/CMakeLists.txt	(revision 2893)
@@ -1,3 +1,4 @@
 ADD_SOURCE_FILES(ORXONOX_SRC_FILES
   LaserGunMunition.cc
+  FusionMunition.cc
 )
Index: /code/trunk/src/orxonox/objects/weaponSystem/munitions/FusionMunition.cc
===================================================================
--- /code/trunk/src/orxonox/objects/weaponSystem/munitions/FusionMunition.cc	(revision 2893)
+++ /code/trunk/src/orxonox/objects/weaponSystem/munitions/FusionMunition.cc	(revision 2893)
@@ -0,0 +1,59 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Martin Polak
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#include "OrxonoxStableHeaders.h"
+
+#include "core/CoreIncludes.h"
+#include "core/XMLPort.h"
+#include "util/Debug.h"
+
+#include "FusionMunition.h"
+
+namespace orxonox
+{
+    CreateFactory(FusionMunition);
+
+    FusionMunition::FusionMunition(BaseObject* creator) : Munition(creator)
+    {
+        RegisterObject(FusionMunition);
+
+        //default if not defined in XML
+        this->maxBullets_ = 10;
+        this->maxMagazines_ = 100;
+    }
+
+    FusionMunition::~FusionMunition()
+    {
+    }
+
+    void FusionMunition::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+
+    }
+
+}
Index: /code/trunk/src/orxonox/objects/weaponSystem/munitions/FusionMunition.h
===================================================================
--- /code/trunk/src/orxonox/objects/weaponSystem/munitions/FusionMunition.h	(revision 2893)
+++ /code/trunk/src/orxonox/objects/weaponSystem/munitions/FusionMunition.h	(revision 2893)
@@ -0,0 +1,54 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Martin Polak
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#ifndef _FusionMunition_H__
+#define _FusionMunition_H__
+
+#include "OrxonoxPrereqs.h"
+
+#include "core/BaseObject.h"
+#include "../Munition.h"
+
+namespace orxonox
+{
+    class _OrxonoxExport FusionMunition : public Munition
+    {
+        public:
+            FusionMunition(BaseObject* creator);
+            virtual ~FusionMunition();
+
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+
+
+        private:
+
+
+    };
+}
+
+#endif /* _FusionMunition_H__ */
Index: /code/trunk/src/orxonox/objects/weaponSystem/munitions/LaserGunMunition.cc
===================================================================
--- /code/trunk/src/orxonox/objects/weaponSystem/munitions/LaserGunMunition.cc	(revision 2892)
+++ /code/trunk/src/orxonox/objects/weaponSystem/munitions/LaserGunMunition.cc	(revision 2893)
@@ -43,4 +43,5 @@
         RegisterObject(LaserGunMunition);
 
+        //default if not defined in XML
         this->maxBullets_ = 40;
         this->maxMagazines_ = 100;
Index: /code/trunk/src/orxonox/objects/weaponSystem/weapons/LaserGun.cc
===================================================================
--- /code/trunk/src/orxonox/objects/weaponSystem/weapons/LaserGun.cc	(revision 2892)
+++ /code/trunk/src/orxonox/objects/weaponSystem/weapons/LaserGun.cc	(revision 2893)
@@ -53,9 +53,17 @@
     }
 
+    void LaserGun::reloadBullet()
+    {
+        this->bulletTimer(this->bulletLoadingTime_);
+    }
+
+    void LaserGun::reloadMagazine()
+    {
+        this->magazineTimer(this->magazineLoadingTime_);
+    }
+
     void LaserGun::takeBullets()
     {
-//COUT(0) << "LaserGun::takeBullets" << std::endl;
         this->munition_->removeBullets(1);
-        this->bulletTimer(this->bulletLoadingTime_);
     }
 
@@ -63,10 +71,8 @@
     {
         this->munition_->removeMagazines(1);
-        this->magazineTimer(this->magazineLoadingTime_);
     }
 
     void LaserGun::createProjectile()
     {
-//COUT(0) << "LaserGun::createProjectile" << std::endl;
         BillboardProjectile* projectile = new ParticleProjectile(this);
         projectile->setOrientation(this->getWorldOrientation());
Index: /code/trunk/src/orxonox/objects/weaponSystem/weapons/LaserGun.h
===================================================================
--- /code/trunk/src/orxonox/objects/weaponSystem/weapons/LaserGun.h	(revision 2892)
+++ /code/trunk/src/orxonox/objects/weaponSystem/weapons/LaserGun.h	(revision 2893)
@@ -51,4 +51,6 @@
             virtual void takeMagazines();
             virtual void createProjectile();
+            virtual void reloadBullet();
+            virtual void reloadMagazine();
 
         private:
Index: /code/trunk/src/orxonox/objects/worldentities/pawns/Pawn.cc
===================================================================
--- /code/trunk/src/orxonox/objects/worldentities/pawns/Pawn.cc	(revision 2892)
+++ /code/trunk/src/orxonox/objects/worldentities/pawns/Pawn.cc	(revision 2893)
@@ -249,5 +249,4 @@
             ExplosionChunk* chunk = new ExplosionChunk(this->getCreator());
             chunk->setPosition(this->getPosition());
-
         }
     }
@@ -270,4 +269,10 @@
     }
 
+
+    /* WeaponSystem:
+    *   functions load Slot, Set, Pack from XML and make sure all parent-pointers are set.
+    *   with setWeaponPack you can not just load a Pack from XML but if a Pack already exists anywhere, you can attach it.
+    *       --> e.g. Pickup-Items
+    */
     void Pawn::setWeaponSlot(WeaponSlot * wSlot)
     {
