MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 1 | Krankheiten, Gifte und Flueche |
| 2 | ============================== |
| 3 | |
Zesstra | 6fb467b | 2019-08-19 20:13:45 +0200 | [diff] [blame^] | 4 | Einmal abgesehen vom einfachen Setzen von P_POISON im Spieler lassen |
| 5 | sich Gifte und Krankheiten auch als Objekte ausprogrammieren, die dem |
| 6 | Spieler in mehr oder weniger regelmaessigen Abstaenden Lebenspunkte |
| 7 | abziehen. Auch Flueche koennen nicht nur als P_CURSED in Waffen und |
| 8 | Ruestungen, sondern auch als Objekte vorliegen und dem Spieler das |
| 9 | Leben schwermachen. |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 10 | |
Zesstra | 6fb467b | 2019-08-19 20:13:45 +0200 | [diff] [blame^] | 11 | Um ein Objekt als Gift zu kennzeichnen, wird die Klasse CL_POISON |
| 12 | gesetzt, fuer eine Krankheit ist CL_DISEASE und fuer einen Fluch |
| 13 | CL_CURSE zu setzen (mit AddClass, siehe dort). Zusaetzlich wird die |
| 14 | Schwere der Erkrankung bzw. Vergiftung in der Property P_LEVEL |
| 15 | abgelegt, wobei P_LEVEL einen Wert zwischen 1 und 100 haben sollte. |
| 16 | Mitglieder der Klerikergilde und andere Heiler koennen dann je nach |
| 17 | P_LEVEL den betroffenen Spieler mehr oder weniger gut heilen. (Kleriker |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 18 | koennen CL_POISON-Vergiftungen heilen, einige Heiler jedoch nicht.) |
| 19 | |
Zesstra | 6fb467b | 2019-08-19 20:13:45 +0200 | [diff] [blame^] | 20 | Eine eindeutige Unterscheidung zwischen Giften, Krankheiten und |
| 21 | Fluechen zu treffen, ist schwer, denn die Grenzen verschwimmen. |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 22 | Trotzdem hier eine grobe Klassifizierung: |
| 23 | |
Zesstra | 6fb467b | 2019-08-19 20:13:45 +0200 | [diff] [blame^] | 24 | Gifte: |
| 25 | bringt der Spieler sich meist selbst bei (in dem er z.B. einen |
| 26 | giftigen Pilz isst). Oft auch sind die Stellen, wo ein Spieler |
| 27 | sich vergiften kann, beim Forschen erkennbar, so dass eine |
| 28 | Vergiftung umgangen werden kann. |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 29 | |
Zesstra | 6fb467b | 2019-08-19 20:13:45 +0200 | [diff] [blame^] | 30 | Bei Giften wird durch das Heilen der Klerikergilde der Level des |
| 31 | Giftobjekts abhaengig vom Erfolg gesenkt. Ist der Level <= 0, wird |
| 32 | das Objekt vom Kleriker-Spellbook entfernt. Heiler-NPCs sollten das |
| 33 | aehnlich machen. Logisch waere es daher, den Schaden, den das |
| 34 | Objekt macht, vom momentanen Level abhaengig zu machen. |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 35 | |
Zesstra | 6fb467b | 2019-08-19 20:13:45 +0200 | [diff] [blame^] | 36 | Krankheiten: |
| 37 | werden dem Spieler durch Fremdeinwirkung beigebracht, auch durch |
| 38 | Ansteckung bei einem anderen Spieler oder NPC. |
| 39 | |
| 40 | Bei ansteckenden Krankheiten ist auf die Ansteckrate zu achten |
| 41 | und darauf, dass die Krankheit mit der Zeit auch wieder ausstirbt. |
| 42 | Also entweder bei jeder Generation der Krankheit das |
| 43 | Ansteckungsrisiko senken oder einmal infizierte Spieler |
| 44 | immunisieren. Es sollten sich 2 idelnde Spieler nicht immer wieder |
| 45 | gegenseitig bis in alle Ewigkeit anstecken koennen. Auch ist darauf |
| 46 | zu achten, dass Netztote nicht angesteckt werden koennen bzw. |
| 47 | Netztote niemanden anstecken, da sich sonst die Krankheit im |
| 48 | Netztotenraum verbreiten kann. |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 49 | |
Zesstra | 6fb467b | 2019-08-19 20:13:45 +0200 | [diff] [blame^] | 50 | Das Heilen geschieht im Kleriker-Spellbook wie bei Gift, oder |
| 51 | bei Heiler-NPCs. |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 52 | |
Zesstra | 6fb467b | 2019-08-19 20:13:45 +0200 | [diff] [blame^] | 53 | Flueche: |
| 54 | werden wie Krankheiten durch Fremdeinwirkung beigebracht (der |
| 55 | Spieler wird halt verflucht). Vorsicht: Nicht P_CURSED im |
| 56 | Spielerobjekt setzen! |
| 57 | |
| 58 | Die Wirkung von Fluechen ist oft nicht auf einfaches Abziehen von |
| 59 | Lebenspunkten beschraenkt, sondern der Spieler kann z.B. |
| 60 | nicht mehr richtig sprechen (Sprachfluch ueber P_PERM_STRING), |
| 61 | ist in der Bewegung eingeschraenkt oder greift wahllos NPCs an. |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 62 | |
Zesstra | 6fb467b | 2019-08-19 20:13:45 +0200 | [diff] [blame^] | 63 | Hier ist das Entfluchen durch einen Kleriker anders. Findet das |
| 64 | Spellbook ein CL_CURSE-Objekt im Inv des Spielers, wird gegen |
| 65 | das Level des Objekt gewuerfelt. Bei Erfolg wird das Objekt |
| 66 | entfernt, bei Misserfolg passiert nichts! Es wird also nicht die |
| 67 | Fluchstufe reduziert. |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 68 | |
Zesstra | 6fb467b | 2019-08-19 20:13:45 +0200 | [diff] [blame^] | 69 | Als Anhaltspunkte fuer den Level: |
| 70 | - < Level 10 sind einfach zu entfluchen |
| 71 | - 10-20 sind fuer kleine Kleriker schon enorm schwierig |
| 72 | fuer max. Kleriker gut zu entfluchen. |
| 73 | - ueber 20 gelingt es auch einem max. Kleriker nicht immer |
| 74 | beim ersten Mal. |
| 75 | - ab 30 muss der max. Kleriker schon mal tanken gehen |
| 76 | - Ueber Level 40 liegt die Chance schon im Promillebereich!!! |
| 77 | - Level 100 laesst sich ueberhaupt nicht mehr entfluchen. |
| 78 | Will man dem Spieler also eine reelle (und nicht nur |
| 79 | mathematische) Chance lassen, sollte der Fluchlevel unter 40 |
| 80 | bleiben. |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 81 | |
Zesstra | 6fb467b | 2019-08-19 20:13:45 +0200 | [diff] [blame^] | 82 | Das Schadensobjekt selbst ist unsichtbar, meist autoload und loest die |
| 83 | Schadensfunktion z.B. ueber Callouts oder den Reset aus. |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 84 | |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 85 | |
Zesstra | 6fb467b | 2019-08-19 20:13:45 +0200 | [diff] [blame^] | 86 | BEISPIEL: |
| 87 | |
| 88 | Hier ein Beispiel fuer einen Giftpilz |
| 89 | ------------------------------------- |
| 90 | |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 91 | #pragma strong_types |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 92 | |
| 93 | inherit "/std/thing"; |
| 94 | |
Zesstra | 6fb467b | 2019-08-19 20:13:45 +0200 | [diff] [blame^] | 95 | #include "../pfad.h" |
| 96 | |
| 97 | protected void create() { |
| 98 | if ( !clonep(this_object()) ) { |
| 99 | set_next_reset(-1); |
| 100 | return; |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 101 | } |
| 102 | ::create(); |
| 103 | |
Zesstra | 6fb467b | 2019-08-19 20:13:45 +0200 | [diff] [blame^] | 104 | SetProp(P_SHORT, 0); |
| 105 | SetProp(P_INVIS, 1); |
| 106 | SetProp(P_LONG, 0); |
| 107 | SetProp(P_NODROP, 1); |
| 108 | SetProp(P_NEVERDROP, 1); |
| 109 | SetProp(P_AUTOLOADOBJ, 1); |
| 110 | SetProp(P_WEIGHT, 0); |
| 111 | SetProp(P_NAME, "Pilzvergiftung"); |
| 112 | SetProp(P_KILL_NAME, "Eine Pilzvergiftung"); |
| 113 | SetProp(P_GENDER, FEMALE); |
| 114 | SetProp(P_LEVEL, 10); |
| 115 | call_out("next_step", 2); |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 116 | AddClass(CL_POISON); |
| 117 | } |
| 118 | |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 119 | void next_step() { |
Zesstra | 6fb467b | 2019-08-19 20:13:45 +0200 | [diff] [blame^] | 120 | object pl = environment(this_object()); |
| 121 | if ( !objectp(pl) || !query_once_interactive(pl) || |
| 122 | pl->QueryProp(P_GHOST) ) { |
| 123 | remove(1); |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 124 | return ; |
| 125 | } |
Zesstra | 6fb467b | 2019-08-19 20:13:45 +0200 | [diff] [blame^] | 126 | call_out("next_step", 5); |
| 127 | if ( interactive(pl) ) { |
| 128 | tell_object(pl, |
| 129 | "Dein Bauch schmerzt. Du windest Dich in Kraempfen.\n"); |
| 130 | if ( environment(pl) ) |
| 131 | tell_room(environment(pl), pl->Name(WER)+" windet sich vor " |
| 132 | "Schmerzen am Boden.\n", ({ pl })); |
| 133 | pl->do_damage(QueryProp(P_LEVEL)*2 + random(10), this_object()); |
| 134 | } |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 135 | } |
| 136 | |
| 137 | SIEHE AUCH: |
Zesstra | 6fb467b | 2019-08-19 20:13:45 +0200 | [diff] [blame^] | 138 | P_POISON, P_MAX_POISON, P_POISON_DELAY |
| 139 | P_CURSED, P_PERM_STRING |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 140 | |
| 141 | LETZTE AeNDERUNG: |
Zesstra | 6fb467b | 2019-08-19 20:13:45 +0200 | [diff] [blame^] | 142 | 18.08.2019, Arathorn |