Minimal code for earthflower active ability.
[supertux.git] / src / badguy / badguy.cpp
index 0b397c9..609b352 100644 (file)
@@ -31,7 +31,6 @@ static const float SQUISH_TIME = 2;
 
 static const float X_OFFSCREEN_DISTANCE = 1280;
 static const float Y_OFFSCREEN_DISTANCE = 800;
-static const int LAYER_FALLING = 500;
 
 BadGuy::BadGuy(const Vector& pos, const std::string& sprite_name_, int layer_) :
   MovingSprite(pos, sprite_name_, layer_, COLGROUP_DISABLED),
@@ -273,11 +272,20 @@ BadGuy::collision(GameObject& other, const CollisionHit& hit)
 
     // hit from above?
     if (player->get_bbox().p2.y < (bbox.p1.y + 16)) {
+      if(player->is_stone()) {
+        kill_fall();
+        return FORCE_MOVE;
+      }
       if(collision_squished(*player)) {
         return FORCE_MOVE;
       }
     }
 
+    if(player->is_stone()) {
+      collision_solid(hit);
+      return FORCE_MOVE;
+    }
+
     return collision_player(*player, hit);
   }
 
@@ -411,7 +419,10 @@ BadGuy::kill_fall()
   physic.set_acceleration_y(0);
   physic.enable_gravity(true);
   set_state(STATE_FALLING);
-  layer = LAYER_FALLING;
+
+  // Set the badguy layer to be the foremost, so that
+  // this does not reveal secret tilemaps:
+  layer = Sector::current()->get_foremost_layer() + 1;
 
   // start dead-script
   run_dead_script();