Index: code/branches/sagerjFS16/src/orxonox/controllers/HumanController.cc
===================================================================
--- code/branches/sagerjFS16/src/orxonox/controllers/HumanController.cc	(revision 11142)
+++ code/branches/sagerjFS16/src/orxonox/controllers/HumanController.cc	(revision 11153)
@@ -42,4 +42,5 @@
     extern const std::string __CC_fire_name = "fire";
     extern const std::string __CC_suicide_name = "suicide";
+    extern const std::string __CC_release_name = "release";
 
     SetConsoleCommand("HumanController", "moveFrontBack",          &HumanController::moveFrontBack ).addShortcut().setAsInputCommand();
@@ -52,4 +53,5 @@
     SetConsoleCommand("HumanController", "FFChangeMode",           &HumanController::FFChangeMode).addShortcut().keybindMode(KeybindMode::OnPress);
     SetConsoleCommand("HumanController", __CC_fire_name,           &HumanController::fire          ).addShortcut().keybindMode(KeybindMode::OnHold);
+    SetConsoleCommand("HumanController", __CC_release_name,        &HumanController::release       ).addShortcut().keybindMode(KeybindMode::OnRelease);
     SetConsoleCommand("HumanController", "reload",                 &HumanController::reload        ).addShortcut();
     SetConsoleCommand("HumanController", "boost",                  &HumanController::boost         ).addShortcut().setAsInputCommand().keybindMode(KeybindMode::OnPressAndRelease);
@@ -167,4 +169,23 @@
             HumanController::localController_s->controllableEntity_->fire(firemode);
             //if human fires, set slaves free. See FormationController::forceFreeSlaves()
+            if (HumanController::localController_s->state_==MASTER && HumanController::localController_s->formationMode_ == NORMAL)
+            {
+                HumanController::localController_s->forceFreeSlaves();
+            }
+        }
+    }
+
+    void HumanController::release(unsigned int firemode)
+    {
+        if (HumanController::localController_s)
+            HumanController::localController_s->doRelease(firemode);
+    }
+
+    void HumanController::doRelease(unsigned int firemode)
+    {
+        if (HumanController::localController_s && HumanController::localController_s->controllableEntity_)
+        {
+            HumanController::localController_s->controllableEntity_->release(firemode);
+            //if human releases, set slaves free. See FormationController::forceFreeSlaves()
             if (HumanController::localController_s->state_==MASTER && HumanController::localController_s->formationMode_ == NORMAL)
             {
Index: code/branches/sagerjFS16/src/orxonox/controllers/HumanController.h
===================================================================
--- code/branches/sagerjFS16/src/orxonox/controllers/HumanController.h	(revision 11142)
+++ code/branches/sagerjFS16/src/orxonox/controllers/HumanController.h	(revision 11153)
@@ -64,4 +64,6 @@
             virtual void doFire(unsigned int firemode);
             static void reload();
+            static void release(unsigned int firemode);
+            virtual void doRelease(unsigned int firemode);
 
             static void boost(const Vector2& value); // Static method, controls boosting.
Index: code/branches/sagerjFS16/src/orxonox/controllers/NewHumanController.cc
===================================================================
--- code/branches/sagerjFS16/src/orxonox/controllers/NewHumanController.cc	(revision 11142)
+++ code/branches/sagerjFS16/src/orxonox/controllers/NewHumanController.cc	(revision 11153)
@@ -54,5 +54,5 @@
     SetConsoleCommand("NewHumanController", "accelerate", &NewHumanController::accelerate).keybindMode(KeybindMode::OnPress);
     SetConsoleCommand("NewHumanController", "decelerate", &NewHumanController::decelerate).keybindMode(KeybindMode::OnPress);
-    SetConsoleCommand("NewHumanController", "unfire",     &NewHumanController::unfire    ).keybindMode(KeybindMode::OnRelease).addShortcut();
+    SetConsoleCommand("NewHumanController", "release",    &NewHumanController::release    ).keybindMode(KeybindMode::OnRelease).addShortcut();
 
     RegisterUnloadableClass(NewHumanController);
@@ -344,15 +344,21 @@
     }
 
-    void NewHumanController::unfire()
+    void NewHumanController::release(unsigned int firemode)
     {
         if (NewHumanController::localController_s)
-            NewHumanController::localController_s->doUnfire();
-        orxout() << "unfire" << endl;
-    }
-
-    void NewHumanController::doUnfire()
-    {
-        this->firemode_ = -1;
-        hideArrows();
+            NewHumanController::localController_s->doRelease();
+        orxout() << "Trigger" << endl;
+    }
+
+    void NewHumanController::doRelease(unsigned int firemode)
+    {
+        // this->firemode_ = -1; (outdated code from unfire)
+        // hideArrows();
+        if (!this->controllableEntity_)
+            return;
+
+        this->firemode_ = firemode;
+
+        HumanController::doRelease(firemode); //call for formationflight
     }
 
Index: code/branches/sagerjFS16/src/orxonox/controllers/NewHumanController.h
===================================================================
--- code/branches/sagerjFS16/src/orxonox/controllers/NewHumanController.h	(revision 11142)
+++ code/branches/sagerjFS16/src/orxonox/controllers/NewHumanController.h	(revision 11153)
@@ -58,6 +58,6 @@
             virtual void hit(Pawn* originator, btManifoldPoint& contactpoint, float damage) override;
 
-            static void unfire();
-            virtual void doUnfire();
+            static void release(unsigned int firemode);
+            virtual void doRelease(unsigned int firemode);
 
             void centerCursor();
Index: code/branches/sagerjFS16/src/orxonox/weaponsystem/WeaponMode.cc
===================================================================
--- code/branches/sagerjFS16/src/orxonox/weaponsystem/WeaponMode.cc	(revision 11142)
+++ code/branches/sagerjFS16/src/orxonox/weaponsystem/WeaponMode.cc	(revision 11153)
@@ -169,4 +169,6 @@
     }
 
+    void WeaponMode::release()
+
     bool WeaponMode::reload()
     {
Index: code/branches/sagerjFS16/src/orxonox/weaponsystem/WeaponSystem.cc
===================================================================
--- code/branches/sagerjFS16/src/orxonox/weaponsystem/WeaponSystem.cc	(revision 11142)
+++ code/branches/sagerjFS16/src/orxonox/weaponsystem/WeaponSystem.cc	(revision 11153)
@@ -294,4 +294,11 @@
     }
 
+    void WeaponSystem::release(unsigned int firemode)
+    {
+        std::map<unsigned int, WeaponSet *>::iterator it = this->weaponSets_.find(firemode);
+        if (it != this->weaponSets_.end() && it->second)
+            it->second->release();
+    }
+
     void WeaponSystem::reload()
     {
Index: code/branches/sagerjFS16/src/orxonox/weaponsystem/WeaponSystem.h
===================================================================
--- code/branches/sagerjFS16/src/orxonox/weaponsystem/WeaponSystem.h	(revision 11142)
+++ code/branches/sagerjFS16/src/orxonox/weaponsystem/WeaponSystem.h	(revision 11153)
@@ -76,4 +76,5 @@
             void fire(unsigned int firemode);
             void reload();
+            void release(unsigned int firemode);
 
             Munition * getMunition(SubclassIdentifier<Munition> * identifier);
