Formatierung, P_MAX_POISON referenziert
Change-Id: Ie8e2443ec223532ff1e26a765bbfec8f62209dbe
diff --git a/doc/wiz/gift b/doc/wiz/gift
index a2c4d9e..095d691 100644
--- a/doc/wiz/gift
+++ b/doc/wiz/gift
@@ -1,132 +1,142 @@
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
+ 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
+ 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.
+ 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.
+ 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 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.
+ 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.
- 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.
+ 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.
+ 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). 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.
+ 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!
+ 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 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.
+ 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.
- 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.
- 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):
- ----------------------------------------------------------------------
+BEISPIEL:
+
+ Hier ein Beispiel fuer einen Giftpilz
+ -------------------------------------
+
#pragma strong_types
- #include "../pfad.h"
inherit "/std/thing";
- void create() {
- if(!clonep(TO)) {
- set_next_reset(-1);
- return;
+ #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_ARTICLE,1);
- SetProp(P_LEVEL,10);
- call_out("next_step",2);
+ 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();
-
void next_step() {
- object pl;
- if(!(pl=TOE) || !query_once_interactive(pl) ||
- pl->QueryProp(P_GHOST)){
- remove();
+ 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)) 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);
+ 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_CURSED, P_PERM_STRING
+ P_POISON, P_MAX_POISON, P_POISON_DELAY
+ P_CURSED, P_PERM_STRING
LETZTE AeNDERUNG:
- 11.08.2007, Zesstra
+ 18.08.2019, Arathorn