show_notify()
*************

show_notify()


FUNKTION
========

   void show_notify(object obj)


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

   beliebigen Objekten


ARGUMENTE
=========

   obj - dem Lebewesen gezeigtes Objekt


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

   keiner


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

   Diese Funktion wird automatisch immer dann aufgerufen, wenn einem
   Lebewesen (welches kein Spielercharakter ist) ein Objekt gezeigt wird.
   Will das Lebewesen auf so etwas reagieren, ist das Implementieren dieser
   Funktion der einfachste Weg.

   Dies funktioniert nur dann, wenn der Standardbefehl der Spielershell
   verwendet wird ("zeige <name> <gegenstand>"). Selbstgebautes "zeige"
   funktioniert nicht.


BEISPIEL
========

   Oftmals will man in Quests erreichen, dass einem NPC ein bestimmtes
   Item als Beweis der Erfuellung einer bestimmten Aufgabe vorgezeigt
   wird. Folgendermassen kann dies realisiert werden:

   void quest_ok(object obj) { ...
     // z.B. Vernichtung des Questobjektes und Questtexte
     // Questbelohnung und Questanerkennung, etc.
   }

   void show_notify(object obj) {
     if(obj->id("\nquestitem")) // Ist das das geforderte Questobjekt?
       quest_ok(obj);
   }


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

   Da es nur um das Vorzeigen von Gegenstaenden geht, die nicht den
   Besitzer wechseln, sind Mechanismen wie P_REJECT in diesem Fall
   nicht erforderlich.


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

   give_notify(), /std/npc/put_and_get.c, /std/living/put_and_get.c

04.02.2020 Zesstra
