blob: 3b725f8184b24ddf4e76a59d41f331356124efba [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001InformDefend()
Zesstra953f9972017-02-18 15:37:36 +01002**************
MG Mud User88f12472016-06-24 23:31:02 +02003
MG Mud User88f12472016-06-24 23:31:02 +02004
Zesstra953f9972017-02-18 15:37:36 +01005FUNKTION
6========
MG Mud User88f12472016-06-24 23:31:02 +02007
Zesstra953f9972017-02-18 15:37:36 +01008 void InformDefend(object enemy);
MG Mud User88f12472016-06-24 23:31:02 +02009
MG Mud User88f12472016-06-24 23:31:02 +020010
Zesstra953f9972017-02-18 15:37:36 +010011DEFINIERT IN
12============
MG Mud User88f12472016-06-24 23:31:02 +020013
Zesstra953f9972017-02-18 15:37:36 +010014 /std/living/combat.c
MG Mud User88f12472016-06-24 23:31:02 +020015
Zesstra953f9972017-02-18 15:37:36 +010016
17ARGUMENTE
18=========
19
20 enemy
Zesstraa178b882025-06-20 16:49:42 +020021 Der Feind, der ein zu verteidigendes Lebewesen angegriffen hat.
Zesstra953f9972017-02-18 15:37:36 +010022
23
24BESCHREIBUNG
25============
26
27 Es ist moeglich, dass Objekte ueber Angriffe auf Lebewesen
28 informiert werden, sofern diese Objekte bei dem angegriffenen
29 Lebewesen mittels AddDefender() angemeldet wurden und sich der
Zesstraa178b882025-06-20 16:49:42 +020030 selben Umgebung befinden. Zumeist wird es sich bei den Objekten
31 natuerlich ebenfalls um andere Lebewesen handeln, die das
32 Lebewesen, bei dem sie angemeldet sind, verteidigen sollen. Bei
33 einem Angriff auf das Lebewesen werden alle Objekte per Aufruf von
34 InformDefend() darueber informiert, wobei der Angreifer als
35 Parameter uebergeben wird. Standardmaessig ist diese Funktion in
36 Lebewesen bereits definiert, wobei der Skill SK_INFORM_DEFEND,
37 sofern vorhanden, aufgerufen wird.
Zesstra953f9972017-02-18 15:37:36 +010038
39
40BEISPIEL
41========
42
43 Sehr beliebt sind in Gilden NPCs, die den Beschwoerer begleiten und
44 verteidigen, z.B. beschworene Daemonen:
Zesstraa178b882025-06-20 16:49:42 +020045
46 inherit "/std/npc";
47
48 #include <properties.h>
49
50 object owner;
51
52 protected void create()
53 {
54 ::create();
55 SetProp(P_NAME,"Daemon");
56 ...
57 }
58
Zesstra953f9972017-02-18 15:37:36 +010059 // nach Clonen des Daemons folgende Funktion mit Beschwoerer als
60 // Parameter aufrufen
Zesstraa178b882025-06-20 16:49:42 +020061
62 void Identify(object caster)
63 {
64 if(!objectp(caster))
65 call_out(#'remove,0);
66 owner=caster;
67 owner->AddDefender(this_object());
68 }
69
Zesstra953f9972017-02-18 15:37:36 +010070 // folgende Funktion wird automatisch aufgerufen, wenn der
71 // Beschwoerer angegriffen wird
Zesstraa178b882025-06-20 16:49:42 +020072
73 public void InformDefend(object enemy)
74 {
75 if(!IsEnemy(enemy)&&enemy!=owner)
76 Kill(enemy);
77 }
78
Zesstra953f9972017-02-18 15:37:36 +010079 Soll der Daemon sich auch in ein Team einordnen, in welchem sich der
80 Beschwoerer eventuell befindet, so ist zusaetzlich AssocMember() in
81 diesem Beschwoerer aufzurufen, wobei der Daemon als Parameter
82 uebergeben wird.
83
84
85SIEHE AUCH
86==========
87
Zesstraa178b882025-06-20 16:49:42 +020088 AddDefender(), RemoveDefender(), QueryDefenders(),
89 QueryPresentDefenders(), QueryNearDefenders(), DefendOther(),
Zesstrae959e722025-07-09 22:11:16 +020090 P_DEFENDERS, /std/living/combat.c
Zesstra953f9972017-02-18 15:37:36 +010091
Zesstraa178b882025-06-20 16:49:42 +020092Letzte Aenderung: 28.10.2022, Bugfix