blob: 2b706f50eefaf1cae5aba149a8ba8d5380330b83 [file] [log] [blame]
Zesstra953f9972017-02-18 15:37:36 +01001
MG Mud User88f12472016-06-24 23:31:02 +02002DefendOther()
Zesstra953f9972017-02-18 15:37:36 +01003*************
MG Mud User88f12472016-06-24 23:31:02 +02004
MG Mud User88f12472016-06-24 23:31:02 +02005
Zesstra953f9972017-02-18 15:37:36 +01006FUNKTION
7========
MG Mud User88f12472016-06-24 23:31:02 +02008
Zesstrae9a1ad42019-09-11 21:29:10 +02009 public <int|string*|mapping>* DefendOther(int dam, string* dam_type,
10 int|mapping si_spell, object enemy)
MG Mud User88f12472016-06-24 23:31:02 +020011
MG Mud User88f12472016-06-24 23:31:02 +020012
Zesstra953f9972017-02-18 15:37:36 +010013DEFINIERT IN
14============
MG Mud User88f12472016-06-24 23:31:02 +020015
Zesstra953f9972017-02-18 15:37:36 +010016 /std/living/combat.c
MG Mud User88f12472016-06-24 23:31:02 +020017
MG Mud User88f12472016-06-24 23:31:02 +020018
Zesstra953f9972017-02-18 15:37:36 +010019ARGUMENTE
20=========
21
Zesstrae9a1ad42019-09-11 21:29:10 +020022 int dam
Zesstra953f9972017-02-18 15:37:36 +010023 Der Schaden, der voraussichtlich beim zu verteidigenden Lebewesen
24 verursacht werden soll.
Zesstrae9a1ad42019-09-11 21:29:10 +020025
26 string* dam_type
Zesstra953f9972017-02-18 15:37:36 +010027 Der Schadenstyp (oder die Schadenstypen), der beim zu
28 verteidigenden Lebewesen verursacht werden sollen.
Zesstrae9a1ad42019-09-11 21:29:10 +020029
30 mapping si_spell
31 Mapping mit zusaetzlichen Informationen zum Angriff
32 Alte Objekte uebergeben manchmal einen Integer (0 fuer
33 physikalischen Angriff, 1 fuer Zauber.
34
35 object enemy
Zesstra953f9972017-02-18 15:37:36 +010036 Der Feind, der ein zu verteidigendes Lebewesen angegriffen hat.
37
38
39RUeCKGABEWERT
40=============
41
42 Array mit den Eintraegen der gegebenenfalls veraenderten
43 uebergebenen Parameter:
Zesstrae9a1ad42019-09-11 21:29:10 +020044 (1) dam [Typ int],
45 (2) dam_type [Typ string*],
46 (3) spell [Typ mapping].
Zesstra953f9972017-02-18 15:37:36 +010047
48
49BESCHREIBUNG
50============
51
52 Es ist moeglich, dass Objekte Angriffe auf Lebewesen abwehren oder
53 umwandeln, sofern diese Objekte bei dem angegriffenen Lebewesen
54 mittels AddDefender() angemeldet wurden und sich der selben Umgebung
55 befinden.
56 Zumeist wird es sich bei den Objekten natuerlich ebenfalls um
57 andere Lebewesen handeln, die das Lebewesen, bei dem sie angemeldet
58 sind, verteidigen sollen.
Zesstrae9a1ad42019-09-11 21:29:10 +020059
Zesstra953f9972017-02-18 15:37:36 +010060 Bei einem Angriff auf das Lebewesen koennen alle Objekte per Aufruf
61 von DefendOther() in einen Angriff eingreifen, wobei die
62 Schadensstaerke, der Schadenstyp (die Schadenstypen),
63 Zusatzinformationen fuer Angriffsspells und der Angreifer als
64 Parameter uebergeben werden.
Zesstrae9a1ad42019-09-11 21:29:10 +020065
66 Des weiteren ist zu beachten, dass bei als physikalisch markierten
Zesstra953f9972017-02-18 15:37:36 +010067 Angriffen in einem Team nur Verteidiger aus der ersten Reihe
68 beruecksichtigt werden und dass bei einem Angriff zufaellig aus
69 allen moeglichen Verteidigern ausgewaehlt wird.
Zesstrae9a1ad42019-09-11 21:29:10 +020070
Zesstra953f9972017-02-18 15:37:36 +010071 Standardmaessig ist diese Funktion in Lebewesen bereits definiert,
72 wobei der Skill SK_DEFEND_OTHER, sofern vorhanden, aufgerufen wird.
73
74
75BEISPIEL
76========
77
78 Sehr beliebt sind in Gilden NPCs, die den Beschwoerer begleiten und
79 verteidigen, z.B. beschworene Daemonen:
Zesstrae9a1ad42019-09-11 21:29:10 +020080
81 inherit "/std/npc";
82
83 include <properties.h>
84
85 object owner;
86
87 void create() {
88 ::create();
89 SetProp(P_NAME,"Daemon");
90 ...
91 }
92
Zesstra953f9972017-02-18 15:37:36 +010093 // nach Clonen des Daemons folgende Funktion mit Beschwoerer als
94 // Parameter aufrufen
Zesstrae9a1ad42019-09-11 21:29:10 +020095 void Identify(object caster) {
96 if (!objectp(caster))
97 call_out(#'remove,0);
98 owner = caster;
99 owner->AddDefender(this_object());
100 }
101
Zesstra953f9972017-02-18 15:37:36 +0100102 // der Daemon wehrt jeden Angriff mit Feuer voll ab, man muss zuerst
103 // den Verteidiger umbringen, um den Beschwoerer toeten zu koennen
Zesstrae9a1ad42019-09-11 21:29:10 +0200104 public <int|string*|mapping>* DefendOther(int dam,
105 string|string* dt, int|mapping spell, object enemy) {
106 if (sizeof(dt) && member(dt, DT_FIRE) != -1)
107 dam = 0;
108 return ({dam, dam_type, spell});
109 }
110
Zesstra953f9972017-02-18 15:37:36 +0100111 Soll der Daemon sich auch in ein Team einordnen, in welchem sich der
112 Beschwoerer eventuell befindet, so ist zusaetzlich AssocMember() in
113 diesem Beschwoerer aufzurufen, wobei der Daemon als Parameter
114 uebergeben wird.
115
116
117SIEHE AUCH
118==========
119
Zesstrae9a1ad42019-09-11 21:29:10 +0200120 Funktionen:
121 AddDefender(), RemoveDefender(), InformDefend(), Kill(),
122 IsEnemy(), Defend()
Zesstra953f9972017-02-18 15:37:36 +0100123
Zesstrae9a1ad42019-09-11 21:29:10 +0200124 Properties
125 P_DEFENDERS
126
127 Objekte:
128 /std/living/combat.c, /sys/new_skills.h
129
130Last modified: 2019-Aug-26, Arathorn