Index: /code/trunk/src/modules/weapons/MuzzleFlash.cc
===================================================================
--- /code/trunk/src/modules/weapons/MuzzleFlash.cc	(revision 8854)
+++ /code/trunk/src/modules/weapons/MuzzleFlash.cc	(revision 8855)
@@ -23,8 +23,12 @@
  *      Hagen Seifert
  *   Co-authors:
- *      Ich
- *      Dini Mueter
+ *      ...
  *
  */
+
+/**
+    @file MuzzleFlash.h
+    @brief Implementation of the MuzzleFlash class.
+*/
 
 #include "MuzzleFlash.h"
@@ -43,5 +47,5 @@
 
         if( GameMode::isMaster() )
-          this->delayTimer_.setTimer(0.1f, false, createExecutor(createFunctor(&MuzzleFlash::destroy, this)));
+            this->delayTimer_.setTimer(0.1f, false, createExecutor(createFunctor(&MuzzleFlash::destroy, this)));
     }
 }
Index: /code/trunk/src/modules/weapons/MuzzleFlash.h
===================================================================
--- /code/trunk/src/modules/weapons/MuzzleFlash.h	(revision 8854)
+++ /code/trunk/src/modules/weapons/MuzzleFlash.h	(revision 8855)
@@ -27,4 +27,9 @@
  */
 
+/**
+    @file MuzzleFlash.h
+    @brief Definition of the MuzzleFlash class.
+*/
+
 #ifndef _MuzzleFlash_H__
 #define _MuzzleFlash_H__
@@ -37,4 +42,14 @@
 namespace orxonox
 {
+
+    /**
+    @brief
+        A muzzle flash that destroys itself after some time.
+    @author
+        Hagen Seifert
+    @ingroup Weapons
+    @todo
+        Remove because it's unused?
+    */
     class _WeaponsExport MuzzleFlash : public Billboard
     {
@@ -44,5 +59,5 @@
 
         private:
-            Timer delayTimer_;
+            Timer delayTimer_; //!< Timer to destroy the object.
     };
 }
Index: /code/trunk/src/modules/weapons/RocketController.cc
===================================================================
--- /code/trunk/src/modules/weapons/RocketController.cc	(revision 8854)
+++ /code/trunk/src/modules/weapons/RocketController.cc	(revision 8855)
@@ -21,5 +21,5 @@
 *
 *   Author:
-*     Gabriel Nadler, Originalfile: Oli Scheuss
+*     Gabriel Nadler
 *   Co-authors:
 *      ...
@@ -27,11 +27,15 @@
 */
 
+/**
+    @file BasicProjectile.h
+    @brief Implementation of the BasicProjectile class.
+*/
+
 #include "RocketController.h"
+
+#include "util/Math.h"
+#include "worldentities/pawns/Pawn.h"
 #include "projectiles/SimpleRocket.h"
-#include "util/Math.h"
-#include "weapons/projectiles/SimpleRocket.h"
-#include "util/Debug.h"
-#include "weapons/weaponmodes/SimpleRocketFire.h"
-#include "worldentities/pawns/Pawn.h"
+#include "weaponmodes/SimpleRocketFire.h"
 
 namespace orxonox
@@ -39,5 +43,5 @@
     /**
     @brief
-    Constructor.
+        Constructor.
     */
     RocketController::RocketController(BaseObject* creator) : Controller(creator)
@@ -46,5 +50,5 @@
         COUT(5)<< "RocketController constructed\n";
 
-
+        // Create a rocket for the controller.
         this->rocket_ = new SimpleRocket(this);
         this->rocket_->setController(this);
@@ -55,19 +59,15 @@
     /**
     @brief
-    The controlling happens here. This method defines what the controller has to do each tick.
+        The controlling happens here. This method defines what the controller has to do each tick.
     @param dt
-    The duration of the tick.
+        The duration of the tick.
     */
     void RocketController::tick(float dt)
     {
-
         if (this->target_ && this->rocket_->hasFuel()) {
-            this->setTargetPosition();
-            this->moveToTargetPosition();
+            this->updateTargetPosition();
+            this->moveToPosition(this->targetPosition_);
         }
-
-
     }
-
 
     RocketController::~RocketController()
@@ -76,19 +76,12 @@
     }
 
-    void RocketController::setTargetPosition()
+    /**
+    @brief
+        Update the position of the target.
+    */
+    void RocketController::updateTargetPosition()
     {
-        this->targetPosition_=this->target_->getWorldPosition(); //don't really note a difference in the rocket behaviour xD
+        this->targetPosition_ = this->target_->getWorldPosition(); //don't really note a difference in the rocket behaviour xD
         //this->targetPosition_ = getPredictedPosition(this->getControllableEntity()->getWorldPosition(),this->getControllableEntity()->getVelocity().length() , this->target_->getWorldPosition(), this->target_->getVelocity());
-    }
-    void RocketController::moveToTargetPosition()
-    {
-        this->moveToPosition(this->targetPosition_);
-    }
-
-
-
-    void RocketController::setTarget(WorldEntity* target)
-    {
-        this->target_ = target;
     }
 
@@ -110,6 +103,3 @@
     }
 
-
-
-
 }
Index: /code/trunk/src/modules/weapons/RocketController.h
===================================================================
--- /code/trunk/src/modules/weapons/RocketController.h	(revision 8854)
+++ /code/trunk/src/modules/weapons/RocketController.h	(revision 8855)
@@ -21,9 +21,14 @@
  *
  *   Author:
- *      Gabriel Nadler, Originalfile: Oli Scheuss
+ *      Gabriel Nadler
  *   Co-authors:
  *      ...
  *
  */
+
+/**
+    @file RocketController.h
+    @brief Definition of the RocketController class.
+*/
 
 #ifndef _RocketController_H__
@@ -32,8 +37,6 @@
 #include "weapons/WeaponsPrereqs.h"
 
+#include "tools/interfaces/Tickable.h"
 #include "controllers/Controller.h"
-#include "tools/interfaces/Tickable.h"
-#include "weapons/projectiles/SimpleRocket.h"
-#include "weapons/weaponmodes/SimpleRocketFire.h"
 
 namespace orxonox
@@ -41,7 +44,8 @@
     /**
     @brief
-        Controller for the Rocket (targetseeking)
+        Controller for the SimpleRocket (target seeking)
     @author
-        Gabriel Nadler, Originalfile: Oli Scheuss
+        Gabriel Nadler
+    @ingroup Weapons
     */
     class _WeaponsExport RocketController : public Controller, public Tickable
@@ -52,20 +56,28 @@
 
             virtual void tick(float dt);
+            /**
+            @brief Get the rocket that is controlled by this controller.
+            @return Returns a pointer to the rocket.
+            */
             SimpleRocket* getRocket() const
-             {  return this->rocket_;  };
-            void setTarget(WorldEntity* target);
+                { return this->rocket_; };
+
+            /**
+            @brief Set the target of the rocket.
+            @param target A pointer to the target.
+            */
+            void setTarget(WorldEntity* target)
+                { this->target_ = target; }
+
         protected:
+            void updateTargetPosition();
             void moveToPosition(const Vector3& target);
-            void setTargetPosition();
-            void moveToTargetPosition();
 
         private:
-            SimpleRocket* rocket_; //!<The Rocket it controlls
-            Vector3 targetPosition_;
-            WeakPtr<PlayerInfo> player_;
+            SimpleRocket* rocket_; //!< The Rocket it controls.
+            Vector3 targetPosition_; //!< The position of the target.
+            WeakPtr<PlayerInfo> player_; //!< The player the rocket belongs to.
 
-            WeakPtr<WorldEntity> target_;
-
-
+            WeakPtr<WorldEntity> target_; //!< The target.
     };
 }
Index: /code/trunk/src/modules/weapons/WeaponsPrereqs.h
===================================================================
--- /code/trunk/src/modules/weapons/WeaponsPrereqs.h	(revision 8854)
+++ /code/trunk/src/modules/weapons/WeaponsPrereqs.h	(revision 8855)
@@ -81,4 +81,6 @@
     class ParticleProjectile;
     class Projectile;
+    class Rocket;
+    class SimpleRocket;
 
     // weaponmodes
@@ -88,4 +90,6 @@
     class LaserFire;
     class LightningGun;
+    class RocketFire;
+    class SimpleRocketFire;
 }
 
Index: /code/trunk/src/modules/weapons/munitions/FusionMunition.cc
===================================================================
--- /code/trunk/src/modules/weapons/munitions/FusionMunition.cc	(revision 8854)
+++ /code/trunk/src/modules/weapons/munitions/FusionMunition.cc	(revision 8855)
@@ -27,4 +27,9 @@
  */
 
+/**
+    @file FusionMunition.h
+    @brief Implementation of the FusionMunition class.
+*/
+
 #include "FusionMunition.h"
 #include "core/CoreIncludes.h"
Index: /code/trunk/src/modules/weapons/munitions/FusionMunition.h
===================================================================
--- /code/trunk/src/modules/weapons/munitions/FusionMunition.h	(revision 8854)
+++ /code/trunk/src/modules/weapons/munitions/FusionMunition.h	(revision 8855)
@@ -27,4 +27,9 @@
  */
 
+/**
+    @file FusionMunition.h
+    @brief Definition of the FusionMunition class.
+*/
+
 #ifndef _FusionMunition_H__
 #define _FusionMunition_H__
@@ -35,4 +40,12 @@
 namespace orxonox
 {
+
+    /**
+    @brief
+        FusionMunition.
+    @author
+        Martin Polak
+    @ingroup WeaponsMunitions
+    */
     class _WeaponsExport FusionMunition : public Munition
     {
Index: /code/trunk/src/modules/weapons/munitions/LaserMunition.cc
===================================================================
--- /code/trunk/src/modules/weapons/munitions/LaserMunition.cc	(revision 8854)
+++ /code/trunk/src/modules/weapons/munitions/LaserMunition.cc	(revision 8855)
@@ -27,4 +27,9 @@
  */
 
+/**
+    @file LaserMunition.h
+    @brief Implementation of the LaserMunition class.
+*/
+
 #include "LaserMunition.h"
 #include "core/CoreIncludes.h"
@@ -48,5 +53,5 @@
         this->bAllowMultiMunitionRemovementUnderflow_ = true;
 
-        this->replenishIntervall_ = 0.5f;
+        this->replenishInterval_ = 0.5f;
         this->replenishMunitionAmount_ = 1;
     }
Index: /code/trunk/src/modules/weapons/munitions/LaserMunition.h
===================================================================
--- /code/trunk/src/modules/weapons/munitions/LaserMunition.h	(revision 8854)
+++ /code/trunk/src/modules/weapons/munitions/LaserMunition.h	(revision 8855)
@@ -27,4 +27,9 @@
  */
 
+/**
+    @file LaserMunition.h
+    @brief Definition of the LaserMunition class.
+*/
+
 #ifndef _LaserMunition_H__
 #define _LaserMunition_H__
@@ -35,4 +40,12 @@
 namespace orxonox
 {
+
+    /**
+    @brief
+        LaserMunition.
+    @author
+        Martin Polak
+    @ingroup WeaponsMunitions
+    */
     class _WeaponsExport LaserMunition : public ReplenishingMunition
     {
Index: /code/trunk/src/modules/weapons/munitions/ReplenishingMunition.cc
===================================================================
--- /code/trunk/src/modules/weapons/munitions/ReplenishingMunition.cc	(revision 8854)
+++ /code/trunk/src/modules/weapons/munitions/ReplenishingMunition.cc	(revision 8855)
@@ -27,4 +27,9 @@
  */
 
+/**
+    @file ReplenishingMunition.h
+    @brief Implementation of the ReplenishingMunition class.
+*/
+
 #include "ReplenishingMunition.h"
 
@@ -40,5 +45,5 @@
         RegisterObject(ReplenishingMunition);
 
-        this->replenishIntervall_ = 1.0f;
+        this->replenishInterval_ = 1.0f;
         this->replenishMunitionAmount_ = 1;
 
@@ -52,5 +57,5 @@
     {
         // Initialize the timer
-        this->replenishingTimer_.setTimer(this->replenishIntervall_, true, createExecutor(createFunctor(&ReplenishingMunition::replenish, this)));
+        this->replenishingTimer_.setTimer(this->replenishInterval_, true, createExecutor(createFunctor(&ReplenishingMunition::replenish, this)));
     }
 
Index: /code/trunk/src/modules/weapons/munitions/ReplenishingMunition.h
===================================================================
--- /code/trunk/src/modules/weapons/munitions/ReplenishingMunition.h	(revision 8854)
+++ /code/trunk/src/modules/weapons/munitions/ReplenishingMunition.h	(revision 8855)
@@ -27,4 +27,9 @@
  */
 
+/**
+    @file ReplenishingMunition.h
+    @brief Definition of the ReplenishingMunition class.
+*/
+
 #ifndef _ReplenishingMunition_H__
 #define _ReplenishingMunition_H__
@@ -37,4 +42,12 @@
 namespace orxonox
 {
+
+    /**
+    @brief
+        Munition that is replenished by a certain amount each time interval.
+    @author
+        Fabian 'x3n' Landau
+    @ingroup WeaponsMunitions
+    */
     class _WeaponsExport ReplenishingMunition : public Munition
     {
@@ -44,6 +57,6 @@
 
         protected:
-            float replenishIntervall_;
-            unsigned int replenishMunitionAmount_;
+            float replenishInterval_; //!< The interval in which the munition is replenished.
+            unsigned int replenishMunitionAmount_; //!< The amount by which it is replenished.
 
         private:
@@ -51,5 +64,5 @@
             void initializeTimer();
 
-            Timer replenishingTimer_;
+            Timer replenishingTimer_; //!< Timer to do the replenishing.
     };
 }
Index: /code/trunk/src/modules/weapons/munitions/RocketMunition.cc
===================================================================
--- /code/trunk/src/modules/weapons/munitions/RocketMunition.cc	(revision 8854)
+++ /code/trunk/src/modules/weapons/munitions/RocketMunition.cc	(revision 8855)
@@ -27,4 +27,9 @@
  */
 
+/**
+    @file RocketMunition.h
+    @brief Implementation of the RocketMunition class.
+*/
+
 #include "RocketMunition.h"
 #include "core/CoreIncludes.h"
Index: /code/trunk/src/modules/weapons/munitions/RocketMunition.h
===================================================================
--- /code/trunk/src/modules/weapons/munitions/RocketMunition.h	(revision 8854)
+++ /code/trunk/src/modules/weapons/munitions/RocketMunition.h	(revision 8855)
@@ -27,4 +27,9 @@
  */
 
+/**
+    @file RocketMunition.h
+    @brief Definition of the RocketMunition class.
+*/
+
 #ifndef _RocketMunition_H__
 #define _RocketMunition_H__
@@ -35,4 +40,12 @@
 namespace orxonox
 {
+
+    /**
+    @brief
+        Munition for the Rocket.
+    @author
+        Fabian 'x3n' Landau
+    @ingroup WeaponsMunitions
+    */
     class _WeaponsExport RocketMunition : public Munition
     {
Index: /code/trunk/src/modules/weapons/projectiles/BasicProjectile.cc
===================================================================
--- /code/trunk/src/modules/weapons/projectiles/BasicProjectile.cc	(revision 8854)
+++ /code/trunk/src/modules/weapons/projectiles/BasicProjectile.cc	(revision 8855)
@@ -27,14 +27,16 @@
  */
 
+/**
+    @file BasicProjectile.h
+    @brief Implementation of the BasicProjectile class.
+*/
+
 #include "BasicProjectile.h"
 
 #include "core/CoreIncludes.h"
-#include "core/ConfigValueIncludes.h"
 #include "core/GameMode.h"
 #include "core/command/Executor.h"
-#include "objects/collisionshapes/SphereCollisionShape.h"
-#include "worldentities/pawns/Pawn.h"
+
 #include "graphics/ParticleSpawner.h"
-#include "core/OrxonoxClass.h"
 
 namespace orxonox
@@ -46,5 +48,5 @@
     BasicProjectile::BasicProjectile() : OrxonoxClass()
     {
-        RegisterRootObject(BasicProjectile);// - register the BasicProjectile class to the core
+        RegisterRootObject(BasicProjectile);// Register the BasicProjectile class to the core
 
         this->bDestroy_ = false;
@@ -61,40 +63,48 @@
     }
 
-    /* The function called when a projectile hits another thing.
-     * calls the hit-function, starts the reload countdown, displays visual effects
-     * hit is defined in src/orxonox/worldentities/pawns/pawn.cc
-     */
-    bool BasicProjectile::basicCollidesAgainst(WorldEntity* otherObject, btManifoldPoint& contactPoint, Pawn* owner, BasicProjectile* this_)
+    /**
+    @brief
+        The function called when a projectile hits another thing.
+        Calls the hit-function, starts the reload countdown, displays visual hit effects defined in Pawn.
+        Needs to be called in the collidesAgainst() function by every Class directly inheriting from BasicProjectile.
+    @param otherObject
+        A pointer to the object the Projectile has collided against.
+    @param contactPoint
+        A btManifoldPoint indicating the point of contact/impact.
+    @return
+        Returns true if the collision resulted in a successful hit.
+    @see Pawn.h
+    */
+    bool BasicProjectile::processCollision(WorldEntity* otherObject, btManifoldPoint& contactPoint)
     {
-        if (!this_->getBDestroy() && GameMode::isMaster())
+        if (!this->bDestroy_ && GameMode::isMaster())
         {
-            if (otherObject == owner) //prevents you from shooting yourself
+            if (otherObject == this->getShooter()) // Prevents you from shooting yourself
                 return false;
 
-            this_->setBDestroy(true); // If something is hit, the object is destroyed and can't hit something else.
-                                      // The projectile is destroyed by its tick()-function (in the following tick).
+            this->bDestroy_ = true; // If something is hit, the object is destroyed and can't hit something else.
+                                    // The projectile is destroyed by its tick()-function (in the following tick).
 
-            Pawn* victim = orxonox_cast<Pawn*>(otherObject); //if otherObject isn't a Pawn, then victim is NULL
+            Pawn* victim = orxonox_cast<Pawn*>(otherObject); // If otherObject isn't a Pawn, then victim is NULL
 
-            WorldEntity* entity = orxonox_cast<WorldEntity*>(this_);
-            assert(entity); //entity must not be null
+            WorldEntity* entity = orxonox_cast<WorldEntity*>(this);
+            assert(entity); // The projectile must not be a WorldEntity.
 
-
-            // if visual effects after destruction cause problems, put this block below the effects code block
+            // If visual effects after destruction cause problems, put this block below the effects code block
             if (victim)
             {
-                victim->hit(owner, contactPoint, this_->getDamage(), this_->getHealthDamage(), this_->getShieldDamage());
+                victim->hit(this->getShooter(), contactPoint, this->getDamage(), this->getHealthDamage(), this->getShieldDamage());
                 victim->startReloadCountdown();
             }
 
-            // visual effects for being hit, depending on whether the shield is hit or not
-            if (owner) //if the owner does not exist (anymore?), no effects are displayed.
+            // Visual effects for being hit, depending on whether the shield is hit or not
+            if (this->getShooter()) // If the owner does not exist (anymore?), no effects are displayed.
             {
-                // damping and explosion effect is only played if the victim is no pawn (see cast above)
-                // or if the victim is a pawn, has no shield left, is still alive and any damage goes to the health
-                if (!victim || (victim && !victim->hasShield() && victim->getHealth() > 0 && (this_->getDamage() > 0 || this_->getHealthDamage() > 0)))
+                // Damping and explosion effect is only played if the victim is no Pawn (see cast above)
+                // or if the victim is a Pawn, has no shield left, is still alive and any damage goes to the health
+                if (!victim || (victim && !victim->hasShield() && victim->getHealth() > 0.0f && (this->getDamage() > 0.0f || this->getHealthDamage() > 0.0f)))
                 {
                     {
-                        ParticleSpawner* effect = new ParticleSpawner(owner->getCreator());
+                        ParticleSpawner* effect = new ParticleSpawner(this->getShooter()->getCreator());
                         effect->setPosition(entity->getPosition());
                         effect->setOrientation(entity->getOrientation());
@@ -103,7 +113,7 @@
                         effect->setLifetime(2.0f);
                     }
-                        // second effect with same condition
+                    // Second effect with same condition
                     {
-                        ParticleSpawner* effect = new ParticleSpawner(owner->getCreator());
+                        ParticleSpawner* effect = new ParticleSpawner(this->getShooter()->getCreator());
                         effect->setPosition(entity->getPosition());
                         effect->setOrientation(entity->getOrientation());
@@ -115,7 +125,7 @@
 
                 // victim->isAlive() is not false until the next tick, so getHealth() > 0 is used instead
-                if (victim && victim->hasShield() && (this_->getDamage() > 0 || this_->getShieldDamage() > 0) && victim->getHealth() > 0)
+                if (victim && victim->hasShield() && (this->getDamage() > 0.0f || this->getShieldDamage() > 0.0f) && victim->getHealth() > 0.0f)
                 {
-                    ParticleSpawner* effect = new ParticleSpawner(owner->getCreator());
+                    ParticleSpawner* effect = new ParticleSpawner(this->getShooter()->getCreator());
                     effect->setDestroyAfterLife(true);
                     effect->setSource("Orxonox/Shield");
@@ -124,7 +134,28 @@
                 }
             }
-
+            return true;
         }
         return false;
     }
+
+    /**
+    @brief
+        Check whether the projectile needs to be destroyed and destroys it if so.
+        Needs to be called in the tick() by every Class directly inheriting from BasicProjectile, to make sure the projectile is destroyed after it has hit something.
+    */
+    void BasicProjectile::destroyCheck(void)
+    {
+        if(GameMode::isMaster() && this->bDestroy_)
+            this->destroy();
+    }
+
+    /**
+    @brief
+        Destroys the object.
+    */
+    void BasicProjectile::destroyObject(void)
+    {
+        if(GameMode::isMaster())
+            this->destroy();
+    }
 }
Index: /code/trunk/src/modules/weapons/projectiles/BasicProjectile.h
===================================================================
--- /code/trunk/src/modules/weapons/projectiles/BasicProjectile.h	(revision 8854)
+++ /code/trunk/src/modules/weapons/projectiles/BasicProjectile.h	(revision 8855)
@@ -27,4 +27,9 @@
  */
 
+/**
+    @file BasicProjectile.h
+    @brief Definition of the BasicProjectile class.
+*/
+
 #ifndef _BasicProjectile_H__
 #define _BasicProjectile_H__
@@ -32,50 +37,97 @@
 #include "weapons/WeaponsPrereqs.h"
 
-#include "tools/Timer.h"
+#include "worldentities/pawns/Pawn.h"
+
 #include "core/OrxonoxClass.h"
 
 namespace orxonox
 {
+
+    /**
+    @brief
+        Baseclass of all projectiles. Defines the damage the projectile does.
+
+    @author
+        Simon Miescher
+    @ingroup WeaponsProjectiles
+    */
     class _WeaponsExport BasicProjectile : public virtual OrxonoxClass
     {
         public:
             BasicProjectile();
-
             virtual ~BasicProjectile();
 
-            static bool basicCollidesAgainst(WorldEntity* otherObject, btManifoldPoint& contactPoint, Pawn* owner, BasicProjectile* this_);
-
-            void basicDestroyObject();
-
+            /**
+            @brief Set the normal damage done by this projectile.
+                   Normal damage can be (partially) absorbed by shields.
+            @param damage The amount of damage. Must be non-negative.
+            */
             inline void setDamage(float damage)
-                { this->damage_ = damage;  }
+                { if(damage >= 0.0f)  { this->damage_ = damage; return; } COUT(1) << "The input projectile damage must be non-negative. Ignoring..." << endl; }
+            /**
+            @brief Get the normal damage done by this projectile.
+                   Normal damage can be (partially) absorbed by shields.
+            @return Returns the amount of damage. Is non-negative.
+            */
             inline float getDamage() const
                 { return this->damage_; }
 
+            /**
+            @brief Set the health-damage done by this projectile.
+                   Health-damage cannot be absorbed by shields.
+            @param healthdamage The amount of damage. Must be non-negative.
+            */
             inline void setHealthDamage(float healthdamage)
-                { this->healthdamage_ = healthdamage; }
+                { if(healthdamage >= 0.0f)  { this->healthdamage_ = healthdamage; return; } COUT(1) << "The input projectile health-damage must be non-negative. Ignoring..." << endl; }
+            /**
+            @brief Get the health-damage done by this projectile.
+                   Health-damage cannot be absorbed by shields.
+            @return healthdamage The amount of damage. Is non-negative.
+            */
             inline float getHealthDamage() const
                 { return this->healthdamage_; }
 
+            /**
+            @brief Set the shield-damage done by this projectile.
+                   Shield-damage only reduces shield health.
+            @param shielddamage The amount of damage. Must be non-negative.
+            */
             inline void setShieldDamage(float shielddamage)
-                { this->shielddamage_ = shielddamage;  } //ShieldDamage wird korrekt gesettet vom XML-File
+                { if(shielddamage >= 0.0f)  { this->shielddamage_ = shielddamage; return; } COUT(1) << "The input projectile shield-damage must be non-negative. Ignoring..." << endl; }
+            /**
+            @brief Get the shield-damage done by this projectile.
+                   Shield-damage only reduces shield health.
+            @param shielddamage The amount of damage. Is non-negative.
+            */
             inline float getShieldDamage() const
                 { return this->shielddamage_; }
 
+            /**
+            @brief Set the entity that fired the projectile.
+            @param shooter A pointer to the Pawn that fired the projectile.
+            */
+            virtual void setShooter(Pawn* shooter)
+                { this->shooter_ = shooter; }
+            /**
+            @brief Get the entity that fired the projectile.
+            @return Returns a pointer to the Pawn that fired the projectile.
+            */
+            inline Pawn* getShooter(void)
+                { return this->shooter_; }
 
-            inline void setBDestroy(bool bDestroy)
-                { this->bDestroy_ = bDestroy;  }
-            inline float getBDestroy() const
-                { return this->bDestroy_; }
+            virtual void destroyObject(void);
 
+        protected:
+            bool processCollision(WorldEntity* otherObject, btManifoldPoint& contactPoint);
+            void destroyCheck(void);
 
         private:
-//            WeakPtr<Pawn> owner_; //owner cannot be set in BasicProjectile, because it's already defined in MobileEntity and Movable Entity
+            WeakPtr<Pawn> shooter_; //!< The entity that fired the projectile.
 
-            float damage_;
-            float healthdamage_;
-            float shielddamage_;
+            float damage_; //!< The amount of normal damage. Normal damage can be (partially) absorbed by shields.
+            float healthdamage_; //!< The amount of health-damage. Health-damage cannot be absorbed by shields.
+            float shielddamage_; //!< The amount of shield-damage. Shield-damage only reduces shield health.
 
-            bool bDestroy_;
+            bool bDestroy_; //!< Boolean, to check whether a projectile should be destroyed.
     };
 }
Index: /code/trunk/src/modules/weapons/projectiles/BillboardProjectile.cc
===================================================================
--- /code/trunk/src/modules/weapons/projectiles/BillboardProjectile.cc	(revision 8854)
+++ /code/trunk/src/modules/weapons/projectiles/BillboardProjectile.cc	(revision 8855)
@@ -27,4 +27,9 @@
  */
 
+/**
+    @file BillboardProjectile.h
+    @brief Implementation of the BillboardProjectile class.
+*/
+
 #include "BillboardProjectile.h"
 
@@ -44,4 +49,6 @@
         {
             assert(this->getScene()->getSceneManager()); // getScene() was already checked by WorldEntity
+
+            // Create the billboard.
             this->billboard_.setBillboardSet(this->getScene()->getSceneManager(), "Examples/Flare", ColourValue(0.5f, 0.5f, 0.7f, 0.8f), 1);
             this->attachOgreObject(this->billboard_.getBillboardSet());
@@ -57,4 +64,10 @@
     }
 
+    /**
+    @brief
+        Set the colour of the BillboardProjectile.
+    @param colour
+        The colour to be set.
+    */
     void BillboardProjectile::setColour(const ColourValue& colour)
     {
@@ -62,4 +75,10 @@
     }
 
+    /**
+    @brief
+        Set the material of the BillboardProjectile.
+    @param material
+        The material name.
+    */
     void BillboardProjectile::setMaterial(const std::string& material)
     {
@@ -67,8 +86,13 @@
     }
 
+    /**
+    @brief
+        Is called when the visibility of the BillboardProjectile has changed.
+    */
     void BillboardProjectile::changedVisibility()
     {
         SUPER(BillboardProjectile, changedVisibility);
 
+        // Also change the visibility of the billboard.
         this->billboard_.setVisible(this->isVisible());
     }
Index: /code/trunk/src/modules/weapons/projectiles/BillboardProjectile.h
===================================================================
--- /code/trunk/src/modules/weapons/projectiles/BillboardProjectile.h	(revision 8854)
+++ /code/trunk/src/modules/weapons/projectiles/BillboardProjectile.h	(revision 8855)
@@ -27,4 +27,9 @@
  */
 
+/**
+    @file BillboardProjectile.h
+    @brief Definition of the BillboardProjectile class.
+*/
+
 #ifndef _BillboardProjectile_H__
 #define _BillboardProjectile_H__
@@ -38,4 +43,13 @@
 namespace orxonox
 {
+
+    /**
+    @brief
+        A BillboardProjectile is a projectile that is represented by a Billboard.
+
+    @author
+        Fabian 'x3n' Landau
+    @ingroup WeaponsProjectiles
+    */
     class _WeaponsExport BillboardProjectile : public Projectile
     {
@@ -49,5 +63,5 @@
 
         private:
-            BillboardSet billboard_;
+            BillboardSet billboard_; //!< The billboard that represents the projectile.
     };
 }
Index: /code/trunk/src/modules/weapons/projectiles/CMakeLists.txt
===================================================================
--- /code/trunk/src/modules/weapons/projectiles/CMakeLists.txt	(revision 8854)
+++ /code/trunk/src/modules/weapons/projectiles/CMakeLists.txt	(revision 8855)
@@ -1,3 +1,4 @@
 ADD_SOURCE_FILES(WEAPONS_SRC_FILES
+  BasicProjectile.cc
   BillboardProjectile.cc
   ParticleProjectile.cc
@@ -6,4 +7,3 @@
   Rocket.cc
   SimpleRocket.cc
-  BasicProjectile.cc
 )
Index: /code/trunk/src/modules/weapons/projectiles/LightningGunProjectile.cc
===================================================================
--- /code/trunk/src/modules/weapons/projectiles/LightningGunProjectile.cc	(revision 8854)
+++ /code/trunk/src/modules/weapons/projectiles/LightningGunProjectile.cc	(revision 8855)
@@ -27,9 +27,14 @@
  */
 
+/**
+    @file LightningGunProjectile.h
+    @brief Implementation of the LightningGunProjectile class.
+*/
+
 #include "LightningGunProjectile.h"
 
-#include "util/Convert.h"
 #include "core/CoreIncludes.h"
 #include "core/command/Executor.h"
+#include "util/Convert.h"
 
 namespace orxonox
@@ -53,4 +58,10 @@
     }
 
+    /**
+    @brief
+        Set the material.
+    @param material
+        The name of the material. Material names with 1 to 8 appended must exist.
+    */
     void LightningGunProjectile::setMaterial(const std::string& material)
     {
@@ -60,4 +71,8 @@
     }
 
+    /**
+    @brief
+        Change the texture.
+    */
     void LightningGunProjectile::changeTexture()
     {
Index: /code/trunk/src/modules/weapons/projectiles/LightningGunProjectile.h
===================================================================
--- /code/trunk/src/modules/weapons/projectiles/LightningGunProjectile.h	(revision 8854)
+++ /code/trunk/src/modules/weapons/projectiles/LightningGunProjectile.h	(revision 8855)
@@ -27,4 +27,9 @@
  */
 
+/**
+    @file LightningGunProjectile.h
+    @brief Definition of the LightningGunProjectile class.
+*/
+
 #ifndef _LightningGunProjectile_H__
 #define _LightningGunProjectile_H__
@@ -38,4 +43,13 @@
 namespace orxonox
 {
+
+    /**
+    @brief
+        The LightningGunProjectile is a projectile that is represented by a looped series of billboards.
+        
+    @author
+        Joel Smely
+    @ingroup WeaponsProjectiles
+    */
     class _WeaponsExport LightningGunProjectile : public BillboardProjectile
     {
@@ -46,12 +60,12 @@
             virtual void setMaterial(const std::string& material);
 
-        protected:
+        private:
+            void registerVariables();
             void changeTexture();
-            unsigned int textureIndex_;
-            unsigned int maxTextureIndex_;
-            Timer textureTimer_;
-            std::string materialBase_;
-      private:
-            void registerVariables();
+            
+            unsigned int textureIndex_; //!< The current index of the texture. (i.e. the index of the currently displayed texture)
+            unsigned int maxTextureIndex_; //!< The maximal index.
+            Timer textureTimer_; //!< A timer that loops and changes textures each time it expires.
+            std::string materialBase_; //!< The base name of the material.
     };
 }
Index: /code/trunk/src/modules/weapons/projectiles/ParticleProjectile.cc
===================================================================
--- /code/trunk/src/modules/weapons/projectiles/ParticleProjectile.cc	(revision 8854)
+++ /code/trunk/src/modules/weapons/projectiles/ParticleProjectile.cc	(revision 8855)
@@ -27,9 +27,14 @@
  */
 
+/**
+    @file ParticleProjectile.h
+    @brief Implementation of the ParticleProjectile class.
+*/
+
 #include "ParticleProjectile.h"
 
 #include <OgreParticleEmitter.h>
+#include "core/CoreIncludes.h"
 #include "tools/ParticleInterface.h"
-#include "core/CoreIncludes.h"
 #include "Scene.h"
 
@@ -44,4 +49,5 @@
         if (GameMode::showsGraphics())
         {
+            // Create the particles.
             this->particles_ = new ParticleInterface(this->getScene()->getSceneManager(), "Orxonox/shot3_small", LODParticle::Normal);
             this->attachOgreObject(this->particles_->getParticleSystem());
@@ -63,8 +69,13 @@
     }
 
+    /**
+    @brief
+        Is called when the visibility of the ParticleProjectile has changed.
+    */
     void ParticleProjectile::changedVisibility()
     {
         SUPER(ParticleProjectile, changedVisibility);
 
+        // Change the visibility of the particles.
         if (this->particles_)
             this->particles_->setEnabled(this->isVisible());
Index: /code/trunk/src/modules/weapons/projectiles/ParticleProjectile.h
===================================================================
--- /code/trunk/src/modules/weapons/projectiles/ParticleProjectile.h	(revision 8854)
+++ /code/trunk/src/modules/weapons/projectiles/ParticleProjectile.h	(revision 8855)
@@ -27,4 +27,9 @@
  */
 
+/**
+    @file ParticleProjectile.h
+    @brief Definition of the ParticleProjectile class.
+*/
+
 #ifndef _ParticleProjectile_H__
 #define _ParticleProjectile_H__
@@ -35,4 +40,12 @@
 namespace orxonox
 {
+
+    /**
+    @brief
+        A projectile that is represented by particles.
+    @author
+        Fabian 'x3n' Landau
+    @ingroup WeaponsProjectiles
+    */
     class _WeaponsExport ParticleProjectile : public BillboardProjectile
     {
@@ -43,5 +56,5 @@
 
         private:
-            ParticleInterface* particles_;
+            ParticleInterface* particles_; //!< The particles.
     };
 }
Index: /code/trunk/src/modules/weapons/projectiles/Projectile.cc
===================================================================
--- /code/trunk/src/modules/weapons/projectiles/Projectile.cc	(revision 8854)
+++ /code/trunk/src/modules/weapons/projectiles/Projectile.cc	(revision 8855)
@@ -27,13 +27,18 @@
  */
 
+/**
+    @file Projectile.h
+    @brief Implementation of the Projectile class.
+*/
+
 #include "Projectile.h"
 
+#include "core/ConfigValueIncludes.h"
 #include "core/CoreIncludes.h"
-#include "core/ConfigValueIncludes.h"
 #include "core/GameMode.h"
 #include "core/command/Executor.h"
+
 #include "objects/collisionshapes/SphereCollisionShape.h"
 #include "worldentities/pawns/Pawn.h"
-#include "graphics/ParticleSpawner.h"
 
 namespace orxonox
@@ -46,10 +51,9 @@
 
         this->setConfigValues();
-        this->owner_ = 0;
 
         // Get notification about collisions
         if (GameMode::isMaster())
         {
-            this->setMass(1.0);
+            this->setMass(1.0f);
             this->enableCollisionCallback();
             this->setCollisionResponse(false);
@@ -57,8 +61,8 @@
 
             SphereCollisionShape* shape = new SphereCollisionShape(this);
-            shape->setRadius(20);
+            shape->setRadius(20.0f);
             this->attachCollisionShape(shape);
 
-            this->destroyTimer_.setTimer(this->lifetime_, false, createExecutor(createFunctor(&Projectile::destroyObject, this)));
+            this->destroyTimer_.setTimer(this->lifetime_, false, createExecutor(createFunctor(&BasicProjectile::destroyObject, this)));
         }
     }
@@ -70,5 +74,5 @@
     void Projectile::setConfigValues()
     {
-        SetConfigValue(lifetime_, 4.0).description("The time in seconds a projectile stays alive");
+        SetConfigValue(lifetime_, 4.0f).description("The time in seconds a projectile stays alive");
     }
 
@@ -81,24 +85,11 @@
             return;
 
-        if (this->getBDestroy())
-            this->destroy(); // TODO: use a scheduler instead of deleting the object right here in tick()
+        this->destroyCheck();
     }
 
-    void Projectile::destroyObject()
+    bool Projectile::collidesAgainst(WorldEntity* otherObject, btManifoldPoint& contactPoint)
     {
-        if (GameMode::isMaster())
-            this->destroy();
+        return this->processCollision(otherObject, contactPoint);
     }
 
-    /* Calls the collidesAgainst function of BasicProjectile
-     */
-    bool Projectile::collidesAgainst(WorldEntity* otherObject, btManifoldPoint& contactPoint)
-    {
-        return BasicProjectile::basicCollidesAgainst(otherObject,contactPoint,this->getOwner(),this);
-    }
-
-    void Projectile::setOwner(Pawn* owner)
-    {
-        this->owner_ = owner;
-    }
 }
Index: /code/trunk/src/modules/weapons/projectiles/Projectile.h
===================================================================
--- /code/trunk/src/modules/weapons/projectiles/Projectile.h	(revision 8854)
+++ /code/trunk/src/modules/weapons/projectiles/Projectile.h	(revision 8855)
@@ -27,4 +27,9 @@
  */
 
+/**
+    @file Projectile.h
+    @brief Definition of the Projectile class.
+*/
+
 #ifndef _Projectile_H__
 #define _Projectile_H__
@@ -39,4 +44,15 @@
 namespace orxonox
 {
+
+    /**
+    @brief
+        Represents all 'standard' projectiles.
+
+    @author
+        Fabian 'x3n' Landau
+    @author
+        Simon Miescher
+    @ingroup WeaponsProjectiles
+    */
     class _WeaponsExport Projectile : public MovableEntity, public BasicProjectile
     {
@@ -46,18 +62,11 @@
 
             void setConfigValues();
-            void destroyObject();
 
             virtual void tick(float dt);
             virtual bool collidesAgainst(WorldEntity* otherObject, btManifoldPoint& contactPoint);
 
-            void setOwner(Pawn* owner);
-            inline Pawn* getOwner() const
-                { return this->owner_; }
-
-
         private:
-            WeakPtr<Pawn> owner_;
-            float lifetime_;
-            Timer destroyTimer_;
+            float lifetime_; //!< The time the projectile exists.
+            Timer destroyTimer_; //!< Timer to destroy the projectile after its lifetime has run out.
     };
 }
Index: /code/trunk/src/modules/weapons/projectiles/Rocket.cc
===================================================================
--- /code/trunk/src/modules/weapons/projectiles/Rocket.cc	(revision 8854)
+++ /code/trunk/src/modules/weapons/projectiles/Rocket.cc	(revision 8855)
@@ -27,4 +27,9 @@
  */
 
+/**
+    @file Rocket.h
+    @brief Implementation of the Rocket class.
+*/
+
 #include "Rocket.h"
 
@@ -33,18 +38,18 @@
 #include "core/CoreIncludes.h"
 #include "core/XMLPort.h"
+
+#include "Scene.h"
+#include "controllers/Controller.h"
+#include "graphics/Model.h"
+#include "graphics/ParticleSpawner.h"
+#include "infos/PlayerInfo.h"
+#include "objects/collisionshapes/ConeCollisionShape.h"
+#include "sound/WorldSound.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"
-#include "Scene.h"
 
 namespace orxonox
 {
     CreateFactory(Rocket);
-    // create the factory for the Rocket
 
     /**
@@ -57,8 +62,8 @@
         , RadarViewable(creator, static_cast<WorldEntity*>(this))
     {
-        RegisterObject(Rocket);// - register the Rocket class to the core
+        RegisterObject(Rocket);// Register the Rocket class to the core
 
         this->localAngularVelocity_ = 0;
-        this->lifetime_ = 100;
+        this->lifetime_ = 100.0f;
 
         if (GameMode::isMaster())
@@ -67,8 +72,11 @@
             this->setVelocity(0,0,-100);
 
+            // Create rocket model
             Model* model = new Model(this);
             model->setMeshSource("rocket.mesh");
             model->scale(0.7f);
             this->attach(model);
+
+            // Add effects.
             ParticleEmitter* fire = new ParticleEmitter(this);
             this->attach(fire);
@@ -80,4 +88,5 @@
             this->setCollisionType(Kinematic);
 
+            // Add collision shape
             ConeCollisionShape* collisionShape = new ConeCollisionShape(this);
             collisionShape->setRadius(3);
@@ -85,6 +94,7 @@
             this->attachCollisionShape(collisionShape);
 
-            this->destroyTimer_.setTimer(this->lifetime_, false, createExecutor(createFunctor(&Rocket::destroyObject, this)));
-
+            this->destroyTimer_.setTimer(this->lifetime_, false, createExecutor(createFunctor(&BasicProjectile::destroyObject, this)));
+
+            // Add sound
             this->defSndWpnEngine_ = new WorldSound(this);
             this->defSndWpnEngine_->setLooping(true);
@@ -105,4 +115,5 @@
         }
 
+        // Add camera
         CameraPosition* camPosition = new CameraPosition(this);
         camPosition->setPosition(0,4,15);
@@ -141,17 +152,14 @@
     /**
     @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->player_ = this->getOwner()->getPlayer();
-        this->getOwner()->getPlayer()->startTemporaryControl(this);
+        Sets the entity that fired the Rocket.
+    @param shooter
+        A pointer to the Pawn that fired the Rocket.
+    */
+    void Rocket::setShooter(Pawn* shooter)
+    {
+        this->BasicProjectile::setShooter(shooter);
+        
+        this->player_ = this->getShooter()->getPlayer();
+        this->getShooter()->getPlayer()->startTemporaryControl(this);
 
         if( GameMode::isMaster() )
@@ -179,43 +187,44 @@
         }
 
-        if( GameMode::isMaster() )
-        {
-            if( this->getBDestroy() )
-                this->destroy();
-
-        }
-    }
-
-    /* Calls the collidesAgainst function of BasicProjectile
-     */
+       this->destroyCheck();
+    }
+
     bool Rocket::collidesAgainst(WorldEntity* otherObject, btManifoldPoint& contactPoint)
     {
-        return BasicProjectile::basicCollidesAgainst(otherObject,contactPoint,this->getOwner(),this);
-    }
-
-    void Rocket::destroyObject()
-    {
-        if (GameMode::isMaster())
-        {
-            if(this->defSndWpnEngine_->isPlaying())
-            {
-                this->defSndWpnEngine_->stop();
-            }
-            this->destroy();
-        }
-    }
-
+        return this->processCollision(otherObject, contactPoint);
+    }
+
+    /**
+    @brief
+        Destroys the Rocket and stops the sound,
+    */
+    void Rocket::destroyObject(void)
+    {
+        if (GameMode::isMaster() && this->defSndWpnEngine_->isPlaying())
+            this->defSndWpnEngine_->stop();
+
+        this->BasicProjectile::destroyObject();
+    }
+
+    /**
+    @brief
+        Destroys the Rocket upon pressing "fire".
+    */
     void Rocket::fired(unsigned int firemode)
     {
-        this->destroy();
-    }
-
+        this->destroyObject();
+    }
+
+    /**
+    @brief
+        The effects that are displayed, when the Rocket is destroyed.
+    */
     void Rocket::destructionEffect()
     {
         ParticleSpawner *effect1, *effect2;
-        if( this->getOwner() )
-        {
-            effect1 = new ParticleSpawner(this->getOwner()->getCreator());
-            effect2 = new ParticleSpawner(this->getOwner()->getCreator());
+        if(this->getShooter())
+        {
+            effect1 = new ParticleSpawner(this->getShooter()->getCreator());
+            effect2 = new ParticleSpawner(this->getShooter()->getCreator());
         }
         else
Index: /code/trunk/src/modules/weapons/projectiles/Rocket.h
===================================================================
--- /code/trunk/src/modules/weapons/projectiles/Rocket.h	(revision 8854)
+++ /code/trunk/src/modules/weapons/projectiles/Rocket.h	(revision 8855)
@@ -27,4 +27,9 @@
  */
 
+/**
+    @file Rocket.h
+    @brief Definition of the Rocket class.
+*/
+
 #ifndef _Rocket_H__
 #define _Rocket_H__
@@ -33,6 +38,7 @@
 
 #include "tools/Timer.h"
+
+#include "interfaces/RadarViewable.h"
 #include "worldentities/ControllableEntity.h"
-#include "interfaces/RadarViewable.h"
 
 #include "BasicProjectile.h"
@@ -44,8 +50,9 @@
     /**
     @brief
-        Rocket, that is made to move upon a specified pattern.
-        This class was constructed for the PPS tutorial.
+        Rocket that can be steered by the player.
+
     @author
         Oli Scheuss
+    @ingroup WeaponsProjectiles
     */
     class _WeaponsExport Rocket : public ControllableEntity, public BasicProjectile, public RadarViewable
@@ -55,14 +62,13 @@
             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 destroyObject(void);
             void destructionEffect();
 
-            virtual void moveFrontBack(const Vector2& value){}
-            virtual void moveRightLeft(const Vector2& value){}
-            virtual void moveUpDown(const Vector2& value){}
+            virtual void moveFrontBack(const Vector2& value) {}
+            virtual void moveRightLeft(const Vector2& value) {}
+            virtual void moveUpDown(const Vector2& value) {}
 
             virtual void rotateYaw(const Vector2& value);
@@ -75,5 +81,5 @@
             */
             inline void moveFrontBack(float value)
-            { this->moveFrontBack(Vector2(value, 0)); }
+                { this->moveFrontBack(Vector2(value, 0)); }
             /**
             @brief Moves the Rocket in the Right/Left-direction by the specifed amount.
@@ -81,5 +87,5 @@
             */
             inline void moveRightLeft(float value)
-            { this->moveRightLeft(Vector2(value, 0)); }
+                { this->moveRightLeft(Vector2(value, 0)); }
             /**
             @brief Moves the Rocket in the Up/Down-direction by the specifed amount.
@@ -87,5 +93,5 @@
             */
             inline void moveUpDown(float value)
-            { this->moveUpDown(Vector2(value, 0)); }
+                { this->moveUpDown(Vector2(value, 0)); }
 
             /**
@@ -94,5 +100,5 @@
             */
             inline void rotateYaw(float value)
-            { this->rotateYaw(Vector2(value, 0)); }
+                { this->rotateYaw(Vector2(value, 0)); }
             /**
             @brief Rotates the Rocket around the x-axis by the specifed amount.
@@ -100,5 +106,5 @@
             */
             inline void rotatePitch(float value)
-            { this->rotatePitch(Vector2(value, 0)); }
+                { this->rotatePitch(Vector2(value, 0)); }
             /**
             @brief Rotates the Rocket around the z-axis by the specifed amount.
@@ -106,22 +112,19 @@
             */
             inline void rotateRoll(float value)
-            { this->rotateRoll(Vector2(value, 0)); }
+                { this->rotateRoll(Vector2(value, 0)); }
 
-            void setOwner(Pawn* owner);
-            inline Pawn* getOwner() const
-                { return this->owner_; }
+            virtual void setShooter(Pawn* shooter);
 
             virtual void fired(unsigned int firemode);
 
         private:
-            WeakPtr<Pawn> owner_;
-            Vector3 localAngularVelocity_;
+            Vector3 localAngularVelocity_; //!< Variable to temporarily store accumulated steering command input.
 
-            WeakPtr<PlayerInfo> player_;
-            Timer destroyTimer_;
-            float lifetime_;
+            WeakPtr<PlayerInfo> player_; //!< The player that controls the Rocket.
+            Timer destroyTimer_; //!< Timer to destroy the projectile after its lifetime has run out.
+            float lifetime_; //!< The time the projectile exists.
 
-            WorldSound* defSndWpnEngine_;
-            WorldSound* defSndWpnLaunch_;
+            WorldSound* defSndWpnEngine_; //!< Engine sound.
+            WorldSound* defSndWpnLaunch_; //!< Launch sound.
     };
 
Index: /code/trunk/src/modules/weapons/projectiles/SimpleRocket.cc
===================================================================
--- /code/trunk/src/modules/weapons/projectiles/SimpleRocket.cc	(revision 8854)
+++ /code/trunk/src/modules/weapons/projectiles/SimpleRocket.cc	(revision 8855)
@@ -21,5 +21,5 @@
  *
  *   Author:
- *      Oliver Scheuss
+ *      Gabriel Nadler
  *   Co-authors:
  *      simonmie
@@ -27,4 +27,10 @@
  */
 
+/**
+    @file SimpleRocket.h
+    @brief Implementation of the SimpleRocket class.
+*/
+
+
 #include "SimpleRocket.h"
 
@@ -33,13 +39,15 @@
 #include "core/CoreIncludes.h"
 #include "core/XMLPort.h"
+#include "util/Debug.h"
+
+#include "controllers/Controller.h"
+#include "graphics/Model.h"
+#include "graphics/ParticleSpawner.h"
+#include "infos/PlayerInfo.h"
+#include "objects/collisionshapes/ConeCollisionShape.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"
+
 #include "weapons/RocketController.h"
-#include "sound/WorldSound.h"
-#include "util/Debug.h"
 
 namespace orxonox
@@ -53,17 +61,17 @@
         , RadarViewable(creator, static_cast<WorldEntity*>(this))
     {
-        RegisterObject(SimpleRocket);// - register the SimpleRocket class to the core
+        RegisterObject(SimpleRocket);// Register the SimpleRocket class to the core
 
         this->localAngularVelocity_ = 0;
-        this->lifetime_ = 10;
-
-        this->setMass(15);
-//        COUT(4) << "simplerocket constructed\n";
+        this->lifetime_ = 10.f;
+
+        this->setMass(15.0);
 
         if (GameMode::isMaster())
         {
             this->setCollisionType(WorldEntity::Kinematic);
-            this->fuel_=true;
-
+            this->fuel_ = true;
+
+            // Create rocket model.
             Model* model = new Model(this);
             model->setMeshSource("rocket.mesh");
@@ -71,4 +79,5 @@
             this->attach(model);
 
+            // Add effects.
             this->fire_ = new ParticleEmitter(this);
             this->attach(this->fire_);
@@ -80,4 +89,5 @@
             this->setCollisionType(Kinematic);
 
+            // Add collision shape.
             // TODO: fix the orientation and size of this collision shape to match the rocket
             ConeCollisionShape* collisionShape = new ConeCollisionShape(this);
@@ -86,5 +96,6 @@
             collisionShape->setHeight(5);
             this->attachCollisionShape(collisionShape);
-            this->destroyTimer_.setTimer(this->lifetime_, false, createExecutor(createFunctor(&SimpleRocket::destroyObject, this)));
+            
+            this->destroyTimer_.setTimer(this->lifetime_, false, createExecutor(createFunctor(&BasicProjectile::destroyObject, this)));
         }
 
@@ -97,36 +108,33 @@
 
     /**
-    * @brief updates state of rocket, disables fire if no fuel
-    * @param dt tick-length
+    @brief
+        Updates state of rocket, disables fire if no fuel
+    @param dt
+        tick-length
     */
     void SimpleRocket::tick(float dt)
     {
-
         SUPER(SimpleRocket, tick, dt);
-        if ( GameMode::isMaster() )
+        
+        if (GameMode::isMaster())
         {
-
-
             this->setAngularVelocity(this->getOrientation() * this->localAngularVelocity_);
             this->setVelocity( this->getOrientation()*WorldEntity::FRONT*this->getVelocity().length() );
             this->localAngularVelocity_ = 0;
 
-
             if (this->fuel_)
             {
-                if (this->destroyTimer_.getRemainingTime()<  (static_cast<float>(this->FUEL_PERCENTAGE)/100) *this->lifetime_ )
-                    this->fuel_=false;
+                if (this->destroyTimer_.getRemainingTime() < this->FUEL_PERCENTAGE*this->lifetime_ )
+                    this->fuel_ = false;
             } else
                 this->disableFire();
-
-            if( this->getBDestroy() )
-                this->destroy();
         }
 
-    }
-
-    /**
-    * @brief Sets the Acceleration to 0 and detaches the fire
-    * @return void
+        this->destroyCheck();
+    }
+
+    /**
+    @brief
+        Sets the Acceleration to 0 and detaches the fire.
     */
     void SimpleRocket::disableFire()
@@ -136,5 +144,5 @@
     }
 
-    /**s
+    /**
     @brief
         Destructor. Destroys controller, if present and kills sounds, if playing.
@@ -153,32 +161,18 @@
     /**
     @brief
-        Method for creating a SimpleRocket through XML.
-    */
-    void SimpleRocket::XMLPort(Element& xmlelement, XMLPort::Mode mode)
-    {
-        // this calls the XMLPort function of the parent class
-        SUPER(SimpleRocket, XMLPort, xmlelement, mode);
-    }
-
-    void SimpleRocket::setOwner(Pawn* owner)
-    {
-        this->owner_ = owner;
-        this->player_ = this->getOwner()->getPlayer();
-    }
-
-
-    /* Calls the collidesAgainst function of BasicProjectile
-     */
+        Set the entity that fired the SimpleRocket.
+    @param shooter
+        A pointer to the Pawn that fired the SimpleRocket.
+    */
+    void SimpleRocket::setShooter(Pawn* shooter)
+    {
+        BasicProjectile::setShooter(shooter);
+        
+        this->player_ = this->getShooter()->getPlayer();
+    }
+
     bool SimpleRocket::collidesAgainst(WorldEntity* otherObject, btManifoldPoint& contactPoint)
     {
-        return BasicProjectile::basicCollidesAgainst(otherObject,contactPoint,this->getOwner(),this);
-    }
-
-    void SimpleRocket::destroyObject()
-    {
-        if (GameMode::isMaster())
-        {
-            this->destroy();
-        }
+        return this->processCollision(otherObject, contactPoint);
     }
 
Index: /code/trunk/src/modules/weapons/projectiles/SimpleRocket.h
===================================================================
--- /code/trunk/src/modules/weapons/projectiles/SimpleRocket.h	(revision 8854)
+++ /code/trunk/src/modules/weapons/projectiles/SimpleRocket.h	(revision 8855)
@@ -21,9 +21,14 @@
  *
  *   Author:
- *      Oliver Scheuss
+ *      Gabriel Nadler
  *   Co-authors:
  *      simonmie
  *
  */
+
+/**
+    @file SimpleRocket.h
+    @brief Definition of the SimpleRocket class.
+*/
 
 #ifndef _SimpleRocket_H__
@@ -33,7 +38,8 @@
 
 #include "tools/Timer.h"
-#include "worldentities/ControllableEntity.h"
+
 #include "graphics/ParticleSpawner.h"
 #include "interfaces/RadarViewable.h"
+#include "worldentities/ControllableEntity.h"
 
 #include "BasicProjectile.h"
@@ -45,7 +51,9 @@
     /**
     @brief
-        SimpleRocket, follows direction from a Rocketcontroller, has fuel for 80% of its lifetime, afterwards it's fire disappears.
+        SimpleRocket is a target seeking, intelligent rocket. It follows its target until it either hits something or runs out of fuel.
+        The steering is done by the RocketController.
     @author
-       Gabriel Nadler (Original file: Oli Scheuss)
+       Gabriel Nadler
+    @ingroup WeaponsProjectiles
     */
     class _WeaponsExport SimpleRocket : public ControllableEntity, public BasicProjectile, public RadarViewable
@@ -55,8 +63,6 @@
             virtual ~SimpleRocket();
             virtual void tick(float dt);
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode); //!< Method for creating a SimpleRocket through XML.
 
             virtual bool collidesAgainst(WorldEntity* otherObject, btManifoldPoint& contactPoint);
-            void destroyObject();
 
             void disableFire(); //!< Method to disable the fire and stop all acceleration
@@ -76,5 +82,5 @@
             */
             inline void moveFrontBack(float value)
-            { this->moveFrontBack(Vector2(value, 0)); }
+                { this->moveFrontBack(Vector2(value, 0)); }
             /**
             @brief Moves the SimpleRocket in the Right/Left-direction by the specifed amount.
@@ -82,5 +88,5 @@
             */
             inline void moveRightLeft(float value)
-            { this->moveRightLeft(Vector2(value, 0)); }
+                { this->moveRightLeft(Vector2(value, 0)); }
             /**
             @brief Moves the SimpleRocket in the Up/Down-direction by the specifed amount.
@@ -88,5 +94,5 @@
             */
             inline void moveUpDown(float value)
-            { this->moveUpDown(Vector2(value, 0)); }
+                { this->moveUpDown(Vector2(value, 0)); }
 
             /**
@@ -95,5 +101,5 @@
             */
             inline void rotateYaw(float value)
-            { this->rotateYaw(Vector2(value, 0)); }
+                { this->rotateYaw(Vector2(value, 0)); }
             /**
             @brief Rotates the SimpleRocket around the x-axis by the specifed amount.
@@ -101,6 +107,5 @@
             */
             inline void rotatePitch(float value)
-            {
-                this->rotatePitch(Vector2(value, 0)); }
+                { this->rotatePitch(Vector2(value, 0)); }
             /**
             @brief Rotates the SimpleRocket around the z-axis by the specifed amount.
@@ -108,30 +113,23 @@
             */
             inline void rotateRoll(float value)
-            {
-                this->rotateRoll(Vector2(value, 0)); }
+                { this->rotateRoll(Vector2(value, 0)); }
 
-            void setOwner(Pawn* owner);
-            inline Pawn* getOwner() const
-                { return this->owner_; }
+            virtual void setShooter(Pawn* shooter);
 
             inline bool hasFuel() const
-            { return this->fuel_; }
+                { return this->fuel_; }
 
 
         private:
-            WeakPtr<Pawn> owner_;
-            Vector3 localAngularVelocity_;
+            static const float FUEL_PERCENTAGE = 0.8f; //!< Percentage of lifetime the rocket has fuel
+            
+            Vector3 localAngularVelocity_; //!< Variable to temporarily store accumulated steering command input.
             bool fuel_; //!< Bool is true while the rocket "has fuel"
 
-
-            WeakPtr<PlayerInfo> player_;
-            Timer destroyTimer_;
-            float lifetime_;
-            static const int FUEL_PERCENTAGE=80; //!<Percentage of Lifetime the rocket has fuel
+            WeakPtr<PlayerInfo> player_; //!< The player the SimpleRocket belongs to.
+            Timer destroyTimer_; //!< Timer to destroy the projectile after its lifetime has run out.
+            float lifetime_; //!< The time the projectile exists.
 
             ParticleEmitter* fire_; //!< Fire-Emittor
-
-
-
     };
 
Index: /code/trunk/src/modules/weapons/weaponmodes/EnergyDrink.cc
===================================================================
--- /code/trunk/src/modules/weapons/weaponmodes/EnergyDrink.cc	(revision 8854)
+++ /code/trunk/src/modules/weapons/weaponmodes/EnergyDrink.cc	(revision 8855)
@@ -27,4 +27,9 @@
  */
 
+/**
+    @file EnergyDrink.h
+    @brief Implementation of the EnergyDrink class.
+*/
+
 #include "EnergyDrink.h"
 
@@ -32,12 +37,13 @@
 #include "core/XMLPort.h"
 #include "core/command/Executor.h"
+
 #include "graphics/Model.h"
-
-#include "weapons/projectiles/Projectile.h"
-#include "weapons/MuzzleFlash.h"
 #include "weaponsystem/Weapon.h"
 #include "weaponsystem/WeaponPack.h"
 #include "weaponsystem/WeaponSystem.h"
 #include "worldentities/pawns/Pawn.h"
+
+#include "weapons/projectiles/Projectile.h"
+#include "weapons/MuzzleFlash.h"
 
 namespace orxonox
@@ -49,8 +55,8 @@
         RegisterObject(EnergyDrink);
 
-        this->reloadTime_ = 0.25;
-        this->damage_ = 0; //default 15
-        this->speed_ = 2500;
-        this->delay_ = 0;
+        this->reloadTime_ = 0.25f;
+        this->damage_ = 0.0f;
+        this->speed_ = 2500.0f;
+        this->delay_ = 0.0f;
         this->setMunitionName("FusionMunition");
 
@@ -65,23 +71,22 @@
         XMLPortParam(EnergyDrink, "delay", setDelay, getDelay, xmlelement, mode);
         XMLPortParam(EnergyDrink, "material", setMaterial, getMaterial, xmlelement, mode);
-
     }
 
-    void EnergyDrink::setMaterial(const std::string& material)
+    /**
+    @brief
+        Sets the delay with which is fired.
+    @param delay
+        The delay in seconds.
+    */
+    void EnergyDrink::setDelay(float delay)
     {
-        this->material_ = material;
-    }
-
-    void EnergyDrink::setDelay(float d)
-    {
-        this->delay_ = d;
+        this->delay_ = delay;
         this->delayTimer_.setInterval(this->delay_);
     }
 
-    float EnergyDrink::getDelay() const
-    {
-        return this->delay_;
-    }
-
+    /**
+    @brief
+        Fires the weapon.
+    */
     void EnergyDrink::fire()
     {
@@ -89,16 +94,11 @@
     }
 
-    void EnergyDrink::muendungsfeuer()
-    {
-        MuzzleFlash *muzzleFlash = new MuzzleFlash(this);
-        this->getWeapon()->attach(muzzleFlash);
-        muzzleFlash->setPosition(this->getMuzzleOffset());
-        muzzleFlash->setMaterial(this->material_);
-    }
-
-    /* Creates the projectile object, sets its properties to the EnergyDrink properties, calls muendungsfeuer()
-     */
+    /**
+    @brief
+        Executes the shot, be creating the projectile and sending it on its way.
+    */
     void EnergyDrink::shot()
     {
+        // Create the projectile
         Projectile* projectile = new Projectile(this);
         Model* model = new Model(projectile);
@@ -112,10 +112,23 @@
         projectile->setVelocity(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn()->getVelocity() + this->getMuzzleDirection() * this->speed_);
 
-        projectile->setOwner(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn());
+        projectile->setShooter(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn());
         projectile->setDamage(this->getDamage());
         projectile->setShieldDamage(this->getShieldDamage());
         projectile->setHealthDamage(this->getHealthDamage());
 
-        EnergyDrink::muendungsfeuer();
+        // Display a muzzle flash.
+        this->muzzleflash();
+    }
+
+    /**
+    @brief
+        Displays a muzzle flash.
+    */
+    void EnergyDrink::muzzleflash()
+    {
+        MuzzleFlash *muzzleFlash = new MuzzleFlash(this);
+        this->getWeapon()->attach(muzzleFlash);
+        muzzleFlash->setPosition(this->getMuzzleOffset());
+        muzzleFlash->setMaterial(this->material_);
     }
 }
Index: /code/trunk/src/modules/weapons/weaponmodes/EnergyDrink.h
===================================================================
--- /code/trunk/src/modules/weapons/weaponmodes/EnergyDrink.h	(revision 8854)
+++ /code/trunk/src/modules/weapons/weaponmodes/EnergyDrink.h	(revision 8855)
@@ -27,4 +27,9 @@
  */
 
+/**
+    @file EnergyDrink.h
+    @brief Definition of the EnergyDrink class.
+*/
+
 #ifndef _EnergyDrink_H__
 #define _EnergyDrink_H__
@@ -38,4 +43,12 @@
 namespace orxonox
 {
+
+    /**
+    @brief
+        Shoots a can.
+    @author
+        Hagen Seifert
+    @ingroup WeaponsWeaponModes
+    */
     class _WeaponsExport EnergyDrink : public WeaponMode
     {
@@ -48,16 +61,32 @@
 
         private:
-            void setMaterial(const std::string& material);
-            inline const std::string& getMaterial()
+            /**
+            @brief Set the material of the EnergyDrink.
+            @param material The name of the material.
+            */
+            void setMaterial(const std::string& material)
+                { this->material_ = material; }
+            /**
+            @brief Get the material of the EnergyDrink.
+            @return Returns the material name.
+            */
+            inline const std::string& getMaterial() const
                 { return this->material_; }
-            void setDelay(float d);
-            float getDelay() const;
+
+            void setDelay(float delay);
+            /**
+            @brief Get the firing delay.
+            @return Returns the delay in seconds.
+            */
+            float getDelay() const
+                { return this->delay_; }
+
             void shot();
-            void muendungsfeuer();
+            void muzzleflash();
 
-            std::string material_;
-            float speed_;
-            float delay_;
-            Timer delayTimer_;
+            std::string material_; //!< The material.
+            float speed_; //!< The speed of the EnergyDrink.
+            float delay_; //!< The firing delay.
+            Timer delayTimer_; //!< The timer to delay the firing.
     };
 }
Index: /code/trunk/src/modules/weapons/weaponmodes/FusionFire.cc
===================================================================
--- /code/trunk/src/modules/weapons/weaponmodes/FusionFire.cc	(revision 8854)
+++ /code/trunk/src/modules/weapons/weaponmodes/FusionFire.cc	(revision 8855)
@@ -27,9 +27,13 @@
  */
 
+/**
+    @file FusionFire.h
+    @brief Implementation of the FusionFire class.
+*/
+
 #include "FusionFire.h"
 
+#include "core/CoreIncludes.h"
 #include "util/Math.h"
-#include "core/CoreIncludes.h"
-#include "weapons/projectiles/BillboardProjectile.h"
 
 #include "weaponsystem/Weapon.h"
@@ -37,4 +41,6 @@
 #include "weaponsystem/WeaponSystem.h"
 #include "worldentities/pawns/Pawn.h"
+
+#include "weapons/projectiles/BillboardProjectile.h"
 
 namespace orxonox
@@ -46,14 +52,16 @@
         RegisterObject(FusionFire);
 
-        this->reloadTime_ = 1.0;
+        this->reloadTime_ = 1.0f;
         this->bParallelReload_ = false;
-        this->damage_ = 0; //default 40
-        this->speed_ = 1250;
+        this->damage_ = 0.0f;
+        this->speed_ = 1250.0f;
 
         this->setMunitionName("FusionMunition");
     }
 
-    /* Creates the projectile (BillboardProjectile) object, sets its properties to the FusionFire properties
-     */
+    /**
+    @brief
+        Fires the weapon, by creating a projectile.
+    */
     void FusionFire::fire()
     {
@@ -65,5 +73,5 @@
         projectile->scale(5);
 
-        projectile->setOwner(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn());
+        projectile->setShooter(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn());
         projectile->setDamage(this->getDamage());
         projectile->setShieldDamage(this->getShieldDamage());
Index: /code/trunk/src/modules/weapons/weaponmodes/FusionFire.h
===================================================================
--- /code/trunk/src/modules/weapons/weaponmodes/FusionFire.h	(revision 8854)
+++ /code/trunk/src/modules/weapons/weaponmodes/FusionFire.h	(revision 8855)
@@ -27,4 +27,9 @@
  */
 
+/**
+    @file FusionFire.h
+    @brief Definition of the FusionFire class.
+*/
+
 #ifndef _FusionFire_H__
 #define _FusionFire_H__
@@ -35,4 +40,12 @@
 namespace orxonox
 {
+
+    /**
+    @brief
+        FusionFire.
+    @author
+        Martin Polak
+    @ingroup WeaponsWeaponModes
+    */
     class _WeaponsExport FusionFire : public WeaponMode
     {
@@ -44,5 +57,5 @@
 
         private:
-            float speed_;
+            float speed_; //!< The speed of the fusion fire weapon.
     };
 }
Index: /code/trunk/src/modules/weapons/weaponmodes/HsW01.cc
===================================================================
--- /code/trunk/src/modules/weapons/weaponmodes/HsW01.cc	(revision 8854)
+++ /code/trunk/src/modules/weapons/weaponmodes/HsW01.cc	(revision 8855)
@@ -27,4 +27,9 @@
  */
 
+/**
+    @file HsW01.h
+    @brief Implementation of the HsW01 class.
+*/
+
 #include "HsW01.h"
 
@@ -32,8 +37,6 @@
 #include "core/XMLPort.h"
 #include "core/command/Executor.h"
+
 #include "graphics/Model.h"
-
-#include "weapons/projectiles/Projectile.h"
-#include "weapons/MuzzleFlash.h"
 #include "weaponsystem/Weapon.h"
 #include "weaponsystem/WeaponPack.h"
@@ -41,4 +44,7 @@
 #include "worldentities/WorldEntity.h"
 #include "worldentities/pawns/Pawn.h"
+
+#include "weapons/projectiles/Projectile.h"
+#include "weapons/MuzzleFlash.h"
 
 namespace orxonox
@@ -50,8 +56,8 @@
         RegisterObject(HsW01);
 
-        this->reloadTime_ = 0.25;
-        this->damage_ = 0; //default 15
-        this->speed_ = 2500;
-        this->delay_ = 0;
+        this->reloadTime_ = 0.25f;
+        this->damage_ = 0.0f; //default 15
+        this->speed_ = 2500.0f;
+        this->delay_ = 0.0f;
         this->setMunitionName("LaserMunition");
 
@@ -72,26 +78,16 @@
         XMLPortParam(HsW01, "delay", setDelay, getDelay, xmlelement, mode);
         XMLPortParam(HsW01, "material", setMaterial, getMaterial, xmlelement, mode);
-
     }
 
-    void HsW01::setMaterial(const std::string& material)
+    /**
+    @brief
+        Set the firing delay.
+    @param delay
+        The firing delay in seconds.
+    */
+    void HsW01::setDelay(float delay)
     {
-        this->material_ = material;
-    }
-
-    std::string& HsW01::getMaterial()
-    {
-        return this->material_;
-    }
-
-    void HsW01::setDelay(float d)
-    {
-        this->delay_ = d;
+        this->delay_ = delay;
         this->delayTimer_.setInterval(this->delay_);
-    }
-
-    float HsW01::getDelay() const
-    {
-        return this->delay_;
     }
 
@@ -101,17 +97,13 @@
     }
 
-    void HsW01::muendungsfeuer()
-    {
-        MuzzleFlash *muzzleFlash = new MuzzleFlash(this);
-        this->getWeapon()->attach(muzzleFlash);
-        muzzleFlash->setPosition(this->getMuzzleOffset());
-        muzzleFlash->setMaterial(this->material_);
-    }
-
-    /* Creates the projectile object, sets its properties to the HsW01 properties, calls muendungsfeuer()
-     */
+    /**
+    @brief
+        Fires the weapon. Creates a projectile and fires it.
+    */
     void HsW01::shot()
     {
         assert( this->getWeapon() && this->getWeapon()->getWeaponPack() && this->getWeapon()->getWeaponPack()->getWeaponSystem() && this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn() );
+
+        // Create the projectile.
         Projectile* projectile = new Projectile(this);
         Model* model = new Model(projectile);
@@ -126,10 +118,23 @@
         projectile->setVelocity(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn()->getVelocity() + this->getMuzzleDirection() * this->speed_);
 
-        projectile->setOwner(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn());
+        projectile->setShooter(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn());
         projectile->setDamage(this->getDamage());
         projectile->setShieldDamage(this->getShieldDamage());
         projectile->setHealthDamage(this->getHealthDamage());
 
-        HsW01::muendungsfeuer();
+        // Display the muzzle flash.
+        this->HsW01::muzzleflash();
+    }
+
+    /**
+    @brief
+        Displays the muzzle flash.
+    */
+    void HsW01::muzzleflash()
+    {
+        MuzzleFlash *muzzleFlash = new MuzzleFlash(this);
+        this->getWeapon()->attach(muzzleFlash);
+        muzzleFlash->setPosition(this->getMuzzleOffset());
+        muzzleFlash->setMaterial(this->material_);
     }
 }
Index: /code/trunk/src/modules/weapons/weaponmodes/HsW01.h
===================================================================
--- /code/trunk/src/modules/weapons/weaponmodes/HsW01.h	(revision 8854)
+++ /code/trunk/src/modules/weapons/weaponmodes/HsW01.h	(revision 8855)
@@ -27,4 +27,9 @@
  */
 
+/**
+    @file HsW01.h
+    @brief Definition of the HsW01 class.
+*/
+
 #ifndef _HsW01_H__
 #define _HsW01_H__
@@ -37,4 +42,12 @@
 namespace orxonox
 {
+
+    /**
+    @brief
+        Shoots laser beams.
+    @author
+        Hagen Seifert
+    @ingroup WeaponsWeaponModes
+    */
     class _WeaponsExport HsW01 : public WeaponMode
     {
@@ -47,15 +60,32 @@
 
         private:
-            void setMaterial(const std::string& material);
-            std::string& getMaterial();
-            void setDelay(float d);
-            float getDelay() const;
+            /**
+            @brief Set the material.
+            @param material The material name.
+            */
+            void setMaterial(const std::string& material)
+                { this->material_ = material; }
+            /**
+            @brief Get the material.
+            @return Returns the material name.
+            */
+            const std::string& getMaterial() const
+                { return this->material_; }
+
+            void setDelay(float delay);
+            /**
+            @brief Get the firing delay.
+            @return Returns the firing delay in seconds.
+            */
+            float getDelay() const
+                { return this->delay_; }
+
             void shot();
-            void muendungsfeuer();
+            void muzzleflash();
 
-            std::string material_;
-            float speed_;
-            float delay_;
-            Timer delayTimer_;
+            std::string material_; //!< The material.
+            float speed_; //!< The speed of the fired projectile.
+            float delay_; //!< The firing delay.
+            Timer delayTimer_; //!< A timer to delay the firing.
     };
 }
Index: /code/trunk/src/modules/weapons/weaponmodes/LaserFire.cc
===================================================================
--- /code/trunk/src/modules/weapons/weaponmodes/LaserFire.cc	(revision 8854)
+++ /code/trunk/src/modules/weapons/weaponmodes/LaserFire.cc	(revision 8855)
@@ -27,12 +27,19 @@
  */
 
+/**
+    @file LaserFire.h
+    @brief Implementation of the LaserFire class.
+*/
+
 #include "LaserFire.h"
 
 #include "core/CoreIncludes.h"
-#include "weapons/projectiles/ParticleProjectile.h"
+
 #include "weaponsystem/Weapon.h"
 #include "weaponsystem/WeaponPack.h"
 #include "weaponsystem/WeaponSystem.h"
 #include "worldentities/pawns/Pawn.h"
+
+#include "weapons/projectiles/ParticleProjectile.h"
 
 namespace orxonox
@@ -44,13 +51,15 @@
         RegisterObject(LaserFire);
 
-        this->reloadTime_ = 0.25;
-        this->damage_ = 0; //default 15
-        this->speed_ = 1250;
+        this->reloadTime_ = 0.25f;
+        this->damage_ = 0.0f;
+        this->speed_ = 1250.0f;
 
         this->setMunitionName("LaserMunition");
     }
 
-    /* Creates the projectile object, sets its properties to the LaserFire properties
-     */
+    /**
+    @brief
+        Fires the weapon. Creates a projectile and fires it.
+    */
     void LaserFire::fire()
     {
@@ -61,5 +70,5 @@
         projectile->setVelocity(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn()->getVelocity() + this->getMuzzleDirection() * this->speed_);
 
-        projectile->setOwner(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn());
+        projectile->setShooter(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn());
         projectile->setDamage(this->getDamage());
         projectile->setShieldDamage(this->getShieldDamage());
Index: /code/trunk/src/modules/weapons/weaponmodes/LaserFire.h
===================================================================
--- /code/trunk/src/modules/weapons/weaponmodes/LaserFire.h	(revision 8854)
+++ /code/trunk/src/modules/weapons/weaponmodes/LaserFire.h	(revision 8855)
@@ -27,4 +27,9 @@
  */
 
+/**
+    @file LaserFire.h
+    @brief Definition of the LaserFire class.
+*/
+
 #ifndef _LaserFire_H__
 #define _LaserFire_H__
@@ -35,4 +40,12 @@
 namespace orxonox
 {
+
+    /**
+    @brief
+        Shoots a particle laser.
+    @author
+        Martin Polak
+    @ingroup WeaponsWeaponModes
+    */
     class _WeaponsExport LaserFire : public WeaponMode
     {
@@ -44,5 +57,5 @@
 
         private:
-            float speed_;
+            float speed_; //!< The speed of the fired projectile.
     };
 }
Index: /code/trunk/src/modules/weapons/weaponmodes/LightningGun.cc
===================================================================
--- /code/trunk/src/modules/weapons/weaponmodes/LightningGun.cc	(revision 8854)
+++ /code/trunk/src/modules/weapons/weaponmodes/LightningGun.cc	(revision 8855)
@@ -27,12 +27,18 @@
  */
 
+/**
+    @file LightningGun.h
+    @brief Implementation of the LightningGun class.
+*/
+
 #include "LightningGun.h"
 
 #include "core/CoreIncludes.h"
-#include "weapons/projectiles/LightningGunProjectile.h"
 #include "weaponsystem/Weapon.h"
 #include "weaponsystem/WeaponPack.h"
 #include "weaponsystem/WeaponSystem.h"
 #include "worldentities/pawns/Pawn.h"
+
+#include "weapons/projectiles/LightningGunProjectile.h"
 
 namespace orxonox
@@ -44,7 +50,7 @@
         RegisterObject(LightningGun);
 
-        this->reloadTime_ = 1;
-        this->damage_ = 0; //default 100
-        this->speed_ = 150;
+        this->reloadTime_ = 1.0f;
+        this->damage_ = 0.0f;
+        this->speed_ = 250.0f;
 
         this->setMunitionName("LaserMunition");
@@ -56,6 +62,8 @@
     }
 
-    /* Creates the projectile (LightningGunProjectile) object, sets its properties to the LightningGun properties
-     */
+    /**
+    @brief
+        Fires the weapon. Creates a projectile and fires it.
+    */
     void LightningGun::fire()
     {
@@ -67,7 +75,6 @@
         projectile->setPosition(this->getMuzzlePosition());
         projectile->setVelocity(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn()->getVelocity() + this->getMuzzleDirection() * this->speed_);
-        projectile->setAcceleration(this->getMuzzleDirection() * 1000);
 
-        projectile->setOwner(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn());
+        projectile->setShooter(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn());
         projectile->setDamage(this->getDamage());
         projectile->setShieldDamage(this->getShieldDamage());
Index: /code/trunk/src/modules/weapons/weaponmodes/LightningGun.h
===================================================================
--- /code/trunk/src/modules/weapons/weaponmodes/LightningGun.h	(revision 8854)
+++ /code/trunk/src/modules/weapons/weaponmodes/LightningGun.h	(revision 8855)
@@ -27,4 +27,9 @@
  */
 
+/**
+    @file LightningGun.h
+    @brief Definition of the LightningGun class.
+*/
+
 #ifndef _LightningGun_H__
 #define _LightningGun_H__
@@ -35,4 +40,12 @@
 namespace orxonox
 {
+
+    /**
+    @brief
+        A slow ball of lightning.
+    @author
+        Joel Smely
+    @ingroup WeaponsWeaponModes
+    */
     class _WeaponsExport LightningGun : public WeaponMode
     {
@@ -44,5 +57,5 @@
 
        private:
-            float speed_;
+            float speed_; //!< The speed of the fired projectile.
     };
 }
Index: /code/trunk/src/modules/weapons/weaponmodes/RocketFire.cc
===================================================================
--- /code/trunk/src/modules/weapons/weaponmodes/RocketFire.cc	(revision 8854)
+++ /code/trunk/src/modules/weapons/weaponmodes/RocketFire.cc	(revision 8855)
@@ -27,9 +27,13 @@
  */
 
+/**
+    @file RocketFire.h
+    @brief Implementation of the RocketFire class.
+*/
+
 #include "RocketFire.h"
 
+#include "core/CoreIncludes.h"
 #include "util/Math.h"
-#include "core/CoreIncludes.h"
-#include "weapons/projectiles/Rocket.h"
 
 #include "weaponsystem/Weapon.h"
@@ -37,4 +41,6 @@
 #include "weaponsystem/WeaponSystem.h"
 #include "worldentities/pawns/Pawn.h"
+
+#include "weapons/projectiles/Rocket.h"
 
 namespace orxonox
@@ -48,6 +54,6 @@
         this->reloadTime_ = 0.20f;
         this->bParallelReload_ = false;
-        this->damage_ = 0;
-        this->speed_ = 500;
+        this->damage_ = 0.0f;
+        this->speed_ = 500.0f;
 
         this->setMunitionName("RocketMunition");
@@ -59,6 +65,8 @@
     }
 
-    /* Creates the Rocket object, sets its properties to the RocketFire properties
-     */
+    /**
+    @brief
+        Fires the weapon. Creates the Rocket and fires it.
+    */
     void RocketFire::fire()
     {
@@ -71,5 +79,5 @@
         rocket->scale(2);
 
-        rocket->setOwner(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn());
+        rocket->setShooter(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn());
         rocket->setDamage(this->getDamage());
         rocket->setShieldDamage(this->getShieldDamage());
Index: /code/trunk/src/modules/weapons/weaponmodes/RocketFire.h
===================================================================
--- /code/trunk/src/modules/weapons/weaponmodes/RocketFire.h	(revision 8854)
+++ /code/trunk/src/modules/weapons/weaponmodes/RocketFire.h	(revision 8855)
@@ -27,4 +27,9 @@
  */
 
+/**
+    @file RocketFire.h
+    @brief Definition of the RocketFire class.
+*/
+
 #ifndef _RocketFire_H__
 #define _RocketFire_H__
@@ -35,4 +40,12 @@
 namespace orxonox
 {
+
+    /**
+    @brief
+        Fires the (steerable) Rocket.
+    @author
+        Oliver Scheuss
+    @ingroup WeaponsWeaponModes
+    */
     class _WeaponsExport RocketFire : public WeaponMode
     {
@@ -44,5 +57,5 @@
 
         private:
-            float speed_;
+            float speed_; //!< The speed of the Rocket.
     };
 }
Index: /code/trunk/src/modules/weapons/weaponmodes/SimpleRocketFire.cc
===================================================================
--- /code/trunk/src/modules/weapons/weaponmodes/SimpleRocketFire.cc	(revision 8854)
+++ /code/trunk/src/modules/weapons/weaponmodes/SimpleRocketFire.cc	(revision 8855)
@@ -21,15 +21,20 @@
  *
  *   Author:
+ *      Gabriel Nadler
+ *   Co-authors:
  *      Oliver Scheuss
- *   Co-authors:
  *      simonmie
  *
  */
 
+/**
+    @file BasicProjectile.h
+    @brief Implementation of the BasicProjectile class.
+*/
+
 #include "SimpleRocketFire.h"
 
+#include "core/CoreIncludes.h"
 #include "util/Math.h"
-#include "core/CoreIncludes.h"
-#include "weapons/RocketController.h"
 
 #include "weaponsystem/Weapon.h"
@@ -38,4 +43,7 @@
 #include "worldentities/pawns/Pawn.h"
 #include "sound/WorldSound.h"
+
+#include "weapons/RocketController.h"
+#include "weapons/projectiles/SimpleRocket.h"
 
 namespace orxonox
@@ -48,8 +56,8 @@
         RegisterObject(SimpleRocketFire);
 
-        this->reloadTime_ = 1;
+        this->reloadTime_ = 1.0f;
         this->bParallelReload_ = false;
-        this->damage_ = 0;
-        this->speed_ = 500;
+        this->damage_ = 0.0f;
+        this->speed_ = 500.0f;
 
         this->setMunitionName("RocketMunition");
@@ -62,15 +70,17 @@
     }
 
-    /* Creates the Rocket (RocketController) object, sets its properties to the SimpleRocketFire properties, sets target
-     */
+    /**
+    @brief
+        Fires the weapon. Creates the SimpleRocket and a RocketController to steer it and fires it.
+    */
     void SimpleRocketFire::fire()
     {
-        RocketController* con = new RocketController(this);
-        SimpleRocket* rocket = con->getRocket();
+        RocketController* controller = new RocketController(this);
+        SimpleRocket* rocket = controller->getRocket();
         this->computeMuzzleParameters(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn()->getAimPosition());
         rocket->setOrientation(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn()->getWorldOrientation());
         rocket->setPosition(this->getMuzzlePosition());
         rocket->setVelocity(this->getMuzzleDirection()*this->speed_);
-        rocket->setOwner(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn());
+        rocket->setShooter(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn());
 
         rocket->setDamage(this->damage_);
@@ -78,6 +88,6 @@
         rocket->setHealthDamage(this->getHealthDamage());
 
-        WorldEntity* pawnn=static_cast<ControllableEntity*>(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn())->getTarget();
-        if (pawnn) con->setTarget(pawnn);
+        WorldEntity* pawn = static_cast<ControllableEntity*>(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn())->getTarget();
+        if (pawn) controller->setTarget(pawn);
     }
 }
Index: /code/trunk/src/modules/weapons/weaponmodes/SimpleRocketFire.h
===================================================================
--- /code/trunk/src/modules/weapons/weaponmodes/SimpleRocketFire.h	(revision 8854)
+++ /code/trunk/src/modules/weapons/weaponmodes/SimpleRocketFire.h	(revision 8855)
@@ -21,9 +21,14 @@
  *
  *   Author:
+ *      Gabriel Nadler
+ *   Co-authors:
  *      Oliver Scheuss
- *   Co-authors:
- *      ...
  *
  */
+
+/**
+    @file SimpleRocketFire.h
+    @brief Definition of the SimpleRocketFire class.
+*/
 
 #ifndef _SimpleRocketFire_H__
@@ -39,5 +44,6 @@
         FireMode for target-seeking Rocket
     @author
-        Gabriel Nadler (Original file: Oli Scheuss)
+        Gabriel Nadler
+    @ingroup WeaponsWeaponModes
     */
     class _WeaponsExport SimpleRocketFire : public WeaponMode
@@ -50,5 +56,5 @@
 
         private:
-            float speed_;
+            float speed_; //!< The speed of the SimpleRocket.
 
     };
Index: /code/trunk/src/orxonox/worldentities/pawns/Pawn.cc
===================================================================
--- /code/trunk/src/orxonox/worldentities/pawns/Pawn.cc	(revision 8854)
+++ /code/trunk/src/orxonox/worldentities/pawns/Pawn.cc	(revision 8855)
@@ -47,5 +47,4 @@
 #include "weaponsystem/WeaponSet.h"
 
-
 namespace orxonox
 {
@@ -256,5 +255,4 @@
 
 */
-
     void Pawn::hit(Pawn* originator, const Vector3& force, float damage, float healthdamage, float shielddamage)
     {
Index: /code/trunk/src/orxonox/worldentities/pawns/Pawn.h
===================================================================
--- /code/trunk/src/orxonox/worldentities/pawns/Pawn.h	(revision 8854)
+++ /code/trunk/src/orxonox/worldentities/pawns/Pawn.h	(revision 8855)
@@ -75,11 +75,11 @@
 
             inline float getShieldHealth()
-            { return this->shieldHealth_; }
+                { return this->shieldHealth_; }
 
             inline void addShieldHealth(float amount)
-            { this->setShieldHealth(this->shieldHealth_ + amount); }
+                { this->setShieldHealth(this->shieldHealth_ + amount); }
 
             inline bool hasShield()
-            { return (this->getShieldHealth() > 0); }
+                { return (this->getShieldHealth() > 0); }
 
             virtual void setMaxShieldHealth(float maxshieldhealth);
@@ -98,7 +98,7 @@
 
             inline void setShieldAbsorption(float shieldAbsorption)
-            { this->shieldAbsorption_ = shieldAbsorption; }
+                { this->shieldAbsorption_ = shieldAbsorption; }
             inline float getShieldAbsorption()
-            { return this->shieldAbsorption_; }
+                { return this->shieldAbsorption_; }
 
             // TODO: Rename to shieldRechargeRate
@@ -112,8 +112,8 @@
 
             inline void resetReloadCountdown()
-            { this->reloadWaitCountdown_ = 0; }
+                { this->reloadWaitCountdown_ = 0; }
 
             inline void startReloadCountdown()
-            { this->reloadWaitCountdown_ = this->getReloadWaitTime(); } // TODO: Implement in Projectile.cc
+                { this->reloadWaitCountdown_ = this->getReloadWaitTime(); } // TODO: Implement in Projectile.cc
 
             virtual void decreaseReloadCountdownTime(float dt);
