Updates erzeugter Manpages
Diese Manpages werden mit sphinx erzeugt. Sie werden
hier committet, damit auch Nutzer ohne sphinx die
Textversion haben.
Change-Id: Ibe6acc626b51b42364af33450a719e88281651b9
diff --git a/doc/lfun/SetAttackChats b/doc/lfun/SetAttackChats
index 90e8a66..b5a26e9 100644
--- a/doc/lfun/SetAttackChats
+++ b/doc/lfun/SetAttackChats
@@ -18,87 +18,108 @@
ARGUMENTE
=========
- chance
- Prozentuale Wahrscheinlichkeit einer Ausgabe
- strs
- Stringarray mit den Monsterchats
+ int chance
+ Prozentuale Wahrscheinlichkeit einer Ausgabe
+
+ mixed strs
+ Array mit den verschiedenen Moeglichkeiten der Monsterchats
BESCHREIBUNG
============
- Der NPC gibt mit der Wahrscheinlichkeit 'chance' einen zufaellig
- gewaehlten Text aus 'strs' von sich. Die Arrayelemente koennen
- auch Funktionen ("@@func@@") oder Closures enthalten, die dann
- aufgerufen werden und deren Rueckgabewerte das Monster dann ausgibt.
+ Der NPC gibt mit der Wahrscheinlichkeit <chance> waehrend des
+ Kampfes pro Heartbeat einen zufaellig gewaehlten Text aus dem Array
+ <strs> in den Raum aus. Dabei wird per Default send_room() ohne
+ erneutes Umbrechen mit den Messagetypen
+ MT_LOOK|MT_LISTEN|MT_FEEL|MT_SMELL verwendet.
+ Die einzelnen Arrayelemente koennen:
-RUECKGABEWERT
-=============
+ * Strings sein
- keiner
+ * Closures sein, deren Rueckgabe ausgegeben wird und die
+ zusaetzlich einen aenderbaren und in send_room() verwendeten
+ 'msg_typ' per Referenz uebergeben bekommen
+
+ * Arrays mit der Struktur *({<string|closure msg >, <int
+ msg_typ>})* sein, fuer die obige Regeln auf 'msg' angewendet
+ werden und bei denen 'msg_typ' im send_room() verwendet wird
+
+ Fuer keine Ausgabe muss man einen Leerstring "" zurueckgeben oder
+ verwenden. In allen Funktionen ist this_player() das Monster
+ selbst. Normalerweise muss man die Nachrichten selbst umbrechen,
+ ausser man uebergibt die Message-Typen explizit und uebergibt kein
+ MSG_DONT_WRAP.
BEMERKUNGEN
===========
- AttackChats werden nur im Kampf ausgegeben. Ansonsten ist SetChats()
- zu verwenden.
+ * ausserhalb des Kampf werden keine AttackChats ausgegeben, man
+ muss dann SetChats() verwenden
+ * die strings werden (noch) durch process_string() geschickt,
+ dieses sollte man aber nicht mehr verwenden
+ * 'chance' gilt sowohl fuer Attack- als auch normale Chats
- 'chance' wird in der Property P_ACHAT_CHANCE abgelegt. Um einen NPC
- voruebergehend 'stillzulegen', kann man P_ACHAT_CHANCE auf 0 setzen.
+ * 'chance' wird in der Property P_CHAT_CHANCE abgelegt. Um einen
+ NPC voruebergehend 'stillzulegen', kann man P_CHAT_CHANCE auf 0
+ setzen
+ * Spieler koennen P_CHAT_CHANCE temporaer auf 0 setzen
+ ('stillen')
+ * NPC haben bei Abwesenheit von Spielern in der Regel keinen
+ Heartbeat, weswegen dann auch die Chats ausgeschaltet sind
- Man kann AttackChats nutzen, um Monsterspells zu realisieren. Besser
- ist es aber, dafuer 'AddSpell' zu verwenden.
+ * send_room() bekommt immer MSG_DONT_STORE|MSG_DONT_BUFFER
+ uebergeben
+
+ Man kann AttackChats nutzen, um Monsterspells zu realisieren.
+ Besser ist es aber, dafuer 'AddSpell' zu benutzen, ausser man
+ moechte zB die Spielerfaehigkeit des Abschaltens der Chats
+ verwenden.
BEISPIELE
=========
+ protected string knirschschrei(int msg_typ);
+
SetAttackChats( 20,
- ({ "Der Ork tritt Dir in den Hintern.\n",
- "Der Ork bruellt: Lebend kommst Du hier nicht raus!\n",
- "Der Ork blutet schon aus mehreren Wunden.\n",
- "@@knirsch@@" }) );
+ ({"Der Ork tritt Dir in den Hintern.\n",
+ ({"Der Ork bruellt: Lebend kommst Du hier nicht raus!\n", MT_LISTEN}),
+ ({"Der Ork blutet schon aus mehreren Wunden.\n", MT_LOOK}),
+ #'knirschschrei}));
-
-
- string knirsch()
- {
- object *ruestung, *tmp, helm;
-
-
-
- ruestung = this_player()->QueryProp(P_ARMOURS); // getragene Ruestung
- tmp = filter_objects(ruestung, "id", AT_HELMET);
- // Wenn der Spieler einen Helm traegt, enthaelt 'tmp' jetzt
- // ein Array mit dem Helmobjekt als einzigem Element
- if (sizeof(tmp)) helm = tmp[0];
- if (objectp(helm))
- {
- // AC nur dann senken, wenn sie nicht schon 0 ist.
- if (helm->QueryProp(P_AC)>0) {
- helm->Damage(1);
- return "Der Ork beschaedigt Deinen Helm!\n";
- }
- return "";
+ protected string knirsch(int msg_typ) {
+ object helm = this_player()->QueryArmourByType(AT_HELMET);
+ if (objectp(helm)) {
+ // AC nur dann senken, wenn sie nicht schon 0 ist.
+ if (helm->QueryProp(P_AC)>0) {
+ helm->Damage(1);
+ msg_typ = MT_LISTEN|MT_FEEL;
+ return ("Der Ork schreit dich so laut an, dass dabei "+
+ helm->QueryOwn(WER)+" "+
+ helm->name(RAW)+" beschaedigt wird.");
}
- else
- return ""; // keine Meldung
+ }
+ return ""; // keine Meldung
}
SIEHE AUCH
==========
- P_ACHAT_CHANCE, SetChats(), /std/npc/chat.c, AddSpell()
+ Verwandt:
+ *SetChats()*, *AddSpell()*
+ Props:
+ *P_CHAT_CHANCE*
-LETZTE AENDERUNG
-================
+ Sonstiges:
+ *send_room()*, *process_string()*
- Don, 27.12.2007, 16:35:00 von Arathorn
+3. April 2017 Gloinson