RemoveExit()
************


FUNKTION
========

   void RemoveExit(string|string* cmd);


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

   /std/room/exits


ARGUMENTE
=========

   string/string* cmd
        Richtung(en), die entfernt werden sollen.


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

   Die in cmd angegebenen Ausgaenge werden wieder entfernt.

   Ist cmd = 0, so werden alle Ausgaenge entfernt.


BEMERKUNGEN
===========

   Ausgaenge werden an der gleichen Stelle gespeichert:
   - RemoveExit() greift auf die gleichen Daten wie RemoveSpecialExit()
     zu, entfernt also auch spezielle Ausgaenge!


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

   AddExit(), AddSpecialExit(), GetExits()
   RemoveSpecialExit(),
   H_HOOK_EXIT_USE, P_EXITS, P_HIDE_EXITS, /std/room/exits.c
   ausgaenge

31.01.2015, Zesstra
