}
// BadGuy fall below the ground
- if (base.y > screen->h) {
+ if (base.y > World::current()->get_level()->height * 32) {
remove_me();
return;
}
+ // Kill us if we landed on spikes
+ if (dying == DYING_NOT
+ && (kind != BAD_STALACTITE && kind != BAD_FLAME && kind != BAD_BOMB)
+ && (isspike(base.x, base.y) || isspike(base.x + base.width, base.y)
+ || isspike(base.x, base.y + base.height)
+ || isspike(base.x + base.width, base.y + base.height)))
+ {
+ physic.set_velocity_y(3);
+ kill_me(0);
+ }
+
// Once it's on screen, it's activated!
if (base.x <= scroll_x + screen->w + OFFSCREEN_DISTANCE)
seen = true;
{
make_player_jump(player);
- World::current()->add_score(base.x,
- base.y, 50 * player_status.score_multiplier);
+ World::current()->add_score(Vector(base.x, base.y),
+ 50 * player_status.score_multiplier);
play_sound(sounds[SND_SQUISH], SOUND_CENTER_SPEAKER);
player_status.score_multiplier++;
World::current()->add_bad_guy(base.x, base.y, BAD_BOMB);
make_player_jump(player);
- World::current()->add_score(base.x, base.y, 50 * player_status.score_multiplier);
+ World::current()->add_score(Vector(base.x, base.y),
+ 50 * player_status.score_multiplier);
play_sound(sounds[SND_SQUISH], SOUND_CENTER_SPEAKER);
player_status.score_multiplier++;
remove_me();
make_player_jump(player);
- World::current()->add_score(base.x, base.y, 25 * player_status.score_multiplier);
+ World::current()->add_score(Vector(base.x, base.y),
+ 25 * player_status.score_multiplier);
player_status.score_multiplier++;
// simply remove the fish...
physic.enable_gravity(true);
/* Gain some points: */
- World::current()->add_score(base.x, base.y,
- score * player_status.score_multiplier);
+ if (score != 0)
+ World::current()->add_score(Vector(base.x, base.y),
+ score * player_status.score_multiplier);
/* Play death sound: */
play_sound(sounds[SND_FALL], SOUND_CENTER_SPEAKER);
physic.set_velocity_x(fabsf(physic.get_velocity_x()));
// in case badguys get "jammed"
- base.x = pbad_c->base.x + pbad_c->base.width;
+ if (physic.get_velocity_x() != 0)
+ base.x = pbad_c->base.x + pbad_c->base.width;
}
else if (dir == RIGHT)
{