Mit load_a_chat kann man Monster im Kampf zufaellige Ausgaben erzeugen
lassen. chance gibt dabei die Wahrscheinlichkeit und chat die Meldungen an.
Falls chance negativ ist, so gibt es an, alle wieviel Heartbeats (im
Durchschnitt) die Meldung ausgegeben wird. (-3 bedeutet ca. alle 6 Sekunden.)
In chat kann man entweder einzelne Meldungen oder einen Array aus Meldungen
uebergeben. Es gibt zwei Varianten, entweder ein String oder ein Array fuer
send_message. chat hat die gleiche Struktur wie das chat aus load_chat.
Fuer den Angreifer und "den Rest" koennen abweichende Meldungen angegeben
werden, siehe Beispiel unten.
Wenn ein String mit "!" anfaengt, wird er als Kommando (do_command) aufge-
fasst, ansonsten als Echo ausgegeben.
Pseudo-Closures (wie: "$Der()", "$der('enemy)) werden auch verstanden.
Durch das 'enemy kann man auch den Gegner einsetzen, auf den gerade drauf-
gehauen wird.
Statt der Strings koennen auch Closures uebergeben werden, das Ergebnis
muss dann aber zulaessig sein. Sie erhalten als ersten Parameter den Gegner
und als zweiten Parameter das Monster selbst.
Beispiel:
// Das ist eine Lfun, die im Kampf zufaellig aufgerufen werden soll.
string boeser_zauberspruch(object enemy)
{
auf_kleiner_flamme_roesten(enemy);
return "!sage Nimm das, du Schurke!";
}
load_a_chat(10,
({ "$Der() kann nicht verstehen, warum er umgebracht werden soll.",
"!frage $den() Warum kaempfen wir hier eigentlich",
({MT_NOISE, MA_COMM, "$Der() schreit: Hilfe, Hilfe. $Der('enemy) "
"will mich umbringen"}),
// Diese Closure wird dann mit dem Feind als Parameter aufgerufen.
#'boeser_zauberspruch
}) );
Beim Array kann auch noch eine weitere Meldung angegeben werden, die
dann nur der Angreifer erhaelt:
load_a_chat(30,
({ ({ MT_LOOK | MT_FEEL,
MA_USE,
"$Der() schlaegt $dem('enemy) eine unzerbrechliche Vase an den Kopf.",
"$Der() schlaegt dir eine unzerbrechliche Vase an den Kopf."
}) }) );