Dokumentations-Update
Change-Id: I133ea88f76745da5debd488ac683ffeb1894825b
diff --git a/doc/lfun/Pacify b/doc/lfun/Pacify
index feca7bf..8b94854 100644
--- a/doc/lfun/Pacify
+++ b/doc/lfun/Pacify
@@ -18,33 +18,29 @@
BESCHREIBUNG
============
- Diese Funktion versucht, ein Lebewesen zu befrieden.
+ Diese Funktion versucht, ein Lebewesen zu befrieden.
Will eine Gilde ein Lebewesen befrieden, muss sie hierfuer diese Funktion
in dem Lebewesen aufrufen.
- Ein immer befriedbarer NPC kann durch das Setzen von P_ACCEPT_PEACE in einem
- Lebewesen realisiert werden.
+ Ein immer befriedbarer NPC kann durch das Setzen von P_ACCEPT_PEACE in
+ einem Lebewesen realisiert werden.
- Standardmaessig funktioniert die Funktion wie folgt:
+ Standardmaessig funktioniert die Funktion wie folgt:
+
* Kommt der Versuch vom Spellcaster selbst, ist er immer erfolgreich.
* Kommt der Versuch von einem Teamkollegen, ist er immer erfolgreich.
* Hat das Lebewesen keine Gegner, ist der Versuch immer erfolglos.
+
In diesen Faellen erfolgt auch keine Erhoehung des Befriedezaehlers.
-
-
In anderen Faellen wird die in P_PEACE_HISTORY fuer die Gilde des Casters
abgelegte Zahl erfolgreicher Befriedungen (ANZ), die Intelligenz des
Casters (INT_CASTER) und die Intelligenz des Lebenwesens selber (INT_ME)
ermittelt.
Anschliessend wird eine Wahrscheinlichkeit w ausgerechnet:
-
-
w = (INT_CASTER + 10 - ANZ*4) / (INT_ME + 10)
-
-
Hierbei gibt w die Chance auf eine erfolgreiche Befriedung an. Mittels einer
Zufallszahl wird bestimmt, ob der aktuelle Versuch erfolgreich ist. Falls
ja, wird der Zaehler fuer die Gilde des Casters in P_PEACE_HISTORY erhoeht.
@@ -56,12 +52,14 @@
BEMERKUNGEN
===========
- * Die Funktion kann auch ueberschrieben werden, um ein vom Magier
- gewuenschtes Verhalten zu realisieren. Ein komplettes Abhaengen von
- Befriedungen sollte dabei aber die Ausnahme sein!
- * Diese Funktion verwaltet auch das P_PEACE_HISTORY, speziell die Reduktion
- der Erfolgszaehler. Ueberschreibt man sie ohne das geerbte Pacify()
- zu nutzen, wird P_PEACE_HISTORY nicht mehr verwaltet.
+ * Die Funktion kann auch ueberschrieben werden, um ein vom Magier
+ gewuenschtes Verhalten zu realisieren. Ein komplettes Abhaengen
+ von Befriedungen sollte dabei aber die Ausnahme sein!
+
+ * Diese Funktion verwaltet auch das P_PEACE_HISTORY, speziell die
+ Reduktion der Erfolgszaehler. Ueberschreibt man sie ohne das
+ geerbte Pacify() zu nutzen, wird P_PEACE_HISTORY nicht mehr
+ verwaltet.
RUECKGABEWERTE
@@ -74,10 +72,11 @@
BEISPIELE
=========
- Angenommen, der Caster hat eine Intelligenz von 22. Die folgende Tabelle
- gibt dann die Wahrscheinlichkeiten fuer eine erfolgreiche Befriedung an:
- (in Abhaengigkeit von eigener Intelligenz und vergangener erfolgreicher
- Versuche)
+ Angenommen, der Caster hat eine Intelligenz von 22. Die folgende Tabelle
+ gibt dann die Wahrscheinlichkeiten fuer eine erfolgreiche Befriedung an:
+ (in Abhaengigkeit von NPC-Intelligenz INT_ME und vergangener erfolgreicher
+ Versuche).
+
INT_ME Erfolgswahrscheinlichkeiten je nach Anzahl erfolgreicher Versuche
1 2 3 4 5 6 7 8
0 280 240 200 160 120 80 40 0
diff --git a/doc/props/P_GUILD_RATING b/doc/props/P_GUILD_RATING
index af9c24e..8fb181e 100644
--- a/doc/props/P_GUILD_RATING
+++ b/doc/props/P_GUILD_RATING
@@ -31,10 +31,16 @@
aus den Faehigkeiten des Mitglieds zusammen und mitunter fliessen
auch Gildenquests oder aehnliches mit ein.
+ Spieler erhalten 1 Stufenpunkt fuer je 25 Punkte Gildenrating, d.h.
+ 400 Stufenpunkte bei Max-Rating. Gildenmagier sollten sich daher gut
+ ueberlegen, ob sie bei der Berechnung des Ratings eine Formel zugrunde
+ legen wollen, die verhindert, dass Spieler ein Max-Rating erreichen
+ koennen.
+
SIEHE AUCH
==========
P_NEWSKILLS, GuildRating
-Last modified: Wed Jan 14 19:17:06 1998 by Patryn
+Last modified: 2021-01-10, Arathorn
diff --git a/doc/props/obsolete/P_TMP_DEFEND_HOOK b/doc/props/obsolete/P_TMP_DEFEND_HOOK
index f29d342..144f7a4 100644
--- a/doc/props/obsolete/P_TMP_DEFEND_HOOK
+++ b/doc/props/obsolete/P_TMP_DEFEND_HOOK
@@ -27,12 +27,14 @@
veraendert werden.
Es wird an dem Living die Property als mindestens 3-elementiges Array
- ({zeitpunkt, objekt, methode, ...})
+
+ ({int zeitpunkt, object objekt, string methode, ...})
+
gesetzt und die Methode 'methode' wird dann waehrend des Defend() des
Lebewesens in 'objekt' aufgerufen, solange time()<'zeitpunkt'.
Der Methode werden die Parameter der Defend() uebergeben:
- int dam, mixed dam_type, mixed spell, object enemy
+ int dam, string* dam_type, int|mapping spell, object enemy
- spell ist definitiv ein Mapping - ein an Defend() uebergebener
int-Wert wurde aequivalent umgesetzt.
- dam_type ist definitiv ein Array von Schadenswerten oder einem Wert
@@ -40,10 +42,10 @@
Zudem findet der Aufruf der Methode nach dem Abarbeiten der P_DEFENDERS
statt, diese koennen also weitere Modifikationen vorgenommen haben.
- Gibt die Funktion:
+ Gibt die Methode:
- 0 zurueck, wird Defend() abgebrochen (und damit der Schaden voellig
abgefangen) - nur noch die Flucht wird geprueft
- - ein 3-elementiges Array ({schaden, schadenstypen, spell}) zurueck,
+ - ein 3-elementiges Array ({dam, dam_type, spell}) zurueck,
werden diese Werte in der Defend() an Stelle der uebergebenen Werte
verwendet
- weder noch zurueck, wird das Ergebnis ignoriert und die Defend laeuft
@@ -54,78 +56,87 @@
===========
- Bitte das neuere Hooksystem (s. Manpage std/hooks) benutzen.
- - falls die Zeit abgelaufen oder das Objekt zerstoert ist, wird die
- Property auf 0 gesetzt
- - vor dem Setzen immer auf die Existenz eines gueltigen Hooks
+ - Der korrekte Union-Datentyp fuer die Property ist
+ <int|object|string>* fuer die normale Nutzung mit 3 Elementen.
+ Ein weit verbreiteter Anwendungsfall verwendet 2 weitere Elemente,
+ die vom Typ int und string|string* sind. Alle Stellen, die die Property
+ abfragen, sollten daher den Union-Datentyp <int|object|string|string*>*
+ verwenden. Das Beispiel beruecksichtigt diesen Fall bereits.
+ - Falls die Zeit abgelaufen oder das Objekt zerstoert ist, wird die
+ Property auf 0 gesetzt.
+ - Vor dem Setzen immer auf die Existenz eines gueltigen Hooks
pruefen, einfaches Ueberschreiben fuehrt einerseits zu Fehlern
- im Code anderer und ist andererseits unfair gegenueber ihnen
+ im Code anderer und ist andererseits unfair gegenueber ihnen.
BEISPIEL
========
*** ein gruener Schutzzauber ***
- // Setzen der Prop
- ...
- tmp=TP->QueryProp(P_TMP_DEFEND_HOOK);
+ // Vor dem Setzen der Prop pruefen, ob schon ein Hook gesetzt ist.
- // ein etwas ausfuehrlicher Check, ob wir ueberschreiben koennen,
- // Existenz && Gueltigkeit
- if(pointerp(tmp) && sizeof(tmp) && intp(tmp[0]) && (time()<tmp[0]))
- write("Der Zauber klappt nicht!\n");
+ <int|object|string|string*>* tmp = TP->QueryProp(P_TMP_DEFEND_HOOK);
+
+ // Ein etwas ausfuehrlicherer Check, ob wir ueberschreiben koennen,
+ // Existenz && noch nicht abgelaufen?
+ if(sizeof(tmp) && intp(tmp[0]) && time() < tmp[0]) {
+ write("Der Zauber klappt nicht!\n");
+ }
else {
- // der Zauber gilt eine Stunde
- TP->SetProp(P_TMP_DEFEND_HOOK,({time()+3600,TO,"abwehrfun");
- write("Ein Zauber legt sich auf dich.\n");
+ // der Zauber gilt eine Stunde
+ TP->SetProp(P_TMP_DEFEND_HOOK,({time()+3600,TO,"abwehrfun");
+ write("Ein Zauber legt sich auf Dich.\n");
}
...
// die gerufene Methode
- mixed abwehrfun(int dam, string* dam_type, mapping spell, object en) {
- // keine rekursiven Schaeden abfangen ... mindestens ein magischer
- // muss auch dabei sein
- if((!mappingp(spell) || !spell[SP_RECURSIVE]) &&
- sizeof(filter(dam_type,MAGICAL_DAMAGE_TYPES))) {
+ int|<int|string*|mapping>* abwehrfun(int dam, string* dam_type,
+ mapping spell, object en)
+ {
+ // keine rekursiven Schaeden abfangen ... mindestens ein magischer
+ // muss auch dabei sein
+ if(!spell[SP_RECURSIVE] &&
+ sizeof(filter(dam_type,MAGICAL_DAMAGE_TYPES))) {
+ // mit 10% Whkeit schuetzt der Zauber total
+ if(!random(10)) {
+ tell_object(previous_object(),
+ "Dein Zauber gleisst rund um Dich gruen auf.\n");
+ tell_room(environment(previous_object()), break_string(
+ previous_object()->Name(WESSEN)+" Haut gleisst rund um "+
+ previous_object()->QueryPronoun(WEN)+" gruen auf.",78),
+ ({previous_object()}));
- // mit 10% Whkeit schuetzt der Zauber total
- if(!random(10)) {
- tell_object(previous_object(),
- "Dein Zauber gleisst rund um dich gruen auf.\n");
- tell_room(environment(previous_object()), break_string(
- previous_object()->Name(WESSEN)+" Haut gleisst rund um "+
- previous_object()->QueryPronoun(WEN)+" gruen auf.",78),
- ({previous_object()}));
+ // manchmal geht der Zauber dabei endgueltig kaputt
+ if(!random(10))
+ previous_object()->SetProp(P_TMP_DEFEND_HOOK, 0);
- // manchmal geht der Zauber dabei endgueltig kaputt
- if(!random(10)) previous_object()->SetProp(P_TMP_DEFEND_HOOK, 0);
+ return 0; // volles Abfangen des Angriffs
+ }
- return 0; // volles Abfangen des Angriffs
+ // der Zauber schuetzt auf jeden Fall immer ein bischen
+ tell_object(previous_object(),
+ "Dein Zauber flackert rund um dich gruen auf.\n");
+ tell_room(environment(previous_object()), break_string(
+ previous_object()->Name(WESSEN)+" Haut flackert rund um "+
+ previous_object()->QueryPronoun(WEN)+" gruen auf.",78),
+ ({previous_object()}));
+ dam = (7+random(2))*dam/10; // Schaden reduzieren
+
+ return(({dam, dam_type, spell}));
}
- // der Zauber schuetzt auf jeden Fall immer ein bischen
- tell_object(previous_object(),
- "Dein Zauber flackert rund um dich gruen auf.\n");
- tell_room(environment(previous_object()), break_string(
- previous_object()->Name(WESSEN)+" Haut flackert rund um "+
- previous_object()->QueryPronoun(WEN)+" gruen auf.",78),
- ({previous_object()}));
- dam=(7+random(2))*dam/10; // Schaden reduzieren
-
- return(({dam, dam_type, spell}));
- }
-
- // der Zauber schuetzt dann gar nicht ...
- return 1;
+ // der Zauber schuetzt dann gar nicht ...
+ return 1;
}
SIEHE AUCH
==========
- Angriff: Attack(L)
- Schutz: Defend(L)
- Verwandt: InternalModifyDefend(L), P_TMP_ATTACK_MOD
- Hooks: P_TMP_DIE_HOOK, P_TMP_MOVE_HOOK, P_TMP_ATTACK_HOOK
+ Angriff: Attack(L)
+ Schutz: Defend(L)
+ Verwandt: InternalModifyDefend(L), P_TMP_ATTACK_MOD
+ Hooks: P_TMP_DIE_HOOK, P_TMP_MOVE_HOOK, P_TMP_ATTACK_HOOK
neue Hooks: std/hooks
-08.12.2008, Zesstra
+29.12.2020, Arathorn
diff --git a/doc/sphinx/lfun/Pacify.rst b/doc/sphinx/lfun/Pacify.rst
index 8a68c42..495f6c1 100644
--- a/doc/sphinx/lfun/Pacify.rst
+++ b/doc/sphinx/lfun/Pacify.rst
@@ -17,20 +17,20 @@
------------
::
- Diese Funktion versucht, ein Lebewesen zu befrieden.
+ Diese Funktion versucht, ein Lebewesen zu befrieden.
Will eine Gilde ein Lebewesen befrieden, muss sie hierfuer diese Funktion
in dem Lebewesen aufrufen.
- Ein immer befriedbarer NPC kann durch das Setzen von P_ACCEPT_PEACE in einem
- Lebewesen realisiert werden.
+ Ein immer befriedbarer NPC kann durch das Setzen von P_ACCEPT_PEACE in
+ einem Lebewesen realisiert werden.
- Standardmaessig funktioniert die Funktion wie folgt:
+ Standardmaessig funktioniert die Funktion wie folgt:
+
* Kommt der Versuch vom Spellcaster selbst, ist er immer erfolgreich.
* Kommt der Versuch von einem Teamkollegen, ist er immer erfolgreich.
* Hat das Lebewesen keine Gegner, ist der Versuch immer erfolglos.
- In diesen Faellen erfolgt auch keine Erhoehung des Befriedezaehlers.
-
+ In diesen Faellen erfolgt auch keine Erhoehung des Befriedezaehlers.
In anderen Faellen wird die in P_PEACE_HISTORY fuer die Gilde des Casters
abgelegte Zahl erfolgreicher Befriedungen (ANZ), die Intelligenz des
@@ -38,12 +38,8 @@
ermittelt.
Anschliessend wird eine Wahrscheinlichkeit w ausgerechnet:
-
-
w = (INT_CASTER + 10 - ANZ*4) / (INT_ME + 10)
-
-
Hierbei gibt w die Chance auf eine erfolgreiche Befriedung an. Mittels einer
Zufallszahl wird bestimmt, ob der aktuelle Versuch erfolgreich ist. Falls
ja, wird der Zaehler fuer die Gilde des Casters in P_PEACE_HISTORY erhoeht.
@@ -53,9 +49,8 @@
BEMERKUNGEN
-----------
-::
- * Die Funktion kann auch ueberschrieben werden, um ein vom Magier
+ * Die Funktion kann auch ueberschrieben werden, um ein vom Magier
gewuenschtes Verhalten zu realisieren. Ein komplettes Abhaengen von
Befriedungen sollte dabei aber die Ausnahme sein!
* Diese Funktion verwaltet auch das P_PEACE_HISTORY, speziell die Reduktion
@@ -68,17 +63,17 @@
1 - das Lebewesen wurde erfolgreich befriedet..
0 - der Befriedeversuch ist gescheitert.
-
BEISPIELE
---------
::
- Angenommen, der Caster hat eine Intelligenz von 22. Die folgende Tabelle
- gibt dann die Wahrscheinlichkeiten fuer eine erfolgreiche Befriedung an:
- (in Abhaengigkeit von eigener Intelligenz und vergangener erfolgreicher
- Versuche)
+ Angenommen, der Caster hat eine Intelligenz von 22. Die folgende Tabelle
+ gibt dann die Wahrscheinlichkeiten fuer eine erfolgreiche Befriedung an:
+ (in Abhaengigkeit von NPC-Intelligenz INT_ME und vergangener erfolgreicher
+ Versuche).
+
INT_ME Erfolgswahrscheinlichkeiten je nach Anzahl erfolgreicher Versuche
1 2 3 4 5 6 7 8
0 280 240 200 160 120 80 40 0
@@ -142,7 +137,5 @@
LETZTE AENDERUNG
----------------
-::
-
07.06.2008, Zesstra
diff --git a/doc/sphinx/props/P_GUILD_RATING.rst b/doc/sphinx/props/P_GUILD_RATING.rst
index b752e00..aa6862d 100644
--- a/doc/sphinx/props/P_GUILD_RATING.rst
+++ b/doc/sphinx/props/P_GUILD_RATING.rst
@@ -26,9 +26,16 @@
-----------
::
- Der Wert muss von der Gilde ermittelt werden! Meist setzt er sich
- aus den Faehigkeiten des Mitglieds zusammen und mitunter fliessen
- auch Gildenquests oder aehnliches mit ein.
+ Der Wert muss von der Gilde ermittelt werden! Meist setzt er sich
+ aus den Faehigkeiten des Mitglieds zusammen und mitunter fliessen
+ auch Gildenquests oder aehnliches mit ein.
+
+ Spieler erhalten 1 Stufenpunkt fuer je 25 Punkte Gildenrating, d.h.
+ 400 Stufenpunkte bei Max-Rating. Gildenmagier sollten sich daher gut
+ ueberlegen, ob sie bei der Berechnung des Ratings eine Formel zugrunde
+ legen wollen, die verhindert, dass Spieler ein Max-Rating erreichen
+ koennen.
+
SIEHE AUCH
----------
@@ -37,5 +44,5 @@
P_NEWSKILLS, GuildRating
-Last modified: Wed Jan 14 19:17:06 1998 by Patryn
+Last modified: 2021-01-10, Arathorn
diff --git a/doc/sphinx/props/obsolete/P_TMP_DEFEND_HOOK.rst b/doc/sphinx/props/obsolete/P_TMP_DEFEND_HOOK.rst
index 5d9ae39..5074ab0 100644
--- a/doc/sphinx/props/obsolete/P_TMP_DEFEND_HOOK.rst
+++ b/doc/sphinx/props/obsolete/P_TMP_DEFEND_HOOK.rst
@@ -26,12 +26,14 @@
veraendert werden.
Es wird an dem Living die Property als mindestens 3-elementiges Array
- ({zeitpunkt, objekt, methode, ...})
+
+ ({int zeitpunkt, object objekt, string methode, ...})
+
gesetzt und die Methode 'methode' wird dann waehrend des Defend() des
Lebewesens in 'objekt' aufgerufen, solange time()<'zeitpunkt'.
Der Methode werden die Parameter der Defend() uebergeben:
- int dam, mixed dam_type, mixed spell, object enemy
+ int dam, string* dam_type, int|mapping spell, object enemy
- spell ist definitiv ein Mapping - ein an Defend() uebergebener
int-Wert wurde aequivalent umgesetzt.
- dam_type ist definitiv ein Array von Schadenswerten oder einem Wert
@@ -39,10 +41,10 @@
Zudem findet der Aufruf der Methode nach dem Abarbeiten der P_DEFENDERS
statt, diese koennen also weitere Modifikationen vorgenommen haben.
- Gibt die Funktion:
+ Gibt die Methode:
- 0 zurueck, wird Defend() abgebrochen (und damit der Schaden voellig
abgefangen) - nur noch die Flucht wird geprueft
- - ein 3-elementiges Array ({schaden, schadenstypen, spell}) zurueck,
+ - ein 3-elementiges Array ({dam, dam_type, spell}) zurueck,
werden diese Werte in der Defend() an Stelle der uebergebenen Werte
verwendet
- weder noch zurueck, wird das Ergebnis ignoriert und die Defend laeuft
@@ -53,79 +55,88 @@
::
- Bitte das neuere Hooksystem (s. Manpage std/hooks) benutzen.
- - falls die Zeit abgelaufen oder das Objekt zerstoert ist, wird die
- Property auf 0 gesetzt
- - vor dem Setzen immer auf die Existenz eines gueltigen Hooks
+ - Der korrekte Union-Datentyp fuer die Property ist
+ <int|object|string>* fuer die normale Nutzung mit 3 Elementen.
+ Ein weit verbreiteter Anwendungsfall verwendet 2 weitere Elemente,
+ die vom Typ int und string|string* sind. Alle Stellen, die die Property
+ abfragen, sollten daher den Union-Datentyp <int|object|string|string*>*
+ verwenden. Das Beispiel beruecksichtigt diesen Fall bereits.
+ - Falls die Zeit abgelaufen oder das Objekt zerstoert ist, wird die
+ Property auf 0 gesetzt.
+ - Vor dem Setzen immer auf die Existenz eines gueltigen Hooks
pruefen, einfaches Ueberschreiben fuehrt einerseits zu Fehlern
- im Code anderer und ist andererseits unfair gegenueber ihnen
+ im Code anderer und ist andererseits unfair gegenueber ihnen.
BEISPIEL
--------
::
*** ein gruener Schutzzauber ***
- // Setzen der Prop
- ...
- tmp=TP->QueryProp(P_TMP_DEFEND_HOOK);
+ // Vor dem Setzen der Prop pruefen, ob schon ein Hook gesetzt ist.
- // ein etwas ausfuehrlicher Check, ob wir ueberschreiben koennen,
- // Existenz && Gueltigkeit
- if(pointerp(tmp) && sizeof(tmp) && intp(tmp[0]) && (time()<tmp[0]))
- write("Der Zauber klappt nicht!\n");
+ <int|object|string|string*>* tmp = TP->QueryProp(P_TMP_DEFEND_HOOK);
+
+ // Ein etwas ausfuehrlicherer Check, ob wir ueberschreiben koennen,
+ // Existenz && noch nicht abgelaufen?
+ if(sizeof(tmp) && intp(tmp[0]) && time() < tmp[0]) {
+ write("Der Zauber klappt nicht!\n");
+ }
else {
- // der Zauber gilt eine Stunde
- TP->SetProp(P_TMP_DEFEND_HOOK,({time()+3600,TO,"abwehrfun");
- write("Ein Zauber legt sich auf dich.\n");
+ // der Zauber gilt eine Stunde
+ TP->SetProp(P_TMP_DEFEND_HOOK,({time()+3600,TO,"abwehrfun");
+ write("Ein Zauber legt sich auf Dich.\n");
}
...
// die gerufene Methode
- mixed abwehrfun(int dam, string* dam_type, mapping spell, object en) {
- // keine rekursiven Schaeden abfangen ... mindestens ein magischer
- // muss auch dabei sein
- if((!mappingp(spell) || !spell[SP_RECURSIVE]) &&
- sizeof(filter(dam_type,MAGICAL_DAMAGE_TYPES))) {
+ int|<int|string*|mapping>* abwehrfun(int dam, string* dam_type,
+ mapping spell, object en)
+ {
+ // keine rekursiven Schaeden abfangen ... mindestens ein magischer
+ // muss auch dabei sein
+ if(!spell[SP_RECURSIVE] &&
+ sizeof(filter(dam_type,MAGICAL_DAMAGE_TYPES))) {
+ // mit 10% Whkeit schuetzt der Zauber total
+ if(!random(10)) {
+ tell_object(previous_object(),
+ "Dein Zauber gleisst rund um Dich gruen auf.\n");
+ tell_room(environment(previous_object()), break_string(
+ previous_object()->Name(WESSEN)+" Haut gleisst rund um "+
+ previous_object()->QueryPronoun(WEN)+" gruen auf.",78),
+ ({previous_object()}));
- // mit 10% Whkeit schuetzt der Zauber total
- if(!random(10)) {
- tell_object(previous_object(),
- "Dein Zauber gleisst rund um dich gruen auf.\n");
- tell_room(environment(previous_object()), break_string(
- previous_object()->Name(WESSEN)+" Haut gleisst rund um "+
- previous_object()->QueryPronoun(WEN)+" gruen auf.",78),
- ({previous_object()}));
+ // manchmal geht der Zauber dabei endgueltig kaputt
+ if(!random(10))
+ previous_object()->SetProp(P_TMP_DEFEND_HOOK, 0);
- // manchmal geht der Zauber dabei endgueltig kaputt
- if(!random(10)) previous_object()->SetProp(P_TMP_DEFEND_HOOK, 0);
+ return 0; // volles Abfangen des Angriffs
+ }
- return 0; // volles Abfangen des Angriffs
+ // der Zauber schuetzt auf jeden Fall immer ein bischen
+ tell_object(previous_object(),
+ "Dein Zauber flackert rund um dich gruen auf.\n");
+ tell_room(environment(previous_object()), break_string(
+ previous_object()->Name(WESSEN)+" Haut flackert rund um "+
+ previous_object()->QueryPronoun(WEN)+" gruen auf.",78),
+ ({previous_object()}));
+ dam = (7+random(2))*dam/10; // Schaden reduzieren
+
+ return(({dam, dam_type, spell}));
}
- // der Zauber schuetzt auf jeden Fall immer ein bischen
- tell_object(previous_object(),
- "Dein Zauber flackert rund um dich gruen auf.\n");
- tell_room(environment(previous_object()), break_string(
- previous_object()->Name(WESSEN)+" Haut flackert rund um "+
- previous_object()->QueryPronoun(WEN)+" gruen auf.",78),
- ({previous_object()}));
- dam=(7+random(2))*dam/10; // Schaden reduzieren
-
- return(({dam, dam_type, spell}));
- }
-
- // der Zauber schuetzt dann gar nicht ...
- return 1;
+ // der Zauber schuetzt dann gar nicht ...
+ return 1;
}
SIEHE AUCH
----------
::
- Angriff: Attack(L)
- Schutz: Defend(L)
- Verwandt: InternalModifyDefend(L), P_TMP_ATTACK_MOD
- Hooks: P_TMP_DIE_HOOK, P_TMP_MOVE_HOOK, P_TMP_ATTACK_HOOK
+ Angriff: Attack(L)
+ Schutz: Defend(L)
+ Verwandt: InternalModifyDefend(L), P_TMP_ATTACK_MOD
+ Hooks: P_TMP_DIE_HOOK, P_TMP_MOVE_HOOK, P_TMP_ATTACK_HOOK
neue Hooks: std/hooks
-08.12.2008, Zesstra
+29.12.2020, Arathorn