
trigger_sensitive_inv()
***********************


FUNKTION
========

   varargs void trigger_sensitive_inv(object ob, string key, int wert,
   mixed *optionen1, mixed *optionen2);


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

   eigenen Objekten, wird aufgerufen von /std/container/inventory.c


ARGUMENTE
=========

   ob
        Das ausloesende Objekt
   key
        Der Schluessel, der die Aktion ausloeste.
   wert
        Der Grenzwert des ausloesenden Objektes.
   optionen1
        Die Optionen des ausloesenden Objektes.
   optionen2
        Die Optionen des reagierenden Objektes.


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

   Diese Funktion wird in Objekten des sensitiven Typs SENSITIVE_INVENTORY
   aufgerufen, wenn sie in Kontakt mit Objekten des Typs
   SENSITIVE_INVENTORY_TRIGGER treten, die den gleichen Schluessel
   aufweisen und einen hoeheren Grenzwert haben.

   Anhand der Parameter koennen dann die noetigen Aktionen ausgeloest
   werden.


RUeCKGABEWERT
=============

   keiner


BEISPIELE
=========


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

   trigger_sensitive_attack(), sensitive Objekte

Last modified: Wed May 8 10:26:10 1996 by Wargon
