Dokumentation zu: TruncateBodyzone(L)

HR Image


FUNKTION:
        public string *TruncateBodyzone(string bzone, string msg2opfer,
                string msg2room)

ARGUMENTE:
        bzone:     'u_name' (Uniquename) der abzuhackenden Koerperzone.
        msg2opfer: Message, die an das Opfer ausgegeben wird und ueber den
                   Verlust des Koerperteils informieren sollte.
        msg2room:  Message, die an den Raum des Opfers ausgegeben wird und
                   ueber den Verlust des Koerperteils informieren sollte.

DEFINIERT IN:
        /sys/living/body.h
        /std/living/body.c

RÜCKGABEWERT:
        * Array aus Strings mit allen erfolgreich abgehackten
          Koerperzonen (u_name)
        * leeres Array, wenn die Zone schon fehlte oder es die
          Koerperzone nicht gibt

BESCHREIBUNG:
        TruncateBodyzone() - Hackt ein Koerperteil ab

        Die Funktion wird erst nach der Einfuehrung des Koerperzonen-
        Konzeptes (ca. Juli 2002) ausgewertet!

        Dem abgehackten Koerperteil wird einfach BZO_TRUNCATED gesetzt.
        Es wird NICHT wirklich aus 'bodyzones' entfernt! Ausserdem werden
        auch alle damit verbundenen Koerperteile abgehackt. Abgetrennt werden
        koennen nur Koerperteile, die ein Leichenteil-Object (BZO_CORPSE)
        gesetzt haben. Bei Spielern sind das standardmaessig alle Zonen
        ausser dem Rumpf. Es werden alle erfolgreich entfernten (Sub-)Teile
        als Returnwert zurueckgegeben. Also ein Abhacken von einem Arm
        fuehrt auch zum Verlust einer damit verbundenen Hand, etc.
        Ist BZO_CORPSE mit einem String belegt, so wird dieser als Pfad zum
        Leichenteil-Objekt gewertet. Ist BZO_CORPSE stattdessen 1, wird ein
        Standard-Leichenteil erzeugt.

        Bei Verlust einer Hand wird die mit dieser Hand gefuehrte Waffe
        automatisch 'zurueckgesteckt' und faellt in den Raum. Ruestungen
        fallen erst in den Raum, wenn das letzte Stueck der Ruestung
        abgehackt wird. Bis dahin wird in der Ruestung nur um den Schutz der
        verlorenen Zonen beraubt.

        Bei der Benutzung der Message-Argumente muss man schon vorher
        wissen, was letztendlich abgetrennt wird. Oder man wertet statt dessen
        den Rueckgabewert aus und gibt dann die Meldung getrennt aus.

        Je nach Bodytyp koennen die Uniquenamen der Bodyzonen unterschied-
        liche sein. Die Uniquenamen fuer die standardisierten Bodytypen
        koennen in /sys/living/body.h nachgelesen werden.


        msg2room und msg2opfer werden mittels parse_mess() ausgewertet.

BEISPIELE:

        1) Kleine Beispiele zum Spielen mit dem Xtool (jeweils mit
           vollstaendigem Koerper):

        xcall $m->TruncateBodyzone("lHand")
        Result: ({"lHand"})

        xcall $m->TruncateBodyzone("lBein")
        Result: ({"lBein", "lFuss"})

        2) Wir wollen eine Hand entfernen. Am liebsten die rechte. Wenn der
           Spieler aber keine rechte Hand mehr hat, nehmen wir auch die
           linke. ;-)

        int hand_abhacken()
        {
          string *ret;

          ret = this_player()->TruncateBodyzone("rHand", "Du hackst Dir die "
            "rechte Hand ab.", PL->name(WER, NAME_DEF|NAME_CAP)+" hackt sich "
            "die rechte Hand ab.");
          // ret sollte nun ({"rHand"}) sein
          // wenn nicht:
          if (!sizeof(ret))
            ret = this_player()->TruncateBodyzone("lHand", "Du hackst Dir "
              "die linke Hand ab.", PL->name(WER, NAME_DEF|NAME_CAP)+
              " hackt sich die linke Hand ab.");
          // ret sollte nun ({"lHand"}) sein
          // wenn nicht:
          if (!sizeof(ret) // das ging auch nicht ... komisch
            write(break_string(
              "Huch? Du hast wohl gar keine Haende? Du musst ein "
              "Lebenskuenstler sein."));
          return 1;
        }

SIEHE AUCH:
        RestoreBodyzone(L), AddBodyzone(L), QueryBodyzone(L), GetBodyType(L),
        RestoreAllBodyzones(L), RemoveBodyzone(L), CreateBody(L),
        GetBodyzones(L), GetZonesByType(L), SetBodyzone(L),
        koerperzonen(WL), P_MAX_HANDS


Start » Magierhandbuch » Docu » Lfun » TruncateBodyzone Letzte Generierung: 25.04.2021, 01:58
Email an: mud@wl.mud.de
Valid HTML 4.01!