Morgengrauner Dokumentation
Dateipfad: /home/mud/mudlib/doc/lfun/SetAttackChatsSetAttackChats()
****************
FUNKTION
========
void SetAttackChats(int chance, mixed strs);
DEFINIERT IN
============
/std/npc/chat.c
ARGUMENTE
=========
int chance
Prozentuale Wahrscheinlichkeit einer Ausgabe
mixed strs
Array mit den verschiedenen Moeglichkeiten der Monsterchats
BESCHREIBUNG
============
Der NPC gibt mit der Wahrscheinlichkeit waehrend des
Kampfes pro Heartbeat einen zufaellig gewaehlten Text aus dem Array
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:
* Strings sein
* 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 *({, })* 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
===========
* 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_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
* 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", MT_LISTEN}),
({"Der Ork blutet schon aus mehreren Wunden.\n", MT_LOOK}),
#'knirschschrei}));
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.");
}
}
return ""; // keine Meldung
}
SIEHE AUCH
==========
Verwandt:
SetChats(), AddSpell()
Props:
P_ACHAT_CHANCE, P_CHATS, P_CHAT_CHANCE
Sonstiges:
send_room(), process_string()
3. April 2017 Gloinson
zurück zur Übersicht