Index: /trunk/src/lib/graphics/importer/md2Model.cc
===================================================================
--- /trunk/src/lib/graphics/importer/md2Model.cc	(revision 7070)
+++ /trunk/src/lib/graphics/importer/md2Model.cc	(revision 7071)
@@ -157,5 +157,5 @@
   the animation types can be looked up in the animationType table
 */
-void MD2Model::setAnim(int type)
+void MD2Model::setAnim(int type, int animPlayback)
 {
   if( (type < 0) || (type > MAX_ANIMATIONS) )
@@ -174,4 +174,5 @@
   this->animationState.type = type;
   this->animationState.numPlays = 0;
+  this->animationState.animPlaybackMode = animPlayback;
 
   this->animationState.interpolationState = 0.0f;
@@ -315,5 +316,5 @@
     }
 
-  if( this->animationState.currentFrame > (this->data->numFrames - 1) )
+  if( this->animationState.currentFrame > (this->data->numFrames - 1) && this->animationState.animPlaybackMode == MD2_ANIM_LOOP)
     this->animationState.currentFrame = 0;
   if( this->animationState.nextFrame > (this->data->numFrames - 1) )
Index: /trunk/src/lib/graphics/importer/md2Model.h
===================================================================
--- /trunk/src/lib/graphics/importer/md2Model.h	(revision 7070)
+++ /trunk/src/lib/graphics/importer/md2Model.h	(revision 7071)
@@ -136,4 +136,6 @@
   int              nextFrame;            //!< the next frame in the list
   int              numPlays;             //!< the number of times, this has been played in series
+
+  int              animPlaybackMode;     //!< the playback mode
 } sAnimState;
 
@@ -168,4 +170,13 @@
 
 
+typedef enum animPlayback
+{
+  MD2_ANIM_LOOP = 0,
+  MD2_ANIM_ONCE,
+
+  MD2_ANIM_NUM
+};
+
+
 
 /* forward definitions */
@@ -219,5 +230,5 @@
 
 
-  void setAnim(int type);
+  void setAnim(int type, int animPlayback = MD2_ANIM_LOOP);
   /**  returns the current animation @returns animation type */
   inline int MD2Model::getAnim() { return this->animationState.type; }
Index: /trunk/src/lib/network/network_game_manager.cc
===================================================================
--- /trunk/src/lib/network/network_game_manager.cc	(revision 7070)
+++ /trunk/src/lib/network/network_game_manager.cc	(revision 7071)
@@ -558,5 +558,5 @@
       {
 
-        ss->loadModel("models/ships/reap_#.obj");
+        ss->loadModel("models/ships/reap_0.obj");
         ss->toList(OM_GROUP_00);
       }
Index: /trunk/src/story_entities/multi_player_world_data.cc
===================================================================
--- /trunk/src/story_entities/multi_player_world_data.cc	(revision 7070)
+++ /trunk/src/story_entities/multi_player_world_data.cc	(revision 7071)
@@ -141,7 +141,7 @@
     element = element->FirstChildElement();
 
-    while( element != NULL)
-    {
-      if( NetworkManager::getInstance()->isGameServer())
+    if( NetworkManager::getInstance()->isGameServer() )
+    {
+      while( element != NULL)
       {
         /* pass the entity to the NetworkGameManager to be created */
@@ -159,11 +159,43 @@
           CDEngine::getInstance()->setTerrain(terrain);
         }
+
+        element = element->NextSiblingElement();
+
+
+        glmis->step();
+        PRINTF(4)("Done loading NetworkWorldEntities\n");
       }
-      element = element->NextSiblingElement();
-
-
-      glmis->step();
-      PRINTF(4)("Done loading NetworkWorldEntities\n");
-    }
+    }
+    else
+    {
+      while( element != NULL)
+      {
+        PRINTF(0)("load: %s\n", element->Value());
+        if( !strcmp(element->Value(), "Terrain") || !strcmp(element->Value(), "Building")  )
+        {
+
+          /* pass the entity to the NetworkGameManager to be created */
+          BaseObject* created = Factory::fabricate(element);
+
+          if( created != NULL )
+            PRINTF(1)("Created a %s: %s (0x%8x) from %s\n", created->getClassName(), created->getName(), created->getLeafClassID(), element->Value());
+          else
+            PRINTF(1)("NetworkWorld: could not create this entity\n");
+
+          if( element->Value() != NULL && !strcmp( element->Value(), "SkyBox"))
+            this->sky = dynamic_cast<WorldEntity*>(created);
+          if( element->Value() != NULL && !strcmp( element->Value(), "Terrain"))
+          {
+            this->terrain = dynamic_cast<Terrain*>(created);
+            CDEngine::getInstance()->setTerrain(terrain);
+          }
+
+          glmis->step();
+          PRINTF(4)("Done loading NetworkWorldEntities\n");
+        }
+        element = element->NextSiblingElement();
+      }
+    }
+
 
     if( NetworkManager::getInstance()->isGameServer())
@@ -180,4 +212,5 @@
         playable = dynamic_cast<Playable*>(playableList->front());
         this->localPlayer->setPlayable(playable);
+        playable->toList(OM_GROUP_00);
       }
     }
Index: /trunk/src/world_entities/creatures/md2_creature.cc
===================================================================
--- /trunk/src/world_entities/creatures/md2_creature.cc	(revision 7070)
+++ /trunk/src/world_entities/creatures/md2_creature.cc	(revision 7071)
@@ -226,5 +226,4 @@
 {
   PRINTF(0)("Collided with the md2 model\n");
-  //entity->die();
 }
 
Index: /trunk/src/world_entities/test_entity.cc
===================================================================
--- /trunk/src/world_entities/test_entity.cc	(revision 7070)
+++ /trunk/src/world_entities/test_entity.cc	(revision 7071)
@@ -76,8 +76,8 @@
 
 
-void  TestEntity::setAnim(int animationIndex)
+void  TestEntity::setAnim(int animationIndex, int animPlaybackMode)
 {
   if( likely(this->getModel(0) != NULL))
-    ((MD2Model*)this->getModel(0))->setAnim(animationIndex);
+    ((MD2Model*)this->getModel(0))->setAnim(animationIndex, animPlaybackMode);
 }
 
@@ -92,5 +92,17 @@
 
 void TestEntity::collidesWith(WorldEntity* entity, const Vector& location)
-{}
+{
+  if( this->lastCollided != entity)
+  {
+    this->dieHard();
+    this->lastCollided = entity;
+  }
+}
 
 
+
+void TestEntity::dieHard()
+{
+  this->setAnim(DEATH_FALLBACK, MD2_ANIM_ONCE);
+}
+
Index: /trunk/src/world_entities/test_entity.h
===================================================================
--- /trunk/src/world_entities/test_entity.h	(revision 7070)
+++ /trunk/src/world_entities/test_entity.h	(revision 7071)
@@ -11,4 +11,5 @@
 class Material;
 class TiXmlElement;
+class WorldEntity;
 
 class TestEntity : public WorldEntity, public PhysicsInterface
@@ -24,5 +25,5 @@
   virtual void loadParams(const TiXmlElement* root);
 
-  void setAnim(int animationIndex);
+  void setAnim(int animationIndex, int animPlaybackMode);
 
   void dieHard();
@@ -37,4 +38,6 @@
   Material* material;
 
+  WorldEntity* lastCollided;
+
 };
 
