Index: /code/trunk/src/orxonox/controllers/HumanController.cc
===================================================================
--- /code/trunk/src/orxonox/controllers/HumanController.cc	(revision 7861)
+++ /code/trunk/src/orxonox/controllers/HumanController.cc	(revision 7862)
@@ -40,4 +40,6 @@
 namespace orxonox
 {
+    extern const std::string __CC_fire_name = "fire";
+
     SetConsoleCommand("HumanController", "moveFrontBack",          &HumanController::moveFrontBack ).addShortcut().setAsInputCommand();
     SetConsoleCommand("HumanController", "moveRightLeft",          &HumanController::moveRightLeft ).addShortcut().setAsInputCommand();
@@ -46,5 +48,5 @@
     SetConsoleCommand("HumanController", "rotatePitch",            &HumanController::rotatePitch   ).addShortcut().setAsInputCommand();
     SetConsoleCommand("HumanController", "rotateRoll",             &HumanController::rotateRoll    ).addShortcut().setAsInputCommand();
-    SetConsoleCommand("HumanController", "fire",                   &HumanController::fire          ).addShortcut().keybindMode(KeybindMode::OnHold);
+    SetConsoleCommand("HumanController", __CC_fire_name,           &HumanController::fire          ).addShortcut().keybindMode(KeybindMode::OnHold);
     SetConsoleCommand("HumanController", "reload",                 &HumanController::reload        ).addShortcut();
     SetConsoleCommand("HumanController", "boost",                  &HumanController::boost         ).addShortcut().keybindMode(KeybindMode::OnHold);
Index: /code/trunk/src/orxonox/worldentities/pawns/Spectator.cc
===================================================================
--- /code/trunk/src/orxonox/worldentities/pawns/Spectator.cc	(revision 7861)
+++ /code/trunk/src/orxonox/worldentities/pawns/Spectator.cc	(revision 7862)
@@ -29,7 +29,10 @@
 #include "Spectator.h"
 
+#include "util/Convert.h"
 #include "core/CoreIncludes.h"
 #include "core/ConfigValueIncludes.h"
 #include "core/GameMode.h"
+#include "core/command/CommandExecutor.h"
+#include "core/command/ConsoleCommand.h"
 
 #include "tools/BillboardSet.h"
@@ -39,4 +42,6 @@
 namespace orxonox
 {
+    extern const std::string __CC_fire_name;
+
     CreateFactory(Spectator);
 
@@ -148,7 +153,35 @@
     }
 
+    /**
+        @brief Changes the keybind mode of the fire command to OnPress.
+    */
     void Spectator::startLocalHumanControl()
     {
         ControllableEntity::startLocalHumanControl();
+
+        // change keybind mode of fire command to OnPress to avoid firing after respawn
+        ModifyConsoleCommand(__CC_fire_name).keybindMode(KeybindMode::OnPress);
+    }
+
+    /**
+        @brief Changes the keybind mode of the fire command back to OnHold.
+    */
+    void Spectator::stopLocalHumanControl()
+    {
+        ControllableEntity::stopLocalHumanControl();
+
+        // change fire command to a helper function and change keybind mode to OnPress
+        // as soon as the player releases and presses the button again, the helper function will be called which changes the keybind mode back to OnHold
+        ModifyConsoleCommand(__CC_fire_name).pushFunction(&Spectator::resetFireCommand).keybindMode(KeybindMode::OnPress);
+    }
+
+    /**
+        @brief Helper function which changes the fire command back to the original function and keybind mode to OnHold.
+    */
+    void Spectator::resetFireCommand(unsigned int firemode)
+    {
+        ModifyConsoleCommand(__CC_fire_name).popFunction().keybindMode(KeybindMode::OnHold); // pop this helper function and change keybind mode
+
+        CommandExecutor::execute(__CC_fire_name + " " + multi_cast<std::string>(firemode)); // call the fire command again, this time with the real function
     }
 
Index: /code/trunk/src/orxonox/worldentities/pawns/Spectator.h
===================================================================
--- /code/trunk/src/orxonox/worldentities/pawns/Spectator.h	(revision 7861)
+++ /code/trunk/src/orxonox/worldentities/pawns/Spectator.h	(revision 7862)
@@ -61,4 +61,5 @@
             virtual void setPlayer(PlayerInfo* player);
             virtual void startLocalHumanControl();
+            virtual void stopLocalHumanControl();
 
         private:
@@ -66,4 +67,6 @@
             void changedGreeting();
             void changedFlareVisibility();
+
+            static void resetFireCommand(unsigned int firemode);
 
             BillboardSet* greetingFlare_;
