+Yeti::kill_squished(GameObject& object)
+{
+ Player* player = dynamic_cast<Player*>(&object);
+ if (player) {
+ player->bounce(*this);
+ take_hit(*player);
+ }
+}
+
+void Yeti::take_hit(Player& )
+{
+ if(safe_timer.started())
+ return;
+
+ sound_manager->play("sounds/yeti_roar.wav");
+ hit_points--;
+
+ if(hit_points <= 0) {
+ // We're dead
+ physic.enable_gravity(true);
+ physic.set_velocity_x(0);
+ physic.set_velocity_y(0);
+
+ state = SQUISHED;
+ state_timer.start(SQUISH_TIME);
+ set_colgroup_active(COLGROUP_MOVING_ONLY_STATIC);
+ sprite->set_action("dead");
+
+ if (countMe) Sector::current()->get_level()->stats.badguys++;
+
+ if(dead_script != "") {
+ std::istringstream stream(dead_script);
+ Sector::current()->run_script(stream, "Yeti - dead-script");
+ }
+ }
+ else {
+ safe_timer.start(SAFE_TIME);
+ }
+}
+
+void
+Yeti::kill_fall()
+{
+ // shooting bullets or being invincible won't work :)
+ //take_hit(*get_nearest_player()); // FIXME: debug only(?)
+}
+
+void
+Yeti::write(lisp::Writer& writer)