Index: /branches/presentation/src/lib/collision_reaction/cr_physics_ground_walk.cc
===================================================================
--- /branches/presentation/src/lib/collision_reaction/cr_physics_ground_walk.cc	(revision 9064)
+++ /branches/presentation/src/lib/collision_reaction/cr_physics_ground_walk.cc	(revision 9065)
@@ -102,5 +102,5 @@
           Vector dirX = entity->getAbsDirX(); dirX.y = 0.0f; dirX.normalize();
           Vector backoff = dirX * front;
-          
+
           entity->setAbsCoor(entity->getLastAbsCoor());
          // entity->shiftCoor(backoff);
@@ -112,5 +112,5 @@
         }
         break;
-        
+
       case COLLISION_TYPE_AXIS_X_NEG:
         front = collPos.len() - box->halfLength[0]; // should be [0]
@@ -121,5 +121,5 @@
           Vector dirX = entity->getAbsDirX(); dirX.y = 0.0f; dirX.normalize();
           Vector backoff = dirX * front * -1.0f;
-          
+
           entity->setAbsCoor(entity->getLastAbsCoor());
          // entity->shiftCoor(backoff);
@@ -134,5 +134,5 @@
 
         // collision in the y-axis
-      case COLLISION_TYPE_AXIS_Y_NEG:
+      case COLLISION_TYPE_AXIS_Y:
         // calulate the height above ground
         height = collPos.y - box->halfLength[1];
@@ -179,6 +179,6 @@
         }
         break;
-        
-        
+
+
          // collision in the z-axis
       case COLLISION_TYPE_AXIS_Z_NEG:
@@ -189,5 +189,5 @@
         if( side <= 0.0f )
         {
-         
+
           Vector dirZ = entity->getAbsDirZ(); dirZ.y = 0.0f; dirZ.normalize();
           Vector backoff = dirZ * side*-1.0f;
Index: /branches/presentation/src/lib/graphics/importer/bsp_manager.cc
===================================================================
--- /branches/presentation/src/lib/graphics/importer/bsp_manager.cc	(revision 9064)
+++ /branches/presentation/src/lib/graphics/importer/bsp_manager.cc	(revision 9065)
@@ -985,4 +985,9 @@
 
 
+  plane* testPlane;
+
+  bool xCollision = false;
+  bool zCollision = false;
+
 
   float height = 40;
@@ -998,5 +1003,5 @@
     dest1     = worldEntity->getAbsCoor() +  box->center + dirX * (box->halfLength[0]  + BSP_X_OFFSET);
     dest2     = worldEntity->getAbsCoor() -  box->center + dirX * (box->halfLength[0]  + BSP_X_OFFSET);
-    
+
     Vector dirZ =  worldEntity->getAbsDirZ(); dirX.y = 0.0f; dirZ.normalize();
     //position2 = worldEntity->getAbsCoor() +  box->center - dirZ * (box->halfLength[2]  + BSP_Z_OFFSET);
@@ -1009,10 +1014,6 @@
 
 
-//   PRINTF(0)("x and v\n");
-//   worldEntity->getAbsDirX().debug();
-//   worldEntity->getAbsDirV().debug();
-
-
-  // 1st Ray
+
+  // 1st Ray: Y RAY
   this->inputStart =  position;
   this->inputEnd =   dest;
@@ -1052,18 +1053,14 @@
       this->out = out;
     }
-
-
-  }
-
-  plane* testPlane = this->collPlane;
-
-  bool xCollision = false;
-  bool zCollision = false;
+  }
+    testPlane = this->collPlane;
+
+
   bool xCollisionNeg = false;
   bool zCollisionNeg = false;
-  
-
-
-    // 2nd Collision Detection
+
+
+
+    // 2nd Collision Detection X-RAY
     this->outputStartsOut = true;
     this->outputAllSolid = false;
@@ -1093,5 +1090,5 @@
 
 
-      // 3rd Collision Detection
+      // 3rd Collision Detection Z-RAY
       this->outputStartsOut = true;
       this->outputAllSolid = false;
@@ -1121,26 +1118,17 @@
       }
 
-  //end if
-  /*
-  This is how you would calculate the Coordinates where worldEntity Collided with the BSP world.
-  out.x = position1.x + (dest.x -position1.x) * this->outputFraction;
-  out.z = position1.z + (dest.z -position1.z) * this->outputFraction;
-  */
-
 
   // Return the normal here: Normal's stored in this->collPlane;
   if( collision) {
-    worldEntity->registerCollision(COLLISION_TYPE_AXIS_Y_NEG , this->parent, worldEntity, Vector(testPlane->x, testPlane->y, testPlane->z), out, SolidFlag);
+    worldEntity->registerCollision(COLLISION_TYPE_AXIS_Y , this->parent, worldEntity, Vector(testPlane->x, testPlane->y, testPlane->z), out, SolidFlag);
 }
   if(xCollision) {
     worldEntity->registerCollision(COLLISION_TYPE_AXIS_X , this->parent, worldEntity, Vector(testPlane->x, testPlane->y, testPlane->z),dest1 , SolidFlag);
   }
-  
+
   if(zCollision) {
     worldEntity->registerCollision(COLLISION_TYPE_AXIS_Z , this->parent, worldEntity, Vector(testPlane->x, testPlane->y, testPlane->z), dest2 , SolidFlag);
   }
 
-
-  //else  worldEntity->registerCollision(COLLISION_TYPE_AXIS_Y, this->parent, worldEntity, Vector(0.0, 2.0, 0.0), dest, false);
 
 }
Index: /branches/presentation/src/world_entities/npcs/generic_npc.cc
===================================================================
--- /branches/presentation/src/world_entities/npcs/generic_npc.cc	(revision 9064)
+++ /branches/presentation/src/world_entities/npcs/generic_npc.cc	(revision 9065)
@@ -93,5 +93,5 @@
 
   // collision reaction registration
-//   this->subscribeReaction(CREngine::CR_PHYSICS_GROUND_WALK, CL_BSP_ENTITY);
+   this->subscribeReaction(CREngine::CR_PHYSICS_GROUND_WALK, CL_BSP_ENTITY);
 }
 
@@ -194,5 +194,7 @@
 void GenericNPC::resume()
 {
-  //if()
+  if( this->animationStack.size() == 0)
+    return;
+
   delete this->behaviourList;
   this->behaviourList = this->animationStack.top();
@@ -518,4 +520,5 @@
       {
         Vector dest = currentAnimation.v - this->getAbsCoor();
+        dest.y = 0.0f;
         if (dest.len() < .5)
           this->nextStep();
@@ -530,4 +533,5 @@
       {
         Vector dest = currentAnimation.v - this->getAbsCoor();
+        dest.y = 0.0f;
         if (dest.len() < .5)
           this->nextStep();
