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