+ mode = NORMAL;
+ animation_offset = 0;
+ target.x = target.y = -1;
+ physic.reset();
+ frozen_timer.init(true);
+ timer.init(true);
+
+ dir = activation_dir;
+ float dirsign = activation_dir == LEFT ? -1 : 1;
+
+ if(kind == BAD_MRBOMB) {
+ physic.set_velocity(dirsign * BADGUY_WALK_SPEED, 0);
+ set_sprite(img_mrbomb_left, img_mrbomb_right);
+ } else if (kind == BAD_MRICEBLOCK) {
+ physic.set_velocity(dirsign * BADGUY_WALK_SPEED, 0);
+ set_sprite(img_mriceblock_left, img_mriceblock_right);
+ } else if(kind == BAD_JUMPY) {
+ set_sprite(img_jumpy_left_up, img_jumpy_left_up);
+ } else if(kind == BAD_BOMB) {
+ set_sprite(img_mrbomb_ticking_left, img_mrbomb_ticking_right);
+ // hack so that the bomb doesn't hurt until it expldes...
+ dying = DYING_SQUISHED;
+ } else if(kind == BAD_FLAME) {
+ angle = 0;
+ physic.enable_gravity(false);
+ set_sprite(img_flame, img_flame);
+ } else if(kind == BAD_BOUNCINGSNOWBALL) {
+ physic.set_velocity(dirsign * 1.3, 0);
+ set_sprite(img_bouncingsnowball_left, img_bouncingsnowball_right);
+ } else if(kind == BAD_STALACTITE) {
+ physic.enable_gravity(false);
+ set_sprite(img_stalactite, img_stalactite);
+ } else if(kind == BAD_FISH) {
+ set_sprite(img_fish, img_fish);
+ physic.enable_gravity(true);
+ } else if(kind == BAD_FLYINGSNOWBALL) {
+ set_sprite(img_flyingsnowball, img_flyingsnowball);
+ physic.enable_gravity(false);
+ } else if(kind == BAD_SPIKY) {
+ physic.set_velocity(dirsign * BADGUY_WALK_SPEED, 0);
+ set_sprite(img_spiky_left, img_spiky_right);
+ } else if(kind == BAD_SNOWBALL) {
+ physic.set_velocity(dirsign * BADGUY_WALK_SPEED, 0);
+ set_sprite(img_snowball_left, img_snowball_right);
+ } else if(kind == BAD_WINGLING) {
+ physic.set_velocity(dirsign * WINGLING_FLY_SPEED, 0);
+ physic.enable_gravity(false);
+ set_sprite(img_wingling_left, img_wingling_left);
+ } else if (kind == BAD_WALKINGTREE) {
+ // TODO: why isn't the height/width being set properly in set_sprite?
+ physic.set_velocity(dirsign * BADGUY_WALK_SPEED, 0);
+ mode = BGM_BIG;
+ set_sprite(img_walkingtree_left, img_walkingtree_left);
+ base.width = 66;
+ base.height = 66;
+ }
+
+ base.x = start_position.x;
+ base.y = start_position.y;
+ old_base = base;
+ seen = true;
+}