Start Info Community Spielen
 
 

Morgengrauner Dokumentation

Dateipfad: /home/mud/mudlib/doc//wiz/gift

Krankheiten, Gifte und Flueche
==============================

     Einmal abgesehen vom einfachen Setzen von P_POISON im Spieler lassen 
     sich Gifte und Krankheiten auch als Objekte ausprogrammieren, die dem 
     Spieler in mehr oder weniger regelmaessigen Abstaenden Lebenspunkte 
     abziehen. Auch Flueche koennen nicht nur als P_CURSED in Waffen und 
     Ruestungen, sondern auch als Objekte vorliegen und dem Spieler das 
     Leben schwermachen.

     Um ein Objekt als Gift zu kennzeichnen, wird die Klasse CL_POISON 
     gesetzt, fuer eine Krankheit ist CL_DISEASE und fuer einen Fluch 
     CL_CURSE zu setzen (mit AddClass, siehe dort). Zusaetzlich wird die 
     Schwere der Erkrankung bzw. Vergiftung in der Property P_LEVEL 
     abgelegt, wobei P_LEVEL einen Wert zwischen 1 und 100 haben sollte. 
     Mitglieder der Klerikergilde und andere Heiler koennen dann je nach 
     P_LEVEL den betroffenen Spieler mehr oder weniger gut heilen. (Kleriker 
     koennen CL_POISON-Vergiftungen heilen, einige Heiler jedoch nicht.)

     Eine eindeutige Unterscheidung zwischen Giften, Krankheiten und 
     Fluechen zu treffen, ist schwer, denn die Grenzen verschwimmen. 
     Trotzdem hier eine grobe Klassifizierung:

     Gifte: 
        bringt der Spieler sich meist selbst bei (in dem er z.B. einen 
        giftigen Pilz isst). Oft auch sind die Stellen, wo ein Spieler 
        sich vergiften kann, beim Forschen erkennbar, so dass eine 
        Vergiftung umgangen werden kann.

        Bei Giften wird durch das Heilen der Klerikergilde der Level des 
        Giftobjekts abhaengig vom Erfolg gesenkt. Ist der Level <= 0, wird 
        das Objekt vom Kleriker-Spellbook entfernt. Heiler-NPCs sollten das
        aehnlich machen. Logisch waere es daher, den Schaden, den das
        Objekt macht, vom momentanen Level abhaengig zu machen.

     Krankheiten:
        werden dem Spieler durch Fremdeinwirkung beigebracht, auch durch
        Ansteckung bei einem anderen Spieler oder NPC.
        
        Bei ansteckenden Krankheiten ist auf die Ansteckrate zu achten
        und darauf, dass die Krankheit mit der Zeit auch wieder ausstirbt.
        Also entweder bei jeder Generation der Krankheit das 
        Ansteckungsrisiko senken oder einmal infizierte Spieler 
        immunisieren. Es sollten sich 2 idelnde Spieler nicht immer wieder
        gegenseitig bis in alle Ewigkeit anstecken koennen. Auch ist darauf 
        zu achten, dass Netztote nicht angesteckt werden koennen bzw.
        Netztote niemanden anstecken, da sich sonst die Krankheit im 
        Netztotenraum verbreiten kann.

        Das Heilen geschieht im Kleriker-Spellbook wie bei Gift, oder
        bei Heiler-NPCs.

     Flueche: 
        werden wie Krankheiten durch Fremdeinwirkung beigebracht (der 
        Spieler wird halt verflucht). Vorsicht: Nicht P_CURSED im 
        Spielerobjekt setzen! 
        
        Die Wirkung von Fluechen ist oft nicht auf einfaches Abziehen von 
        Lebenspunkten beschraenkt, sondern der Spieler kann z.B. 
        nicht mehr richtig sprechen (Sprachfluch ueber P_PERM_STRING), 
        ist in der Bewegung eingeschraenkt oder greift wahllos NPCs an.

        Hier ist das Entfluchen durch einen Kleriker anders. Findet das 
        Spellbook ein CL_CURSE-Objekt im Inv des Spielers, wird gegen 
        das Level des Objekt gewuerfelt. Bei Erfolg wird das Objekt 
        entfernt, bei Misserfolg passiert nichts! Es wird also nicht die
        Fluchstufe reduziert.

        Als Anhaltspunkte fuer den Level:
        - < Level 10 sind einfach zu entfluchen
        - 10-20 sind fuer kleine Kleriker schon enorm schwierig
          fuer max. Kleriker gut zu entfluchen.
        - ueber 20 gelingt es auch einem max. Kleriker nicht immer
          beim ersten Mal.
        - ab 30 muss der max. Kleriker schon mal tanken gehen
        - Ueber Level 40 liegt die Chance schon im Promillebereich!!!
        - Level 100 laesst sich ueberhaupt nicht mehr entfluchen.
        Will man dem Spieler also eine reelle (und nicht nur 
        mathematische) Chance lassen, sollte der Fluchlevel unter 40 
        bleiben.

    Das Schadensobjekt selbst ist unsichtbar, meist autoload und loest die 
    Schadensfunktion z.B. ueber Callouts oder den Reset aus.


BEISPIEL:

     Hier ein Beispiel fuer einen Giftpilz 
     -------------------------------------
     
     #pragma strong_types

     inherit "/std/thing";

     #include "../pfad.h"

     protected void create() {
       if ( !clonep(this_object()) ) {
         set_next_reset(-1);
         return;
       }
       ::create();

       SetProp(P_SHORT, 0);
       SetProp(P_INVIS, 1);
       SetProp(P_LONG, 0);
       SetProp(P_NODROP, 1);
       SetProp(P_NEVERDROP, 1);
       SetProp(P_AUTOLOADOBJ, 1);
       SetProp(P_WEIGHT, 0);
       SetProp(P_NAME, "Pilzvergiftung");
       SetProp(P_KILL_NAME, "Eine Pilzvergiftung");
       SetProp(P_GENDER, FEMALE);
       SetProp(P_LEVEL, 10);
       call_out("next_step", 2);
       AddClass(CL_POISON);
     }

     void next_step() {
       object pl = environment(this_object());
       if ( !objectp(pl) || !query_once_interactive(pl) ||
            pl->QueryProp(P_GHOST) ) {
         remove(1);
         return ;
       }
       call_out("next_step", 5);
       if ( interactive(pl) ) {
         tell_object(pl,
           "Dein Bauch schmerzt. Du windest Dich in Kraempfen.\n");
         if ( environment(pl) )
           tell_room(environment(pl), pl->Name(WER)+" windet sich vor "
             "Schmerzen am Boden.\n", ({ pl }));
         pl->do_damage(QueryProp(P_LEVEL)*2 + random(10), this_object());
       }
     }

 SIEHE AUCH:
    P_POISON, P_MAX_POISON, P_POISON_DELAY
    P_CURSED, P_PERM_STRING


LETZTE AeNDERUNG: 18.08.2019, Arathorn


zurück zur Übersicht

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