// MorgenGrauen MUDlib
//
// def_workroom.c -- standard workroom for new wizards
//
// $Id: def_workroom.c 7423 2010-02-07 22:56:38Z Zesstra $

#pragma strong_types,save_types,rtt_checks
#pragma range_check

inherit "/std/room";

#include <properties.h>

protected void create()
{
  string WIZNAME;

  ::create();
  WIZNAME = capitalize(getuid(this_object()));

  SetProp( P_LIGHT, 1 );
  SetProp( P_INT_SHORT, "Der Arbeitsraum von "+WIZNAME );
  SetProp( P_INT_LONG,
   "Dieses ist der Arbeitsraum von "+WIZNAME+". Es liegen vollgeschriebene\n"
  +"Zettel auf dem Boden, die Waende sind mit Kreidezeichen zugekritzelt.\n"
  +"Man merkt, dass dieser Raum dafuer da ist, dass "+WIZNAME+" fuer sich\n"
  +"ungestoert arbeiten kann. Ein magisches Portal fuehrt in die Welt\n"
  +"der Sterblichen.\n"
	  );
  SetProp(P_INDOORS,1);
  AddDetail( ({ "portal", "portale" }), 
	    "Das Portal fuehrt in die Abenteurer-gilde.\n" );
  AddDetail( ({ "raum", "arbeitsraum" }),
	     "Du befindest Dich mittendrin.\n" );
  AddDetail( "zettel",
	     "Die Zettel sind mit unleserlichen Zeichen vollgeschrieben.\n" );
  AddDetail( ({ "boden", "fussboden" }),
	     "Der Fussboden ist bedeckt mit vollgeschriebenen Zetteln.\n" );
  AddDetail( ({ "wand", "waende" }),
	     "An den Waenden befinden sich Kreidezeichen.\n" );
  AddDetail( ({ "kreide", "kreidezeichen", "zeichen" }),
	    "Die Zeichen ergeben nur fuer " + WIZNAME + " einen Sinn.\n" );
  AddDetail( "portal",
	     "Das Portal fuehrt in die Welt der Sterblichen.\n" );
  AddExit("gilde","in die Gilde#/gilden/abenteurer");
}
