blob: 363ff24f48347ce31155bb1a0e9e1d6ac326decc [file] [log] [blame]
Zesstra18626972017-01-31 10:38:27 +01001DefendOther()
2=============
3
4FUNKTION
5--------
6::
7
Zesstrad1b564b2019-09-11 21:27:59 +02008 public <int|string*|mapping>* DefendOther(int dam, string* dam_type,
9 int|mapping si_spell, object enemy)
Zesstra18626972017-01-31 10:38:27 +010010
11DEFINIERT IN
12------------
13::
14
Zesstrad1b564b2019-09-11 21:27:59 +020015 /std/living/combat.c
Zesstra18626972017-01-31 10:38:27 +010016
17ARGUMENTE
18---------
19::
20
Zesstrad1b564b2019-09-11 21:27:59 +020021 int dam
22 Der Schaden, der voraussichtlich beim zu verteidigenden Lebewesen
23 verursacht werden soll.
24
25 string* dam_type
26 Der Schadenstyp (oder die Schadenstypen), der beim zu
27 verteidigenden Lebewesen verursacht werden sollen.
28
29 mapping si_spell
30 Mapping mit zusaetzlichen Informationen zum Angriff
31 Alte Objekte uebergeben manchmal einen Integer (0 fuer
32 physikalischen Angriff, 1 fuer Zauber.
33
34 object enemy
35 Der Feind, der ein zu verteidigendes Lebewesen angegriffen hat.
Zesstra18626972017-01-31 10:38:27 +010036
37RUeCKGABEWERT
38-------------
39::
40
Zesstrad1b564b2019-09-11 21:27:59 +020041 Array mit den Eintraegen der gegebenenfalls veraenderten
42 uebergebenen Parameter:
Zesstra18626972017-01-31 10:38:27 +010043 (1) dam [Typ int],
44 (2) dam_type [Typ string*],
45 (3) spell [Typ mapping].
46
47BESCHREIBUNG
48------------
49::
50
Zesstrad1b564b2019-09-11 21:27:59 +020051 Es ist moeglich, dass Objekte Angriffe auf Lebewesen abwehren oder
52 umwandeln, sofern diese Objekte bei dem angegriffenen Lebewesen
53 mittels AddDefender() angemeldet wurden und sich der selben Umgebung
54 befinden.
55 Zumeist wird es sich bei den Objekten natuerlich ebenfalls um
56 andere Lebewesen handeln, die das Lebewesen, bei dem sie angemeldet
57 sind, verteidigen sollen.
58
59 Bei einem Angriff auf das Lebewesen koennen alle Objekte per Aufruf
60 von DefendOther() in einen Angriff eingreifen, wobei die
61 Schadensstaerke, der Schadenstyp (die Schadenstypen),
62 Zusatzinformationen fuer Angriffsspells und der Angreifer als
63 Parameter uebergeben werden.
64
65 Des weiteren ist zu beachten, dass bei als physikalisch markierten
66 Angriffen in einem Team nur Verteidiger aus der ersten Reihe
67 beruecksichtigt werden und dass bei einem Angriff zufaellig aus
68 allen moeglichen Verteidigern ausgewaehlt wird.
69
70 Standardmaessig ist diese Funktion in Lebewesen bereits definiert,
71 wobei der Skill SK_DEFEND_OTHER, sofern vorhanden, aufgerufen wird.
Zesstra18626972017-01-31 10:38:27 +010072
73BEISPIEL
74--------
75::
76
Zesstrad1b564b2019-09-11 21:27:59 +020077 Sehr beliebt sind in Gilden NPCs, die den Beschwoerer begleiten und
78 verteidigen, z.B. beschworene Daemonen:
79
80 inherit "/std/npc";
81
82 include <properties.h>
83
84 object owner;
85
86 void create() {
87 ::create();
88 SetProp(P_NAME,"Daemon");
89 ...
90 }
91
92 // nach Clonen des Daemons folgende Funktion mit Beschwoerer als
93 // Parameter aufrufen
94 void Identify(object caster) {
95 if (!objectp(caster))
96 call_out(#'remove,0);
97 owner = caster;
98 owner->AddDefender(this_object());
99 }
100
101 // der Daemon wehrt jeden Angriff mit Feuer voll ab, man muss zuerst
102 // den Verteidiger umbringen, um den Beschwoerer toeten zu koennen
103 public <int|string*|mapping>* DefendOther(int dam,
104 string|string* dt, int|mapping spell, object enemy) {
105 if (sizeof(dt) && member(dt, DT_FIRE) != -1)
106 dam = 0;
107 return ({dam, dam_type, spell});
108 }
109
110 Soll der Daemon sich auch in ein Team einordnen, in welchem sich der
111 Beschwoerer eventuell befindet, so ist zusaetzlich AssocMember() in
112 diesem Beschwoerer aufzurufen, wobei der Daemon als Parameter
113 uebergeben wird.
Zesstra18626972017-01-31 10:38:27 +0100114
115SIEHE AUCH
116----------
Zesstra18626972017-01-31 10:38:27 +0100117
Zesstrad1b564b2019-09-11 21:27:59 +0200118 Funktionen:
119 :doc:`../lfun/AddDefender`, :doc:`../lfun/RemoveDefender`, :doc:`../lfun/InformDefend`, :doc:`../lfun/Kill`, :doc:`../lfun/IsEnemy`, :doc:`../lfun/Defend`
120 Properties
121 :doc:`../props/P_DEFENDERS`
122 Objekte:
123 /std/living/combat.c, /sys/new_skills.h
Zesstra18626972017-01-31 10:38:27 +0100124
Zesstrad1b564b2019-09-11 21:27:59 +0200125Last modified: 2019-Aug-26, Arathorn