Index: orxonox/branches/weaponSystem/src/lib/sound/sound_engine.cc
===================================================================
--- orxonox/branches/weaponSystem/src/lib/sound/sound_engine.cc	(revision 4883)
+++ orxonox/branches/weaponSystem/src/lib/sound/sound_engine.cc	(revision 4884)
@@ -138,5 +138,7 @@
   alSourcei (this->sourceID, AL_BUFFER, buffer->getID());
   alSourcePlay(this->sourceID);
-//  printf("playing sound\n");
+
+  if (unlikely(this->buffer != NULL))
+    alSourcei (this->sourceID, AL_BUFFER, this->buffer->getID());
 }
 
Index: orxonox/branches/weaponSystem/src/world_entities/weapons/test_gun.cc
===================================================================
--- orxonox/branches/weaponSystem/src/world_entities/weapons/test_gun.cc	(revision 4883)
+++ orxonox/branches/weaponSystem/src/world_entities/weapons/test_gun.cc	(revision 4884)
@@ -153,8 +153,4 @@
 {
   this->energyLoaded -= this->minCharge;
-  if (this->soundBuffers[WA_SHOOT] != NULL)
-    this->soundSource->play(this->soundBuffers[WA_SHOOT]);
-
-
   Projectile* pj =  new TestBullet(this);//dynamic_cast<Projectile*>(ObjectManager::getInstance()->getFromDeadList(CL_TEST_BULLET & CL_MASK_LOWLEVEL_CLASS));
 //  weaponSource->play();
Index: orxonox/branches/weaponSystem/src/world_entities/weapons/weapon.cc
===================================================================
--- orxonox/branches/weaponSystem/src/world_entities/weapons/weapon.cc	(revision 4883)
+++ orxonox/branches/weaponSystem/src/world_entities/weapons/weapon.cc	(revision 4884)
@@ -91,5 +91,5 @@
   if (action >= WA_ACTION_COUNT)
     return;
-  else
+  else if (soundFile != NULL)
   {
     this->soundBuffers[action] = (SoundBuffer*)ResourceManager::getInstance()->load(soundFile, WAV);
@@ -102,6 +102,7 @@
       PRINTF(4)("failed to load sound %s to %s\n", soundFile, actionToChar(action));
     }
-
-  }
+  }
+  else
+    this->soundBuffers[action] = NULL;
 }
 
@@ -136,6 +137,8 @@
       //if (likely(this->currentState != WS_INACTIVE))
       {
-        if (this->minCharge < this->energyLoaded)
+        if (this->minCharge <= this->energyLoaded)
         {
+          if (this->soundBuffers[WA_SHOOT] != NULL)
+            this->soundSource->play(this->soundBuffers[WA_SHOOT]);
           this->fire();
           this->requestedAction = WA_NONE;
@@ -151,4 +154,6 @@
       if ( this->currentState != WS_INACTIVE && this->energyLoaded >= this->minCharge)
       {
+        if (this->soundBuffers[WA_CHARGE] != NULL)
+         this->soundSource->play(this->soundBuffers[WA_CHARGE]);
         this->charge();
         this->requestedAction = WA_NONE;
@@ -163,4 +168,7 @@
       //if (this->currentState != WS_INACTIVE && this->energy + this->energyLoaded >= this->minCharge)
       {
+        if (this->soundBuffers[WA_RELOAD] != NULL)
+          this->soundSource->play(this->soundBuffers[WA_RELOAD]);
+
         this->reload();
         this->requestedAction = WA_NONE;
@@ -170,4 +178,7 @@
       if (this->currentState != WS_INACTIVE)
       {
+        if (this->soundBuffers[WA_DEACTIVATE] != NULL)
+          this->soundSource->play(this->soundBuffers[WA_DEACTIVATE]);
+
         this->deactivate();
         this->requestedAction = WA_NONE;
@@ -177,4 +188,7 @@
       if (this->currentState == WS_INACTIVE)
       {
+        if (this->soundBuffers[WA_ACTIVATE] != NULL)
+          this->soundSource->play(this->soundBuffers[WA_ACTIVATE]);
+
         this->activate();
         this->requestedAction = WA_NONE;
Index: orxonox/branches/weaponSystem/src/world_entities/weapons/weapon.h
===================================================================
--- orxonox/branches/weaponSystem/src/world_entities/weapons/weapon.h	(revision 4883)
+++ orxonox/branches/weaponSystem/src/world_entities/weapons/weapon.h	(revision 4884)
@@ -147,4 +147,5 @@
     // PHASES //
     ////////////
+  private:
     WeaponState          currentState;                     //!< The State the weapon is in.
     WeaponAction         requestedAction;                  //!< An action to try to Engage after the currentState ends.
@@ -157,5 +158,4 @@
     bool                 hideInactive;                    //!< Hides the Weapon if it is inactive
 
-  private:
     bool                 active;                          //!< states wheter the weapon is enabled or not
     Projectile*          projectile;                      //!< the projectile used for this weapon
