blob: df3fa9c218f9bca6303e902a595625ee275d6b95 [file] [log] [blame]
Zesstra18626972017-01-31 10:38:27 +01001InformDefend()
2==============
3
4FUNKTION
5--------
Zesstra18626972017-01-31 10:38:27 +01006
Bugfixa2d8e632024-01-01 21:36:12 +01007 void InformDefend(object enemy);
Zesstra18626972017-01-31 10:38:27 +01008
9DEFINIERT IN
10------------
Zesstra18626972017-01-31 10:38:27 +010011
Bugfixa2d8e632024-01-01 21:36:12 +010012 /std/living/combat.c
Zesstra18626972017-01-31 10:38:27 +010013
14ARGUMENTE
15---------
Zesstra18626972017-01-31 10:38:27 +010016
Bugfixa2d8e632024-01-01 21:36:12 +010017 enemy
18 Der Feind, der ein zu verteidigendes Lebewesen angegriffen hat.
Zesstra18626972017-01-31 10:38:27 +010019
20BESCHREIBUNG
21------------
Zesstra18626972017-01-31 10:38:27 +010022
Bugfixa2d8e632024-01-01 21:36:12 +010023 Es ist moeglich, dass Objekte ueber Angriffe auf Lebewesen
24 informiert werden, sofern diese Objekte bei dem angegriffenen
25 Lebewesen mittels AddDefender() angemeldet wurden und sich der
26 selben Umgebung befinden.
27 Zumeist wird es sich bei den Objekten natuerlich ebenfalls um
28 andere Lebewesen handeln, die das Lebewesen, bei dem sie angemeldet
29 sind, verteidigen sollen.
30 Bei einem Angriff auf das Lebewesen werden alle Objekte per Aufruf
31 von InformDefend() darueber informiert, wobei der Angreifer als
32 Parameter uebergeben wird.
33 Standardmaessig ist diese Funktion in Lebewesen bereits definiert,
34 wobei der Skill SK_INFORM_DEFEND, sofern vorhanden, aufgerufen wird.
Zesstra18626972017-01-31 10:38:27 +010035
36BEISPIEL
37--------
Zesstra18626972017-01-31 10:38:27 +010038
Bugfixa2d8e632024-01-01 21:36:12 +010039 Sehr beliebt sind in Gilden NPCs, die den Beschwoerer begleiten und
40 verteidigen, z.B. beschworene Daemonen:
41
42.. code-block:: pike
43
44 inherit "/std/npc";
45
46 #include <properties.h>
47
48 object owner;
49
50 protected void create()
51 {
52 ::create();
53 SetProp(P_NAME,"Daemon");
54 ...
55 }
56
57 // nach Clonen des Daemons folgende Funktion mit Beschwoerer als
58 // Parameter aufrufen
59
60 void Identify(object caster)
61 {
62 if(!objectp(caster))
63 call_out(#'remove,0);
64 owner=caster;
65 owner->AddDefender(this_object());
66 }
67
68 // folgende Funktion wird automatisch aufgerufen, wenn der
69 // Beschwoerer angegriffen wird
70
71 public void InformDefend(object enemy)
72 {
73 if(!IsEnemy(enemy)&&enemy!=owner)
74 Kill(enemy);
75 }
76
77 Soll der Daemon sich auch in ein Team einordnen, in welchem sich der
78 Beschwoerer eventuell befindet, so ist zusaetzlich AssocMember() in
79 diesem Beschwoerer aufzurufen, wobei der Daemon als Parameter
80 uebergeben wird.
Zesstra18626972017-01-31 10:38:27 +010081
82SIEHE AUCH
83----------
Zesstra18626972017-01-31 10:38:27 +010084
Bugfixa2d8e632024-01-01 21:36:12 +010085 :doc:`AddDefender`, :doc:`RemoveDefender`, :doc:`QueryDefenders`,
86 :doc:`QueryPresentDefenders`, :doc:`QueryNearDefenders`,
87 :doc:`DefendOther`,
88 :doc:`../props/P_DEFENDER`, /std/living/combat.c
Zesstra18626972017-01-31 10:38:27 +010089
Bugfixa2d8e632024-01-01 21:36:12 +010090Letzte Aenderung: 28.10.2022, Bugfix