blob: 4739fd5e6e4c5e6c55c6456cc7a0b91afb8283af [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001DefendOther()
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
Arathornb6667492020-01-08 21:48:54 +01008 public <int|string*|mapping|object>* DefendOther(int dam,
Zesstraa178b882025-06-20 16:49:42 +02009 string* dam_type, int|mapping si_spell, object enemy)
MG Mud User88f12472016-06-24 23:31:02 +020010
MG Mud User88f12472016-06-24 23:31:02 +020011
Zesstra953f9972017-02-18 15:37:36 +010012DEFINIERT IN
13============
MG Mud User88f12472016-06-24 23:31:02 +020014
Zesstra953f9972017-02-18 15:37:36 +010015 /std/living/combat.c
MG Mud User88f12472016-06-24 23:31:02 +020016
MG Mud User88f12472016-06-24 23:31:02 +020017
Zesstra953f9972017-02-18 15:37:36 +010018ARGUMENTE
19=========
20
Zesstrae9a1ad42019-09-11 21:29:10 +020021 int dam
Zesstraa178b882025-06-20 16:49:42 +020022 Der Schaden, der voraussichtlich beim zu verteidigenden
23 Lebewesen verursacht werden soll.
Zesstrae9a1ad42019-09-11 21:29:10 +020024
25 string* dam_type
Zesstraa178b882025-06-20 16:49:42 +020026 Der Schadenstyp (oder die Schadenstypen), der beim zu
27 verteidigenden Lebewesen verursacht werden sollen.
Zesstrae9a1ad42019-09-11 21:29:10 +020028
29 mapping si_spell
Zesstraa178b882025-06-20 16:49:42 +020030 Mapping mit zusaetzlichen Informationen zum Angriff Alte Objekte
31 uebergeben manchmal einen Integer (0 fuer physikalischen
32 Angriff, 1 fuer Zauber.
Zesstrae9a1ad42019-09-11 21:29:10 +020033
34 object enemy
Zesstraa178b882025-06-20 16:49:42 +020035 Der Feind, der ein zu verteidigendes Lebewesen angegriffen hat.
Zesstra953f9972017-02-18 15:37:36 +010036
37
38RUeCKGABEWERT
39=============
40
41 Array mit den Eintraegen der gegebenenfalls veraenderten
42 uebergebenen Parameter:
Zesstrae9a1ad42019-09-11 21:29:10 +020043 (1) dam [Typ int],
44 (2) dam_type [Typ string*],
45 (3) spell [Typ mapping].
Zesstra953f9972017-02-18 15:37:36 +010046
47
48BESCHREIBUNG
49============
50
51 Es ist moeglich, dass Objekte Angriffe auf Lebewesen abwehren oder
52 umwandeln, sofern diese Objekte bei dem angegriffenen Lebewesen
Zesstraa178b882025-06-20 16:49:42 +020053 mittels AddDefender() angemeldet wurden und sich der selben
54 Umgebung befinden. Zumeist wird es sich bei den Objekten natuerlich
55 ebenfalls um andere Lebewesen handeln, die das Lebewesen, bei dem
56 sie angemeldet sind, verteidigen sollen.
Zesstrae9a1ad42019-09-11 21:29:10 +020057
Zesstra953f9972017-02-18 15:37:36 +010058 Bei einem Angriff auf das Lebewesen koennen alle Objekte per Aufruf
59 von DefendOther() in einen Angriff eingreifen, wobei die
60 Schadensstaerke, der Schadenstyp (die Schadenstypen),
61 Zusatzinformationen fuer Angriffsspells und der Angreifer als
62 Parameter uebergeben werden.
Zesstrae9a1ad42019-09-11 21:29:10 +020063
64 Des weiteren ist zu beachten, dass bei als physikalisch markierten
Zesstra953f9972017-02-18 15:37:36 +010065 Angriffen in einem Team nur Verteidiger aus der ersten Reihe
66 beruecksichtigt werden und dass bei einem Angriff zufaellig aus
67 allen moeglichen Verteidigern ausgewaehlt wird.
Zesstrae9a1ad42019-09-11 21:29:10 +020068
Zesstra953f9972017-02-18 15:37:36 +010069 Standardmaessig ist diese Funktion in Lebewesen bereits definiert,
70 wobei der Skill SK_DEFEND_OTHER, sofern vorhanden, aufgerufen wird.
71
72
73BEISPIEL
74========
75
76 Sehr beliebt sind in Gilden NPCs, die den Beschwoerer begleiten und
77 verteidigen, z.B. beschworene Daemonen:
Zesstrae9a1ad42019-09-11 21:29:10 +020078
79 inherit "/std/npc";
80
81 include <properties.h>
82
83 object owner;
84
85 void create() {
86 ::create();
87 SetProp(P_NAME,"Daemon");
88 ...
89 }
90
Zesstra953f9972017-02-18 15:37:36 +010091 // nach Clonen des Daemons folgende Funktion mit Beschwoerer als
92 // Parameter aufrufen
Zesstrae9a1ad42019-09-11 21:29:10 +020093 void Identify(object caster) {
94 if (!objectp(caster))
95 call_out(#'remove,0);
96 owner = caster;
97 owner->AddDefender(this_object());
98 }
99
Zesstra953f9972017-02-18 15:37:36 +0100100 // der Daemon wehrt jeden Angriff mit Feuer voll ab, man muss zuerst
101 // den Verteidiger umbringen, um den Beschwoerer toeten zu koennen
Zesstrae9a1ad42019-09-11 21:29:10 +0200102 public <int|string*|mapping>* DefendOther(int dam,
103 string|string* dt, int|mapping spell, object enemy) {
104 if (sizeof(dt) && member(dt, DT_FIRE) != -1)
105 dam = 0;
106 return ({dam, dam_type, spell});
107 }
108
Zesstra953f9972017-02-18 15:37:36 +0100109 Soll der Daemon sich auch in ein Team einordnen, in welchem sich der
110 Beschwoerer eventuell befindet, so ist zusaetzlich AssocMember() in
111 diesem Beschwoerer aufzurufen, wobei der Daemon als Parameter
112 uebergeben wird.
113
114
115SIEHE AUCH
116==========
117
Zesstrae9a1ad42019-09-11 21:29:10 +0200118 Funktionen:
Zesstraa178b882025-06-20 16:49:42 +0200119 AddDefender(), RemoveDefender(), InformDefend(), DefendOther(),
120 Kill(), IsEnemy(), Defend(), QueryDefenders(),
121 QueryPresentDefenders(), QueryNearDefenders(),
Zesstra953f9972017-02-18 15:37:36 +0100122
Zesstrae9a1ad42019-09-11 21:29:10 +0200123 Properties
124 P_DEFENDERS
125
126 Objekte:
127 /std/living/combat.c, /sys/new_skills.h
128
129Last modified: 2019-Aug-26, Arathorn