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, irgendwie gekennzeichnet,
             so dass eine Vergiftung umgangen werden kann.

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

     Krankheit: 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 ewig 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.

     Flueche: werden wie Krankheiten durch Fremdeinwirkung beigebracht
             (der Spieler wird halt verflucht). Ausserdem ist die Wirkung 
             von Fluechen 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!

             Als Anhaltspunkte fuer den Level:
             - < Level 10 sind einfach zu entfluche
             - 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 ueber Callouts aus.

 BEISPIEL:
     Hier ein Beispiel fuer einen Giftpilz (gefunden bei Silvana, in
     /d/dschungel/silvana/weg/obj/pilz.c):
     ----------------------------------------------------------------------
     #pragma strong_types
     #include "../pfad.h"

     inherit "/std/thing";

     void create() {
       if(!clonep(TO)) {
           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_ARTICLE,1);
       SetProp(P_LEVEL,10);
       call_out("next_step",2);
       AddClass(CL_POISON);
     }

     void next_step();

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

 SIEHE AUCH:
    P_POISON, P_CURSED, P_PERM_STRING


LETZTE AeNDERUNG: 11.08.2007, Zesstra


zurück zur Übersicht

FEEDBACK | IMPRESSUM | DATENSCHUTZ 1992–2019 © MorgenGrauen. Alle Rechte vorbehalten.