+MrBomb::MrBomb(const Reader& reader) :
+ WalkingBadguy(reader, "images/creatures/mr_bomb/mr_bomb.sprite", "left", "right"),
+ grabbed()
+{
+ walk_speed = 80;
+ max_drop_height = 16;
+ grabbed = false;
+
+ //Prevent stutter when Tux jumps on Mr Bomb
+ sound_manager->preload("sounds/explosion.wav");
+
+ //Check if we need another sprite
+ if( !reader.get( "sprite", sprite_name ) ){
+ return;
+ }
+ if( sprite_name == "" ){
+ sprite_name = "images/creatures/mr_bomb/mr_bomb.sprite";
+ return;
+ }
+ //Replace sprite
+ sprite = sprite_manager->create( sprite_name );
+}
+
+/* MrBomb created by a dispenser always gets default sprite atm.*/
+MrBomb::MrBomb(const Vector& pos, Direction d) :
+ WalkingBadguy(pos, d, "images/creatures/mr_bomb/mr_bomb.sprite", "left", "right"),
+ grabbed()
+{
+ walk_speed = 80;
+ max_drop_height = 16;
+ grabbed = false;
+ sound_manager->preload("sounds/explosion.wav");
+}
+
+HitResponse
+MrBomb::collision(GameObject& object, const CollisionHit& hit)
+{
+ if(grabbed)
+ return FORCE_MOVE;
+ return WalkingBadguy::collision(object, hit);
+}
+
+HitResponse
+MrBomb::collision_player(Player& player, const CollisionHit& hit)
+{
+ if(grabbed)
+ return FORCE_MOVE;
+ return WalkingBadguy::collision_player(player, hit);
+}
+
+bool
+MrBomb::collision_squished(GameObject& object)
+{
+ if(is_valid()) {
+ remove_me();
+ Sector::current()->add_object(new Bomb(get_pos(), dir, sprite_name ));
+ }
+ kill_squished(object);
+ return true;
+}