Index: code/branches/weapon/src/orxonox/objects/BillboardProjectile.cc
===================================================================
--- code/branches/weapon/src/orxonox/objects/BillboardProjectile.cc	(revision 2059)
+++ code/branches/weapon/src/orxonox/objects/BillboardProjectile.cc	(revision 2060)
@@ -38,5 +38,5 @@
     CreateFactory(BillboardProjectile);
 
-    BillboardProjectile::BillboardProjectile(SpaceShip* owner) : Projectile(owner)
+    BillboardProjectile::BillboardProjectile(Weapon* owner) : Projectile(owner)
     {
         RegisterObject(BillboardProjectile);
Index: code/branches/weapon/src/orxonox/objects/BillboardProjectile.h
===================================================================
--- code/branches/weapon/src/orxonox/objects/BillboardProjectile.h	(revision 2059)
+++ code/branches/weapon/src/orxonox/objects/BillboardProjectile.h	(revision 2060)
@@ -41,5 +41,5 @@
     {
         public:
-            BillboardProjectile(SpaceShip* owner = 0);
+            BillboardProjectile(Weapon* owner = 0);
             virtual ~BillboardProjectile();
 
Index: code/branches/weapon/src/orxonox/objects/ParticleProjectile.cc
===================================================================
--- code/branches/weapon/src/orxonox/objects/ParticleProjectile.cc	(revision 2059)
+++ code/branches/weapon/src/orxonox/objects/ParticleProjectile.cc	(revision 2060)
@@ -38,5 +38,5 @@
     CreateFactory(ParticleProjectile);
 
-    ParticleProjectile::ParticleProjectile(SpaceShip* owner) : BillboardProjectile(owner)
+    ParticleProjectile::ParticleProjectile(Weapon* owner) : BillboardProjectile(owner)
     {
         RegisterObject(ParticleProjectile);
@@ -72,5 +72,5 @@
         this->particles_->setEnabled(this->isVisible());
     }
-    
+
     bool ParticleProjectile::create(){
       if(!Projectile::create())
Index: code/branches/weapon/src/orxonox/objects/ParticleProjectile.h
===================================================================
--- code/branches/weapon/src/orxonox/objects/ParticleProjectile.h	(revision 2059)
+++ code/branches/weapon/src/orxonox/objects/ParticleProjectile.h	(revision 2060)
@@ -41,9 +41,9 @@
     {
         public:
-            ParticleProjectile(SpaceShip* owner = 0);
+            ParticleProjectile(Weapon* owner = 0);
             virtual ~ParticleProjectile();
             virtual void changedVisibility();
             void setConfigValues();
-            
+
             virtual bool create();
 
Index: code/branches/weapon/src/orxonox/objects/Projectile.cc
===================================================================
--- code/branches/weapon/src/orxonox/objects/Projectile.cc	(revision 2059)
+++ code/branches/weapon/src/orxonox/objects/Projectile.cc	(revision 2060)
@@ -47,5 +47,5 @@
     float Projectile::speed_s = 5000;
 
-    Projectile::Projectile(SpaceShip* owner) : owner_(owner)
+    Projectile::Projectile(Weapon* owner) : owner_(owner)
     {
         RegisterObject(Projectile);
@@ -57,5 +57,5 @@
         this->setStatic(false);
         this->translate(Vector3(55, 0, 0), Ogre::Node::TS_LOCAL);
-        
+
         if (this->owner_)
         {
@@ -124,5 +124,5 @@
         delete this;
     }
-    
+
     bool Projectile::create(){
       return WorldEntity::create();
Index: code/branches/weapon/src/orxonox/objects/Projectile.h
===================================================================
--- code/branches/weapon/src/orxonox/objects/Projectile.h	(revision 2059)
+++ code/branches/weapon/src/orxonox/objects/Projectile.h	(revision 2060)
@@ -45,5 +45,5 @@
             void destroyObject();
             virtual void tick(float dt);
-            
+
             virtual bool create();
 
@@ -52,5 +52,5 @@
 
         protected:
-            Projectile(SpaceShip* owner = 0);
+            Projectile(Weapon* owner = 0);
             SpaceShip* owner_;
 
Index: code/branches/weapon/src/orxonox/objects/SpaceShip.cc
===================================================================
--- code/branches/weapon/src/orxonox/objects/SpaceShip.cc	(revision 2059)
+++ code/branches/weapon/src/orxonox/objects/SpaceShip.cc	(revision 2060)
@@ -142,4 +142,11 @@
 
         this->radarObject_ = static_cast<WorldEntity*>(this);
+
+        //WeaponSystem
+        weaponSystem_ = new WeaponSystem();
+        WeaponSet * weaponSet1 = new WeaponSet(1);
+        this->weaponSystem_->attachWeaponSet(weaponSet1);
+        this->weaponSystem_->getWeaponSetPointer(0)->getWeaponSlotPointer(0)->setAmmoType(true);
+
     }
 
@@ -474,14 +481,5 @@
         if (this->bLMousePressed_ && this->timeToReload_ <= 0)
         {
-
-            BillboardProjectile* projectile = new ParticleProjectile(this);
-            projectile->setColour(this->getProjectileColour());
-            projectile->create();
-            if (projectile->getClassID() == 0)
-            {
-              COUT(3) << "generated projectile with classid 0" <<  std::endl; // TODO: remove this output
-            }
-
-            projectile->setObjectMode(0x3);
+            this->weaponSystem_->fire(0);
             this->timeToReload_ = this->reloadTime_;
         }
Index: code/branches/weapon/src/orxonox/objects/SpaceShip.h
===================================================================
--- code/branches/weapon/src/orxonox/objects/SpaceShip.h	(revision 2059)
+++ code/branches/weapon/src/orxonox/objects/SpaceShip.h	(revision 2060)
@@ -38,4 +38,6 @@
 #include "RadarViewable.h"
 #include "tools/BillboardSet.h"
+
+#include "WeaponSystem.h"
 
 namespace orxonox
@@ -181,4 +183,7 @@
             float mouseY_;
 
+            //WeaponSystem
+            WeaponSystem * weaponSystem_;
+
         protected:
             bool myShip_;
Index: code/branches/weapon/src/orxonox/objects/WeaponSystem.cc
===================================================================
--- code/branches/weapon/src/orxonox/objects/WeaponSystem.cc	(revision 2059)
+++ code/branches/weapon/src/orxonox/objects/WeaponSystem.cc	(revision 2060)
@@ -77,4 +77,9 @@
     }
 
+    WeaponSet * getWeaponSetPointer(int n)
+    {
+        return this->weaponSets_[n];
+    }
+
     void WeaponSystem::XMLPort(Element& xmlelement, XMLPort::Mode mode)
     {
Index: code/branches/weapon/src/orxonox/objects/WeaponSystem.h
===================================================================
--- code/branches/weapon/src/orxonox/objects/WeaponSystem.h	(revision 2059)
+++ code/branches/weapon/src/orxonox/objects/WeaponSystem.h	(revision 2060)
@@ -50,4 +50,5 @@
             void fire(int n);
             void setActiveWeaponSet(int n);
+            WeaponSet * getWeaponSetPointer(int n);
 
             inline void WeaponSystem::setParentSpaceShip(SpaceShip *parentSpaceShip)
Index: code/branches/weapon/src/orxonox/objects/weaponSystem/Weapon.h
===================================================================
--- code/branches/weapon/src/orxonox/objects/weaponSystem/Weapon.h	(revision 2059)
+++ code/branches/weapon/src/orxonox/objects/weaponSystem/Weapon.h	(revision 2060)
@@ -46,8 +46,8 @@
 
             void addMunition();
-            void fire();
+            virtual void fire();
 
         private:
-                        int loadingTime;
+            int loadingTime;
             Munition *munition_;
 
Index: code/branches/weapon/src/orxonox/objects/weaponSystem/WeaponSet.cc
===================================================================
--- code/branches/weapon/src/orxonox/objects/weaponSystem/WeaponSet.cc	(revision 2059)
+++ code/branches/weapon/src/orxonox/objects/weaponSystem/WeaponSet.cc	(revision 2060)
@@ -38,7 +38,13 @@
 namespace orxonox
 {
-    WeaponSet::WeaponSet()
+    WeaponSet::WeaponSet(int k)
     {
         RegisterObject(WeaponSet);
+
+        for (int i=0;i<k;i++)
+        {
+            this->wSlotNew = new WeaponSlot();
+            attachWeaponSlot(wSlotNew);
+        }
     }
 
@@ -63,4 +69,10 @@
     }
 
+    WeaponSlot * getWeaponSlotPointer(int n)
+    {
+        return this->weaponSlots_[n];
+    }
+
+
     void WeaponSet::XMLPort(Element& xmlelement, XMLPort::Mode mode)
     {
Index: code/branches/weapon/src/orxonox/objects/weaponSystem/WeaponSet.h
===================================================================
--- code/branches/weapon/src/orxonox/objects/weaponSystem/WeaponSet.h	(revision 2059)
+++ code/branches/weapon/src/orxonox/objects/weaponSystem/WeaponSet.h	(revision 2060)
@@ -43,5 +43,5 @@
     {
         public:
-            WeaponSet();
+            WeaponSet(int k);
             virtual ~WeaponSet();
 
@@ -50,4 +50,6 @@
             void WeaponSet::attachWeaponSlot(WeaponSlot *wSlot);
             void WeaponSet::fire();
+            WeaponSlot * getWeaponSlotPointer(int n);
+
             inline void WeaponSet::setParentWeaponSystem(WeaponSystem *parentWeaponSystem)
                 { parentWeaponSystem_=parentWeaponSystem; }
Index: code/branches/weapon/src/orxonox/objects/weaponSystem/WeaponSlot.cc
===================================================================
--- code/branches/weapon/src/orxonox/objects/weaponSystem/WeaponSlot.cc	(revision 2059)
+++ code/branches/weapon/src/orxonox/objects/weaponSystem/WeaponSlot.cc	(revision 2060)
@@ -59,7 +59,5 @@
     void WeaponSlot::setAmmoType(bool isUnlimited)
     {
-        if (isUnlimited == true)
-            unlimitedAmmo_ = true;
-        else unlimitedAmmo_ = false;
+        unlimitedAmmo_ = isUnlimited;
     }
 
Index: code/branches/weapon/src/orxonox/objects/weaponSystem/weapons/LaserGun.cc
===================================================================
--- code/branches/weapon/src/orxonox/objects/weaponSystem/weapons/LaserGun.cc	(revision 2059)
+++ code/branches/weapon/src/orxonox/objects/weaponSystem/weapons/LaserGun.cc	(revision 2060)
@@ -40,4 +40,6 @@
     {
         RegisterObject(LaserGun);
+
+        projectileColor_ = ColourValue(1.0, 1.0, 0.5)
     }
 
@@ -46,7 +48,20 @@
     }
 
+    LaserGun::fire()
+    {
+            BillboardProjectile* projectile = new ParticleProjectile(this);
+            projectile->setColour(this->projectileColor_);
+            projectile->create();
+            if (projectile->getClassID() == 0)
+            {
+              COUT(3) << "generated projectile with classid 0" <<  std::endl; // TODO: remove this output
+            }
+
+            projectile->setObjectMode(0x3);
+    }
+
     LaserGun::addMunition()
     {
-        this->munition_ =
+        //this->munition_ = ;
     }
 
@@ -56,3 +71,7 @@
     }
 
+    ColorValue LaserGun::getProjectileColor()
+    {
+        return projectileColor_;
+    }
 }
Index: code/branches/weapon/src/orxonox/objects/weaponSystem/weapons/LaserGun.h
===================================================================
--- code/branches/weapon/src/orxonox/objects/weaponSystem/weapons/LaserGun.h	(revision 2059)
+++ code/branches/weapon/src/orxonox/objects/weaponSystem/weapons/LaserGun.h	(revision 2060)
@@ -35,4 +35,5 @@
 
 #include "LaserGunMunition.h"
+#include "../tools/BillboardSet.h"
 
 namespace orxonox
@@ -46,7 +47,8 @@
             virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
 
-
+            ColourValue LaserGun::getProjectileColour();
 
         private:
+            ColorValue projectileColor_;
 
 
