
AddFun()
********


FUNKTION
========

   void AddFun(string fun, int next);


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

   /std/transport.c


ARGUMENTE
=========

   fun
        Name der Funktion.
   next
        Zeit bis zur naechsten Fahrplanstation.


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

   Dem Fahrplan wird der Aufruf der Funktion fun, die im Transporter
   definiert sein muss, hinzugefuegt. Nach Aufruf der Funktion vergehen
   next Sekunden, bis die naechste Station angefahren wird.


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

   keiner


BEISPIELE
=========

   Wenn ein zufaellig ausgewaehlter Passagier eines Schiffes unterwegs
   seekrank werden soll, koennte man das wie folgt realisieren:

   create()
   {
     ...

     AddFun("seekrank", 5);
     ...
   }

   seekrank()
   {
     object *passagiere, opfer;

     // soll nicht immer passieren
     if (random(5))
       return;

     // Opfer auswaehlen
     passagiere = QueryPassengers();
     if (sizeof(passagiere))
       opfer = passagiere[random(sizeof(passagiere))];

     // Und viel Spass...
     tell_object(opfer,
       "Du wirst seekrank! Schnell stuerzt Du zur Reling um  Dich zu\n"
      +"uebergeben.\n");
     tell_room(this_object(),
       sprintf("%s ueberkommt die Seekrankheit!\n%s stuerzt an die Reling, "
              +"um sich zu uebergeben.\n",
               capitalize(opfer->name(WEN)),
               capitalize(opfer->QueryPronoun(WER))), ({ opfer }) );
   }


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

   AddRoute(), AddMsg(), /std/transport.c

Last modified: Wed May 8 10:16:46 1996 by Wargon
