update
[supertux.git] / src / badguy.c
index fc0b310..29f19c1 100644 (file)
@@ -140,7 +140,7 @@ void badguy_action(bad_guy_type* pbad)
 
               /* Move left/right: */
 
-              if (pbad->mode != HELD)
+              if (pbad->mode == NORMAL || pbad->mode == KICK)
                 {
                   if (pbad->dying == NO ||
                       pbad->dying == FALLING)
@@ -331,7 +331,10 @@ void badguy_action(bad_guy_type* pbad)
   if (pbad->mode == FLAT && pbad->mode != HELD)
     {
       if(!timer_check(&pbad->timer))
+      {
         pbad->mode = NORMAL;
+        pbad->base.xm = 4;
+        }
     }
   else if (pbad->mode == KICK)
     {
@@ -568,8 +571,10 @@ void badguy_collision(bad_guy_type* pbad, void *p_c_object, int c_object)
       break;
     case CO_BADGUY:
       pbad_c = (bad_guy_type*) p_c_object;
-      if (pbad->mode != FLAT)
-        pbad->dir = !pbad->dir;
+      if (pbad->mode == NORMAL)
+      {
+      /* do nothing */
+      }
       else
         {
           /* We're in kick mode, kill the other guy: */
@@ -581,7 +586,6 @@ void badguy_collision(bad_guy_type* pbad, void *p_c_object, int c_object)
           add_score(pbad->base.x - scroll_x,
                     pbad->base.y, 100);
         }
-      pbad->dir = !pbad->dir;
       break;
     case CO_PLAYER:
       pplayer_c = (player_type*) p_c_object;
@@ -593,6 +597,7 @@ void badguy_collision(bad_guy_type* pbad, void *p_c_object, int c_object)
               timer_start(&pbad->timer,4000);
               physic_set_state(&pplayer_c->vphysic,PH_VT);
               physic_set_start_vy(&pplayer_c->vphysic,2.);
+             pplayer_c->base.y = pbad->base.y - pplayer_c->base.height;
 
               add_score(pbad->base.x - scroll_x, pbad->base.y,
                         50 * score_multiplier);
@@ -602,7 +607,7 @@ void badguy_collision(bad_guy_type* pbad, void *p_c_object, int c_object)
           else if (pbad->kind == BAD_LAPTOP)
             {
 
-              if (pbad->mode != KICK)
+              if (pbad->mode == NORMAL || pbad->mode == KICK)
                 {
                   /* Flatten! */
 
@@ -614,8 +619,9 @@ void badguy_collision(bad_guy_type* pbad, void *p_c_object, int c_object)
 
                   physic_set_state(&pplayer_c->vphysic,PH_VT);
                   physic_set_start_vy(&pplayer_c->vphysic,2.);
+                 pplayer_c->base.y = pbad->base.y - pplayer_c->base.height;
                 }
-              else
+              else if (pbad->mode == FLAT)
                 {
                   /* Kick! */
 
@@ -633,7 +639,8 @@ void badguy_collision(bad_guy_type* pbad, void *p_c_object, int c_object)
 
               physic_set_state(&pplayer_c->vphysic,PH_VT);
               physic_set_start_vy(&pplayer_c->vphysic,2.);
-
+             pplayer_c->base.y = pbad->base.y - pplayer_c->base.height;
+             
               add_score(pbad->base.x - scroll_x,
                         pbad->base.y,
                         25 * score_multiplier);