
     **********************************************************
     *  ACHTUNG: EFUN EXISTIERT NICHT MEHR! NICHT VERWENDEN!  *
     **********************************************************

SYNOPSIS
	void efun308(object item, object env)

DESCRIPTION
	The item is moved into its new environment env, which may be 0.
	This efun is to be used in the move_object() hook, as it does
	nothing else than moving the item - no calls to init() or such.

	Don't use it in your own objects!

HISTORY
	Introduced in 3.2.1@1
  renamed to 'set_environment()' in LDMud 3.2.6 and LP "03.02.1@150".
  Since LDMud 3.2.9, not available if driver is compiled without
    USE_DEPRECATED.
  Removed in LDMud 3.3 and LP "03.02.1@150".

SEE ALSO
	remove(A), init(A), move_object(E), transfer(E), hooks(C),
	native(C)

29.10.2006 Zesstra