bool Monster::set_hit(Object *object, Status *status) { bool result = false; if (!m_invinsible) { result = Actor::set_hit(object); if (result) { set_lock_direction(true); // Move backwards if (get_reference() == Right) { set_speed(-get_attribute("move_speed"), 0); } else { set_speed(get_attribute("move_speed"), 0); } // Reduce hp m_curr_hp -= status->get_ap(); if (m_curr_hp <= 0) { set_perish(); } } } return result; }
bool Monster::set_hit(Object *object) { bool result = false; if (!m_invinsible && m_hit == HitNone) { result = Actor::set_hit(object); if (result) { set_lock_direction(true); // Move backwards and upwards if (get_reference() == Right) { set_speed(-get_attribute("move_speed"), 0); } else { set_speed(get_attribute("move_speed"), 0); } // Reduce hp // TODO: Get attackers attack power m_curr_hp--; if (m_curr_hp <= 0) { set_perish(); } } } return result; }
bool Player::set_hit(Object *object, Status *status) { bool result = false; if (!m_invisible) { result = Actor::set_hit(object); if (result) { set_lock_direction(true); // Move backwards and upwards if (m_dir == Right) { set_vx(-get_attribute("move_speed")); } else { set_vx(get_attribute("move_speed")); } if (m_in_water) { set_vy(-get_attribute("water_jump_speed")); } else { set_vy(-get_attribute("jump_speed")); } m_hit_ground = false; Monster *monster = (Monster *) object; if (status->set_hit(monster->get_attribute("ap")) && !status->use_potion()) { set_invisible(true); set_solid(false); set_perish(false); } else { // Make player invisible for a certain time set_invisible(true); } } } return result; }