SYNOPSIS
	void inaugurate_master(int arg)

DESCRIPTION
	This function is called in the master object after it has been
	created and is fully functional. Note that the create()
	function is of little use in the master object, because at the
	time it is called there is no simul_efun object yet, and the
	interpreter does not know anything about the user-ids and
	access permissions.

	The argument <arg> denotes why this function is called:
	  arg = 0: the mud just started, this is the first master of all.
	      = 1: the master was destructed and then reactivated
	           (because a new one couldn't be loaded).
	      = 2: the master was destructed and then reactivated, but
	           additionally lost all variable contents.
	      = 3: this is a reloaded master.

	This function has at least to set up the driverhooks to use
	(in 3.2.1). Also, any mudwho or wizlist handling has to be
	initialized here.

	Besides that, do whatever you feel you need to do, 
	e.g. set_auto_include_string(), or give the master a decent euid.

SEE ALSO
	initialisation(M), create(M), simul_efun(C), get_bb_id(M),
	get_root_id(M), get_master_uid(M), flag(M),
	reactivate_destructed_master(M)
