blob: 0475a3dab1627525c7061a15f000e8b4ee3127d6 [file] [log] [blame]
Zesstra18626972017-01-31 10:38:27 +01001TakeFlaw()
2==========
3
4FUNKTION
5--------
6::
7
8 varargs void TakeFlaw(object enemy); (Waffen)
Arathorn613fc5a2019-10-06 21:27:06 +02009 varargs void TakeFlaw(string* dam_types,mapping einfos) (Ruestungen)
Zesstra18626972017-01-31 10:38:27 +010010
11DEFINIERT IN
12------------
13::
14
15 /std/armour/combat.c,
16 /std/weapon/combat.c
17
18ARGUMENTE
19---------
20::
21
22 keine
23
24BESCHREIBUNG
25------------
26::
27
28 Diese Funktion wird in Waffen und Ruestungen waehrend des Kampfes
29 aufgerufen. In einer Waffe erfolgt der Aufruf bei jedem Schlag mit
30 dieser Waffe, bei Ruestungen wird TakeFlaw() in einer zufaellig
31 ausgewaehlten getragenen Ruestung aufgerufen.
32 Waffen bekommen das Gegnerobjekt uebergeben, Ruestungen die erweiterten
33 DefendInfos (s. dort fuer Details). Aufgrund dieser Informationen kann
34 man den Schaden, den ein Gegenstand nimmt, flexibler gestalten (z.B. bei
35 einer Waffe in Abhaengigkeit von P_BODY des Gegners.)
36
37 Soweit man die Funktion nicht ueberlaedt, bewirkt sie nichts weiter als
38 das Erhoehen eines Zaehlers, der mit QueryFlaw() abgefragt werden kann.
39
40RUeCKGABEWERT
41-------------
42::
43
44 keiner
45
46BEMERKUNGEN
47-----------
48::
49
50 Die Waffen-/ Ruestungsklasse wird nicht automatisch reduziert! Wenn
51 eine Waffe oder Ruestung sich abnutzen soll, muss man TakeFlaw()
52 ueberladen und dort entsprechend handeln, oder (fuer einfache
53 Faelle) die Property P_QUALITY setzen.
54
55BEISPIELE
56---------
57::
58
59 Eine Waffe, deren Waffenklasse alle 20 Schlaege um 1 abnimmt:
60
Arathorn613fc5a2019-10-06 21:27:06 +020061 inherit "/std/weapon";
Zesstra18626972017-01-31 10:38:27 +010062
63 #include <properties.h>
64 #include <combat.h>
65
Arathorn613fc5a2019-10-06 21:27:06 +020066 protected void create() {
Zesstra18626972017-01-31 10:38:27 +010067 /* Das Uebliche... */
68 }
69
Arathorn613fc5a2019-10-06 21:27:06 +020070 varargs void TakeFlaw(object enemy) {
71 /* erstmal den Zaehler erhoehen... */
72 ::TakeFlaw(enemy);
Zesstra18626972017-01-31 10:38:27 +010073
74 /* jetzt den aktuellen Zaehlerstand abfragen */
Arathorn613fc5a2019-10-06 21:27:06 +020075 int flaw = QueryFlaw()[0];
Zesstra18626972017-01-31 10:38:27 +010076
77 /* Abzug nur jeden 20. Schlag */
78 if (!(flaw % 20)) {
79 /* So, jetzt fuer den Schaden sorgen. Hierfuer benutzt */
80 /* man am sichersten die eingebaute Funktion Damage() */
81 Damage(1);
82 }
83 }
84
85 Dieses einfache Beispiel haette natuerlich auch ueber ein
86 SetProp(P_QUALITY,20); im create() realisiert werden koennen.
87
88SIEHE AUCH
89----------
90::
91
Arathorn613fc5a2019-10-06 21:27:06 +020092 QueryFlaw(), Damage(), DefendInfo, P_QUALITY, /std/armour/combat.c,
Zesstra18626972017-01-31 10:38:27 +010093 /std/weapon/combat.c
94
95
96Last modified: Thu May 22 10:30:10 1997 by Paracelsus
97