blob: feefcc1f44e248ca2f6f918e568d166fcddaf4aa [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
Arathornb6667492020-01-08 21:48:54 +01009 public <int|string*|mapping|object>* DefendOther(int dam,
Zesstraa178b882025-06-20 16:49:42 +020010 string* dam_type, 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
Zesstraa178b882025-06-20 16:49:42 +020023 Der Schaden, der voraussichtlich beim zu verteidigenden
24 Lebewesen verursacht werden soll.
Zesstrae9a1ad42019-09-11 21:29:10 +020025
26 string* dam_type
Zesstraa178b882025-06-20 16:49:42 +020027 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
Zesstraa178b882025-06-20 16:49:42 +020031 Mapping mit zusaetzlichen Informationen zum Angriff Alte Objekte
32 uebergeben manchmal einen Integer (0 fuer physikalischen
33 Angriff, 1 fuer Zauber.
Zesstrae9a1ad42019-09-11 21:29:10 +020034
35 object enemy
Zesstraa178b882025-06-20 16:49:42 +020036 Der Feind, der ein zu verteidigendes Lebewesen angegriffen hat.
Zesstra953f9972017-02-18 15:37:36 +010037
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
Zesstraa178b882025-06-20 16:49:42 +020054 mittels AddDefender() angemeldet wurden und sich der selben
55 Umgebung befinden. Zumeist wird es sich bei den Objekten natuerlich
56 ebenfalls um andere Lebewesen handeln, die das Lebewesen, bei dem
57 sie angemeldet sind, verteidigen sollen.
Zesstrae9a1ad42019-09-11 21:29:10 +020058
Zesstra953f9972017-02-18 15:37:36 +010059 Bei einem Angriff auf das Lebewesen koennen alle Objekte per Aufruf
60 von DefendOther() in einen Angriff eingreifen, wobei die
61 Schadensstaerke, der Schadenstyp (die Schadenstypen),
62 Zusatzinformationen fuer Angriffsspells und der Angreifer als
63 Parameter uebergeben werden.
Zesstrae9a1ad42019-09-11 21:29:10 +020064
65 Des weiteren ist zu beachten, dass bei als physikalisch markierten
Zesstra953f9972017-02-18 15:37:36 +010066 Angriffen in einem Team nur Verteidiger aus der ersten Reihe
67 beruecksichtigt werden und dass bei einem Angriff zufaellig aus
68 allen moeglichen Verteidigern ausgewaehlt wird.
Zesstrae9a1ad42019-09-11 21:29:10 +020069
Zesstra953f9972017-02-18 15:37:36 +010070 Standardmaessig ist diese Funktion in Lebewesen bereits definiert,
71 wobei der Skill SK_DEFEND_OTHER, sofern vorhanden, aufgerufen wird.
72
73
74BEISPIEL
75========
76
77 Sehr beliebt sind in Gilden NPCs, die den Beschwoerer begleiten und
78 verteidigen, z.B. beschworene Daemonen:
Zesstrae9a1ad42019-09-11 21:29:10 +020079
80 inherit "/std/npc";
81
82 include <properties.h>
83
84 object owner;
85
86 void create() {
87 ::create();
88 SetProp(P_NAME,"Daemon");
89 ...
90 }
91
Zesstra953f9972017-02-18 15:37:36 +010092 // nach Clonen des Daemons folgende Funktion mit Beschwoerer als
93 // Parameter aufrufen
Zesstrae9a1ad42019-09-11 21:29:10 +020094 void Identify(object caster) {
95 if (!objectp(caster))
96 call_out(#'remove,0);
97 owner = caster;
98 owner->AddDefender(this_object());
99 }
100
Zesstra953f9972017-02-18 15:37:36 +0100101 // der Daemon wehrt jeden Angriff mit Feuer voll ab, man muss zuerst
102 // den Verteidiger umbringen, um den Beschwoerer toeten zu koennen
Zesstrae9a1ad42019-09-11 21:29:10 +0200103 public <int|string*|mapping>* DefendOther(int dam,
104 string|string* dt, int|mapping spell, object enemy) {
105 if (sizeof(dt) && member(dt, DT_FIRE) != -1)
106 dam = 0;
107 return ({dam, dam_type, spell});
108 }
109
Zesstra953f9972017-02-18 15:37:36 +0100110 Soll der Daemon sich auch in ein Team einordnen, in welchem sich der
111 Beschwoerer eventuell befindet, so ist zusaetzlich AssocMember() in
112 diesem Beschwoerer aufzurufen, wobei der Daemon als Parameter
113 uebergeben wird.
114
115
116SIEHE AUCH
117==========
118
Zesstrae9a1ad42019-09-11 21:29:10 +0200119 Funktionen:
Zesstraa178b882025-06-20 16:49:42 +0200120 AddDefender(), RemoveDefender(), InformDefend(), DefendOther(),
121 Kill(), IsEnemy(), Defend(), QueryDefenders(),
122 QueryPresentDefenders(), QueryNearDefenders(),
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