
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
