Index: code/trunk/src/modules/objects/Attacher.cc
===================================================================
--- code/trunk/src/modules/objects/Attacher.cc	(revision 6054)
+++ code/trunk/src/modules/objects/Attacher.cc	(revision 6417)
@@ -98,5 +98,5 @@
         this->target_ = 0;
 
-        if (this->targetname_ == "")
+        if (this->targetname_.empty())
             return;
 
@@ -113,5 +113,5 @@
     void Attacher::loadedNewXMLName(BaseObject* object)
     {
-        if (this->target_ || this->targetname_ == "")
+        if (this->target_ || this->targetname_.empty())
             return;
 
Index: code/trunk/src/modules/objects/collisionshapes/BoxCollisionShape.cc
===================================================================
--- code/trunk/src/modules/objects/collisionshapes/BoxCollisionShape.cc	(revision 6054)
+++ code/trunk/src/modules/objects/collisionshapes/BoxCollisionShape.cc	(revision 6417)
@@ -66,6 +66,6 @@
         XMLPortParam(BoxCollisionShape, "halfExtents",  setHalfExtents,  getHalfExtents,  xmlelement, mode);
         XMLPortParamLoadOnly(BoxCollisionShape, "width",  setWidth,  xmlelement, mode);
-        XMLPortParamLoadOnly(BoxCollisionShape, "height", setHeight, xmlelement, mode);    
-        XMLPortParamLoadOnly(BoxCollisionShape, "length", setLength, xmlelement, mode);    
+        XMLPortParamLoadOnly(BoxCollisionShape, "height", setHeight, xmlelement, mode);
+        XMLPortParamLoadOnly(BoxCollisionShape, "length", setLength, xmlelement, mode);
     }
 
Index: code/trunk/src/modules/objects/collisionshapes/ConeCollisionShape.cc
===================================================================
--- code/trunk/src/modules/objects/collisionshapes/ConeCollisionShape.cc	(revision 6054)
+++ code/trunk/src/modules/objects/collisionshapes/ConeCollisionShape.cc	(revision 6417)
@@ -66,5 +66,5 @@
 
         XMLPortParam(ConeCollisionShape, "radius", setRadius, getRadius, xmlelement, mode);
-        XMLPortParam(ConeCollisionShape, "height", setHeight, getHeight, xmlelement, mode);    
+        XMLPortParam(ConeCollisionShape, "height", setHeight, getHeight, xmlelement, mode);
     }
 
Index: code/trunk/src/modules/objects/collisionshapes/PlaneCollisionShape.cc
===================================================================
--- code/trunk/src/modules/objects/collisionshapes/PlaneCollisionShape.cc	(revision 6054)
+++ code/trunk/src/modules/objects/collisionshapes/PlaneCollisionShape.cc	(revision 6417)
@@ -67,5 +67,5 @@
 
         XMLPortParam(PlaneCollisionShape, "normal", setNormal, getNormal, xmlelement, mode);
-        XMLPortParam(PlaneCollisionShape, "offset", setOffset, getOffset, xmlelement, mode);    
+        XMLPortParam(PlaneCollisionShape, "offset", setOffset, getOffset, xmlelement, mode);
     }
 
Index: code/trunk/src/modules/objects/eventsystem/EventFilter.cc
===================================================================
--- code/trunk/src/modules/objects/eventsystem/EventFilter.cc	(revision 6054)
+++ code/trunk/src/modules/objects/eventsystem/EventFilter.cc	(revision 6417)
@@ -62,5 +62,5 @@
         if (this->bActive_)
         {
-            COUT(2) << "Warning: Detected Event loop in EventFilter \"" << this->getName() << "\"" << std::endl;
+            COUT(2) << "Warning: Detected Event loop in EventFilter \"" << this->getName() << '"' << std::endl;
             return;
         }
Index: code/trunk/src/modules/objects/eventsystem/EventListener.cc
===================================================================
--- code/trunk/src/modules/objects/eventsystem/EventListener.cc	(revision 6054)
+++ code/trunk/src/modules/objects/eventsystem/EventListener.cc	(revision 6417)
@@ -58,5 +58,5 @@
         if (this->bActive_)
         {
-            COUT(2) << "Warning: Detected Event loop in EventListener \"" << this->getName() << "\"" << std::endl;
+            COUT(2) << "Warning: Detected Event loop in EventListener \"" << this->getName() << '"' << std::endl;
             return;
         }
@@ -71,5 +71,5 @@
         this->eventName_ = eventname;
 
-        if (this->eventName_ == "")
+        if (this->eventName_.empty())
             return;
 
@@ -81,5 +81,5 @@
     void EventListener::loadedNewXMLName(BaseObject* object)
     {
-        if (this->eventName_ == "")
+        if (this->eventName_.empty())
             return;
 
Index: code/trunk/src/modules/objects/eventsystem/EventTarget.cc
===================================================================
--- code/trunk/src/modules/objects/eventsystem/EventTarget.cc	(revision 6054)
+++ code/trunk/src/modules/objects/eventsystem/EventTarget.cc	(revision 6417)
@@ -45,5 +45,5 @@
     {
     }
-    
+
     void EventTarget::XMLPort(Element& xmlelement, XMLPort::Mode mode)
     {
@@ -60,5 +60,5 @@
         if (this->bActive_)
         {
-            COUT(2) << "Warning: Detected Event loop in EventTarget \"" << this->getName() << "\"" << std::endl;
+            COUT(2) << "Warning: Detected Event loop in EventTarget \"" << this->getName() << '"' << std::endl;
             return;
         }
@@ -72,5 +72,5 @@
     {
         this->target_ = name;
-        
+
         for (ObjectList<BaseObject>::iterator it = ObjectList<BaseObject>::begin(); it != ObjectList<BaseObject>::end(); ++it)
             if (it->getName() == this->target_)
@@ -80,5 +80,5 @@
     void EventTarget::loadedNewXMLName(BaseObject* object)
     {
-        if (this->target_ == "")
+        if (this->target_.empty())
             return;
 
Index: code/trunk/src/modules/objects/eventsystem/EventTarget.h
===================================================================
--- code/trunk/src/modules/objects/eventsystem/EventTarget.h	(revision 6054)
+++ code/trunk/src/modules/objects/eventsystem/EventTarget.h	(revision 6417)
@@ -42,7 +42,7 @@
             EventTarget(BaseObject* creator);
             virtual ~EventTarget();
-            
+
             virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
-            
+
             virtual void processEvent(Event& event);
 
@@ -54,5 +54,5 @@
             virtual void loadedNewXMLName(BaseObject* object);
             void addEventTarget(BaseObject* object);
-            
+
             std::string target_;
             bool bActive_;
Index: code/trunk/src/modules/objects/triggers/DistanceTrigger.cc
===================================================================
--- code/trunk/src/modules/objects/triggers/DistanceTrigger.cc	(revision 6054)
+++ code/trunk/src/modules/objects/triggers/DistanceTrigger.cc	(revision 6417)
@@ -92,5 +92,5 @@
     if (!targetId)
     {
-        COUT(1) << "Error: \"" << targets << "\" is not a valid class name to include in ClassTreeMask (in " << this->getName() << ", class " << this->getIdentifier()->getName() << ")" << std::endl;
+        COUT(1) << "Error: \"" << targets << "\" is not a valid class name to include in ClassTreeMask (in " << this->getName() << ", class " << this->getIdentifier()->getName() << ')' << std::endl;
         return;
     }
Index: code/trunk/src/modules/objects/triggers/Trigger.cc
===================================================================
--- code/trunk/src/modules/objects/triggers/Trigger.cc	(revision 6054)
+++ code/trunk/src/modules/objects/triggers/Trigger.cc	(revision 6417)
@@ -280,11 +280,11 @@
   {
     if (this->mode_ == TriggerMode::EventTriggerAND)
-      return std::string("and");
+      return "and";
     else if (this->mode_ == TriggerMode::EventTriggerOR)
-      return std::string("or");
+      return "or";
     else if (this->mode_ == TriggerMode::EventTriggerXOR)
-      return std::string("xor");
+      return "xor";
     else
-      return std::string("and");
+      return "and";
   }
 
Index: code/trunk/src/modules/overlays/GUIOverlay.cc
===================================================================
--- code/trunk/src/modules/overlays/GUIOverlay.cc	(revision 6054)
+++ code/trunk/src/modules/overlays/GUIOverlay.cc	(revision 6417)
@@ -62,5 +62,5 @@
     {
         SUPER(GUIOverlay, changedVisibility);
-        
+
         //Setting player now.
         if( this->getOwner() )
@@ -69,11 +69,9 @@
         if (this->isVisible())
         {
-            std::string str;
-            std::stringstream out;
+            std::ostringstream out;
             out << reinterpret_cast<long>(this);
-            str = out.str();
-            GUIManager::getInstance().executeCode("showCursor()");
-            InputManager::getInstance().enterState("guiMouseOnly");
-            GUIManager::getInstance().executeCode("showGUI(\"" + this->guiName_ + "\", " + str + ")");
+            const std::string& str = out.str();
+            COUT(1) << "GUIManager ptr: " << str << std::endl;
+            GUIManager::getInstance().showGUIExtra(this->guiName_, str);
 
             COUT(3) << "Showing GUI " << this->guiName_ << std::endl;
@@ -81,7 +79,5 @@
         else
         {
-            GUIManager::getInstance().executeCode("hideGUI(\"" + this->guiName_ + "\")");
-            GUIManager::getInstance().executeCode("hideCursor()");
-            InputManager::getInstance().leaveState("guiMouseOnly");
+            GUIManager::hideGUI(this->guiName_);
             COUT(3) << "Hiding GUI " << this->guiName_ << std::endl;
         }
Index: code/trunk/src/modules/overlays/OverlayText.cc
===================================================================
--- code/trunk/src/modules/overlays/OverlayText.cc	(revision 6054)
+++ code/trunk/src/modules/overlays/OverlayText.cc	(revision 6417)
@@ -134,5 +134,5 @@
     void OverlayText::setFont(const std::string& font)
     {
-        if (font != "")
+        if (!font.empty())
             this->text_->setFontName(font);
     }
Index: code/trunk/src/modules/overlays/hud/ChatOverlay.cc
===================================================================
--- code/trunk/src/modules/overlays/hud/ChatOverlay.cc	(revision 6054)
+++ code/trunk/src/modules/overlays/hud/ChatOverlay.cc	(revision 6417)
@@ -33,5 +33,5 @@
 
 #include "util/Convert.h"
-#include "util/UTFStringConversions.h"
+#include "util/DisplayStringConversions.h"
 #include "core/CoreIncludes.h"
 #include "core/ConfigValueIncludes.h"
@@ -86,5 +86,5 @@
         }
 
-        this->messages_.push_back(multi_cast<Ogre::UTFString>(text));
+        this->messages_.push_back(multi_cast<Ogre::DisplayString>(text));
         COUT(0) << "Chat: " << text << std::endl;
 
@@ -110,5 +110,5 @@
         this->text_->setCaption("");
 
-        for (std::list<Ogre::UTFString>::reverse_iterator it = this->messages_.rbegin(); it != this->messages_.rend(); ++it)
+        for (std::list<Ogre::DisplayString>::reverse_iterator it = this->messages_.rbegin(); it != this->messages_.rend(); ++it)
         {
             this->text_->setCaption(this->text_->getCaption() + "\n" + (*it));
Index: code/trunk/src/modules/overlays/hud/ChatOverlay.h
===================================================================
--- code/trunk/src/modules/overlays/hud/ChatOverlay.h	(revision 6054)
+++ code/trunk/src/modules/overlays/hud/ChatOverlay.h	(revision 6417)
@@ -33,5 +33,5 @@
 
 #include <list>
-#include <OgreUTFString.h>
+#include <OgreOverlayElement.h>
 
 #include "network/ChatListener.h"
@@ -51,5 +51,5 @@
             virtual void incomingChat(const std::string& message, unsigned int senderID);
 
-            std::list<Ogre::UTFString> messages_;
+            std::list<Ogre::DisplayString> messages_;
 
         private:
Index: code/trunk/src/modules/overlays/hud/HUDBar.cc
===================================================================
--- code/trunk/src/modules/overlays/hud/HUDBar.cc	(revision 6054)
+++ code/trunk/src/modules/overlays/hud/HUDBar.cc	(revision 6417)
@@ -67,10 +67,10 @@
 
     HUDBar::HUDBar(BaseObject* creator)
-        : OrxonoxOverlay(creator)
+        : OrxonoxOverlay(creator), right2Left_(false), autoColour_(false)
     {
         RegisterObject(HUDBar);
 
         // create new material
-        std::string materialname = "barmaterial" + multi_cast<std::string>(materialcount_s++);
+        const std::string& materialname = "barmaterial" + multi_cast<std::string>(materialcount_s++);
         Ogre::MaterialPtr material = static_cast<Ogre::MaterialPtr>(Ogre::MaterialManager::getSingleton().create(materialname, "General"));
         material->getTechnique(0)->getPass(0)->setSceneBlending(Ogre::SBT_TRANSPARENT_ALPHA);
@@ -85,7 +85,7 @@
 
         this->value_ = 1.0f;  // initielize with 1.0f to trigger a change when calling setValue(0.0f) on the line below
+        this->setAutoColour(true);
         this->setValue(0.0f); // <--
         this->setRightToLeft(false);
-        this->setAutoColour(true);
         this->currentColour_ = ColourValue::White;
 
@@ -122,13 +122,13 @@
             {
                 ColourValue colour1(0, 0, 0, 1);
-                ColourValue colour2 = (*this->colours_.rbegin()).second;
+                ColourValue colour2 = this->colours_.rbegin()->second;
                 float value1(0);
-                float value2 = (*this->colours_.rbegin()).first;
+                float value2 = this->colours_.rbegin()->first;
                 for (std::map<float, ColourValue>::reverse_iterator it = this->colours_.rbegin(); it != this->colours_.rend(); ++it)
                 {
                     colour1 = colour2;
                     value1 = value2;
-                    colour2 = (*it).second;
-                    value2 = (*it).first;
+                    colour2 = it->second;
+                    value2 = it->first;
 
                     if (value2 < this->value_)
Index: code/trunk/src/modules/overlays/hud/HUDHealthBar.h
===================================================================
--- code/trunk/src/modules/overlays/hud/HUDHealthBar.h	(revision 6054)
+++ code/trunk/src/modules/overlays/hud/HUDHealthBar.h	(revision 6417)
@@ -53,5 +53,5 @@
 
             inline void setTextFont(const std::string& font)
-                { if (font != "") { this->textoverlay_->setFont(font); } }
+                { if (!font.empty()) { this->textoverlay_->setFont(font); } }
             inline const std::string& getTextFont() const
                 { return this->textoverlay_->getFont(); }
Index: code/trunk/src/modules/overlays/hud/HUDNavigation.cc
===================================================================
--- code/trunk/src/modules/overlays/hud/HUDNavigation.cc	(revision 6054)
+++ code/trunk/src/modules/overlays/hud/HUDNavigation.cc	(revision 6417)
@@ -30,4 +30,5 @@
 
 #include <string>
+#include <OgreCamera.h>
 #include <OgreOverlayManager.h>
 #include <OgreTextAreaOverlayElement.h>
@@ -35,10 +36,13 @@
 
 #include "util/Math.h"
-#include "util/StringUtils.h"
 #include "util/Convert.h"
 #include "core/CoreIncludes.h"
 #include "core/XMLPort.h"
+#include "CameraManager.h"
 #include "Scene.h"
 #include "Radar.h"
+#include "graphics/Camera.h"
+#include "controllers/HumanController.h"
+#include "worldentities/pawns/Pawn.h"
 
 namespace orxonox
@@ -60,4 +64,5 @@
         navMarker_->setMaterialName("Orxonox/NavArrows");
 
+/*
         // create aim marker
         aimMarker_ = static_cast<Ogre::PanelOverlayElement*>(Ogre::OverlayManager::getSingleton()
@@ -70,7 +75,8 @@
         setNavMarkerSize(0.05f);
         setAimMarkerSize(0.04f);
+*/
 
         background_->addChild(navMarker_);
-        background_->addChild(aimMarker_);
+//        background_->addChild(aimMarker_);
         background_->addChild(navText_);
 
@@ -85,5 +91,5 @@
             Ogre::OverlayManager::getSingleton().destroyOverlayElement(this->navMarker_);
             Ogre::OverlayManager::getSingleton().destroyOverlayElement(this->navText_);
-            Ogre::OverlayManager::getSingleton().destroyOverlayElement(this->aimMarker_);
+//            Ogre::OverlayManager::getSingleton().destroyOverlayElement(this->aimMarker_);
         }
     }
@@ -96,10 +102,10 @@
         XMLPortParam(HUDNavigation, "textSize", setTextSize, getTextSize, xmlElement, mode);
         XMLPortParam(HUDNavigation, "navMarkerSize", setNavMarkerSize, getNavMarkerSize, xmlElement, mode);
-        XMLPortParam(HUDNavigation, "aimMarkerSize", setAimMarkerSize, getAimMarkerSize, xmlElement, mode);
+//        XMLPortParam(HUDNavigation, "aimMarkerSize", setAimMarkerSize, getAimMarkerSize, xmlElement, mode);
     }
 
     void HUDNavigation::setFont(const std::string& font)
     {
-        if (this->navText_ && font != "")
+        if (this->navText_ && !font.empty())
             this->navText_->setFontName(font);
     }
@@ -149,10 +155,10 @@
         float textLength = multi_cast<std::string>(dist).size() * navText_->getCharHeight() * 0.3;
 
-/*
-        Ogre::Camera* navCam = SpaceShip::getLocalShip()->getCamera()->cam_;
-        Matrix4 transformationMatrix = navCam->getProjectionMatrix() * navCam->getViewMatrix();
-*/
+        orxonox::Camera* cam = CameraManager::getInstance().getActiveCamera();
+        if (!cam)
+            return;
+        const Matrix4& transform = cam->getOgreCamera()->getProjectionMatrix() * cam->getOgreCamera()->getViewMatrix();
         // transform to screen coordinates
-        Vector3 pos = /*transformationMatrix * */radar->getFocus()->getRVWorldPosition();
+        Vector3 pos = transform * radar->getFocus()->getRVWorldPosition();
 
         bool outOfView;
@@ -172,5 +178,5 @@
         {
             // object is not in view
-            aimMarker_->hide();
+//            aimMarker_->hide();
 
             if (!wasOutOfView_)
@@ -227,5 +233,5 @@
             // object is in view
 /*
-            Vector3 aimpos = transformationMatrix * getPredictedPosition(SpaceShip::getLocalShip()->getPosition(),
+            Vector3 aimpos = transform * getPredictedPosition(SpaceShip::getLocalShip()->getPosition(),
                     Projectile::getSpeed(), Radar::getInstance().getFocus()->getRVWorldPosition(), Radar::getInstance().getFocus()->getRVOrientedVelocity());
 */
@@ -241,6 +247,6 @@
             navMarker_->setTop((-pos.y + 1.0 - navMarker_->getHeight()) * 0.5);
 
+/*
             aimMarker_->show();
-/*
             aimMarker_->setLeft((aimpos.x + 1.0 - aimMarker_->getWidth()) * 0.5);
             aimMarker_->setTop((-aimpos.y + 1.0 - aimMarker_->getHeight()) * 0.5);
@@ -253,9 +259,8 @@
     float HUDNavigation::getDist2Focus() const
     {
-/*
-        if (Radar::getInstance().getFocus())
-            return (Radar::getInstance().getFocus()->getRVWorldPosition() - SpaceShip::getLocalShip()->getPosition()).length();
-        else
-*/
+        Radar* radar = this->getOwner()->getScene()->getRadar();
+        if (radar->getFocus() && HumanController::getLocalControllerEntityAsPawn())
+            return (radar->getFocus()->getRVWorldPosition() - HumanController::getLocalControllerEntityAsPawn()->getWorldPosition()).length();
+        else
             return 0;
     }
@@ -267,11 +272,13 @@
     void HUDNavigation::sizeChanged()
     {
-        // use size to compensate for apspect ratio if enabled.
+        // use size to compensate for aspect ratio if enabled.
         float xScale = this->getActualSize().x;
         float yScale = this->getActualSize().y;
         if (this->navMarker_)
             navMarker_->setDimensions(navMarkerSize_ * xScale, navMarkerSize_ * yScale);
+/*
         if (this->aimMarker_)
             aimMarker_->setDimensions(aimMarkerSize_ * xScale, aimMarkerSize_ * yScale);
+*/
         if (this->navText_)
             navText_->setCharHeight(navText_->getCharHeight() * yScale);
Index: code/trunk/src/modules/overlays/hud/HUDNavigation.h
===================================================================
--- code/trunk/src/modules/overlays/hud/HUDNavigation.h	(revision 6054)
+++ code/trunk/src/modules/overlays/hud/HUDNavigation.h	(revision 6417)
@@ -56,6 +56,8 @@
         float getNavMarkerSize() const    { return this->navMarkerSize_; }
 
+/*
         void setAimMarkerSize(float size) { this->aimMarkerSize_ = size; this->sizeChanged(); }
         float getAimMarkerSize() const    { return this->aimMarkerSize_; }
+*/
 
         void setTextSize(float size);
@@ -71,6 +73,8 @@
         Ogre::PanelOverlayElement* navMarker_;      //!< the panel used to show the arrow and the target marker
         float navMarkerSize_;                       //!< One paramter size of the navigation marker
+/*
         Ogre::PanelOverlayElement* aimMarker_;      //!< Panel used to show the aim Marker
         float aimMarkerSize_;                       //!< One paramter size of the aim marker
+*/
         Ogre::TextAreaOverlayElement* navText_;     //!< Text overlay to display the target distance
         bool wasOutOfView_;                         //!< Performance booster variable: setMaterial is not cheap
Index: code/trunk/src/modules/overlays/hud/HUDRadar.cc
===================================================================
--- code/trunk/src/modules/overlays/hud/HUDRadar.cc	(revision 6054)
+++ code/trunk/src/modules/overlays/hud/HUDRadar.cc	(revision 6417)
@@ -126,5 +126,5 @@
             panel = *itRadarDots_;
             ++itRadarDots_;
-            std::string materialName = TextureGenerator::getMaterialName(
+            const std::string& materialName = TextureGenerator::getMaterialName(
                 shapeMaterials_[object->getRadarObjectShape()], object->getRadarObjectColour());
             if (materialName != panel->getMaterialName())
Index: code/trunk/src/modules/overlays/hud/TeamBaseMatchScore.cc
===================================================================
--- code/trunk/src/modules/overlays/hud/TeamBaseMatchScore.cc	(revision 6054)
+++ code/trunk/src/modules/overlays/hud/TeamBaseMatchScore.cc	(revision 6417)
@@ -71,9 +71,9 @@
         if (this->owner_)
         {
-            std::string bases1 = "(" + multi_cast<std::string>(this->owner_->getTeamBases(0)) + ")";
-            std::string bases2 = "(" + multi_cast<std::string>(this->owner_->getTeamBases(1)) + ")";
+            const std::string& bases1 = '(' + multi_cast<std::string>(this->owner_->getTeamBases(0)) + ')';
+            const std::string& bases2 = '(' + multi_cast<std::string>(this->owner_->getTeamBases(1)) + ')';
 
-            std::string score1 = multi_cast<std::string>(this->owner_->getTeamPoints(0));
-            std::string score2 = multi_cast<std::string>(this->owner_->getTeamPoints(1));
+            const std::string& score1 = multi_cast<std::string>(this->owner_->getTeamPoints(0));
+            const std::string& score2 = multi_cast<std::string>(this->owner_->getTeamPoints(1));
 
             std::string output1;
@@ -99,9 +99,9 @@
             }
 
-            std::string output = "";
+            std::string output;
             if (this->bShowBases_ || this->bShowScore_)
             {
                 if (this->bShowLeftTeam_ && this->bShowRightTeam_)
-                    output = output1 + ":" + output2;
+                    output = output1 + ':' + output2;
                 else if (this->bShowLeftTeam_ || this->bShowRightTeam_)
                     output = output1 + output2;
Index: code/trunk/src/modules/overlays/hud/UnderAttackHealthBar.cc
===================================================================
--- code/trunk/src/modules/overlays/hud/UnderAttackHealthBar.cc	(revision 6054)
+++ code/trunk/src/modules/overlays/hud/UnderAttackHealthBar.cc	(revision 6417)
@@ -94,9 +94,9 @@
         }
     }
-    
+
     void UnderAttackHealthBar::changedOverlayGroup()
     {
         SUPER(UnderAttackHealthBar, changedOverlayGroup);
-        
+
         this->getOverlayGroup()->addElement(this->text_.get());
     }
Index: code/trunk/src/modules/overlays/stats/CreateLines.cc
===================================================================
--- code/trunk/src/modules/overlays/stats/CreateLines.cc	(revision 6054)
+++ code/trunk/src/modules/overlays/stats/CreateLines.cc	(revision 6417)
@@ -94,5 +94,5 @@
         this->background_->changedVisibility();
     }
-    
+
     void CreateLines::setOverlayGroup( OverlayGroup* group )
     {
Index: code/trunk/src/modules/pong/Pong.cc
===================================================================
--- code/trunk/src/modules/pong/Pong.cc	(revision 6054)
+++ code/trunk/src/modules/pong/Pong.cc	(revision 6417)
@@ -42,5 +42,5 @@
     CreateEventName(PongCenterpoint, right);
     CreateEventName(PongCenterpoint, left);
-    
+
     CreateUnloadableFactory(Pong);
 
@@ -164,5 +164,5 @@
             else if (player == this->getLeftPlayer())
                 this->center_->fireEvent(FireEventName(PongCenterpoint, left));
-            
+
             if (player)
                 this->gtinfo_->sendAnnounceMessage(player->getName() + " scored");
Index: code/trunk/src/modules/pong/PongAI.cc
===================================================================
--- code/trunk/src/modules/pong/PongAI.cc	(revision 6054)
+++ code/trunk/src/modules/pong/PongAI.cc	(revision 6417)
@@ -62,5 +62,5 @@
     {
         for (std::list<std::pair<Timer*, char> >::iterator it = this->reactionTimers_.begin(); it != this->reactionTimers_.end(); ++it)
-            (*it).first->destroy();
+            it->first->destroy();
     }
 
@@ -131,5 +131,5 @@
                 this->bOscillationAvoidanceActive_ = false;
             }
-            
+
             // If the ball is close enough, calculate another random offset to accelerate the ball
             if (!this->bChangedRandomOffset_)
@@ -206,9 +206,9 @@
             // calculate the time until the ball reaches the other side
             float totaltime = (-position.x + dimension.x / 2 * sgn(velocity.x)) / velocity.x;
-            
+
             // calculate wall bounce position (four possible solutions of the equation: pos.z + vel.z*t + acc.z/2*t^2 = +/- dim.z/2)
             float bouncetime = totaltime;
             bool bUpperWall = false;
-            
+
             if (acceleration.z == 0)
             {
@@ -270,5 +270,5 @@
                 // ball bounces after <bouncetime> seconds, update the position and continue
                 velocity.z = velocity.z + acceleration.z * bouncetime;
-                
+
                 if (bUpperWall)
                 {
@@ -281,5 +281,5 @@
                     velocity.z = fabs(velocity.z) - fabs(randomErrorZ);
                 }
-                    
+
                 position.x = position.x + velocity.x * bouncetime + randomErrorX;
                 this->ballEndPosition_ = position.z;
Index: code/trunk/src/modules/pong/PongBall.cc
===================================================================
--- code/trunk/src/modules/pong/PongBall.cc	(revision 6054)
+++ code/trunk/src/modules/pong/PongBall.cc	(revision 6417)
@@ -105,5 +105,5 @@
                         velocity.z = distance * distance * sgn(distance) * PongBall::MAX_REL_Z_VELOCITY * this->speed_;
                         acceleration = this->bat_[1]->getVelocity() * this->accelerationFactor_ * -1;
-                        
+
                         this->fireEvent();
                     }
Index: code/trunk/src/modules/pong/PongScore.cc
===================================================================
--- code/trunk/src/modules/pong/PongScore.cc	(revision 6054)
+++ code/trunk/src/modules/pong/PongScore.cc	(revision 6417)
@@ -77,6 +77,6 @@
             std::string name2;
 
-            std::string score1 = "0";
-            std::string score2 = "0";
+            std::string score1("0");
+            std::string score2("0");
 
             if (player1)
@@ -114,9 +114,9 @@
             }
 
-            std::string output = "PONG";
+            std::string output("PONG");
             if (this->bShowName_ || this->bShowScore_)
             {
                 if (this->bShowLeftPlayer_ && this->bShowRightPlayer_)
-                    output = output1 + ":" + output2;
+                    output = output1 + ':' + output2;
                 else if (this->bShowLeftPlayer_ || this->bShowRightPlayer_)
                     output = output1 + output2;
Index: code/trunk/src/modules/questsystem/AddQuestHint.cc
===================================================================
--- code/trunk/src/modules/questsystem/AddQuestHint.cc	(revision 6054)
+++ code/trunk/src/modules/questsystem/AddQuestHint.cc	(revision 6417)
@@ -71,5 +71,5 @@
 
         XMLPortParam(AddQuestHint, "hintId", setHintId, getHintId, xmlelement, mode);
-        
+
         COUT(3) << "New AddQuestHint, with target QuestHint {" << this->getHintId() << "}, created." << std::endl;
     }
@@ -90,5 +90,5 @@
             return false;
         }
-        
+
         this->hintId_ = id;
         return true;
Index: code/trunk/src/modules/questsystem/AddReward.cc
===================================================================
--- code/trunk/src/modules/questsystem/AddReward.cc	(revision 6054)
+++ code/trunk/src/modules/questsystem/AddReward.cc	(revision 6417)
@@ -67,5 +67,5 @@
 
         XMLPortObject(AddReward, Rewardable, "", addRewardable, getRewardables, xmlelement, mode);
-        
+
         COUT(3) << "New AddReward, with " << this->rewards_.size() << " Rewardables created." << std::endl;
     }
@@ -104,5 +104,5 @@
     {
         COUT(3) << "AddReward on player: " << player << " ." << std::endl;
-        
+
         bool check = true;
         for ( std::list<Rewardable*>::iterator reward = this->rewards_.begin(); reward != this->rewards_.end(); ++reward )
@@ -110,5 +110,5 @@
             check = check && (*reward)->reward(player);
         }
-        
+
         COUT(3) << "Rewardable successfully added to player." << player << " ." << std::endl;
 
Index: code/trunk/src/modules/questsystem/ChangeQuestStatus.cc
===================================================================
--- code/trunk/src/modules/questsystem/ChangeQuestStatus.cc	(revision 6054)
+++ code/trunk/src/modules/questsystem/ChangeQuestStatus.cc	(revision 6417)
@@ -83,5 +83,5 @@
             return false;
         }
-        
+
         this->questId_ = id;
         return true;
Index: code/trunk/src/modules/questsystem/CompleteQuest.cc
===================================================================
--- code/trunk/src/modules/questsystem/CompleteQuest.cc	(revision 6054)
+++ code/trunk/src/modules/questsystem/CompleteQuest.cc	(revision 6417)
@@ -26,5 +26,5 @@
  *
  */
- 
+
 /**
     @file
@@ -67,5 +67,5 @@
     {
         SUPER(CompleteQuest, XMLPort, xmlelement, mode);
-        
+
         COUT(3) << "New CompleteQuest, with target Quest {" << this->getQuestId() << "}, created." << std::endl;
     }
Index: code/trunk/src/modules/questsystem/FailQuest.cc
===================================================================
--- code/trunk/src/modules/questsystem/FailQuest.cc	(revision 6054)
+++ code/trunk/src/modules/questsystem/FailQuest.cc	(revision 6417)
@@ -26,5 +26,5 @@
  *
  */
- 
+
 /**
     @file
@@ -67,5 +67,5 @@
     {
         SUPER(FailQuest, XMLPort, xmlelement, mode);
-        
+
         COUT(3) << "New FailQUest, with target Quest {" << this->getQuestId() << "}, created." << std::endl;
     }
@@ -103,5 +103,5 @@
             return false;
         }
-        
+
         COUT(3) << "Quest {" << quest->getId() << "} failed by player: " << player << " ." << std::endl;
         return true;
Index: code/trunk/src/modules/questsystem/GlobalQuest.cc
===================================================================
--- code/trunk/src/modules/questsystem/GlobalQuest.cc	(revision 6054)
+++ code/trunk/src/modules/questsystem/GlobalQuest.cc	(revision 6417)
@@ -26,5 +26,5 @@
  *
  */
- 
+
 /**
     @file
@@ -59,5 +59,5 @@
 
     }
-    
+
     /**
     @brief
@@ -67,10 +67,10 @@
     {
         SUPER(GlobalQuest, XMLPort, xmlelement, mode);
-        
+
         XMLPortObject(GlobalQuest, QuestEffect, "reward-effects", addRewardEffect, getRewardEffects, xmlelement, mode);
 
         COUT(3) << "New GlobalQuest {" << this->getId() << "} created." << std::endl;
     }
-    
+
     /**
     @brief
@@ -89,7 +89,7 @@
             return false;
         }
-        
+
         Quest::fail(player);
-    
+
     //! Iterate through all players possessing this Quest.
     for(std::set<PlayerInfo*>::const_iterator it = players_.begin(); it != players_.end(); it++)
@@ -118,5 +118,5 @@
             return false;
         }
-        
+
         //! Iterate through all players possessing the Quest.
         for(std::set<PlayerInfo*>::const_iterator it = players_.begin(); it != players_.end(); it++)
@@ -124,7 +124,7 @@
             QuestEffect::invokeEffects(*it, this->getCompleteEffectList());
         }
-    
+
         Quest::complete(player);
-    
+
         QuestEffect::invokeEffects(player, this->rewards_); //!< Invoke reward QuestEffects on the player completing the Quest.
         return true;
@@ -230,9 +230,9 @@
             this->players_.insert(player); //!< Add the player to the set.
         }
-        
+
         this->status_ = status; //!< Set the status, which is global, remember...?
         return true;
     }
-    
+
     /**
     @brief
@@ -256,5 +256,5 @@
         return true;
     }
-    
+
     /**
     @brief
Index: code/trunk/src/modules/questsystem/LocalQuest.cc
===================================================================
--- code/trunk/src/modules/questsystem/LocalQuest.cc	(revision 6054)
+++ code/trunk/src/modules/questsystem/LocalQuest.cc	(revision 6417)
@@ -87,7 +87,7 @@
             return false;
         }
-        
+
         Quest::fail(player);
-        
+
         QuestEffect::invokeEffects(player, this->getFailEffectList()); //!< Invoke the failEffects.
         return true;
@@ -110,7 +110,7 @@
             return false;
         }
-        
+
         Quest::complete(player);
-        
+
         QuestEffect::invokeEffects(player, this->getCompleteEffectList()); //!< Invoke the complete QuestEffects.
         return true;
@@ -188,5 +188,5 @@
             return it->second;
         }
-        
+
         return QuestStatus::Inactive; //!< If the player is not yet in the map, that means the status of the quest form him is 'inactive'.
     }
@@ -209,5 +209,5 @@
             return false;
         }
-        
+
         this->playerStatus_[player] = status;
         return true;
Index: code/trunk/src/modules/questsystem/Quest.cc
===================================================================
--- code/trunk/src/modules/questsystem/Quest.cc	(revision 6054)
+++ code/trunk/src/modules/questsystem/Quest.cc	(revision 6417)
@@ -26,5 +26,5 @@
  *
  */
- 
+
 /**
     @file
@@ -204,5 +204,5 @@
     {
         int i = index;
-        
+
         //! Iterate through all subquests.
         for (std::list<Quest*>::const_iterator subQuest = this->subQuests_.begin(); subQuest != this->subQuests_.end(); ++subQuest)
@@ -214,5 +214,5 @@
             i--;
         }
-        
+
         return NULL; //!< If the index is greater than the number of elements in the list.
     }
@@ -229,5 +229,5 @@
     {
         int i = index;
-        
+
         //! Iterate through all QuestHints.
         for (std::list<QuestHint*>::const_iterator hint = this->hints_.begin(); hint != this->hints_.end(); ++hint)
@@ -253,5 +253,5 @@
     {
         int i = index;
-        
+
         //! Iterate through all fail QuestEffects.
         for (std::list<QuestEffect*>::const_iterator effect = this->failEffects_.begin(); effect != this->failEffects_.end(); ++effect)
@@ -277,5 +277,5 @@
     {
         int i = index;
-        
+
         //! Iterate through all complete QuestEffects.
         for (std::list<QuestEffect*>::const_iterator effect = this->completeEffects_.begin(); effect != this->completeEffects_.end(); ++effect)
@@ -350,5 +350,5 @@
         return this->getStatus(player) == QuestStatus::Completed;
     }
-    
+
     /**
     @brief
@@ -363,11 +363,11 @@
         QuestListener::advertiseStatusChange(this->listeners_, "fail"); //!< Tells the QuestListeners, that the status has changed to failed.
         this->setStatus(player, QuestStatus::Failed);
-        
+
         COUT(4) << "Quest {" << this->getId() << "} is failed for player: " << player << " ." <<std::endl;
-        
+
         this->getDescription()->sendFailQuestNotification();
         return true;
     }
-    
+
     /**
     @brief
@@ -382,7 +382,7 @@
         QuestListener::advertiseStatusChange(this->listeners_, "complete"); //!< Tells the QuestListeners, that the status has changed to completed.
         this->setStatus(player, QuestStatus::Completed);
-        
+
         COUT(4) << "Quest {" << this->getId() << "} is completed for player: " << player << " ." <<std::endl;
-        
+
         this->getDescription()->sendCompleteQuestNotification();
         return true;
@@ -404,15 +404,15 @@
             return false;
         }
-        
+
         COUT(4) << "Quest {" << this->getId() << "} is started for player: " << player << " ." <<std::endl;
-        
+
         QuestListener::advertiseStatusChange(this->listeners_, "start"); //!< Tells the QuestListeners, that the status has changed to active.
-        
+
         this->setStatus(player, QuestStatus::Active);
-        
+
         this->getDescription()->sendAddQuestNotification();
         return true;
     }
-    
+
     /**
     @brief
@@ -430,5 +430,5 @@
             return false;
         }
-        
+
         this->listeners_.push_back(listener);
         return true;
Index: code/trunk/src/modules/questsystem/QuestDescription.cc
===================================================================
--- code/trunk/src/modules/questsystem/QuestDescription.cc	(revision 6054)
+++ code/trunk/src/modules/questsystem/QuestDescription.cc	(revision 6417)
@@ -50,7 +50,4 @@
     {
         RegisterObject(QuestDescription);
-        
-        this->title_ = "";
-        this->description_ = "";
     }
 
@@ -79,5 +76,5 @@
         COUT(3) << "New QuestDescription with title '" << this->getTitle() << "' created." << std::endl;
     }
-    
+
     /**
     @brief
@@ -94,8 +91,8 @@
     bool QuestDescription::notificationHelper(const std::string & item, const std::string & status) const
     {
-        std::string message = "";
+        std::string message;
         if(item == "hint")
         {
-            message = "You received a hint: '" + this->title_ + "'";
+            message = "You received a hint: '" + this->title_ + '\'';
         }
         else if(item == "quest")
@@ -103,13 +100,13 @@
             if(status == "start")
             {
-                message = "You received a new quest: '" + this->title_ + "'";
+                message = "You received a new quest: '" + this->title_ + '\'';
             }
             else if(status == "fail")
             {
-                message = "You failed the quest: '" + this->title_ + "'";
+                message = "You failed the quest: '" + this->title_ + '\'';
             }
             else if(status == "complete")
             {
-                message = "You successfully completed the quest: '" + this->title_ + "'";
+                message = "You successfully completed the quest: '" + this->title_ + '\'';
             }
             else
@@ -124,5 +121,5 @@
             return false;
         }
-        
+
         QuestNotification* notification = new QuestNotification(message);
         notification->send();
Index: code/trunk/src/modules/questsystem/QuestEffect.cc
===================================================================
--- code/trunk/src/modules/questsystem/QuestEffect.cc	(revision 6054)
+++ code/trunk/src/modules/questsystem/QuestEffect.cc	(revision 6417)
@@ -69,5 +69,5 @@
     {
         bool check = true;
-        
+
         COUT(4) << "Invoking QuestEffects on player: " << player << " ."  << std::endl;
 
Index: code/trunk/src/modules/questsystem/QuestGUI.cc
===================================================================
--- code/trunk/src/modules/questsystem/QuestGUI.cc	(revision 6054)
+++ code/trunk/src/modules/questsystem/QuestGUI.cc	(revision 6417)
@@ -77,5 +77,5 @@
         }
         this->windows_.clear();
-        
+
         if(this->root_ != NULL)
             this->root_->destroy();
@@ -104,5 +104,5 @@
 
         this->clear(); //!< Clear the GUI.
-        
+
         int depth = 0;
         int index = 0;
@@ -116,5 +116,5 @@
         for(std::map<std::string, Quest*>::iterator it = quests.begin(); it != quests.end(); it++)
         {
-            Quest* quest = (*it).second;
+            Quest* quest = it->second;
             if(quest->getParentQuest() == NULL && !quest->isInactive(this->player_)) //!< If the Quest isn't inactive and a root Quest (meaning it has no parent.), create a Node.
             {
@@ -136,5 +136,5 @@
         for(std::map<CEGUI::Window*, QuestGUINode*>::iterator it = this->nodes_.begin(); it != this->nodes_.end(); it++)
         {
-            QuestGUINode* node = (*it).second;
+            QuestGUINode* node = it->second;
             if(node == NULL)
             {
@@ -209,5 +209,5 @@
         for(std::map<PlayerInfo*, QuestGUI*>::iterator it = QuestManager::getInstance().questGUIs_.begin(); it != QuestManager::getInstance().questGUIs_.end(); it++)
         {
-            QuestGUI* gui = (*it).second;
+            QuestGUI* gui = it->second;
             std::map<CEGUI::Window*, QuestGUINode*>::iterator node = gui->nodes_.find(window);
             if(node != gui->nodes_.end()) return node->second;
@@ -235,5 +235,5 @@
 
         this->nodes_.insert(std::pair<CEGUI::Window*, QuestGUINode*>(node->getWindow(),node)); //!< Insert the node and its window in the nodes_ map.
-        
+
         index++;
 
@@ -268,5 +268,5 @@
         index = tempIndex; //!< Reset the index to the original level.
 
-        return index;        
+        return index;
     }
 
Index: code/trunk/src/modules/questsystem/QuestGUI.h
===================================================================
--- code/trunk/src/modules/questsystem/QuestGUI.h	(revision 6054)
+++ code/trunk/src/modules/questsystem/QuestGUI.h	(revision 6417)
@@ -56,5 +56,5 @@
 
         public:
-        
+
             QuestGUI(PlayerInfo* player);
             virtual ~QuestGUI();
@@ -86,7 +86,7 @@
             inline PlayerInfo* getPlayer(void)
                 { return this->player_; }
-    
+
         private:
-            
+
             int createNode(QuestGUINode* parent, QuestItem* item, int depth, int index); //!< Recursive method to create Nodes for all Quests an Hints the given Quest is a parent to.
 
Index: code/trunk/src/modules/questsystem/QuestGUINode.cc
===================================================================
--- code/trunk/src/modules/questsystem/QuestGUINode.cc	(revision 6054)
+++ code/trunk/src/modules/questsystem/QuestGUINode.cc	(revision 6417)
@@ -71,5 +71,5 @@
     QuestGUINode::QuestGUINode(QuestGUI* gui, QuestGUINode* parent, QuestItem* item, int depth, int index)
     {
-        this->initialize();    
+        this->initialize();
 
         this->gui_ = gui;
@@ -119,5 +119,5 @@
     void QuestGUINode::toggleVisibility(void)
     {
-        
+
     }
 
@@ -134,9 +134,9 @@
         if(this->window_ != NULL)
         {
-            buffer = (std::string)(this->window_->getName().c_str());
+            buffer = this->window_->getName().c_str();
         }
         else
         {
-            buffer = "";
+            buffer.erase();
         }
     }
@@ -154,5 +154,5 @@
 
         if(this->details_ == NULL) //!< If the details window was not already created.
-        {  
+        {
             std::ostringstream stream;
 
@@ -187,5 +187,5 @@
                 CEGUI::Window* statusWindow = this->gui_->getWindowManager()->createWindow("TaharezLook/StaticText", stream.str());
                 window->addChildWindow(statusWindow);
-                std::string status = "";
+                std::string status;
                 if(quest->isActive(this->gui_->getPlayer()))
                 {
@@ -209,5 +209,5 @@
                 offset += height;
             }
-            
+
             //! Create title pane for the description.
             stream.str("");
@@ -282,5 +282,5 @@
     {
         COUT(3) << "Open QuestItem..." << std::endl;
-        
+
         //CEGUI::Window* window = this->gui_->getRootWindow();
         CEGUI::Window* window = this->gui_->getWindowManager()->getWindow("orxonox/QuestGUI/Background");
@@ -297,5 +297,5 @@
     */
     bool QuestGUINode::closeDetails(const CEGUI::EventArgs& e)
-    {        
+    {
         //CEGUI::Window* window = this->gui_->getRootWindow();
         CEGUI::Window* window = this->gui_->getWindowManager()->getWindow("orxonox/QuestGUI/Background");
@@ -344,5 +344,5 @@
         //! Set the height to the window.
         window->setHeight(CEGUI::UDim(0, height));
-        
+
         //Debug
         const CEGUI::Rect newArea = getStaticTextArea(window);
@@ -368,5 +368,5 @@
     {
         Quest* quest = dynamic_cast<Quest*>(this->item_);
-        
+
         this->window_ = this->gui_->getWindow();
         std::ostringstream stream;
@@ -377,5 +377,5 @@
         }
         stream << this->index_;
-        
+
         this->window_->rename(stream.str());
         this->window_->setText(this->item_->getDescription()->getTitle());
Index: code/trunk/src/modules/questsystem/QuestGUINode.h
===================================================================
--- code/trunk/src/modules/questsystem/QuestGUINode.h	(revision 6054)
+++ code/trunk/src/modules/questsystem/QuestGUINode.h	(revision 6417)
@@ -44,9 +44,9 @@
 
         public:
-    
+
             QuestGUINode(void);
             QuestGUINode(QuestGUI* gui, QuestGUINode* parent, QuestItem* item, int depth, int index);
             virtual ~QuestGUINode(void);
-    
+
             void toggleVisibility(void);
 
@@ -54,5 +54,5 @@
             /**
             @brief Retreive the window of this node.
-            @return The CEGUI Window of this node. 
+            @return The CEGUI Window of this node.
             */
             inline CEGUI::Window* getWindow(void)
Index: code/trunk/src/modules/questsystem/QuestHint.cc
===================================================================
--- code/trunk/src/modules/questsystem/QuestHint.cc	(revision 6054)
+++ code/trunk/src/modules/questsystem/QuestHint.cc	(revision 6417)
@@ -26,5 +26,5 @@
  *
  */
- 
+
 /**
     @file
@@ -71,5 +71,5 @@
 
         QuestManager::getInstance().registerHint(this); //!< Registers the QuestHint with the QuestManager.
-        
+
         COUT(3) << "New QuestHint {" << this->getId() << "} created." << std::endl;
     }
@@ -100,5 +100,5 @@
             return it->second;
         }
-        
+
         return QuestStatus::Inactive;
     }
@@ -119,5 +119,5 @@
             {
                 this->playerStatus_[player] = QuestHintStatus::Active;
-                
+
                 this->getDescription()->sendAddHintNotification();
                 return true;
@@ -129,5 +129,5 @@
             }
         }
-        
+
         COUT(2) << "A hint of a non-active quest was trying to get activated." << std::endl;
         return false;
Index: code/trunk/src/modules/questsystem/QuestItem.cc
===================================================================
--- code/trunk/src/modules/questsystem/QuestItem.cc	(revision 6054)
+++ code/trunk/src/modules/questsystem/QuestItem.cc	(revision 6417)
@@ -26,5 +26,5 @@
  *
  */
- 
+
 /**
     @file
@@ -47,6 +47,4 @@
     {
         RegisterObject(QuestItem);
-
-        this->id_ = "";
     }
 
@@ -86,5 +84,5 @@
             return;
         }
-        
+
         this->id_ = id;
     }
Index: code/trunk/src/modules/questsystem/QuestListener.cc
===================================================================
--- code/trunk/src/modules/questsystem/QuestListener.cc	(revision 6054)
+++ code/trunk/src/modules/questsystem/QuestListener.cc	(revision 6417)
@@ -50,9 +50,9 @@
     {
         RegisterObject(QuestListener);
-        
+
         this->mode_ = QuestListenerMode::All;
         this->quest_ = NULL;
     }
-    
+
     /**
     @brief
@@ -62,5 +62,5 @@
     {
     }
-    
+
     /**
     @brief
@@ -75,8 +75,8 @@
 
         this->quest_->addListener(this); //!< Adds the QuestListener to the Quests list of listeners.
-        
+
         COUT(3) << "QuestListener created for quest: {" << this->quest_->getId() << "} with mode '" << this->getMode() << "'." << std::endl;
     }
-    
+
     /**
     @brief
@@ -98,5 +98,5 @@
         }
     }
-    
+
     /**
     @brief
@@ -110,5 +110,5 @@
     {
         this->quest_ = QuestManager::getInstance().findQuest(id); //!< Find the Quest corresponding to the given questId.
-        
+
         if(this->quest_ == NULL) //!< If there is no such Quest.
         {
@@ -116,8 +116,8 @@
             return false;
         }
-        
+
         return true;
     }
-    
+
     /**
     @brief
@@ -152,8 +152,8 @@
         return false;
         }
-        
+
         return true;
     }
-    
+
     /**
     @brief
@@ -183,5 +183,5 @@
         {
             COUT(1) << "An unforseen, never to happen, Error has occurred. This is impossible!" << std::endl;
-        return "";
+            return "";
         }
     }
@@ -193,5 +193,5 @@
         Returns the questId of the Quest the QuestListener reacts to.
     */
-    const std::string & QuestListener::getQuestId(void)    
+    const std::string & QuestListener::getQuestId(void)
     {
         return this->quest_->getId();
Index: code/trunk/src/modules/questsystem/QuestManager.cc
===================================================================
--- code/trunk/src/modules/questsystem/QuestManager.cc	(revision 6054)
+++ code/trunk/src/modules/questsystem/QuestManager.cc	(revision 6417)
@@ -55,6 +55,4 @@
     DeclareToluaInterface(Questsystem);
 
-    //! Pointer to the current (and single) instance of this class.
-    /*static*/ QuestManager* QuestManager::singletonPtr_s = NULL;
     ManageScopedSingleton(QuestManager, ScopeID::Root, false);
 
@@ -78,5 +76,5 @@
         for(std::map<PlayerInfo*, QuestGUI*>::iterator it = this->questGUIs_.begin(); it != this->questGUIs_.end(); it++)
         {
-            (*it).second->destroy();
+            it->second->destroy();
         }
         this->questGUIs_.clear();
Index: code/trunk/src/modules/questsystem/QuestManager.h
===================================================================
--- code/trunk/src/modules/questsystem/QuestManager.h	(revision 6054)
+++ code/trunk/src/modules/questsystem/QuestManager.h	(revision 6417)
@@ -72,5 +72,5 @@
             static QuestManager& getInstance() { return Singleton<QuestManager>::getInstance(); } // tolua_export
 
-            //! Retreive the main window for the GUI. 
+            //! Retreive the main window for the GUI.
             CEGUI::Window* getQuestGUI(const std::string & guiName); // tolua_export
 
Index: code/trunk/src/modules/questsystem/QuestNotification.cc
===================================================================
--- code/trunk/src/modules/questsystem/QuestNotification.cc	(revision 6054)
+++ code/trunk/src/modules/questsystem/QuestNotification.cc	(revision 6417)
@@ -32,5 +32,5 @@
 namespace orxonox {
 
-    const std::string QuestNotification::SENDER = "questsystem";
+    const std::string QuestNotification::SENDER("questsystem");
 
     QuestNotification::QuestNotification(BaseObject* creator) : Notification(creator)
@@ -38,13 +38,13 @@
         this->initialize();
     }
-    
+
     QuestNotification::QuestNotification(const std::string & message) : Notification(message)
     {
         this->initialize();
     }
-    
+
     QuestNotification::~QuestNotification()
     {
-        
+
     }
 
Index: code/trunk/src/modules/questsystem/notifications/Notification.cc
===================================================================
--- code/trunk/src/modules/questsystem/notifications/Notification.cc	(revision 6054)
+++ code/trunk/src/modules/questsystem/notifications/Notification.cc	(revision 6417)
@@ -49,5 +49,5 @@
         this->initialize();
     }
-    
+
     /**
     @brief
@@ -60,5 +60,5 @@
         this->message_ = message;
     }
-    
+
     /**
     @brief
@@ -68,5 +68,5 @@
     {
     }
-    
+
     /**
     @brief
@@ -75,9 +75,9 @@
     void Notification::initialize(void)
     {
-        this->message_ = "";
+        this->message_.clear();
         this->sender_ = NotificationManager::NONE;
         this->sent_ = false;
     }
-    
+
     /**
     @brief
@@ -90,5 +90,5 @@
         return this->send(NotificationManager::NONE);
     }
-    
+
     /**
     @brief
@@ -106,10 +106,10 @@
             return false;
         this->sent_ = true;
-        
+
         COUT(3) << "Notification \"" << this->getMessage() << "\" sent." << std::endl;
-        
+
         return true;
     }
-    
+
     /**
     @brief
Index: code/trunk/src/modules/questsystem/notifications/NotificationManager.cc
===================================================================
--- code/trunk/src/modules/questsystem/notifications/NotificationManager.cc	(revision 6054)
+++ code/trunk/src/modules/questsystem/notifications/NotificationManager.cc	(revision 6417)
@@ -44,8 +44,7 @@
 {
 
-    const std::string NotificationManager::ALL = "all";
-    const std::string NotificationManager::NONE = "none";
+    const std::string NotificationManager::ALL("all");
+    const std::string NotificationManager::NONE("none");
 
-    NotificationManager* NotificationManager::singletonPtr_s = NULL;
     ManageScopedSingleton(NotificationManager, ScopeID::Root, false);
 
Index: code/trunk/src/modules/questsystem/notifications/NotificationQueue.cc
===================================================================
--- code/trunk/src/modules/questsystem/notifications/NotificationQueue.cc	(revision 6054)
+++ code/trunk/src/modules/questsystem/notifications/NotificationQueue.cc	(revision 6417)
@@ -46,7 +46,7 @@
     CreateFactory(NotificationQueue);
 
-    const std::string NotificationQueue::DEFAULT_FONT = "VeraMono";
-    const Vector2 NotificationQueue::DEFAULT_POSITION = Vector2(0.0,0.0);
-    const float NotificationQueue::DEFAULT_FONT_SIZE  = 0.025f;
+    const std::string NotificationQueue::DEFAULT_FONT("VeraMono");
+    const Vector2 NotificationQueue::DEFAULT_POSITION(0.0,0.0);
+    const float NotificationQueue::DEFAULT_FONT_SIZE = 0.025f;
 
     /**
@@ -271,5 +271,5 @@
             if(!first)
             {
-                *string += ",";
+                *string += ',';
             }
             else
@@ -300,5 +300,5 @@
         while( index < targets.size() ) //!< Go through the string, character by character until the end is reached.
         {
-            pTemp = new std::string("");
+            pTemp = new std::string();
             while(index < targets.size() && targets[index] != ',' && targets[index] != ' ')
             {
@@ -399,5 +399,5 @@
         std::ostringstream stream;
         stream << reinterpret_cast<unsigned long>(notification);
-        std::string addressString = stream.str() ;
+        const std::string& addressString = stream.str();
         container->name = "NotificationOverlay(" + timeString + ")&" + addressString;
 
Index: code/trunk/src/modules/weapons/projectiles/CMakeLists.txt
===================================================================
--- code/trunk/src/modules/weapons/projectiles/CMakeLists.txt	(revision 6054)
+++ code/trunk/src/modules/weapons/projectiles/CMakeLists.txt	(revision 6417)
@@ -4,3 +4,4 @@
   Projectile.cc
   LightningGunProjectile.cc
+  Rocket.cc
 )
Index: code/trunk/src/modules/weapons/projectiles/LightningGunProjectile.cc
===================================================================
--- code/trunk/src/modules/weapons/projectiles/LightningGunProjectile.cc	(revision 6054)
+++ code/trunk/src/modules/weapons/projectiles/LightningGunProjectile.cc	(revision 6417)
@@ -43,17 +43,17 @@
         this->maxTextureIndex_ = 8;
         this->textureTimer_.setTimer(0.01f, true, createExecutor(createFunctor(&LightningGunProjectile::changeTexture, this)));
-        
+
         registerVariables();
     }
-    
+
     void LightningGunProjectile::registerVariables()
     {
         registerVariable(this->materialBase_);
     }
-    
+
     void LightningGunProjectile::setMaterial(const std::string& material)
     {
-        this->materialBase_ = material;    
-    
+        this->materialBase_ = material;
+
         BillboardProjectile::setMaterial(material + multi_cast<std::string>(this->textureIndex_));
     }
@@ -64,5 +64,5 @@
         if (this->textureIndex_ > this->maxTextureIndex_)
             this->textureIndex_ = 1;
-        
+
         this->setMaterial(this->materialBase_);
     }
Index: code/trunk/src/modules/weapons/projectiles/Projectile.cc
===================================================================
--- code/trunk/src/modules/weapons/projectiles/Projectile.cc	(revision 6054)
+++ code/trunk/src/modules/weapons/projectiles/Projectile.cc	(revision 6417)
@@ -48,4 +48,5 @@
         this->bDestroy_ = false;
         this->owner_ = 0;
+        this->damage_ = 15;
 
         // Get notification about collisions
@@ -53,4 +54,5 @@
         if (GameMode::isMaster())
         {
+            this->setMass(1.0);
             this->enableCollisionCallback();
             this->setCollisionResponse(false);
@@ -71,5 +73,4 @@
     void Projectile::setConfigValues()
     {
-        SetConfigValue(damage_, 15.0).description("The damage caused by the projectile");
         SetConfigValue(lifetime_, 4.0).description("The time in seconds a projectile stays alive");
     }
@@ -128,5 +129,5 @@
             Pawn* victim = orxonox_cast<Pawn*>(otherObject);
             if (victim)
-                victim->damage(dmg, this->owner_);
+                victim->hit(this->owner_, contactPoint, dmg);
         }
         return false;
Index: code/trunk/src/modules/weapons/projectiles/Rocket.cc
===================================================================
--- code/trunk/src/modules/weapons/projectiles/Rocket.cc	(revision 6417)
+++ code/trunk/src/modules/weapons/projectiles/Rocket.cc	(revision 6417)
@@ -0,0 +1,293 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Oliver Scheuss
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#include "Rocket.h"
+
+#include <BulletDynamics/Dynamics/btRigidBody.h>
+
+#include "core/CoreIncludes.h"
+#include "core/XMLPort.h"
+#include "worldentities/CameraPosition.h"
+#include "worldentities/pawns/Pawn.h"
+#include "graphics/ParticleSpawner.h"
+#include "graphics/Model.h"
+#include "objects/collisionshapes/ConeCollisionShape.h"
+#include "infos/PlayerInfo.h"
+#include "controllers/Controller.h"
+#include "sound/WorldSound.h"
+
+namespace orxonox
+{
+    CreateFactory(Rocket);
+    // create the factory for the Rocket
+
+    /**
+    @brief
+        Constructor. Registers the object and initializes some default values.
+    */
+    Rocket::Rocket(BaseObject* creator) : ControllableEntity(creator)
+    {
+        RegisterObject(Rocket);// - register the Rocket class to the core
+
+        this->localAngularVelocity_ = 0;
+        this->bDestroy_ = false;
+        this->lifetime_ = 100;
+
+        if (GameMode::isMaster())
+        {
+            this->setCollisionType(WorldEntity::Kinematic);
+            this->setVelocity(0,0,-100);
+
+            Model* model = new Model(this);
+            model->setMeshSource("rocket.mesh");
+            model->scale(0.7);
+            this->attach(model);
+            ParticleEmitter* fire = new ParticleEmitter(this);
+            this->attach(fire);
+            fire->setOrientation(this->getOrientation());
+            fire->setSource("Orxonox/rocketfire");
+
+            this->enableCollisionCallback();
+            this->setCollisionResponse(false);
+            this->setCollisionType(Kinematic);
+
+            ConeCollisionShape* collisionShape = new ConeCollisionShape(this);
+            collisionShape->setRadius(3);
+            collisionShape->setHeight(500);
+            this->attachCollisionShape(collisionShape);
+
+            this->destroyTimer_.setTimer(this->lifetime_, false, createExecutor(createFunctor(&Rocket::destroyObject, this)));
+
+            this->defSndWpnEngine_ = new WorldSound(this);
+            this->defSndWpnEngine_->setLooping(true);
+            this->defSndWpnEngine_->setSource("sounds/Rocket_engine.ogg");
+            this->attach(defSndWpnEngine_);
+
+            this->defSndWpnLaunch_ = new WorldSound(this);
+            this->defSndWpnLaunch_->setLooping(false);
+            this->defSndWpnLaunch_->setSource("sounds/Rocket_launch.ogg");
+            this->attach(defSndWpnLaunch_);
+        }
+        else
+        {
+            this->defSndWpnEngine_ = 0;
+            this->defSndWpnLaunch_ = 0;
+        }
+
+        CameraPosition* camPosition = new CameraPosition(this);
+        camPosition->setPosition(0,4,15);
+        camPosition->setAllowMouseLook(true);
+        this->addCameraPosition(camPosition);
+    }
+
+    /**
+    @brief
+        Destructor. Destroys controller, if present and kills sounds, if playing.
+    */
+    Rocket::~Rocket()
+    {
+        if(this->isInitialized())
+        {
+            if (GameMode::isMaster() && this->player_)
+                this->player_->stopTemporaryControl();
+
+            if ( this->defSndWpnEngine_ )
+                this->defSndWpnEngine_->destroy();
+
+            if ( this->defSndWpnLaunch_ )
+                this->defSndWpnLaunch_->destroy();
+        }
+    }
+
+    /**
+    @brief
+        Method for creating a Rocket through XML.
+    */
+    void Rocket::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        // this calls the XMLPort function of the parent class
+        SUPER(Rocket, XMLPort, xmlelement, mode);
+    }
+
+    void Rocket::setOwner(Pawn* owner)
+    {
+        this->owner_ = owner;
+        this->originalControllableEntity_ = this->owner_->getPlayer()->getControllableEntity();
+        this->player_ = this->owner_->getPlayer();
+        this->owner_->getPlayer()->startTemporaryControl(this);
+
+        if( GameMode::isMaster() )
+        {
+            this->defSndWpnEngine_->play();
+            this->defSndWpnLaunch_->play();
+        }
+    }
+
+    /**
+    @brief
+        Defines which actions the Rocket has to take in each tick.
+    @param dt
+        The length of the tick.
+    */
+    void Rocket::tick(float dt)
+    {
+        SUPER(Rocket, tick, dt);
+
+        if( this->hasLocalController() )
+        {
+            this->setAngularVelocity(this->getOrientation() * this->localAngularVelocity_);
+            this->setVelocity( this->getOrientation()*WorldEntity::FRONT*this->getVelocity().length() );
+            this->localAngularVelocity_ = 0;
+
+            if( this->bDestroy_ )
+                this->destroy();
+        }
+    }
+
+    bool Rocket::collidesAgainst(WorldEntity* otherObject, btManifoldPoint& contactPoint)
+    {
+        if (!this->bDestroy_ && GameMode::isMaster())
+        {
+            if (otherObject == this->owner_)
+                return false;
+
+            this->bDestroy_ = true;
+
+            if (this->owner_)
+            {
+                {
+                    ParticleSpawner* effect = new ParticleSpawner(this->owner_->getCreator());
+                    effect->setPosition(this->getPosition());
+                    effect->setOrientation(this->getOrientation());
+                    effect->setDestroyAfterLife(true);
+                    effect->setSource("Orxonox/explosion4");
+                    effect->setLifetime(2.0f);
+                }
+
+                {
+                    ParticleSpawner* effect = new ParticleSpawner(this->owner_->getCreator());
+                    effect->setPosition(this->getPosition());
+                    effect->setOrientation(this->getOrientation());
+                    effect->setDestroyAfterLife(true);
+                    effect->setSource("Orxonox/smoke4");
+                    effect->setLifetime(3.0f);
+                }
+            }
+
+            float dmg = this->damage_;
+            if (this->owner_)
+                dmg = this->owner_->getPickups().processModifiers(ModifierType::Damage, dmg, false);
+
+            Pawn* victim = orxonox_cast<Pawn*>(otherObject);
+            if (victim)
+                victim->hit(this->owner_, contactPoint, dmg);
+//             this->destroy();
+        }
+        return false;
+    }
+
+    void Rocket::destroyObject()
+    {
+        if (GameMode::isMaster())
+        {
+            if(this->defSndWpnEngine_->isPlaying())
+            {
+                this->defSndWpnEngine_->stop();
+            }
+            this->destroy();
+        }
+    }
+
+    void Rocket::fired(unsigned int firemode)
+    {
+        if (this->owner_)
+        {
+            {
+                ParticleSpawner* effect = new ParticleSpawner(this->owner_->getCreator());
+                effect->setPosition(this->getPosition());
+                effect->setOrientation(this->getOrientation());
+                effect->setDestroyAfterLife(true);
+                effect->setSource("Orxonox/explosion4");
+                effect->setLifetime(2.0f);
+            }
+
+            {
+                ParticleSpawner* effect = new ParticleSpawner(this->owner_->getCreator());
+                effect->setPosition(this->getPosition());
+                effect->setOrientation(this->getOrientation());
+                effect->setDestroyAfterLife(true);
+                effect->setSource("Orxonox/smoke4");
+                effect->setLifetime(3.0f);
+            }
+            this->destroy();
+        }
+    }
+
+    /**
+    @brief
+        Rotates the Rocket around the y-axis by the amount specified by the first component of the input 2-dim vector.
+    @param value
+        The vector determining the amount of the angular movement.
+    */
+    void Rocket::rotateYaw(const Vector2& value)
+    {
+        ControllableEntity::rotateYaw(value);
+
+        if( !this->isInMouseLook() )
+            this->localAngularVelocity_.y += value.x;
+    }
+
+    /**
+    @brief
+        Rotates the Rocket around the x-axis by the amount specified by the first component of the input 2-dim vector.
+    @param value
+        The vector determining the amount of the angular movement.
+    */
+    void Rocket::rotatePitch(const Vector2& value)
+    {
+        ControllableEntity::rotatePitch(value);
+
+        if( !this->isInMouseLook() )
+            this->localAngularVelocity_.x += value.x;
+    }
+
+    /**
+    @brief
+        Rotates the Rocket around the z-axis by the amount specified by the first component of the input 2-dim vector.
+    @param value
+        The vector determining the amount of the angular movement.
+    */
+    void Rocket::rotateRoll(const Vector2& value)
+    {
+        ControllableEntity::rotateRoll(value);
+
+        if( !this->isInMouseLook() )
+            this->localAngularVelocity_.z += value.x;
+    }
+
+}
Index: code/trunk/src/modules/weapons/projectiles/Rocket.h
===================================================================
--- code/trunk/src/modules/weapons/projectiles/Rocket.h	(revision 6417)
+++ code/trunk/src/modules/weapons/projectiles/Rocket.h	(revision 6417)
@@ -0,0 +1,133 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Oliver Scheuss
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#ifndef _Rocket_H__
+#define _Rocket_H__
+
+#include "weapons/WeaponsPrereqs.h"
+
+#include "tools/Timer.h"
+#include "worldentities/ControllableEntity.h"
+
+namespace orxonox
+{
+    class ConeCollisionShape;
+
+    /**
+    @brief
+        Rocket, that is made to move upon a specified pattern.
+        This class was constructed for the PPS tutorial.
+    @author
+        Oli Scheuss
+    */
+    class _WeaponsExport Rocket : public ControllableEntity
+    {
+        public:
+            Rocket(BaseObject* creator);
+            virtual ~Rocket();
+
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode); //!< Method for creating a Rocket through XML.
+            virtual void tick(float dt); //!< Defines which actions the Rocket has to take in each tick.
+
+            virtual bool collidesAgainst(WorldEntity* otherObject, btManifoldPoint& contactPoint);
+            void destroyObject();
+
+            virtual void moveFrontBack(const Vector2& value){}
+            virtual void moveRightLeft(const Vector2& value){}
+            virtual void moveUpDown(const Vector2& value){}
+
+            virtual void rotateYaw(const Vector2& value);
+            virtual void rotatePitch(const Vector2& value);
+            virtual void rotateRoll(const Vector2& value);
+
+            /**
+            @brief Moves the Rocket in the Front/Back-direction by the specifed amount.
+            @param value  The amount by which the Rocket is to be moved.
+            */
+            inline void moveFrontBack(float value)
+            { this->moveFrontBack(Vector2(value, 0)); }
+            /**
+            @brief Moves the Rocket in the Right/Left-direction by the specifed amount.
+            @param value  The amount by which the Rocket is to be moved.
+            */
+            inline void moveRightLeft(float value)
+            { this->moveRightLeft(Vector2(value, 0)); }
+            /**
+            @brief Moves the Rocket in the Up/Down-direction by the specifed amount.
+            @param value  The amount by which the Rocket is to be moved.
+            */
+            inline void moveUpDown(float value)
+            { this->moveUpDown(Vector2(value, 0)); }
+
+            /**
+            @brief Rotates the Rocket around the y-axis by the specifed amount.
+            @param value  The amount by which the Rocket is to be rotated.
+            */
+            inline void rotateYaw(float value)
+            { this->rotateYaw(Vector2(value, 0)); }
+            /**
+            @brief Rotates the Rocket around the x-axis by the specifed amount.
+            @param value  The amount by which the Rocket is to be rotated.
+            */
+            inline void rotatePitch(float value)
+            { this->rotatePitch(Vector2(value, 0)); }
+            /**
+            @brief Rotates the Rocket around the z-axis by the specifed amount.
+            @param value  The amount by which the Rocket is to be rotated.
+            */
+            inline void rotateRoll(float value)
+            { this->rotateRoll(Vector2(value, 0)); }
+
+            void setOwner(Pawn* owner);
+            inline Pawn* getOwner() const
+                { return this->owner_; }
+
+            inline void setDamage(float damage)
+                { this->damage_ = damage; }
+            inline float getDamage() const
+                { return this->damage_; }
+            virtual void fired(unsigned int firemode);
+
+        private:
+            WeakPtr<Pawn> owner_;
+            Vector3 localAngularVelocity_;
+            float damage_;
+            bool bDestroy_;
+            ControllableEntity* originalControllableEntity_;
+
+            WeakPtr<PlayerInfo> player_;
+            Timer destroyTimer_;
+            float lifetime_;
+
+            WorldSound* defSndWpnEngine_;
+            WorldSound* defSndWpnLaunch_;
+    };
+
+}
+
+#endif /* _Rocket_H__ */
Index: code/trunk/src/modules/weapons/weaponmodes/CMakeLists.txt
===================================================================
--- code/trunk/src/modules/weapons/weaponmodes/CMakeLists.txt	(revision 6054)
+++ code/trunk/src/modules/weapons/weaponmodes/CMakeLists.txt	(revision 6417)
@@ -5,3 +5,4 @@
   HsW01.cc
   LightningGun.cc
+  RocketFire.cc
 )
Index: code/trunk/src/modules/weapons/weaponmodes/HsW01.cc
===================================================================
--- code/trunk/src/modules/weapons/weaponmodes/HsW01.cc	(revision 6054)
+++ code/trunk/src/modules/weapons/weaponmodes/HsW01.cc	(revision 6417)
@@ -39,4 +39,6 @@
 #include "weaponsystem/WeaponPack.h"
 #include "weaponsystem/WeaponSystem.h"
+#include "worldentities/WorldEntity.h"
+#include "worldentities/pawns/Pawn.h"
 
 namespace orxonox
@@ -56,4 +58,10 @@
         this->delayTimer_.setTimer(1.0f, false, createExecutor(createFunctor(&HsW01::shot, this)));
         this->delayTimer_.stopTimer();
+
+        this->setDefaultSound("sounds/Weapon_HsW01.ogg");
+    }
+
+    HsW01::~HsW01()
+    {
     }
 
@@ -103,4 +111,5 @@
     void HsW01::shot()
     {
+        assert( this->getWeapon() && this->getWeapon()->getWeaponPack() && this->getWeapon()->getWeaponPack()->getWeaponSystem() && this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn() );
         Projectile* projectile = new Projectile(this);
         Model* model = new Model(projectile);
@@ -110,4 +119,5 @@
         model->setScale(5);
 
+        this->computeMuzzleParameters(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn()->getAimPosition());
         projectile->setOrientation(this->getMuzzleOrientation());
         projectile->setPosition(this->getMuzzlePosition());
Index: code/trunk/src/modules/weapons/weaponmodes/HsW01.h
===================================================================
--- code/trunk/src/modules/weapons/weaponmodes/HsW01.h	(revision 6054)
+++ code/trunk/src/modules/weapons/weaponmodes/HsW01.h	(revision 6417)
@@ -41,5 +41,5 @@
         public:
             HsW01(BaseObject* creator);
-            virtual ~HsW01() {}
+            virtual ~HsW01();
 
             virtual void fire();
Index: code/trunk/src/modules/weapons/weaponmodes/LightningGun.cc
===================================================================
--- code/trunk/src/modules/weapons/weaponmodes/LightningGun.cc	(revision 6054)
+++ code/trunk/src/modules/weapons/weaponmodes/LightningGun.cc	(revision 6417)
@@ -34,4 +34,5 @@
 #include "weaponsystem/WeaponPack.h"
 #include "weaponsystem/WeaponSystem.h"
+#include "worldentities/pawns/Pawn.h"
 
 namespace orxonox
@@ -48,4 +49,5 @@
 
         this->setMunitionName("LaserMunition");
+        this->setDefaultSound("sounds/Weapon_LightningGun.ogg");
     }
 
@@ -59,4 +61,5 @@
         projectile->setMaterial("Flares/LightningBall_");
 
+        this->computeMuzzleParameters(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn()->getAimPosition());
         projectile->setOrientation(this->getMuzzleOrientation());
         projectile->setPosition(this->getMuzzlePosition());
Index: code/trunk/src/modules/weapons/weaponmodes/LightningGun.h
===================================================================
--- code/trunk/src/modules/weapons/weaponmodes/LightningGun.h	(revision 6054)
+++ code/trunk/src/modules/weapons/weaponmodes/LightningGun.h	(revision 6417)
@@ -42,4 +42,5 @@
 
             virtual void fire();
+
        private:
             float speed_;
Index: code/trunk/src/modules/weapons/weaponmodes/RocketFire.cc
===================================================================
--- code/trunk/src/modules/weapons/weaponmodes/RocketFire.cc	(revision 6417)
+++ code/trunk/src/modules/weapons/weaponmodes/RocketFire.cc	(revision 6417)
@@ -0,0 +1,74 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Oliver Scheuss
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#include "RocketFire.h"
+
+#include "util/Math.h"
+#include "core/CoreIncludes.h"
+#include "weapons/projectiles/Rocket.h"
+
+#include "weaponsystem/Weapon.h"
+#include "weaponsystem/WeaponPack.h"
+#include "weaponsystem/WeaponSystem.h"
+#include "worldentities/pawns/Pawn.h"
+
+namespace orxonox
+{
+    CreateFactory(RocketFire);
+
+    RocketFire::RocketFire(BaseObject* creator) : WeaponMode(creator)
+    {
+        RegisterObject(RocketFire);
+
+        this->reloadTime_ = 0.20;
+        this->bParallelReload_ = false;
+        this->damage_ = 100;
+        this->speed_ = 500;
+
+        this->setMunitionName("LaserMunition");
+        // The firing sound of the Rocket is played in Rocket.cc (because of OpenAl sound positioning)
+    }
+
+    RocketFire::~RocketFire()
+    {
+    }
+
+    void RocketFire::fire()
+    {
+        Rocket* rocket = new Rocket(this);
+
+        this->computeMuzzleParameters(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn()->getAimPosition());
+        rocket->setOrientation(this->getMuzzleOrientation());
+        rocket->setPosition(this->getMuzzlePosition());
+        rocket->setVelocity(this->getMuzzleDirection() * this->speed_);
+        rocket->scale(2);
+
+        rocket->setOwner(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn());
+        rocket->setDamage(this->getDamage());
+    }
+}
Index: code/trunk/src/modules/weapons/weaponmodes/RocketFire.h
===================================================================
--- code/trunk/src/modules/weapons/weaponmodes/RocketFire.h	(revision 6417)
+++ code/trunk/src/modules/weapons/weaponmodes/RocketFire.h	(revision 6417)
@@ -0,0 +1,50 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Oliver Scheuss
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#ifndef _RocketFire_H__
+#define _RocketFire_H__
+
+#include "weapons/WeaponsPrereqs.h"
+#include "weaponsystem/WeaponMode.h"
+
+namespace orxonox
+{
+    class _WeaponsExport RocketFire : public WeaponMode
+    {
+        public:
+            RocketFire(BaseObject* creator);
+            virtual ~RocketFire();
+
+            virtual void fire();
+
+        private:
+            float speed_;
+    };
+}
+
+#endif /* _RocketFire_H__ */
