Generic builder

parent user
object builder

var root name 'builder

eval
    .initialize();
    .add_command("@dig * to *", 'dig_to_cmd);
    .add_command("@dig *", 'dig_cmd);
.

method dig_cmd
    arg dummy1, name;
    var room;

    room = $room.spawn();
    room.set_vr_name(name);
    .tell("Created new room " + toliteral(room) + ".");
.

method dig_to_cmd
    arg dummy1, exitname, dummy2, roomname;
    var room, exit;

    if (roomname && roomname[1] == "$") {
	room = get_name(tosym(substr(roomname, 2)));
    } else {
	room = $room.spawn();
        room.set_vr_name(roomname);
	.tell("Created new room " + toliteral(room) + ".");
    }
    exit = $exit.spawn();
    exit.set_vr_name(exitname);
    catch ~perm {
	exit.attach(.location());
	exit.link(room);
    } with handler {
	exit.destroy();
	.tell("Couldn't make exit from here to " + toliteral(room) + ": Permission denied.");
	return;
    }
    .tell("Created exit \"" + exitname + "\" to room " + toliteral(room));
.