blob: 5d9ae3905c3f6daf9e22213be7e7391d8b204659 [file] [log] [blame]
Zesstra18626972017-01-31 10:38:27 +01001P_TMP_DEFEND_HOOK
2=================
3
4********************* VERALTETE PROPERTY ******************************
5* Diese Property ist veraltet. Bitte nicht mehr in neuem Code nutzen. *
6***********************************************************************
7P_TMP_DEFEND_HOOK
8
9NAME
10----
11::
12
13 P_TMP_DEFEND_HOOK "defend_hook"
14
15DEFINIERT IN
16------------
17::
18
19 /sys/new_skills.h
20
21BESCHREIBUNG
22------------
23::
24
25 Mittels dieser Property koennen die Abwehren eines Livings temporaer
26 veraendert werden.
27
28 Es wird an dem Living die Property als mindestens 3-elementiges Array
29 ({zeitpunkt, objekt, methode, ...})
30 gesetzt und die Methode 'methode' wird dann waehrend des Defend() des
31 Lebewesens in 'objekt' aufgerufen, solange time()<'zeitpunkt'.
32
33 Der Methode werden die Parameter der Defend() uebergeben:
34 int dam, mixed dam_type, mixed spell, object enemy
35 - spell ist definitiv ein Mapping - ein an Defend() uebergebener
36 int-Wert wurde aequivalent umgesetzt.
37 - dam_type ist definitiv ein Array von Schadenswerten oder einem Wert
38
39 Zudem findet der Aufruf der Methode nach dem Abarbeiten der P_DEFENDERS
40 statt, diese koennen also weitere Modifikationen vorgenommen haben.
41
42 Gibt die Funktion:
43 - 0 zurueck, wird Defend() abgebrochen (und damit der Schaden voellig
44 abgefangen) - nur noch die Flucht wird geprueft
45 - ein 3-elementiges Array ({schaden, schadenstypen, spell}) zurueck,
46 werden diese Werte in der Defend() an Stelle der uebergebenen Werte
47 verwendet
48 - weder noch zurueck, wird das Ergebnis ignoriert und die Defend laeuft
49 regulaer weiter
50
51BEMERKUNGEN
52-----------
53::
54
55 - Bitte das neuere Hooksystem (s. Manpage std/hooks) benutzen.
56 - falls die Zeit abgelaufen oder das Objekt zerstoert ist, wird die
57 Property auf 0 gesetzt
58 - vor dem Setzen immer auf die Existenz eines gueltigen Hooks
59 pruefen, einfaches Ueberschreiben fuehrt einerseits zu Fehlern
60 im Code anderer und ist andererseits unfair gegenueber ihnen
61
62BEISPIEL
63--------
64::
65
66 *** ein gruener Schutzzauber ***
67 // Setzen der Prop
68 ...
69 tmp=TP->QueryProp(P_TMP_DEFEND_HOOK);
70
71 // ein etwas ausfuehrlicher Check, ob wir ueberschreiben koennen,
72 // Existenz && Gueltigkeit
73 if(pointerp(tmp) && sizeof(tmp) && intp(tmp[0]) && (time()<tmp[0]))
74 write("Der Zauber klappt nicht!\n");
75 else {
76 // der Zauber gilt eine Stunde
77 TP->SetProp(P_TMP_DEFEND_HOOK,({time()+3600,TO,"abwehrfun");
78 write("Ein Zauber legt sich auf dich.\n");
79 }
80 ...
81
82 // die gerufene Methode
83 mixed abwehrfun(int dam, string* dam_type, mapping spell, object en) {
84 // keine rekursiven Schaeden abfangen ... mindestens ein magischer
85 // muss auch dabei sein
86 if((!mappingp(spell) || !spell[SP_RECURSIVE]) &&
87 sizeof(filter(dam_type,MAGICAL_DAMAGE_TYPES))) {
88
89 // mit 10% Whkeit schuetzt der Zauber total
90 if(!random(10)) {
91 tell_object(previous_object(),
92 "Dein Zauber gleisst rund um dich gruen auf.\n");
93 tell_room(environment(previous_object()), break_string(
94 previous_object()->Name(WESSEN)+" Haut gleisst rund um "+
95 previous_object()->QueryPronoun(WEN)+" gruen auf.",78),
96 ({previous_object()}));
97
98 // manchmal geht der Zauber dabei endgueltig kaputt
99 if(!random(10)) previous_object()->SetProp(P_TMP_DEFEND_HOOK, 0);
100
101 return 0; // volles Abfangen des Angriffs
102 }
103
104 // der Zauber schuetzt auf jeden Fall immer ein bischen
105 tell_object(previous_object(),
106 "Dein Zauber flackert rund um dich gruen auf.\n");
107 tell_room(environment(previous_object()), break_string(
108 previous_object()->Name(WESSEN)+" Haut flackert rund um "+
109 previous_object()->QueryPronoun(WEN)+" gruen auf.",78),
110 ({previous_object()}));
111 dam=(7+random(2))*dam/10; // Schaden reduzieren
112
113 return(({dam, dam_type, spell}));
114 }
115
116 // der Zauber schuetzt dann gar nicht ...
117 return 1;
118 }
119
120SIEHE AUCH
121----------
122::
123
124 Angriff: Attack(L)
125 Schutz: Defend(L)
126 Verwandt: InternalModifyDefend(L), P_TMP_ATTACK_MOD
127 Hooks: P_TMP_DIE_HOOK, P_TMP_MOVE_HOOK, P_TMP_ATTACK_HOOK
128 neue Hooks: std/hooks
129
13008.12.2008, Zesstra
131