Changed Yeti behaviour. You must stun him (jump on him) when is under a falling stala...
[supertux.git] / src / badguy / jumpy.cpp
index 4d32164..8834090 100644 (file)
@@ -3,6 +3,8 @@
 #include "jumpy.h"
 
 static const float JUMPSPEED=600;
+static const float JUMPY_MID_TOLERANCE=8;
+static const float JUMPY_LOW_TOLERANCE=2;
 
 Jumpy::Jumpy(const lisp::Lisp& reader)
 {
@@ -41,6 +43,7 @@ Jumpy::hit(const CollisionHit& chit)
   // hit floor?
   if(chit.normal.y < -.5) {
     physic.set_velocity_y(JUMPSPEED);
+    SoundManager::get()->play_sound(IDToSound(SND_SKID));
   } else if(chit.normal.y < .5) { // bumped on roof
     physic.set_velocity_y(0);
   }
@@ -56,7 +59,13 @@ Jumpy::active_action(float elapsed_time)
   dir = Sector::current()->player->get_pos().x > get_pos().x
     ? RIGHT : LEFT;
     //FIXME: add middle and up here
-  sprite->set_action(dir == LEFT ? "left-down" : "right-down");
+  
+  if ( get_pos().y >= (start_position.y - JUMPY_MID_TOLERANCE) )
+    sprite->set_action(dir == LEFT ? "left-middle" : "right-middle");
+  else if ( get_pos().y >= (start_position.y - JUMPY_LOW_TOLERANCE) )
+    sprite->set_action(dir == LEFT ? "left-down" : "right-down");
+  else
+    sprite->set_action(dir == LEFT ? "left-up" : "right-up");
 }
 
 IMPLEMENT_FACTORY(Jumpy, "jumpy")