Index: /code/branches/gamecontent/data/levels/fightInOurBack.oxw
===================================================================
--- /code/branches/gamecontent/data/levels/fightInOurBack.oxw	(revision 8941)
+++ /code/branches/gamecontent/data/levels/fightInOurBack.oxw	(revision 8942)
@@ -110,5 +110,5 @@
   name="Fight in our back"
   description="Our fleet is far ahead of us. We need to get rid of all the enemies in its back, because we do not want our enemies to attack from everywhere. So let us clear this Sector!"
-  gametype=TeamDeathmatch
+  gametype=Mission
 >
   <templates>
@@ -214,5 +214,5 @@
 <?lua for i=0,0,1 do
 x=800
-health=2050
+health=1500
 ?>
     <!--Transporter 1-->
@@ -239,5 +239,5 @@
 
 <?lua for j=0,1,1 do
-health=1600
+health=1300
 x=800
 z=j*300
Index: /code/branches/gamecontent/data/levels/missionOne.oxw
===================================================================
--- /code/branches/gamecontent/data/levels/missionOne.oxw	(revision 8941)
+++ /code/branches/gamecontent/data/levels/missionOne.oxw	(revision 8942)
@@ -57,5 +57,13 @@
         <events>
             <trigger>
-                <TeamSpawnPoint team=0 position="800,700,600" direction="-1,0,0" spawnclass=SpaceShip pawndesign=spaceshipassff />
+                <TeamSpawnPoint team=0 position="800,700,600" direction="-1,0,0" spawnclass=SpaceShip pawndesign=spaceshipassff>
+                  <EventTrigger invert=true>
+                    <events>
+                      <trigger>
+                        <EventListener event="attack" />
+                      </trigger>
+                    </events>
+                  </EventTrigger>
+                </TeamSpawnPoint>
             </trigger>
         </events>
@@ -163,4 +171,15 @@
         </QuestEffectBeacon>
 
+        <QuestEffectBeacon times=1> <!--  alternative quest end  -->
+            <effects>
+                <CompleteQuest questId="missionOne.DuballStation" />
+            </effects>
+            <events>
+                <execute>
+                    <EventListener event=toHydroFarmer />
+                </execute>
+            </events>
+        </QuestEffectBeacon>
+
 <!--helper trigger to end the getHelp quest -->
     <DistanceTrigger name="getHelpEnd" position="-47000,-1000,1300" distance=1400 target="SpaceShip" stayActive="false" delay=0.1>
@@ -228,4 +247,29 @@
             </events>
         </QuestEffectBeacon>
+
+<!-- End the quest after own destruction of spacecruiser -->
+        <QuestEffectBeacon position="-100,0,0" times=1>
+            <effects>
+                <FailQuest questId="missionOne.getHelp" />
+            </effects>
+            <events>
+                <execute>
+                    <EventListener event="failQuest" />
+                </execute>
+            </events>
+            <attached>
+                <DistanceTrigger name="failQuest" position="-47000,-1000,1300" distance=2300 target="SpaceShip">
+                  <EventTrigger>
+                    <events>
+                      <trigger>
+                        <EventListener event="gameEnd" />
+                      </trigger>
+                    </events>
+                  </EventTrigger>
+                </DistanceTrigger>
+            </attached>
+        </QuestEffectBeacon>
+
+
 
 
@@ -335,5 +379,5 @@
 
 <!-- Blinking Billboard should be replaced with WAYPOINT -->
-<BlinkingBillboard position="-900,640,600" frequency=0.4 amplitude=2 material="Flares/lensflare" colour="1,1,0">
+<BlinkingBillboard position="-900,640,600" frequency=0.6 amplitude=3 material="Flares/lensflare" colour="1,1,0.05">
           <events>
             <visibility>
@@ -466,5 +510,5 @@
 
 <!-- @Objects: 4 boxes (uncontrolled pawns) -->
-                <Pawn health=30 position="0,0,0" direction="0,-1,0" collisionType=dynamic mass=100000 name=box >
+                <Pawn team=1 health=30 position="0,0,0" direction="0,-1,0" collisionType=dynamic mass=100000 name=box >
                     <events>
                       <visibility>
@@ -480,5 +524,5 @@
                 </Pawn>
 
-                <Pawn health=30 position="0,100,0" direction="0,-1,0" collisionType=dynamic mass=100000 name=box visible="true">
+                <Pawn team=1 health=30 position="0,100,0" direction="0,-1,0" collisionType=dynamic mass=100000 name=box visible="true">
                     <events>
                       <visibility>
@@ -493,5 +537,5 @@
                     </collisionShapes>
                 </Pawn>
-                <Pawn health=30 position="0,200,0" direction="0,-1,0" collisionType=dynamic mass=100000 name=box >
+                <Pawn health=30 position="0,200,0" direction="0,-1,0" collisionType=dynamic mass=100000 name=box team=1>
                     <events>
                       <visibility>
@@ -506,5 +550,5 @@
                     </collisionShapes>
                 </Pawn>
-                <Pawn health=30 position="0,300,0" direction="0,-1,0" collisionType=dynamic mass=100000 name=box >
+                <Pawn health=30 position="0,300,0" direction="0,-1,0" collisionType=dynamic mass=100000 name=box team=1>
                     <events>
                       <visibility>
@@ -889,5 +933,5 @@
 
 <!-------------------------------------- PART FOUR : Get Help --------------------------------------->
-<!-- TODO: cruiserKilled -->
+
     <Trigger name="famer1" mode="and" stayActive="true">
         <DistanceTrigger position="-48200,100,0" target="Pawn" distance=650 stayActive="true" delay=0 />
@@ -932,4 +976,5 @@
 <!-- @Objects: HYDROGEN FARMER & DOCKING -->
     <SpaceShip
+        team=0
         position="-48900,100,0"
         roll=90 yaw=0 pitch=20
@@ -1006,4 +1051,5 @@
     <SpaceShip
         template            = "spaceshipspacecruiser"
+        team                = "0"
         position            = "-48900,800,0"
         orientation         = "-0.14, 0.68, 0.68, 0.223"
@@ -1150,9 +1196,17 @@
 
 <!-------------------------------------- The attack --------------------------------------->
-
 <!-- TODO:
      - update spaceshipTransporter
      - bots do friendly fire (is drone function reusable?)
 -->
+
+<!-- Fallback Spawnpoint: on cruiserdeath caused by pirates. Unfortunately unstable behaviour concerning activity. -->
+    <TeamSpawnPoint team=0 position="2000,1500,-1500" direction="-1,-1,1" spawnclass=SpaceShip pawndesign=spaceshipspacecruiser>
+        <events>
+            <activity>
+                <EventListener event="attack" />
+            </activity>
+        </events>
+    </TeamSpawnPoint>
 
 <!-- @Triggers: toHydroFamer <-> first  portal usage
@@ -1607,4 +1661,5 @@
   </Scene>
 </Level>
+
 <!-- TODO:
 - Story & more precise Questmessages; more quest hints; fail-quest;
Index: /code/branches/gamecontent/data/levels/pirateAttack.oxw
===================================================================
--- /code/branches/gamecontent/data/levels/pirateAttack.oxw	(revision 8941)
+++ /code/branches/gamecontent/data/levels/pirateAttack.oxw	(revision 8942)
@@ -28,5 +28,5 @@
 name="Dani's Testlevel"
 description="Erste Versuche mit den Quests"
-gametype=TeamDeathmatch
+gametype=Mission
 >
 
@@ -252,5 +252,5 @@
                     </events>
                 </QuestEffectBeacon>
-        <!--Stick found-->
+        <!--Stick found-->zz
         <QuestEffectBeacon position="4800,5785,-10725" times=1>
                     <attached>
Index: /code/branches/gamecontent/src/orxonox/controllers/ArtificialController.cc
===================================================================
--- /code/branches/gamecontent/src/orxonox/controllers/ArtificialController.cc	(revision 8941)
+++ /code/branches/gamecontent/src/orxonox/controllers/ArtificialController.cc	(revision 8942)
@@ -42,4 +42,5 @@
 #include "gametypes/TeamDeathmatch.h"
 #include "gametypes/Dynamicmatch.h"
+#include "gametypes/Mission.h"
 #include "controllers/WaypointPatrolController.h"
 #include "controllers/NewHumanController.h"
@@ -996,4 +997,14 @@
             if (entity2->getPlayer())
                 team2 = tdm->getTeam(entity2->getPlayer());
+        }
+
+        Mission* miss = orxonox_cast<Mission*>(gametype);
+        if (miss)
+        {
+            if (entity1->getPlayer())
+                team1 = miss->getTeam(entity1->getPlayer());
+
+            if (entity2->getPlayer())
+                team2 = miss->getTeam(entity2->getPlayer());
         }
 
Index: /code/branches/gamecontent/src/orxonox/controllers/HumanController.cc
===================================================================
--- /code/branches/gamecontent/src/orxonox/controllers/HumanController.cc	(revision 8941)
+++ /code/branches/gamecontent/src/orxonox/controllers/HumanController.cc	(revision 8942)
@@ -195,6 +195,6 @@
             this->boosting_ = true;
             this->boostingTimeout_.startTimer();
-            
-            this->controllableEntity_->boost(this->boosting_);
+            if(this->controllableEntity_)
+                this->controllableEntity_->boost(this->boosting_);
 //            orxout() << "Start boosting" << endl;
         }
@@ -209,6 +209,6 @@
         this->boosting_ = false;
         this->boostingTimeout_.stopTimer();
-
-        this->controllableEntity_->boost(this->boosting_);
+        if(this->controllableEntity_)
+            this->controllableEntity_->boost(this->boosting_);
 //        orxout() << "Stop boosting" << endl;
     }
Index: /code/branches/gamecontent/src/orxonox/gametypes/Mission.cc
===================================================================
--- /code/branches/gamecontent/src/orxonox/gametypes/Mission.cc	(revision 8941)
+++ /code/branches/gamecontent/src/orxonox/gametypes/Mission.cc	(revision 8942)
@@ -90,7 +90,11 @@
 
     void Mission::setTeams()
-    {
+    {//Set pawn-colours
         for (ObjectList<Pawn>::iterator it = ObjectList<Pawn>::begin(); it != ObjectList<Pawn>::end(); ++it)
-            this->setObjectColour(*it);
+        {
+            Pawn* pawn = static_cast<Pawn*>(*it);
+            if(!pawn) continue;
+                this->setDefaultObjectColour(pawn);
+        }
     }
 
Index: /code/branches/gamecontent/src/orxonox/gametypes/TeamGametype.cc
===================================================================
--- /code/branches/gamecontent/src/orxonox/gametypes/TeamGametype.cc	(revision 8941)
+++ /code/branches/gamecontent/src/orxonox/gametypes/TeamGametype.cc	(revision 8942)
@@ -35,4 +35,5 @@
 #include "worldentities/TeamSpawnPoint.h"
 #include "worldentities/pawns/Pawn.h"
+#include "worldentities/ControllableEntity.h"
 #include "controllers/ArtificialController.h"
 
@@ -117,5 +118,5 @@
         {
             if(true)//check if dead player is allowed to enter -> if maximum nr of players is exceeded & player was not in game before: disallow
-                continue;
+                //continue;
             if (it->second.state_ == PlayerState::Dead)
             {
@@ -249,35 +250,44 @@
         if (it_player != this->teamnumbers_.end() && it_player->second >= 0 && it_player->second < static_cast<int>(this->teamcolours_.size()))
         {
-            if (pawn)
-            {
-                pawn->setRadarObjectColour(this->teamcolours_[it_player->second]);
-
-                std::set<WorldEntity*> pawnAttachments = pawn->getAttachedObjects();
-                for (std::set<WorldEntity*>::iterator it = pawnAttachments.begin(); it != pawnAttachments.end(); ++it)
-                {
-                    if ((*it)->isA(Class(TeamColourable)))
-                    {
-                        TeamColourable* tc = orxonox_cast<TeamColourable*>(*it);
-                        tc->setTeamColour(this->teamcolours_[it_player->second]);
-                    }
-                }
-            }
-        }
-    }
-
-    void TeamGametype::setObjectColour(Pawn* pawn)
+            this->colourPawn(pawn, it_player->second);
+        }
+    }
+
+    void TeamGametype::setDefaultObjectColour(Pawn* pawn)
     {
         if(pawn == NULL)
             return;
+        
+        int teamnumber = pawn->getTeam();
+
+        if(teamnumber >= 0)
+        {
+            this->colourPawn(pawn, teamnumber); return;
+        }
         //get Pawn's controller
-        ArtificialController* controller = orxonox_cast<ArtificialController*>(pawn);
-        if(controller == NULL)
+        ControllableEntity* entity = orxonox_cast<ControllableEntity*>(pawn);
+
+        Controller* controller = 0;
+        if (entity->getController())
+            controller = entity->getController();
+        else if (entity->getXMLController())
+            controller = entity->getXMLController();
+        else
             return;
+
+        ArtificialController* artificial =  orxonox_cast<ArtificialController*>(controller);
         //get Teamnumber - get the data
-        int teamnumber= controller->getTeam();
-        if(teamnumber < 0)
+        if(artificial == NULL)
             return;
+        teamnumber= artificial->getTeam();
+
         //set ObjectColour
-        pawn->setRadarObjectColour(this->teamcolours_[teamnumber]);
+        this->colourPawn(pawn, teamnumber);
+    }
+
+    void TeamGametype::colourPawn(Pawn* pawn, int teamNr)
+    {// catch no-colouring-case and wrong input
+        if(teamNr < 0 || pawn == NULL) return; 
+        pawn->setRadarObjectColour(this->teamcolours_[teamNr]);
 
         std::set<WorldEntity*> pawnAttachments = pawn->getAttachedObjects();
@@ -287,9 +297,8 @@
             {
                 TeamColourable* tc = orxonox_cast<TeamColourable*>(*it);
-                tc->setTeamColour(this->teamcolours_[teamnumber]);
+                tc->setTeamColour(this->teamcolours_[teamNr]);
             }
          }
     }
 
-
 }
Index: /code/branches/gamecontent/src/orxonox/gametypes/TeamGametype.h
===================================================================
--- /code/branches/gamecontent/src/orxonox/gametypes/TeamGametype.h	(revision 8941)
+++ /code/branches/gamecontent/src/orxonox/gametypes/TeamGametype.h	(revision 8942)
@@ -75,5 +75,6 @@
             std::map<PlayerInfo*, bool> allowedInGame_; //!< Only those players are allowed to spawn which are listed here as 'true'.
             void setTeamColour(PlayerInfo* player, Pawn* pawn);
-            void setObjectColour(Pawn* pawn);
+            void setDefaultObjectColour(Pawn* pawn);
+            void colourPawn(Pawn* pawn, int teamNr);
     };
 }
Index: /code/branches/gamecontent/src/orxonox/interfaces/CMakeLists.txt
===================================================================
--- /code/branches/gamecontent/src/orxonox/interfaces/CMakeLists.txt	(revision 8941)
+++ /code/branches/gamecontent/src/orxonox/interfaces/CMakeLists.txt	(revision 8942)
@@ -6,3 +6,4 @@
   PickupListener.cc
   RadarViewable.cc
+  PartyMember.cc
 )
Index: /code/branches/gamecontent/src/orxonox/interfaces/PartyMember.cc
===================================================================
--- /code/branches/gamecontent/src/orxonox/interfaces/PartyMember.cc	(revision 8942)
+++ /code/branches/gamecontent/src/orxonox/interfaces/PartyMember.cc	(revision 8942)
@@ -0,0 +1,72 @@
+/*
+ *   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:
+ *      Damian 'Mozork' Frick
+ *   Co-authors:
+ *      ...
+ *
+*/
+
+/**
+    @file PartyMember.cc
+    @brief Implementation of the PartyMember class.
+*/
+
+#include "OrxonoxPrereqs.h"
+
+#include "core/CoreIncludes.h"
+
+#include "PartyMember.h"
+
+namespace orxonox
+{
+
+    /**
+    @brief
+        Constructor. Registers the object.
+    */
+    PartyMember::PartyMember()
+    {
+        RegisterRootObject(PartyMember);
+        this->team_ = -1;
+    }
+
+    /**
+    @brief
+        Destructor.
+    */
+    PartyMember::~PartyMember()
+    {
+
+    }
+
+    /**
+    @brief
+        Static method that is used to notify the PartyMember itself of the change in the used status of a Pickupable.
+        This is called in Pickupable.
+    @param pickup
+        The Pickupable that has changed its used status.
+    @param used
+        Thse value the status has changed to.
+    */
+
+}
Index: /code/branches/gamecontent/src/orxonox/interfaces/PartyMember.h
===================================================================
--- /code/branches/gamecontent/src/orxonox/interfaces/PartyMember.h	(revision 8941)
+++ /code/branches/gamecontent/src/orxonox/interfaces/PartyMember.h	(revision 8942)
@@ -52,5 +52,5 @@
         public:
             PartyMember();
-            virtual ~PartyMember() {}
+            virtual ~PartyMember();
 
             /**
Index: /code/branches/gamecontent/src/orxonox/worldentities/pawns/Pawn.cc
===================================================================
--- /code/branches/gamecontent/src/orxonox/worldentities/pawns/Pawn.cc	(revision 8941)
+++ /code/branches/gamecontent/src/orxonox/worldentities/pawns/Pawn.cc	(revision 8942)
@@ -60,4 +60,5 @@
         this->bReload_ = false;
 
+        this->team_ = -1;
         this->health_ = 0;
         this->maxHealth_ = 0;
@@ -110,4 +111,6 @@
         SUPER(Pawn, XMLPort, xmlelement, mode);
 
+        XMLPortParam(Pawn, "team", setTeam, getTeam, xmlelement, mode).defaultValues(-1);
+
         XMLPortParam(Pawn, "health", setHealth, getHealth, xmlelement, mode).defaultValues(100);
         XMLPortParam(Pawn, "maxhealth", setMaxHealth, getMaxHealth, xmlelement, mode).defaultValues(200);
@@ -129,4 +132,6 @@
         XMLPortParam(Pawn, "reloadrate", setReloadRate, getReloadRate, xmlelement, mode).defaultValues(0);
         XMLPortParam(Pawn, "reloadwaittime", setReloadWaitTime, getReloadWaitTime, xmlelement, mode).defaultValues(1.0f);
+
+
     }
 
Index: /code/branches/gamecontent/src/orxonox/worldentities/pawns/Pawn.h
===================================================================
--- /code/branches/gamecontent/src/orxonox/worldentities/pawns/Pawn.h	(revision 8941)
+++ /code/branches/gamecontent/src/orxonox/worldentities/pawns/Pawn.h	(revision 8942)
@@ -35,4 +35,5 @@
 #include "interfaces/PickupCarrier.h"
 #include "interfaces/RadarViewable.h"
+#include "interfaces/PartyMember.h"
 #include "worldentities/ControllableEntity.h"
 
@@ -40,5 +41,5 @@
 { // tolua_export
     class _OrxonoxExport Pawn // tolua_export
-        : public ControllableEntity, public RadarViewable, public PickupCarrier
+        : public ControllableEntity, public RadarViewable, public PickupCarrier//, public PartyMember
     { // tolua_export
         friend class WeaponSystem;
@@ -53,4 +54,9 @@
             inline bool isAlive() const
                 { return this->bAlive_; }
+
+            inline void setTeam(int team)
+                { this->team_ = team; }
+            inline float getTeam() const
+                { return this->team_; }
 
             virtual void setHealth(float health);
@@ -194,4 +200,6 @@
                 { return NULL; }
 
+            int team_;
+
             float health_;
             float maxHealth_;
