ReceiveTeilemit()
*****************


FUNKTION
========

   public int ReceiveTeilemit(string msg)


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

   /std/living/comm.c


ARGUMENTE
=========

   string msg
      Die auszugebende Meldung. Sie wird vor der Ausgabe an
      replace_personal() uebergeben, als erstes Objekt wird das
      aufrufende Objekt uebergeben, als zweites this_player(), sofern
      vorhanden. msg wird automatisch auf 78 Zeichen umgebrochen,
      vorhandene Zeilenumbrueche werden dabei beibehalten.


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

   Sendet msg per ReceiveMsg() mit den ueblichen Argumenten von "teile
   mit" an pl. D.h.: MT_COMM | MT_FAR, MA_TELL, Name(WER, 1) + " teilt
   Dir mit: ". Hierzu muss das aufrufende Objekt name() definiert
   haben und dort etwas sinnvolles zurueckgeben. Der einzige
   Unterschied zum normalen "teile mit" ist, dass zusaetzlich
   MSG_DONT_STORE uebergeben wird. Da es sich hier ueblicherweise
   nicht um Kommunikation zwischen Spielern handelt, muss die
   Nachricht nicht in die tmhist.


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

   Der Rueckgabewert von ReceiveMsg().


BEISPIEL
========

   SetProp(P_NAME, "Questgeber"); SetProp(P_GENDER, MALE);
   this_player().ReceiveTeilemit("Das hast Du prima gemacht, @WER2!");


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

   ReceiveMsg(), replace_personal(), name()

Letzte Aenderung: 07.10.2021, Bugfix
