ReceiveNotify()
***************


FUNKTION
========

   public int ReceiveNotify(string msg, string action = 0)


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

   /std/living/comm.c /sys/living/comm.h


ARGUMENTE
=========

   string msg
      Die auszugebende Meldung. Sie wird automatisch auf 78 Zeichen
      umgebrochen, vorhandene Zeilenumbrueche werden dabei
      beibehalten.

   string action
      action wird als action an ReceiveMsg() weitergegeben.


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

   Sendet msg via ReceiveMsg() mit MT_NOTIFICATION | MSG_BS_LEAVE_LFS
   und den uebergebenen bzw. voreingestellten Werten fuer prefix und
   action an den Empfaenger.


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

   Bitte beachten: MT_NOTIFICATION ist fuer Kommandobestaetigungen,
   Statusmeldungen o.ae., d.h. out-of-character Meldungen vorgesehen.
   Es soll nicht als Sammeltyp fuer nicht-ignorierbare Meldungen
   verwendet werden, dafuer gibt es MSG_DONT_IGNORE in Kombination mit
   den anderen Typen.


RUECKGABEWERT
=============

   Der Rueckgabewert von ReceiveMsg().


BEISPIEL
========

   this_player().ReceiveNotify("Dazu reicht dein Level nicht aus.");


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

   ReceiveMsg()

Letzte Aenderung: 07.10.2021, Bugfix
