blob: 855d2b81b85f215cf8f9c5a49e7bcb01855793d9 [file] [log] [blame]
Zesstra18626972017-01-31 10:38:27 +01001DefendOther()
2=============
3
4FUNKTION
5--------
6::
7
8 mixed DefendOther(int dam,mixed dam_type,mixed spell,object enemy);
9
10DEFINIERT IN
11------------
12::
13
14 /std/living/combat.c
15
16ARGUMENTE
17---------
18::
19
20 dam
21 Der Schaden, der voraussichtlich beim zu verteidigenden Lebewesen
22 verursacht werden soll.
23 dam_type
24 Der Schadenstyp (oder die Schadenstypen), der beim zu
25 verteidigenden Lebewesen verursacht werden sollen.
26 spell
27 Wenn das zu verteidigende Lebewesen mit Spells angegriffen wurde,
28 so koennte man hier mehr Infos entnehmen.
29 enemy
30 Der Feind, der ein zu verteidigendes Lebewesen angegriffen hat.
31
32RUeCKGABEWERT
33-------------
34::
35
36 Array mit den Eintraegen der gegebenenfalls veraenderten
37 uebergebenen Parameter:
38 (1) dam [Typ int],
39 (2) dam_type [Typ string*],
40 (3) spell [Typ mapping].
41
42BESCHREIBUNG
43------------
44::
45
46 Es ist moeglich, dass Objekte Angriffe auf Lebewesen abwehren oder
47 umwandeln, sofern diese Objekte bei dem angegriffenen Lebewesen
48 mittels AddDefender() angemeldet wurden und sich der selben Umgebung
49 befinden.
50 Zumeist wird es sich bei den Objekten natuerlich ebenfalls um
51 andere Lebewesen handeln, die das Lebewesen, bei dem sie angemeldet
52 sind, verteidigen sollen.
53 Bei einem Angriff auf das Lebewesen koennen alle Objekte per Aufruf
54 von DefendOther() in einen Angriff eingreifen, wobei die
55 Schadensstaerke, der Schadenstyp (die Schadenstypen),
56 Zusatzinformationen fuer Angriffsspells und der Angreifer als
57 Parameter uebergeben werden.
58 Desweiteren ist zu beachten, dass bei als physikalisch markierten
59 Angriffen in einem Team nur Verteidiger aus der ersten Reihe
60 beruecksichtigt werden und dass bei einem Angriff zufaellig aus
61 allen moeglichen Verteidigern ausgewaehlt wird.
62 Standardmaessig ist diese Funktion in Lebewesen bereits definiert,
63 wobei der Skill SK_DEFEND_OTHER, sofern vorhanden, aufgerufen wird.
64
65BEISPIEL
66--------
67::
68
69 Sehr beliebt sind in Gilden NPCs, die den Beschwoerer begleiten und
70 verteidigen, z.B. beschworene Daemonen:
71 inherit "std/npc";
72 include <properties.h>
73 object owner;
74 void create()
75 { ::create();
76 SetProp(P_NAME,"Daemon");
77 ...
78 }
79 // nach Clonen des Daemons folgende Funktion mit Beschwoerer als
80 // Parameter aufrufen
81 Identify(object caster)
82 { if(!objectp(caster))
83 call_out(#'remove,0);
84 owner=caster;
85 owner->AddDefender(this_object());
86 }
87 // der Daemon wehrt jeden Angriff mit Feuer voll ab, man muss zuerst
88 // den Verteidiger umbringen, um den Beschwoerer toeten zu koennen
89 mixed DefendOther(int dam,mixed dam_type,mixed spell,object enemy)
90 { if(sizeof(dam_type)&&member_array(DT_FIRE,dam_type)!=-1)
91 dam=0;
92 return({dam,dam_type,spell});
93 }
94 Soll der Daemon sich auch in ein Team einordnen, in welchem sich der
95 Beschwoerer eventuell befindet, so ist zusaetzlich AssocMember() in
96 diesem Beschwoerer aufzurufen, wobei der Daemon als Parameter
97 uebergeben wird.
98
99SIEHE AUCH
100----------
101::
102
103 AddDefender(), RemoveDefender(), InformDefend(), Kill(), IsEnemy(),
104 P_DEFENDERS, /std/living/combat.c, /sys/new_skills.h
105
106
107Last modified: Fri Feb 25 14:45:00 2000 by Paracelsus
108