def METHOD_NAME(self, new_position, waypoint_completed, remaining_waypoints):
    super().METHOD_NAME(new_position, waypoint_completed, remaining_waypoints)
    # Always update home position.
    self.unit.spawn_position = new_position.copy()
    if not waypoint_completed:
        return
    current_wp = self._get_waypoint()
    if self._should_use_facing(current_wp):
        self.unit.movement_manager.face_angle(current_wp.orientation)
    if current_wp.script_id:
        self.unit.get_map().enqueue_script(source=self.unit, target=self.unit,
                                           script_type=ScriptTypes.SCRIPT_TYPE_CREATURE_MOVEMENT,
                                           script_id=current_wp.script_id)
    # If this is a default behavior, make it cyclic.
    if self.should_repeat:
        self._waypoint_push_back()
    # Not default, pop.
    else:
        self.waypoints.remove(current_wp)