Index: /code/branches/presentation/src/orxonox/objects/gametypes/Gametype.cc
===================================================================
--- /code/branches/presentation/src/orxonox/objects/gametypes/Gametype.cc	(revision 2493)
+++ /code/branches/presentation/src/orxonox/objects/gametypes/Gametype.cc	(revision 2494)
@@ -169,4 +169,21 @@
     void Gametype::pawnKilled(Pawn* victim, Pawn* killer)
     {
+        if (victim && victim->getPlayer())
+        {
+            std::string message;
+            if (killer)
+            {
+                if (killer->getPlayer())
+                    message = victim->getPlayer()->getName() + " was killed by " + killer->getPlayer()->getName();
+                else
+                    message = victim->getPlayer()->getName() + " was killed";
+            }
+            else
+                message = victim->getPlayer()->getName() + " died";
+
+            COUT(0) << message << std::endl;
+            Host::Broadcast(message);
+        }
+
         if (victim && victim->getPlayer())
         {
Index: /code/branches/presentation/src/orxonox/objects/weaponSystem/projectiles/Projectile.cc
===================================================================
--- /code/branches/presentation/src/orxonox/objects/weaponSystem/projectiles/Projectile.cc	(revision 2493)
+++ /code/branches/presentation/src/orxonox/objects/weaponSystem/projectiles/Projectile.cc	(revision 2494)
@@ -40,4 +40,6 @@
 #include "objects/worldentities/Model.h"
 #include "objects/worldentities/ParticleSpawner.h"
+#include "objects/worldentities/pawns/Pawn.h"
+#include "objects/collisionshapes/SphereCollisionShape.h"
 #include "core/Core.h"
 
@@ -49,21 +51,15 @@
 
         this->setConfigValues();
-        this->explosionTemplateName_ = "Orxonox/explosion3";
-        this->smokeTemplateName_ = "Orxonox/smoke4";
-
-        //this->setStatic(false);
-//        this->translate(Vector3(55, 0, 0), Ogre::Node::TS_LOCAL);
+        this->bDestroy_ = false;
+        this->owner_ = 0;
 
         // Get notification about collisions
         this->enableCollisionCallback();
 
-        /*
-        if (this->owner_)
-        {
-            this->setOrientation(this->owner_->getOrientation());
-            this->setPosition(this->owner_->getPosition());
-            this->setVelocity(this->owner_->getInitialDir() * this->speed_);
-        }
-        */
+        this->setCollisionType(Kinematic);
+
+        SphereCollisionShape* shape = new SphereCollisionShape(this);
+        shape->setRadius(10);
+        this->attachCollisionShape(shape);
 
         if(!Core::isClient()) //only if not on client
@@ -88,34 +84,7 @@
         if (!this->isActive())
             return;
-/*
-        float radius;
-        for (ObjectList<Model>::iterator it = ObjectList<Model>::begin(); it; ++it)
-        {
-//            if ((*it) != this->owner_)
-            {
-                radius = it->getScale3D().x * 3.0;
 
-                if (this->getPosition().squaredDistance(it->getPosition()) <= (radius*radius))
-                {
-                    // hit
-                    ParticleSpawner* explosion = new ParticleSpawner(this);
-                    explosion->setSource(this->explosionTemplateName_);
-                    explosion->setLOD(LODParticle::low);
-                    explosion->configure(2.0);
-                    explosion->setPosition(this->getPosition());
-                    explosion->create();
-                    ParticleSpawner* smoke = new ParticleSpawner(this);
-                    smoke->setSource(this->smokeTemplateName_);
-                    smoke->setLOD(LODParticle::normal);
-                    smoke->configure(2.0, 0.0);
-                    smoke->setPosition(this->getPosition());
-//                    smoke->getParticleInterface()->setSpeedFactor(3.0);
-                    smoke->create();
-                    delete this;
-                    return;
-                }
-            }
-        }
-*/
+        if (this->bDestroy_)
+            delete this;
     }
 
@@ -124,3 +93,36 @@
         delete this;
     }
+
+    bool Projectile::collidesAgainst(WorldEntity* otherObject, btManifoldPoint& contactPoint)
+    {
+        if (!this->bDestroy_)
+        {
+            this->bDestroy_ = true;
+            Pawn* victim = dynamic_cast<Pawn*>(otherObject);
+            if (victim)
+                victim->damage(this->damage_, this->owner_);
+
+
+            if (this->owner_)
+            {
+                {
+                    ParticleSpawner* effect = new ParticleSpawner(this->owner_->getCreator());
+                    effect->setPosition(this->getPosition());
+                    effect->setOrientation(this->getOrientation());
+                    effect->setDestroyAfterLife(true);
+                    effect->setSource("Orxonox/explosion3");
+                    effect->setLifetime(2.0f);
+                }
+                {
+                    ParticleSpawner* effect = new ParticleSpawner(this->owner_->getCreator());
+                    effect->setPosition(this->getPosition());
+                    effect->setOrientation(this->getOrientation());
+                    effect->setDestroyAfterLife(true);
+                    effect->setSource("Orxonox/smoke4");
+                    effect->setLifetime(3.0f);
+                }
+            }
+        }
+        return false;
+    }
 }
Index: /code/branches/presentation/src/orxonox/objects/weaponSystem/projectiles/Projectile.h
===================================================================
--- /code/branches/presentation/src/orxonox/objects/weaponSystem/projectiles/Projectile.h	(revision 2493)
+++ /code/branches/presentation/src/orxonox/objects/weaponSystem/projectiles/Projectile.h	(revision 2494)
@@ -40,20 +40,23 @@
     {
         public:
+            Projectile(BaseObject* creator);
             virtual ~Projectile();
+
             void setConfigValues();
             void destroyObject();
+
             virtual void tick(float dt);
+            virtual bool collidesAgainst(WorldEntity* otherObject, btManifoldPoint& contactPoint);
 
-        protected:
-            Projectile(BaseObject* creator);
+            inline void setOwner(Pawn* owner)
+                { this->owner_ = owner; }
+            inline Pawn* getOwner() const
+                { return this->owner_; }
 
         private:
-            std::string explosionTemplateName_;
-            std::string smokeTemplateName_;
-        protected:
-            float speed_;
-        private:
+            Pawn* owner_;
             float lifetime_;
             float damage_;
+            bool bDestroy_;
             Timer<Projectile> destroyTimer_;
     };
Index: /code/branches/presentation/src/orxonox/objects/weaponSystem/weapons/Fusion.cc
===================================================================
--- /code/branches/presentation/src/orxonox/objects/weaponSystem/weapons/Fusion.cc	(revision 2493)
+++ /code/branches/presentation/src/orxonox/objects/weaponSystem/weapons/Fusion.cc	(revision 2494)
@@ -73,4 +73,5 @@
         projectile->setPosition(this->getWorldPosition());
         projectile->setVelocity(this->getWorldOrientation() * WorldEntity::FRONT * this->speed_);
+        projectile->setOwner(this->getParentWeaponSystem()->getParentPawn());
     }
 }
Index: /code/branches/presentation/src/orxonox/objects/weaponSystem/weapons/LaserGun.cc
===================================================================
--- /code/branches/presentation/src/orxonox/objects/weaponSystem/weapons/LaserGun.cc	(revision 2493)
+++ /code/branches/presentation/src/orxonox/objects/weaponSystem/weapons/LaserGun.cc	(revision 2494)
@@ -73,4 +73,5 @@
         projectile->setPosition(this->getWorldPosition());
         projectile->setVelocity(this->getWorldOrientation() * WorldEntity::FRONT * this->speed_);
+        projectile->setOwner(this->getParentWeaponSystem()->getParentPawn());
     }
 }
Index: /code/branches/presentation/src/orxonox/objects/worldentities/WorldEntity.cc
===================================================================
--- /code/branches/presentation/src/orxonox/objects/worldentities/WorldEntity.cc	(revision 2493)
+++ /code/branches/presentation/src/orxonox/objects/worldentities/WorldEntity.cc	(revision 2494)
@@ -498,4 +498,5 @@
     void WorldEntity::setScale3D(const Vector3& scale)
     {
+/*
         if (this->hasPhysics() && scale != Vector3::UNIT_SCALE)
         {
@@ -503,5 +504,5 @@
             return;
         }
-
+*/
         this->node_->setScale(scale);
 
