SetDoorStatus()
***************


FUNKTION
========

   void SetDoorStatus(string dest, int status);


DEFINIERT IN
============

   /obj/doormaster.c


ARGUMENTE
=========

   <dest>   = Zielraum der Tuer.
   <status> = Der neue Zustand der Tuer.


BESCHREIBUNG
============

   Der Zustand der Tuer, die von diesem Raum nach <dest> fuehrt, wird auf
   <status> geaendert. Hierbei muss <status> einer der drei folgenden Werte
   aus <doorroom.h> sein:

     D_STATUS_LOCKED - Tuer abgeschlossen
     D_STATUS_CLOSED - Tuer geschlossen
     D_STATUS_OPEN   - Tuer geoeffnet


RUECKGABEWERT
=============

   keiner


SIEHE AUCH
==========

   NewDoor(), QueryDoorKey(), QueryDoorStatus(), P_DOOR_INFOS,
   /std/room/doors.c, /obj/doormaster.c, GetPhiolenInfos(), QueryAllDoors()

Letzte Aenderung: Don, 08.05.2014, Gabylon
