Index: code/trunk/src/modules/weapons/WeaponsPrereqs.h
===================================================================
--- code/trunk/src/modules/weapons/WeaponsPrereqs.h	(revision 10727)
+++ code/trunk/src/modules/weapons/WeaponsPrereqs.h	(revision 11052)
@@ -69,11 +69,15 @@
 {
     class MuzzleFlash;
+    class IceGunFreezer;
+    class RocketController;
 
     // munitions
     class FusionMunition;
     class LaserMunition;
-    class ReplenishingMunition;
     class RocketMunition;
     class GravityBombMuntion;
+    class IceMunition;
+    class LightningMunition;
+    class SplitMunition;
 
     // projectiles
@@ -81,5 +85,8 @@
     class LightningGunProjectile;
     class ParticleProjectile;
+    class IceProjectile;
+    class SplitProjectile;
     class Projectile;
+    class BasicProjectile;
     class Rocket;
     class RocketOld;
@@ -91,6 +98,9 @@
     class FusionFire;
     class HsW01;
+    class IceGun;
+    class SplitGun;
     class LaserFire;
     class LightningGun;
+    class MineGun;
     class RocketFire;
     class RocketFireOld;
Index: code/trunk/src/modules/weapons/munitions/CMakeLists.txt
===================================================================
--- code/trunk/src/modules/weapons/munitions/CMakeLists.txt	(revision 10727)
+++ code/trunk/src/modules/weapons/munitions/CMakeLists.txt	(revision 11052)
@@ -1,5 +1,5 @@
 ADD_SOURCE_FILES(WEAPONS_SRC_FILES
-  ReplenishingMunition.cc
   LaserMunition.cc
+  LightningMunition.cc
   FusionMunition.cc
   RocketMunition.cc
@@ -7,3 +7,4 @@
   IceMunition.cc
   SplitMunition.cc
+  MineMunition.cc
 )
Index: code/trunk/src/modules/weapons/munitions/FusionMunition.cc
===================================================================
--- code/trunk/src/modules/weapons/munitions/FusionMunition.cc	(revision 10727)
+++ code/trunk/src/modules/weapons/munitions/FusionMunition.cc	(revision 11052)
@@ -28,5 +28,5 @@
 
 /**
-    @file FusionMunition.h
+    @file FusionMunition.cc
     @brief Implementation of the FusionMunition class.
 */
@@ -34,4 +34,5 @@
 #include "FusionMunition.h"
 #include "core/CoreIncludes.h"
+#include "core/XMLPort.h"
 
 namespace orxonox
@@ -45,12 +46,19 @@
         this->maxMunitionPerMagazine_ = 10;
         this->maxMagazines_ = 10;
-        this->magazines_ = 10;
+        this->unassignedMagazines_ = 10;
 
-        this->bUseSeparateMagazines_ = true;
-        this->bStackMunition_ = false;
+        this->deployment_ = MunitionDeployment::Separate;
+
         this->reloadTime_ = 1.0f;
 
         this->bAllowMunitionRefilling_ = true;
         this->bAllowMultiMunitionRemovementUnderflow_ = true;
+
+        this->reloadTime_ = 0.5f;
+    }
+
+    void FusionMunition::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(FusionMunition, XMLPort, xmlelement, mode);
     }
 }
Index: code/trunk/src/modules/weapons/munitions/FusionMunition.h
===================================================================
--- code/trunk/src/modules/weapons/munitions/FusionMunition.h	(revision 10727)
+++ code/trunk/src/modules/weapons/munitions/FusionMunition.h	(revision 11052)
@@ -53,4 +53,5 @@
             FusionMunition(Context* context);
             virtual ~FusionMunition() {}
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
     };
 }
Index: code/trunk/src/modules/weapons/munitions/GravityBombMunition.cc
===================================================================
--- code/trunk/src/modules/weapons/munitions/GravityBombMunition.cc	(revision 10727)
+++ code/trunk/src/modules/weapons/munitions/GravityBombMunition.cc	(revision 11052)
@@ -7,4 +7,5 @@
 #include "GravityBombMunition.h"
 #include "core/CoreIncludes.h"
+#include "core/XMLPort.h"
 
 namespace orxonox
@@ -17,13 +18,18 @@
         this->maxMunitionPerMagazine_ = 1;
         this->maxMagazines_ = 30;
-        this->magazines_ = 15;
+        this->unassignedMagazines_ = 15;
 
-        this->bUseSeparateMagazines_ = false;
-        this->bStackMunition_ = true;
+        this->deployment_ = MunitionDeployment::Stack;
 
         this->bAllowMunitionRefilling_ = true;
         this->bAllowMultiMunitionRemovementUnderflow_ = false;
+
+        this->reloadTime_ = 0.0f;
     }
 
+    void GravityBombMunition::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(GravityBombMunition, XMLPort, xmlelement, mode);
+    }
 }
 
Index: code/trunk/src/modules/weapons/munitions/GravityBombMunition.h
===================================================================
--- code/trunk/src/modules/weapons/munitions/GravityBombMunition.h	(revision 10727)
+++ code/trunk/src/modules/weapons/munitions/GravityBombMunition.h	(revision 11052)
@@ -28,4 +28,5 @@
             GravityBombMunition(Context* context);
             virtual ~GravityBombMunition() {}
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
     };
 
Index: code/trunk/src/modules/weapons/munitions/IceMunition.cc
===================================================================
--- code/trunk/src/modules/weapons/munitions/IceMunition.cc	(revision 10727)
+++ code/trunk/src/modules/weapons/munitions/IceMunition.cc	(revision 11052)
@@ -28,5 +28,5 @@
 
 /**
-    @file IceMunition.h
+    @file IceMunition.cc
     @brief Implementation of the IceMunition class.
 */
@@ -34,4 +34,5 @@
 #include "IceMunition.h"
 #include "core/CoreIncludes.h"
+#include "core/XMLPort.h"
 
 namespace orxonox
@@ -45,11 +46,17 @@
         this->maxMunitionPerMagazine_ = 1;
         this->maxMagazines_ = 50;
-        this->magazines_ = 25;
+        this->unassignedMagazines_ = 25;
 
-        this->bUseSeparateMagazines_ = false;
-        this->bStackMunition_ = true;
+        this->deployment_ = MunitionDeployment::Stack;
 
-        this->bAllowMunitionRefilling_ = false;
+        this->bAllowMunitionRefilling_ = true;
         this->bAllowMultiMunitionRemovementUnderflow_ = false;
+
+        this->reloadTime_ = 0.5f;
+    }
+
+    void IceMunition::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(IceMunition, XMLPort, xmlelement, mode);
     }
 }
Index: code/trunk/src/modules/weapons/munitions/IceMunition.h
===================================================================
--- code/trunk/src/modules/weapons/munitions/IceMunition.h	(revision 10727)
+++ code/trunk/src/modules/weapons/munitions/IceMunition.h	(revision 11052)
@@ -53,4 +53,5 @@
             IceMunition(Context* context);
             virtual ~IceMunition() {}
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
     };
 }
Index: code/trunk/src/modules/weapons/munitions/LaserMunition.cc
===================================================================
--- code/trunk/src/modules/weapons/munitions/LaserMunition.cc	(revision 10727)
+++ code/trunk/src/modules/weapons/munitions/LaserMunition.cc	(revision 11052)
@@ -28,5 +28,5 @@
 
 /**
-    @file LaserMunition.h
+    @file LaserMunition.cc
     @brief Implementation of the LaserMunition class.
 */
@@ -34,4 +34,5 @@
 #include "LaserMunition.h"
 #include "core/CoreIncludes.h"
+#include "core/XMLPort.h"
 
 namespace orxonox
@@ -44,15 +45,21 @@
 
         this->maxMunitionPerMagazine_ = 20;
-        this->maxMagazines_ = 1;
-        this->magazines_ = 1;
+        this->maxMagazines_ = 10;
+        this->unassignedMagazines_ = 10;
 
-        this->bUseSeparateMagazines_ = false;
-        this->bStackMunition_ = true;
+        this->deployment_ = MunitionDeployment::Separate;
 
         this->bAllowMunitionRefilling_ = true;
         this->bAllowMultiMunitionRemovementUnderflow_ = true;
 
-        this->replenishInterval_ = 0.5f;
-        this->replenishMunitionAmount_ = 1;
+        this->replenishInterval_ = 7.0f;
+        this->replenishAmount_ = 1;
+
+        this->reloadTime_ = 0.5f;
+    }
+
+    void LaserMunition::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(LaserMunition, XMLPort, xmlelement, mode);
     }
 }
Index: code/trunk/src/modules/weapons/munitions/LaserMunition.h
===================================================================
--- code/trunk/src/modules/weapons/munitions/LaserMunition.h	(revision 10727)
+++ code/trunk/src/modules/weapons/munitions/LaserMunition.h	(revision 11052)
@@ -36,5 +36,5 @@
 
 #include "weapons/WeaponsPrereqs.h"
-#include "ReplenishingMunition.h"
+#include "weaponsystem/ReplenishingMunition.h"
 
 namespace orxonox
@@ -53,4 +53,5 @@
             LaserMunition(Context* context);
             virtual ~LaserMunition() {}
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
     };
 }
Index: code/trunk/src/modules/weapons/munitions/LightningMunition.cc
===================================================================
--- code/trunk/src/modules/weapons/munitions/LightningMunition.cc	(revision 11052)
+++ code/trunk/src/modules/weapons/munitions/LightningMunition.cc	(revision 11052)
@@ -0,0 +1,62 @@
+/*
+ *   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:
+ *      Fabien Vultier
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+/**
+    @file LightningMunition.cc
+    @brief Implementation of the LightningMunition class.
+*/
+
+#include "LightningMunition.h"
+#include "core/CoreIncludes.h"
+#include "core/XMLPort.h"
+
+namespace orxonox
+{
+    RegisterClass(LightningMunition);
+
+    LightningMunition::LightningMunition(Context* context) : Munition(context)
+    {
+        RegisterObject(LightningMunition);
+
+        this->maxMunitionPerMagazine_ = 20;
+        this->maxMagazines_ = 1;
+        this->unassignedMagazines_ = 1;
+
+        this->deployment_ = MunitionDeployment::Share;
+
+        this->bAllowMunitionRefilling_ = true;
+        this->bAllowMultiMunitionRemovementUnderflow_ = true;
+
+        this->reloadTime_ = 0.5f;    
+    }
+
+    void LightningMunition::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(LightningMunition, XMLPort, xmlelement, mode);
+    }
+}
Index: code/trunk/src/modules/weapons/munitions/LightningMunition.h
===================================================================
--- code/trunk/src/modules/weapons/munitions/LightningMunition.h	(revision 11052)
+++ code/trunk/src/modules/weapons/munitions/LightningMunition.h	(revision 11052)
@@ -0,0 +1,59 @@
+/*
+ *   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:
+ *      Fabien Vultier
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+/**
+    @file LightningMunition.h
+    @brief Definition of the LightningMunition class.
+*/
+
+#ifndef _LightningMunition_H__
+#define _LightningMunition_H__
+
+#include "weapons/WeaponsPrereqs.h"
+#include "weaponsystem/Munition.h"
+
+namespace orxonox
+{
+
+    /**
+    @brief
+        LightningMunition.
+    @author
+        Fabien Vultier
+    @ingroup WeaponsMunitions
+    */
+    class _WeaponsExport LightningMunition : public Munition
+    {
+        public:
+            LightningMunition(Context* context);
+            virtual ~LightningMunition() {}
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+    };
+}
+
+#endif /* _LightningMunition_H__ */
Index: code/trunk/src/modules/weapons/munitions/MineMunition.cc
===================================================================
--- code/trunk/src/modules/weapons/munitions/MineMunition.cc	(revision 11052)
+++ code/trunk/src/modules/weapons/munitions/MineMunition.cc	(revision 11052)
@@ -0,0 +1,61 @@
+/*
+ *   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:
+ *      Fabien Vultier
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+/**
+    @file MineMunition.h
+    @brief Implementation of the MineMunition class.
+*/
+
+#include "MineMunition.h"
+#include "core/CoreIncludes.h"
+
+namespace orxonox
+{
+    RegisterClass(MineMunition);
+
+    MineMunition::MineMunition(Context* context) : Munition(context)
+    {
+        RegisterObject(MineMunition);
+
+        this->maxMunitionPerMagazine_ = 1;
+        this->maxMagazines_ = 100;
+        this->unassignedMagazines_ = 25;
+
+        this->deployment_ = MunitionDeployment::Stack;
+
+        this->bAllowMunitionRefilling_ = true;
+        this->bAllowMultiMunitionRemovementUnderflow_ = false;
+
+        this->reloadTime_ = 0.5f;
+    }
+
+    void MineMunition::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(MineMunition, XMLPort, xmlelement, mode);
+    }
+}
Index: code/trunk/src/modules/weapons/munitions/MineMunition.h
===================================================================
--- code/trunk/src/modules/weapons/munitions/MineMunition.h	(revision 11052)
+++ code/trunk/src/modules/weapons/munitions/MineMunition.h	(revision 11052)
@@ -0,0 +1,59 @@
+/*
+ *   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:
+ *      Fabien Vultier
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+/**
+    @file MineMunition.h
+    @brief Definition of the MineMunition class.
+*/
+
+#ifndef _MineMunition_H__
+#define _MineMunition_H__
+
+#include "weapons/WeaponsPrereqs.h"
+#include "weaponsystem/Munition.h"
+
+namespace orxonox
+{
+
+    /**
+    @brief
+        MineMunition.
+    @author
+        Fabien Vultier
+    @ingroup WeaponsMunitions
+    */
+    class _WeaponsExport MineMunition : public Munition
+    {
+        public:
+            MineMunition(Context* context);
+            virtual ~MineMunition() {}
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+    };
+}
+
+#endif /* _MineMunition_H__ */
Index: code/trunk/src/modules/weapons/munitions/ReplenishingMunition.cc
===================================================================
--- code/trunk/src/modules/weapons/munitions/ReplenishingMunition.cc	(revision 10727)
+++ 	(revision )
@@ -1,75 +1,0 @@
-/*
- *   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:
- *      Fabian 'x3n' Landau
- *   Co-authors:
- *      ...
- *
- */
-
-/**
-    @file ReplenishingMunition.h
-    @brief Implementation of the ReplenishingMunition class.
-*/
-
-#include "ReplenishingMunition.h"
-
-#include "core/CoreIncludes.h"
-#include "core/command/Executor.h"
-
-namespace orxonox
-{
-    RegisterClass(ReplenishingMunition);
-
-    ReplenishingMunition::ReplenishingMunition(Context* context) : Munition(context)
-    {
-        RegisterObject(ReplenishingMunition);
-
-        this->replenishInterval_ = 1.0f;
-        this->replenishMunitionAmount_ = 1;
-
-        // Use the timer to initialize itself after the first tick (because the real values for
-        // replenishIntervall_ and replenishMunitionAmount_ will be set in the constructor of the
-        // inheriting class, which comes after this constructor)
-        this->replenishingTimer_.setTimer(0.0f, false, createExecutor(createFunctor(&ReplenishingMunition::initializeTimer, this)));
-    }
-
-    void ReplenishingMunition::initializeTimer()
-    {
-        // Initialize the timer
-        this->replenishingTimer_.setTimer(this->replenishInterval_, true, createExecutor(createFunctor(&ReplenishingMunition::replenish, this)));
-    }
-
-    void ReplenishingMunition::replenish()
-    {
-        // Make a temporary copy of bAllowMunitionRefilling_, because this might be disallowed in every
-        // case except the internal munition replenishing
-        bool temp = this->bAllowMunitionRefilling_;
-        this->bAllowMunitionRefilling_ = true;
-
-        // Replenish munition
-        this->addMunition(this->replenishMunitionAmount_);
-
-        // Write back the temporary value
-        this->bAllowMunitionRefilling_ = temp;
-    }
-}
Index: code/trunk/src/modules/weapons/munitions/ReplenishingMunition.h
===================================================================
--- code/trunk/src/modules/weapons/munitions/ReplenishingMunition.h	(revision 10727)
+++ 	(revision )
@@ -1,70 +1,0 @@
-/*
- *   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:
- *      Fabian 'x3n' Landau
- *   Co-authors:
- *      ...
- *
- */
-
-/**
-    @file ReplenishingMunition.h
-    @brief Definition of the ReplenishingMunition class.
-*/
-
-#ifndef _ReplenishingMunition_H__
-#define _ReplenishingMunition_H__
-
-#include "weapons/WeaponsPrereqs.h"
-
-#include "tools/Timer.h"
-#include "weaponsystem/Munition.h"
-
-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
-    {
-        public:
-            ReplenishingMunition(Context* context);
-            virtual ~ReplenishingMunition() {}
-
-        protected:
-            float replenishInterval_; //!< The interval in which the munition is replenished.
-            unsigned int replenishMunitionAmount_; //!< The amount by which it is replenished.
-
-        private:
-            void replenish();
-            void initializeTimer();
-
-            Timer replenishingTimer_; //!< Timer to do the replenishing.
-    };
-}
-
-#endif /* _ReplenishingMunition_H__ */
Index: code/trunk/src/modules/weapons/munitions/RocketMunition.cc
===================================================================
--- code/trunk/src/modules/weapons/munitions/RocketMunition.cc	(revision 10727)
+++ code/trunk/src/modules/weapons/munitions/RocketMunition.cc	(revision 11052)
@@ -28,5 +28,5 @@
 
 /**
-    @file RocketMunition.h
+    @file RocketMunition.cc
     @brief Implementation of the RocketMunition class.
 */
@@ -34,4 +34,5 @@
 #include "RocketMunition.h"
 #include "core/CoreIncludes.h"
+#include "core/XMLPort.h"
 
 namespace orxonox
@@ -45,11 +46,17 @@
         this->maxMunitionPerMagazine_ = 1;
         this->maxMagazines_ = 30;
-        this->magazines_ = 10;
+        this->unassignedMagazines_ = 10;
 
-        this->bUseSeparateMagazines_ = false;
-        this->bStackMunition_ = true;
+        this->deployment_ = MunitionDeployment::Stack;
 
-        this->bAllowMunitionRefilling_ = false;
+        this->bAllowMunitionRefilling_ = true;
         this->bAllowMultiMunitionRemovementUnderflow_ = false;
+
+        this->reloadTime_ = 0.5f;
+    }
+
+    void RocketMunition::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(RocketMunition, XMLPort, xmlelement, mode);
     }
 }
Index: code/trunk/src/modules/weapons/munitions/RocketMunition.h
===================================================================
--- code/trunk/src/modules/weapons/munitions/RocketMunition.h	(revision 10727)
+++ code/trunk/src/modules/weapons/munitions/RocketMunition.h	(revision 11052)
@@ -53,4 +53,5 @@
             RocketMunition(Context* context);
             virtual ~RocketMunition() {}
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
     };
 }
Index: code/trunk/src/modules/weapons/munitions/SplitMunition.cc
===================================================================
--- code/trunk/src/modules/weapons/munitions/SplitMunition.cc	(revision 10727)
+++ code/trunk/src/modules/weapons/munitions/SplitMunition.cc	(revision 11052)
@@ -28,5 +28,5 @@
 
 /**
-    @file SplitMunition.h
+    @file SplitMunition.cc
     @brief Implementation of the SplitMunition class.
 */
@@ -34,4 +34,5 @@
 #include "SplitMunition.h"
 #include "core/CoreIncludes.h"
+#include "core/XMLPort.h"
 
 namespace orxonox
@@ -43,13 +44,19 @@
         RegisterObject(SplitMunition);
 
-        this->maxMunitionPerMagazine_ = 1;
-        this->maxMagazines_ = 100;
-        this->magazines_ = 25;
+        this->maxMunitionPerMagazine_ = 5;
+        this->maxMagazines_ = 10;
+        this->unassignedMagazines_ = 5;
 
-        this->bUseSeparateMagazines_ = false;
-        this->bStackMunition_ = true;
+        this->deployment_ = MunitionDeployment::Share;
 
         this->bAllowMunitionRefilling_ = true;
         this->bAllowMultiMunitionRemovementUnderflow_ = false;
+
+        this->reloadTime_ = 0.5f;
+    }
+
+    void SplitMunition::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(SplitMunition, XMLPort, xmlelement, mode);
     }
 }
Index: code/trunk/src/modules/weapons/munitions/SplitMunition.h
===================================================================
--- code/trunk/src/modules/weapons/munitions/SplitMunition.h	(revision 10727)
+++ code/trunk/src/modules/weapons/munitions/SplitMunition.h	(revision 11052)
@@ -53,4 +53,5 @@
             SplitMunition(Context* context);
             virtual ~SplitMunition() {}
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
     };
 }
Index: code/trunk/src/modules/weapons/projectiles/BasicProjectile.cc
===================================================================
--- code/trunk/src/modules/weapons/projectiles/BasicProjectile.cc	(revision 10727)
+++ code/trunk/src/modules/weapons/projectiles/BasicProjectile.cc	(revision 11052)
@@ -68,5 +68,5 @@
     @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.
+        Calls the hit-function, starts the shield recharge 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
@@ -97,5 +97,5 @@
             {
                 victim->hit(this->getShooter(), contactPoint, cs, this->getDamage(), this->getHealthDamage(), this->getShieldDamage());
-                victim->startReloadCountdown();
+                victim->startShieldRechargeCountdown();
             }
 
Index: code/trunk/src/modules/weapons/projectiles/CMakeLists.txt
===================================================================
--- code/trunk/src/modules/weapons/projectiles/CMakeLists.txt	(revision 10727)
+++ code/trunk/src/modules/weapons/projectiles/CMakeLists.txt	(revision 11052)
@@ -12,3 +12,4 @@
   GravityBomb.cc
   GravityBombField.cc
+  MineProjectile.cc
 )
Index: code/trunk/src/modules/weapons/projectiles/GravityBombField.cc
===================================================================
--- code/trunk/src/modules/weapons/projectiles/GravityBombField.cc	(revision 10727)
+++ code/trunk/src/modules/weapons/projectiles/GravityBombField.cc	(revision 11052)
@@ -164,5 +164,4 @@
         if (lifetime_ <= -4)
         {
-            orxout(debug_output) << "Timeout. Destroying field." << endl;
             this->destroy();
         }
Index: code/trunk/src/modules/weapons/projectiles/IceGunProjectile.cc
===================================================================
--- code/trunk/src/modules/weapons/projectiles/IceGunProjectile.cc	(revision 10727)
+++ code/trunk/src/modules/weapons/projectiles/IceGunProjectile.cc	(revision 11052)
@@ -34,10 +34,19 @@
 #include "IceGunProjectile.h"
 
+#include <OgreSceneManager.h>
+#include <OgreSceneNode.h>
+
 #include "core/CoreIncludes.h"
 #include "graphics/Model.h"
+#include "graphics/ParticleSpawner.h"
+#include "Scene.h"
+#include "core/command/Executor.h"
+#include "tools/ParticleInterface.h"
 
 namespace orxonox
 {
     RegisterClass(IceGunProjectile);
+
+    const float IceGunProjectile::particleDestructionDelay_ = 15.0f;
 
     IceGunProjectile::IceGunProjectile(Context* context) : Projectile(context)
@@ -55,4 +64,26 @@
         this->attach(model);
         model->setPosition(Vector3(0,0,0));
+
+        // Add effect.
+        spawner_ = new ParticleSpawner(this->getContext());
+        this->attach(spawner_);
+        spawner_->setOrientation(this->getOrientation());
+        spawner_->setSource("Orxonox/ice");
+        spawner_->setDeleteWithParent(false);
+        spawner_->setDestroydelay(particleDestructionDelay_);
+    }
+
+    IceGunProjectile::~IceGunProjectile()
+    {
+        if (this->isInitialized())
+        {
+            const Vector3& pos = spawner_->getWorldPosition();
+            const Quaternion& rot = spawner_->getWorldOrientation();
+            this->detach(spawner_);
+            spawner_->setPosition(pos);
+            spawner_->setOrientation(rot);
+            this->getScene()->getRootSceneNode()->addChild(const_cast<Ogre::SceneNode*>(spawner_->getNode()));
+            this->spawner_->stop(true);
+        }
     }
 
Index: code/trunk/src/modules/weapons/projectiles/IceGunProjectile.h
===================================================================
--- code/trunk/src/modules/weapons/projectiles/IceGunProjectile.h	(revision 10727)
+++ code/trunk/src/modules/weapons/projectiles/IceGunProjectile.h	(revision 11052)
@@ -56,5 +56,5 @@
         public:
             IceGunProjectile(Context* context);
-            virtual ~IceGunProjectile() {}
+            virtual ~IceGunProjectile();
 
             virtual void setFreezeTime(float freezeTime);
@@ -63,5 +63,7 @@
         protected:
             virtual bool collidesAgainst(WorldEntity* otherObject, const btCollisionShape* cs, btManifoldPoint& contactPoint);
-        private:         
+            static const float particleDestructionDelay_;
+        private:
+            ParticleSpawner* spawner_;
             float freezeTime_; //The duration of the freezing effect on a target
             float freezeFactor_; //The strength of the freezing effect
Index: code/trunk/src/modules/weapons/projectiles/MineProjectile.cc
===================================================================
--- code/trunk/src/modules/weapons/projectiles/MineProjectile.cc	(revision 11052)
+++ code/trunk/src/modules/weapons/projectiles/MineProjectile.cc	(revision 11052)
@@ -0,0 +1,281 @@
+/*
+ *   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:
+ *      Jannis Holzer
+ *      Fabien Vultier
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+/**
+    @file MineProjectile.h
+    @brief Implementation of the MineProjectile class.
+*/
+
+#include "MineProjectile.h"
+
+#include "core/CoreIncludes.h"
+#include "graphics/Model.h"
+#include "core/command/Executor.h"
+#include "graphics/ParticleSpawner.h"
+#include "worldentities/pawns/Pawn.h"
+#include "core/EventIncludes.h"
+#include "sound/WorldSound.h"
+
+namespace orxonox
+{
+    RegisterClass(MineProjectile);
+
+    const float MineProjectile::collisionShapeRadius_ = 15.0f;
+    const float MineProjectile::damageRadius_ = 200.0f;
+    const float MineProjectile::triggerRadius_ = 100.0f;
+
+    MineProjectile::MineProjectile(Context* context) : MovableEntity(context), BasicProjectile()
+    {
+        RegisterObject(MineProjectile);
+
+        this->bAllowExplosion_ = false;
+        this->maxTimeUntilExplosion_ = 10.0f;
+        this->timeUntilActivation_ = 1.0f;
+
+        //Create movable entities
+        rings1_ = new MovableEntity(this->getContext());
+        this->attach(rings1_);
+        rings1_->setPosition(Vector3(0.0,0.0,0.0));
+        rings1_->setAngularVelocity(Vector3(0.0,5.0,0.0));
+
+        rings2_ = new MovableEntity(this->getContext());
+        this->attach(rings2_);
+        rings2_->setPosition(Vector3(0.0,0.0,0.0));
+        rings2_->setAngularVelocity(Vector3(0.0,0.0,5.0));
+
+        core_ = new MovableEntity(this->getContext());
+        this->attach(core_);
+        core_->setPosition(Vector3(0.0,0.0,0.0));
+        core_->setAngularVelocity(Vector3(2.5,2.5,0.0));
+
+        //Create Models
+        //Core
+        modelCore_ = new Model(this->getContext());
+        modelCore_->setMeshSource("Mine_Core.mesh");
+        modelCore_->setScale(15.0);
+        core_->attach(modelCore_);
+        modelCore_->setPosition(Vector3(0,0,0));
+
+        //Ring 1
+        modelRing1_ = new Model(this->getContext());
+        modelRing1_->setMeshSource("Mine_Ring.mesh");
+        modelRing1_->setScale(15.0);
+        rings1_->attach(modelRing1_);
+        modelRing1_->setPosition(Vector3(0,0,0));
+        modelRing1_->yaw(Degree(0));
+        //Ring 2
+        modelRing2_ = new Model(this->getContext());
+        modelRing2_->setMeshSource("Mine_Ring.mesh");
+        modelRing2_->setScale(15.0);
+        rings1_->attach(modelRing2_);
+        modelRing2_->setPosition(Vector3(0,0,0));
+        modelRing2_->yaw(Degree(180));
+        //Ring 3
+        modelRing3_ = new Model(this->getContext());
+        modelRing3_->setMeshSource("Mine_Ring.mesh");
+        modelRing3_->setScale(15.0);
+        rings2_->attach(modelRing3_);
+        modelRing3_->setPosition(Vector3(0,0,0));
+        modelRing3_->yaw(Degree(90));
+        //Ring 4
+        modelRing4_ = new Model(this->getContext());
+        modelRing4_->setMeshSource("Mine_Ring.mesh");
+        modelRing4_->setScale(15.0);
+        rings2_->attach(modelRing4_);
+        modelRing4_->setPosition(Vector3(0,0,0));
+        modelRing4_->yaw(Degree(270));
+
+        emitter_ = NULL;
+
+        if (GameMode::isMaster())
+        {
+            this->setMass(10.0f);
+            this->setLinearDamping(0.5f);
+            this->setAngularDamping(0.1f);
+            this->enableCollisionCallback();
+            this->setCollisionResponse(true);
+            this->setCollisionType(Dynamic);
+
+            // Create a sphere collision shape and attach it to the projectile.
+            collisionShape_ = new SphereCollisionShape(this->getContext());
+            collisionShape_->setRadius(collisionShapeRadius_);
+            this->attachCollisionShape(collisionShape_);
+            collisionShape_->setPosition(Vector3(0,0,0));
+
+            // Create a distance trigger and attach it to the projectile.
+            distanceTrigger_ = new DistanceTrigger(this->getContext());
+            this->attach(distanceTrigger_);
+            distanceTrigger_->setPosition(Vector3(0,0,0));
+            distanceTrigger_->setDistance(triggerRadius_);
+            distanceTrigger_->addTarget("Pawn");
+            distanceTrigger_->setStayActive(false);
+
+            this->addEventSource(distanceTrigger_, "explode");
+        }
+    }
+
+    MineProjectile::~MineProjectile()
+    {
+        if (this->isInitialized())
+        {
+            modelCore_->destroy();
+            modelRing1_->destroy();
+            modelRing2_->destroy();
+            modelRing3_->destroy();
+            modelRing4_->destroy();
+
+            if (distanceTrigger_)
+            {
+                distanceTrigger_->destroy();
+            }
+            if (emitter_)
+            {
+                emitter_->destroy();
+            }
+        }
+    }
+
+    /**
+    @brief
+        XMLPort for MineProjectile.
+    */
+    void MineProjectile::XMLEventPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(MineProjectile, XMLEventPort, xmlelement, mode);
+        XMLPortEventState(MineProjectile, BaseObject, "explode", explode, xmlelement, mode);
+    }
+
+    /**
+    @brief
+        Max Time; after this time runs out,the Mine explodes.
+    */
+    void MineProjectile::setMaxTimeUntilExplosion(float maxTimeUntilExplosion)
+    {
+        if (maxTimeUntilExplosion >= 0)
+        {
+            this->maxTimeUntilExplosion_ = maxTimeUntilExplosion;
+            if (GameMode::isMaster())
+            {
+                this->explodeTimer_.setTimer(this->maxTimeUntilExplosion_, false, createExecutor(createFunctor(&MineProjectile::explode, this)));
+            }
+        }
+        else
+        {
+            this->maxTimeUntilExplosion_ = 0;
+        }
+    }
+
+    /**
+    @brief
+        The mine can only explode when the activation time has run out.
+    */
+    void MineProjectile::setTimeUntilActivation(float timeUntilActivation)
+    {
+        timeUntilActivation_ = timeUntilActivation;
+
+        if (GameMode::isMaster())
+        {
+            this->activationTimer_.setTimer(this->timeUntilActivation_, false, createExecutor(createFunctor(&MineProjectile::allowExplosion, this)));
+        }
+    }
+
+    /**
+    @brief
+        Mine explodes, deals damage to pawn within range and destroys itself.
+    */
+    void MineProjectile::explode()
+    {
+        if (bAllowExplosion_)
+        {
+            if (GameMode::isMaster())
+            {
+                // Damage all pawns within the damage radius
+                for (ObjectList<Pawn>::iterator it = ObjectList<Pawn>::begin(); it != ObjectList<Pawn>::end(); ++it)
+                {
+                    Vector3 distanceVector = it->getWorldPosition()-this->getWorldPosition();
+                    if(distanceVector.length()< damageRadius_)
+                    {
+                        it->hit(this->getShooter(), it->getWorldPosition(), NULL, this->getDamage(), this->getHealthDamage(), this->getShieldDamage());
+                    }
+                }
+            }
+
+            this->destructionEffect();
+            this->destroyLater();
+        }
+    }
+
+    /**
+    @brief
+        Mine is ready to explode.
+    */
+    void MineProjectile::allowExplosion()
+    {
+        // Allow explosion
+        bAllowExplosion_ = true;
+        // Add particle effect
+        emitter_ = new ParticleEmitter(this->getContext());
+        this->attach(emitter_);
+        emitter_->setOrientation(this->getOrientation());
+        emitter_->setSource("Orxonox/mineparticle");  
+    }
+
+    void MineProjectile::destructionEffect()
+    {
+        ParticleSpawner *effect1, *effect2, *effect3;
+       
+        effect1 = new ParticleSpawner(this->getContext());
+        effect2 = new ParticleSpawner(this->getContext());
+        effect3 = new ParticleSpawner(this->getContext());
+
+        effect1->setPosition(this->getPosition());
+        effect1->setOrientation(this->getOrientation());
+        effect1->setDestroyAfterLife(true);
+        effect1->setSource("Orxonox/MineExpl");
+        effect1->setLifetime(2.5f);
+
+        effect2->setPosition(this->getPosition());
+        effect2->setOrientation(this->getOrientation());
+        effect2->setDestroyAfterLife(true);
+        effect2->setSource("Orxonox/MineExpl1");
+        effect2->setLifetime(2.5f);
+
+        effect3->setPosition(this->getPosition());
+        effect3->setOrientation(this->getOrientation());
+        effect3->setDestroyAfterLife(true);
+        effect3->setSource("Orxonox/MineExpl2");
+        effect3->setLifetime(2.5f);
+
+        // Explosion sound effect.
+        WeakPtr<WorldSound> explosionSound_ = new WorldSound(getContext());
+        explosionSound_->setSource("sounds/minesound.ogg");
+        explosionSound_->setVolume(1.0);
+        explosionSound_->play();
+    }
+}
Index: code/trunk/src/modules/weapons/projectiles/MineProjectile.h
===================================================================
--- code/trunk/src/modules/weapons/projectiles/MineProjectile.h	(revision 11052)
+++ code/trunk/src/modules/weapons/projectiles/MineProjectile.h	(revision 11052)
@@ -0,0 +1,92 @@
+/*
+ *   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:
+ *      Jannis Holzer
+ *      Fabien Vultier
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+/**
+    @file MineProjectile.h
+    @brief Definition of the MineProjectile class.
+*/
+
+#ifndef _MineProjectile_H__
+#define _MineProjectile_H__
+
+#include "weapons/WeaponsPrereqs.h"
+#include "tools/Timer.h"
+#include "worldentities/MovableEntity.h"
+#include "objects/collisionshapes/SphereCollisionShape.h"
+#include "objects/triggers/DistanceTrigger.h"
+#include "BasicProjectile.h"
+
+namespace orxonox
+{
+
+    /**
+    @brief
+        TODO
+    @ingroup WeaponsProjectiles
+    */
+    class _WeaponsExport MineProjectile : public MovableEntity, public BasicProjectile
+    {
+        public:
+            MineProjectile(Context* context);
+            virtual ~MineProjectile();
+
+            virtual void XMLEventPort(Element& xmlelement, XMLPort::Mode mode);
+
+            virtual void setMaxTimeUntilExplosion(float maxTimeUntilExplosion);
+            virtual void setTimeUntilActivation(float timeUntilActivation);
+        protected:
+            static const float triggerRadius_;
+            static const float damageRadius_;
+            static const float collisionShapeRadius_;
+        private:
+            bool bAllowExplosion_; // The mine can only explode if it is active
+            float maxTimeUntilExplosion_;
+            float timeUntilActivation_;
+            Timer activationTimer_;
+            Timer explodeTimer_;
+            Model* modelCore_;
+            Model* modelRing1_;
+            Model* modelRing2_;
+            Model* modelRing3_;
+            Model* modelRing4_;
+            MovableEntity* rings1_;
+            MovableEntity* rings2_;
+            MovableEntity* core_;
+            ParticleEmitter* emitter_;
+
+            WeakPtr<SphereCollisionShape> collisionShape_; // The collision shape of the projectile.
+            WeakPtr<DistanceTrigger> distanceTrigger_;
+
+            virtual void destructionEffect();
+            virtual void allowExplosion();
+            virtual void explode();
+    };
+}
+
+#endif /* _MineProjectile_H__ */
Index: code/trunk/src/modules/weapons/projectiles/Projectile.h
===================================================================
--- code/trunk/src/modules/weapons/projectiles/Projectile.h	(revision 10727)
+++ code/trunk/src/modules/weapons/projectiles/Projectile.h	(revision 11052)
@@ -69,9 +69,9 @@
         protected:
             virtual void setCollisionShapeRadius(float radius);
+            float lifetime_; //!< The time the projectile exists.
 
         private:
-            float lifetime_; //!< The time the projectile exists.
             Timer destroyTimer_; //!< Timer to destroy the projectile after its lifetime has run out.
-            WeakPtr<SphereCollisionShape> collisionShape_; // The collision shape of the projectile.            
+            WeakPtr<SphereCollisionShape> collisionShape_; // The collision shape of the projectile.
     };
 }
Index: code/trunk/src/modules/weapons/projectiles/Rocket.cc
===================================================================
--- code/trunk/src/modules/weapons/projectiles/Rocket.cc	(revision 10727)
+++ code/trunk/src/modules/weapons/projectiles/Rocket.cc	(revision 11052)
@@ -66,5 +66,5 @@
 
         this->localAngularVelocity_ = 0;
-        this->lifetime_ = 100.0f;
+        this->lifetime_ = 20.0f;
 
         if (GameMode::isMaster())
@@ -76,5 +76,5 @@
             Model* model = new Model(this->getContext());
             model->setMeshSource("rocket.mesh");
-            model->scale(0.7f);
+            model->scale(1.0f);
             this->attach(model);
 
@@ -100,6 +100,4 @@
             this->attachCollisionShape(collisionShape);
 
-            this->destroyTimer_.setTimer(this->lifetime_, false, createExecutor(createFunctor(&BasicProjectile::destroyObject, this)));
-
             // Add sound
             this->defSndWpnEngine_ = new WorldSound(this->getContext());
@@ -114,4 +112,6 @@
             this->defSndWpnLaunch_->setVolume(1.0f);
             this->attach(defSndWpnLaunch_);
+
+            this->setHudTemplate("rockethud");
         }
         else
@@ -320,3 +320,13 @@
     }
 
+    float Rocket::getFuel() const
+    {
+        return this->destroyTimer_.getRemainingTime();
+    }
+
+    void Rocket::setMaxFuel(float fuel)
+    {
+        this->lifetime_ = fuel;
+        this->destroyTimer_.setTimer(this->lifetime_, false, createExecutor(createFunctor(&BasicProjectile::destroyObject, this)));
+    }
 }
Index: code/trunk/src/modules/weapons/projectiles/Rocket.h
===================================================================
--- code/trunk/src/modules/weapons/projectiles/Rocket.h	(revision 10727)
+++ code/trunk/src/modules/weapons/projectiles/Rocket.h	(revision 11052)
@@ -118,4 +118,15 @@
             virtual void fired(unsigned int firemode);
 
+            /**
+            @brief Set the maximum lifetime of the rocket.
+            */
+            virtual void setMaxFuel(float fuel);
+            /**
+            @brief Get the maximum lifetime of the rocket.
+            */
+            inline float getMaxFuel() const
+                { return lifetime_; }
+            virtual float getFuel() const;
+
         private:
             Vector3 localAngularVelocity_; //!< Variable to temporarily store accumulated steering command input.
Index: code/trunk/src/modules/weapons/projectiles/SimpleRocket.cc
===================================================================
--- code/trunk/src/modules/weapons/projectiles/SimpleRocket.cc	(revision 10727)
+++ code/trunk/src/modules/weapons/projectiles/SimpleRocket.cc	(revision 11052)
@@ -76,5 +76,5 @@
             Model* model = new Model(this->getContext());
             model->setMeshSource("rocket.mesh");
-            model->scale(0.7f);
+            model->scale(1.0f);
             this->attach(model);
 
Index: code/trunk/src/modules/weapons/weaponmodes/CMakeLists.txt
===================================================================
--- code/trunk/src/modules/weapons/weaponmodes/CMakeLists.txt	(revision 10727)
+++ code/trunk/src/modules/weapons/weaponmodes/CMakeLists.txt	(revision 11052)
@@ -11,3 +11,4 @@
   SimpleRocketFire.cc
   GravityBombFire.cc
+  MineGun.cc
 )
Index: code/trunk/src/modules/weapons/weaponmodes/EnergyDrink.cc
===================================================================
--- code/trunk/src/modules/weapons/weaponmodes/EnergyDrink.cc	(revision 10727)
+++ code/trunk/src/modules/weapons/weaponmodes/EnergyDrink.cc	(revision 11052)
@@ -63,4 +63,6 @@
         this->delayTimer_.setTimer(1.0f, false, createExecutor(createFunctor(&EnergyDrink::shot, this)));
         this->delayTimer_.stopTimer();
+
+        hudImageString_ = "Orxonox/WSHUD_WM_EnergyDrink";
     }
 
Index: code/trunk/src/modules/weapons/weaponmodes/FusionFire.cc
===================================================================
--- code/trunk/src/modules/weapons/weaponmodes/FusionFire.cc	(revision 10727)
+++ code/trunk/src/modules/weapons/weaponmodes/FusionFire.cc	(revision 11052)
@@ -58,4 +58,6 @@
 
         this->setMunitionName("FusionMunition");
+
+        hudImageString_ = "Orxonox/WSHUD_WM_FusionFire";
     }
 
Index: code/trunk/src/modules/weapons/weaponmodes/GravityBombFire.cc
===================================================================
--- code/trunk/src/modules/weapons/weaponmodes/GravityBombFire.cc	(revision 10727)
+++ code/trunk/src/modules/weapons/weaponmodes/GravityBombFire.cc	(revision 11052)
@@ -31,4 +31,6 @@
         this->setMunitionName("GravityBombMunition");
         this->setDefaultSoundWithVolume("sounds/Rocket_launch.ogg",0.8);    ///< sets sound of the bomb as it is fired.
+
+        hudImageString_ = "Orxonox/WSHUD_WM_GravityBombFire";
     }
 
Index: code/trunk/src/modules/weapons/weaponmodes/HsW01.cc
===================================================================
--- code/trunk/src/modules/weapons/weaponmodes/HsW01.cc	(revision 10727)
+++ code/trunk/src/modules/weapons/weaponmodes/HsW01.cc	(revision 11052)
@@ -69,4 +69,6 @@
 
         this->setDefaultSound(this->sound_);
+
+        hudImageString_ = "Orxonox/WSHUD_WM_HsW01";
     }
 
Index: code/trunk/src/modules/weapons/weaponmodes/IceGun.cc
===================================================================
--- code/trunk/src/modules/weapons/weaponmodes/IceGun.cc	(revision 10727)
+++ code/trunk/src/modules/weapons/weaponmodes/IceGun.cc	(revision 11052)
@@ -59,6 +59,8 @@
         this->setFreezeFactor(0.5);
 
-        this->setMunitionName("LaserMunition");
+        this->setMunitionName("IceMunition");
         this->setDefaultSound("sounds/Weapon_LightningGun.ogg");
+
+        hudImageString_ = "Orxonox/WSHUD_WM_IceGun";
     }
 
Index: code/trunk/src/modules/weapons/weaponmodes/LaserFire.cc
===================================================================
--- code/trunk/src/modules/weapons/weaponmodes/LaserFire.cc	(revision 10727)
+++ code/trunk/src/modules/weapons/weaponmodes/LaserFire.cc	(revision 11052)
@@ -56,4 +56,6 @@
 
         this->setMunitionName("LaserMunition");
+
+        hudImageString_ = "Orxonox/WSHUD_WM_LaserFire";
     }
 
Index: code/trunk/src/modules/weapons/weaponmodes/LightningGun.cc
===================================================================
--- code/trunk/src/modules/weapons/weaponmodes/LightningGun.cc	(revision 10727)
+++ code/trunk/src/modules/weapons/weaponmodes/LightningGun.cc	(revision 11052)
@@ -54,6 +54,8 @@
         this->speed_ = 750.0f;
 
-        this->setMunitionName("LaserMunition");
+        this->setMunitionName("LightningMunition");
         this->setDefaultSound("sounds/Weapon_LightningGun.ogg");
+
+        hudImageString_ = "Orxonox/WSHUD_WM_LightningGun";
     }
 
Index: code/trunk/src/modules/weapons/weaponmodes/MineGun.cc
===================================================================
--- code/trunk/src/modules/weapons/weaponmodes/MineGun.cc	(revision 11052)
+++ code/trunk/src/modules/weapons/weaponmodes/MineGun.cc	(revision 11052)
@@ -0,0 +1,101 @@
+/*
+ *   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:
+ *      Fabien Vultier
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+/**
+    @file MineGun.cc
+    @brief Implementation of the MineGun class.
+*/
+
+#include "MineGun.h"
+
+#include "core/CoreIncludes.h"
+#include "core/XMLPort.h"    
+#include "weaponsystem/Weapon.h"
+#include "weaponsystem/WeaponPack.h"
+#include "weaponsystem/WeaponSystem.h"
+#include "worldentities/pawns/Pawn.h"
+
+#include "weapons/projectiles/MineProjectile.h"
+
+namespace orxonox
+{
+    RegisterClass(MineGun);
+
+    MineGun::MineGun(Context* context) : WeaponMode(context)
+    {
+        RegisterObject(MineGun);
+
+        this->speed_ = 1000.0f;
+        this->reloadTime_ = 1.0f;
+        this->damage_ = 0.0f;
+        this->maxTimeUntilExplosion_ = 0.0f;
+
+        this->setMunitionName("MineMunition");
+        this->setDefaultSound("sounds/mineactivate.ogg");
+
+        hudImageString_ = "Orxonox/WSHUD_WM_MineGun";
+    }
+
+    MineGun::~MineGun()
+    {
+    }
+
+    /**
+    @brief
+        XMLPort for the MineGun.
+    */
+    void MineGun::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(MineGun, XMLPort, xmlelement, mode);
+
+        XMLPortParam(MineGun, "maxtimeuntilexplosion", setMaxTimeUntilExplosion, getMaxTimeUntilExplosion, xmlelement, mode).defaultValues(10.0f);
+        XMLPortParam(MineGun, "timeuntilactivation", setTimeUntilActivation, getTimeUntilActivation, xmlelement, mode).defaultValues(3.0f);
+    }
+
+    /**
+    @brief
+        Fires the weapon. Creates a projectile and fires it.
+    */
+    void MineGun::fire()
+    {
+        MineProjectile* projectile = new MineProjectile(this->getContext());
+
+        this->computeMuzzleParameters(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn()->getAimPosition());
+        projectile->setOrientation(this->getMuzzleOrientation());
+        projectile->setPosition(this->getMuzzlePosition());
+        projectile->setVelocity(this->getMuzzleDirection() * this->speed_);
+
+        projectile->setMaxTimeUntilExplosion(getMaxTimeUntilExplosion());
+        projectile->setTimeUntilActivation(getTimeUntilActivation());
+
+        projectile->setShooter(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn());
+        projectile->setDamage(this->getDamage());
+        projectile->setShieldDamage(this->getShieldDamage());
+        projectile->setHealthDamage(this->getHealthDamage());
+    }
+}
Index: code/trunk/src/modules/weapons/weaponmodes/MineGun.h
===================================================================
--- code/trunk/src/modules/weapons/weaponmodes/MineGun.h	(revision 11052)
+++ code/trunk/src/modules/weapons/weaponmodes/MineGun.h	(revision 11052)
@@ -0,0 +1,80 @@
+/*
+ *   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:
+ *      Fabien Vultier
+ *      Jannis Holzer
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+/**
+    @file MineGun.h
+    @brief
+
+    Mine is a weapon that explodes if a spaceship goes bellow the mines trigger radius. The mine deals damage too all
+    spaceships within the damageradius.
+
+    The activation time regulates when the mine is live and ready to explode.
+    The mine destroys itself after it exceeds a certain life time.
+*/
+
+#ifndef _MineGun_H__
+#define _MineGun_H__
+
+#include "weapons/WeaponsPrereqs.h"
+#include "weaponsystem/WeaponMode.h"
+
+namespace orxonox
+{
+
+    /**
+    @brief
+        A Weapon that drops mines to space.
+    @ingroup WeaponsWeaponModes
+    */
+    class _WeaponsExport MineGun : public WeaponMode
+    {
+        public:
+            MineGun(Context* context);
+            virtual ~MineGun();
+
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+            virtual void fire();
+
+            inline float getMaxTimeUntilExplosion() const
+                { return this->maxTimeUntilExplosion_; }
+            inline float getTimeUntilActivation() const
+                { return this->timeUntilActivation_; }
+        protected:
+            inline void setMaxTimeUntilExplosion(float maxTimeUntilExplosion)
+                { this->maxTimeUntilExplosion_ = maxTimeUntilExplosion; }
+            inline void setTimeUntilActivation(float timeUntilActivation)
+                { this->timeUntilActivation_ = timeUntilActivation; }
+        private:
+            float speed_; //The speed of the fired projectile.
+            float maxTimeUntilExplosion_;
+            float timeUntilActivation_;
+    };
+}
+
+#endif /* _MineGun_H__ */
Index: code/trunk/src/modules/weapons/weaponmodes/RocketFire.cc
===================================================================
--- code/trunk/src/modules/weapons/weaponmodes/RocketFire.cc	(revision 10727)
+++ code/trunk/src/modules/weapons/weaponmodes/RocketFire.cc	(revision 11052)
@@ -41,5 +41,5 @@
 #include "weaponsystem/WeaponSystem.h"
 #include "worldentities/pawns/Pawn.h"
-
+#include "core/XMLPort.h"
 #include "weapons/projectiles/Rocket.h"
 
@@ -56,11 +56,25 @@
         this->damage_ = 0.0f;
         this->speed_ = 500.0f;
+        this->fuel_ = 10.0f;
 
         this->setMunitionName("RocketMunition");
         // The firing sound of the Rocket is played in Rocket.cc (because of OpenAl sound positioning)
+
+        hudImageString_ = "Orxonox/WSHUD_WM_RocketFire";
     }
 
     RocketFire::~RocketFire()
     {
+    }
+
+    /**
+    @brief
+        XMLPort for the RocketFire. You can define the maximum lifetime of the rockets
+    */
+    void RocketFire::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(RocketFire, XMLPort, xmlelement, mode);
+
+        XMLPortParam(RocketFire, "fuel", setFuel, getFuel, xmlelement, mode);
     }
 
@@ -77,5 +91,5 @@
         rocket->setPosition(this->getMuzzlePosition());
         rocket->setVelocity(this->getMuzzleDirection() * this->speed_);
-        rocket->scale(2);
+        rocket->scale(1.0f);
 
         rocket->setShooter(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn());
@@ -83,4 +97,5 @@
         rocket->setShieldDamage(this->getShieldDamage());
         rocket->setHealthDamage(this->getHealthDamage());
+        rocket->setMaxFuel(this->fuel_);
     }
 }
Index: code/trunk/src/modules/weapons/weaponmodes/RocketFire.h
===================================================================
--- code/trunk/src/modules/weapons/weaponmodes/RocketFire.h	(revision 10727)
+++ code/trunk/src/modules/weapons/weaponmodes/RocketFire.h	(revision 11052)
@@ -54,8 +54,15 @@
             virtual ~RocketFire();
 
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+
             virtual void fire();
+            inline void setFuel(float fuel)
+                { this->fuel_ = fuel; }
+            inline float getFuel() const
+                { return this->fuel_; }
 
         private:
             float speed_; //!< The speed of the Rocket.
+            float fuel_; //!< The maximum lifetime of the rocket
     };
 }
Index: code/trunk/src/modules/weapons/weaponmodes/RocketFireOld.cc
===================================================================
--- code/trunk/src/modules/weapons/weaponmodes/RocketFireOld.cc	(revision 10727)
+++ code/trunk/src/modules/weapons/weaponmodes/RocketFireOld.cc	(revision 11052)
@@ -59,4 +59,6 @@
         this->setMunitionName("RocketMunition");
         // The firing sound of the Rocket is played in Rocket.cc (because of OpenAl sound positioning)
+
+        hudImageString_ = "Orxonox/WSHUD_WM_SimpleRocketFire";
     }
 
Index: code/trunk/src/modules/weapons/weaponmodes/SimpleRocketFire.cc
===================================================================
--- code/trunk/src/modules/weapons/weaponmodes/SimpleRocketFire.cc	(revision 10727)
+++ code/trunk/src/modules/weapons/weaponmodes/SimpleRocketFire.cc	(revision 11052)
@@ -64,4 +64,6 @@
         this->setDefaultSoundWithVolume("sounds/Rocket_launch.ogg",0.4f);
         // The firing sound of the Rocket is played in Rocket.cc (because of OpenAl sound positioning)
+
+        hudImageString_ = "Orxonox/WSHUD_WM_SimpleRocketFire";
     }
 
@@ -83,4 +85,5 @@
         rocket->setVelocity(this->getMuzzleDirection()*this->speed_);
         rocket->setShooter(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn());
+        rocket->scale(1.0f);
 
         rocket->setDamage(this->damage_);
@@ -89,5 +92,6 @@
 
         WorldEntity* pawn = static_cast<ControllableEntity*>(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn())->getTarget();
-        if (pawn) controller->setTarget(pawn);
+        if (pawn)
+            controller->setTarget(pawn);
     }
 }
Index: code/trunk/src/modules/weapons/weaponmodes/SplitGun.cc
===================================================================
--- code/trunk/src/modules/weapons/weaponmodes/SplitGun.cc	(revision 10727)
+++ code/trunk/src/modules/weapons/weaponmodes/SplitGun.cc	(revision 11052)
@@ -35,5 +35,5 @@
 
 #include "core/CoreIncludes.h"
-#include "core/XMLPort.h"    
+#include "core/XMLPort.h"
 #include "weaponsystem/Weapon.h"
 #include "weaponsystem/WeaponPack.h"
@@ -62,4 +62,6 @@
         this->setMunitionName("SplitMunition");
         this->setDefaultSound("sounds/Weapon_LightningGun.ogg");
+
+        hudImageString_ = "Orxonox/WSHUD_WM_SplitGun";
     }
 
