Start Info Community Spielen
 
 

Morgengrauner Dokumentation

Dateipfad: /home/mud/mudlib/doc/lfun/SetAttackChats

SetAttackChats()
****************


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

YOUTUBE | FACEBOOK | TWITTER | DISCORD | FEEDBACK | IMPRESSUM | DATENSCHUTZ 1992–2023 © MorgenGrauen.