RemoveSensitiveObject()
FUNKTION:
     void RemoveSensitiveObject(object ob)

DEFINIERT IN:
     /std/container/inventory.c
     generalizes /std/living/inventory.c

ARGUMENTE:
     ob - zu entfernendes Objekt

BESCHREIBUNG:
     Entfernt ob aus den Benachrichtigungslisten des Containers.
     Wird von thing/moving.c im alten Environment gerufen, wenn
     P_SENSITIVE gesetzt ist.
     Ruft dazu RemoveSensitiveObjectFromList().

BEMERKUNGEN:
     Setzt man P_SENSITIVE nicht als Default sondern situationsabhaengig,
     dann muss man auch RemoveSensitiveObject im Environment
     auch selbst rufen!

BEISPIEL:
     // Fackel (inheriting lightsource)
     void create() {
     ...
       SetProp(P_SENSITIVE,
        ({({SENSITIVE_INVENTORY_TRIGGER,DT_FIRE,120})}));
     ...
     }

     // wenn die Fackel geloescht wird, verliert sie ihre aktive
     // Eigenschaft und muss das dem environment() mitteilen
     static int extinguish(string str) {
      int i;
      i=::extinguish(str);
      if(i && QueryProp(P_LIGHT)<=0) {
       SetProp(P_SENSITIVE,0);
       if(environment())
        environment()->RemoveSensitiveObject(this_object());
      }
      return i;
     }

     - empfindliche Objekte wie Eiszapfen koennen jetzt wieder gefahrlos
       in das selbe environment() bewegt werden

SIEHE AUCH:
     P_SENSITIVE
     InsertSensitiveObject
     insert_sensitive_inv_trigger, insert_sensitive_inv
     P_SENSITIVE_ATTACK, P_SENSITIVE_INVENTORY, P_SENSITIVE_INVENTORY_TRIGGER
     CheckSensitiveAttack

25.Apr.2001, Gloinson@MG

