Dokumentation zu: P_INVINCIBLE

HR Image


PROPERTY:
        P_INVINCIBLE

DEFINIERT ALS:
        "invincible"

DEFINIERT IN:
        /sys/properties.h

WERTE:
        0, 1, Closure, String oder ein zweidimensionales Array
        aus gemischten Werten.

BESCHREIBUNG:
        Mit dieser Property kann man NPCs markieren, die nicht
        angegriffen werden koennen. Dadurch soll das
        Ueberschreiben Der Defend-Funktionen vermieden werden.
        Die internen Skills, die in jeder Kampfrunde
        automatisch durchgefuehrt werden, erlernt man dabei nur,
        Wenn der Gegner angreifbar ist.
        Die Property kann eine Vielzahl an Werten annehmen.

        Statt QueryProp(P_INVINCIBLE) sollte die Lfun
        mixed IsInvincible(object enemy) benutzt werden.

BEISPIELE:

          SetProp(P_INVINCIBLE, 0)
              --> Es kommt ein normaler Angriff (Default).

          SetProp(P_INVINCIBLE, 1)
            oder SetProp(P_INVINCIBLE, ({1}))
            oder SetProp(P_INVINCIBLE, ({1,1}))
              --> Der Angriff wird abgeblockt,
                  Standardmeldung an den Angreifer,
                  Standardmeldung an den Raum

          SetProp(P_INVINCIBLE, ({1,0}))
              --> Der Angriff wird abgeblockt,
                  Standardmeldung an den Angreifer,
                  Keine Meldung an den Raum

          SetProp(P_INVINCIBLE, ({0,1}))
              --> Der Angriff wird abgeblockt,
                  Keine Meldung an den Angreifer,
                  Standardmeldung an den Raum

          SetProp(P_INVINCIBLE, ({"Du hast keine Chance.",
                                  "&&WER&& hat keine Chance."}))
              --> Der Angriff wird abgeblockt,
                  "Du hast keine Chance." an den Angreifer,
                  "Bongo hat keine Chance." an den Raum.

          SetProp(P_INVINCIBLE, #'func1)
            oder SetProp(P_INVINCIBLE, ({#'func1}))
              --> Der Angriff wird abgeblockt,
                  Funktion func1 wird EINMAL ausgewertet und der
                  Rueckgabewert bestimmt die Meldung
                  (ret=1: Standardmeldung, ret=0: Keine Meldung,
                   stringp(ret: ret als Meldung).
                  Dann wird die Meldung sowohl an den Angreifer als
                  auch an den Raum ausgegeben.

          SetProp(P_INVINCIBLE, ({#'func1,#'func1}))
              --> Der Angriff wird abgeblockt,
                  gleiches Verhalten wie bei
                  SetProp(P_INVINCIBLE, #'func1), nur mit dem
                  Unterschied, dass func1 ZWEIMAL ausgewertet wird.

          SetProp(P_INVINCIBLE, ({1,#'func1}))
              --> Der Angriff wird abgeblockt,
                  Standardmeldung an den Angreifer,
                  func1 wird ausgewertet und Meldung an den Raum

          Die Rueckgabewerte der Funktionen bestimmen die Art der Ausgabe.
          Wird ein Integer zurueckgegeben, kommt entweder keine Meldung
          oder aber eine Standardmeldung. Wird ein String zurueckgegeben,
          so wird dieser als Meldung ausgegeben. Der Rueckgabestring wird
          auch zusaetzlich noch durch parse_mess() bearbeitet.
          Die erhaltenen Texte werden mit break_string umgebrochen. Es sind
          also keine Umbrueche noetig, aber moeglich. Moechte man selber
          break_string verwenden (wie im Beispiel unten), dann ist darauf
          zu achten, dass man mit dem in /sys/defines.h definierten
          BS_STDLEN umbricht.

        Im NPC (/players/bongo/tester.c):

          mixed func1();

          create()
          {
            ...
            ::create();
            ...
            ...
            ...

            SetProp(P_INVINCIBLE, ({#'func1,
                                    "&&WESSEN&& Angriff wird abgewehrt."})
            ...
            ...
            ...
          }

          mixed func1()
          {
            string text;
            object player;

            player = this_player();

            if (player->QueryProp(P_GENDER)==FEMALE)
            {
              text = "schwache Henne";
              player->SetProp(P_TITLE, "ist eine "+text);
            }
            else
            {
              text = "Schwaechling";
              player->SetProp(P_TITLE, "ist ein "+text);
            }

            return break_string("Was willst Du "+text+" denn von mir. "
              +"Verschwinde. Ich habe heute besseres zu tun als Dir "
              +"Manieren beizubringen.",BS_STDLEN, "Der Tester hoehnt: ");
          }

          Bei einem Angriff wird nun der Titel des Angreifers gesetzt und
          folgende Meldungen ausgegeben:
            - An den Angreifer:
              Der Tester hoehnt: Was willst Du Schwaechling denn von mir. "
                                 Verschwinde. Ich habe heute besseres zu "
                                 tun als Dir Manieren beizubringen.

            - An den Raum:
              Bongos Angriff wird abgewehrt.

SIEHE AUCH:
        parse_mess(S), Defend(L), IsInvincible(L)


Start » Magierhandbuch » Docu » Properties » P_INVINCIBLE Letzte Generierung: 01.05.2021, 16:59
Valid HTML 4.01!