Index: code/branches/weapon2/src/orxonox/objects/weaponSystem/WeaponSet.cc
===================================================================
--- code/branches/weapon2/src/orxonox/objects/weaponSystem/WeaponSet.cc	(revision 2307)
+++ code/branches/weapon2/src/orxonox/objects/weaponSystem/WeaponSet.cc	(revision 2308)
@@ -55,7 +55,10 @@
         if (this->parentWeaponSystem_->getWeaponSlotSize()>0 && wPack->getSize()>0 && ( wPack->getSize() <= this->parentWeaponSystem_->getWeaponSlotSize() ) )
         {
+            this->attachedWeaponPack_ = wPack;
             //should be possible to choose which slot to use
             for (  int i=0; i < wPack->getSize() ; i++  )
             {
+                //at the moment this function only works for one weaponPack in the entire WeaponSystem...
+                this->setWeaponSlots_.push_back( this->parentWeaponSystem_->getWeaponSlotPointer(i) );
                 this->parentWeaponSystem_->getWeaponSlotPointer(i)->attachWeapon( wPack->getWeaponPointer(i) );
             }
@@ -63,18 +66,21 @@
     }
 
-    /* this function will be in WeaponPack
+
     void WeaponSet::fire()
     {
-        for (int i=0; i < (int) this->weaponSlots_.size(); i++)
-        {
-COUT(0) << "WeaponSlot::fire"<< i << std::endl;
-            this->weaponSlots_[i]->fire();
-        }
+        //fires all WeaponSlots available for this weaponSet attached from the WeaponPack
+        this->attachedWeaponPack_->fire();
     }
-    */
+
+    void WeaponSet::setFireMode(const unsigned int firemode)
+    {   this->firemode_ = firemode; }
+
+    const unsigned int WeaponSet::getFireMode() const
+    {   return this->firemode_; }
 
     void WeaponSet::XMLPort(Element& xmlelement, XMLPort::Mode mode)
     {
-
+        SUPER(WeaponSet, XMLPort, xmlelement, mode);
+        XMLPortParam(WeaponSet, "firemode", setFireMode, getFireMode, xmlelement, mode);
     }
 
Index: code/branches/weapon2/src/orxonox/objects/weaponSystem/WeaponSet.h
===================================================================
--- code/branches/weapon2/src/orxonox/objects/weaponSystem/WeaponSet.h	(revision 2307)
+++ code/branches/weapon2/src/orxonox/objects/weaponSystem/WeaponSet.h	(revision 2308)
@@ -51,4 +51,7 @@
             void fire();
 
+            void setFireMode(const unsigned int firemode);
+            const unsigned int getFireMode() const;
+
             inline void setParentWeaponSystem(WeaponSystem *parentWeaponSystem)
                 { parentWeaponSystem_=parentWeaponSystem; }
@@ -58,4 +61,7 @@
         private:
             WeaponSystem *parentWeaponSystem_;
+            std::vector<WeaponSlot *> setWeaponSlots_;
+            unsigned int firemode_;
+            WeaponPack * attachedWeaponPack_;
     };
 }
Index: code/branches/weapon2/src/orxonox/objects/weaponSystem/WeaponSlot.cc
===================================================================
--- code/branches/weapon2/src/orxonox/objects/weaponSystem/WeaponSlot.cc	(revision 2307)
+++ code/branches/weapon2/src/orxonox/objects/weaponSystem/WeaponSlot.cc	(revision 2308)
@@ -72,6 +72,5 @@
     void WeaponSlot::XMLPort(Element& xmlelement, XMLPort::Mode mode)
     {
-        SUPER(WeaponSlot, XMLPort, xmlelement, mode);
-        XMLPortObject(WeaponSlot, Weapon, "attached-weapon", attachWeapon, getAttachedWeapon, xmlelement, mode);
+
     }
 
Index: code/branches/weapon2/src/orxonox/objects/weaponSystem/WeaponSystem.cc
===================================================================
--- code/branches/weapon2/src/orxonox/objects/weaponSystem/WeaponSystem.cc	(revision 2307)
+++ code/branches/weapon2/src/orxonox/objects/weaponSystem/WeaponSystem.cc	(revision 2308)
@@ -105,5 +105,5 @@
         if (n < (int)this->weaponSets_.size())
 COUT(0) << "WeaponSystem::fire - after if" << std::endl;
-            //this->weaponSets_[n]->fire();
+            this->weaponSets_[n]->fire();
     }
 
Index: code/branches/weapon2/src/orxonox/objects/worldentities/pawns/Pawn.cc
===================================================================
--- code/branches/weapon2/src/orxonox/objects/worldentities/pawns/Pawn.cc	(revision 2307)
+++ code/branches/weapon2/src/orxonox/objects/worldentities/pawns/Pawn.cc	(revision 2308)
@@ -77,4 +77,5 @@
 
         XMLPortObject(Pawn, WeaponSlot, "weaponslots", setWeaponSlot, getWeaponSlot, xmlelement, mode);
+        XMLPortObject(Pawn, WeaponSet, "weaponsets", setWeaponSet, getWeaponSet, xmlelement, mode);
         //XMLPortObject(Pawn, WeaponPack, "weapons", setWeaponPack, getWeaponPack, xmlelement, mode);
 
@@ -153,13 +154,21 @@
     }
 
+
     void Pawn::setWeaponSlot(WeaponSlot * wSlot)
-    {
-        this->weaponSystem_->attachWeaponSlot(wSlot);
-    }
+    {   this->weaponSystem_->attachWeaponSlot(wSlot);   }
+    WeaponSlot * Pawn::getWeaponSlot(unsigned int index) const
+    {   return this->weaponSystem_->getWeaponSlotPointer(index);    }
 
-    WeaponSlot * Pawn::getWeaponSlot(unsigned int index) const
-    {
-        return this->weaponSystem_->getWeaponSlotPointer(index);
-    }
+    /*
+    void Pawn::setWeaponPack(WeaponPack * wPack)
+    {   this->weaponSystem_->attachWeaponPack(wPack);   }
+    WeaponPack * Pawn::getWeaponPack(unsigned int index) const
+    {   return this->weaponSystem_->getWeaponPackPointer(index);
+    */
+
+    void Pawn::setWeaponSet(WeaponSet * wSet)
+    {   this->weaponSystem_->attachWeaponSet(wSet);   }
+    WeaponSet * Pawn::getWeaponSet(unsigned int index) const
+    {   return this->weaponSystem_->getWeaponSetPointer(index);    }
 
 }
Index: code/branches/weapon2/src/orxonox/objects/worldentities/pawns/Pawn.h
===================================================================
--- code/branches/weapon2/src/orxonox/objects/worldentities/pawns/Pawn.h	(revision 2307)
+++ code/branches/weapon2/src/orxonox/objects/worldentities/pawns/Pawn.h	(revision 2308)
@@ -81,4 +81,8 @@
             void setWeaponSlot(WeaponSlot * wSlot);
             WeaponSlot * getWeaponSlot(unsigned int index) const;
+         //   void setWeaponPack(WeaponPack * wPack);
+         //   WeaponPack * getWeaponPack(unsigned int index) const;
+            void setWeaponSet(WeaponSet * wSet);
+            WeaponSet * getWeaponSet(unsigned int index) const;
 
         protected:
