| |
| DefendOther() |
| ************* |
| |
| |
| FUNKTION |
| ======== |
| |
| public <int|string*|mapping|object>* DefendOther(int dam, |
| string* dam_type, int|mapping si_spell, object enemy) |
| |
| |
| DEFINIERT IN |
| ============ |
| |
| /std/living/combat.c |
| |
| |
| ARGUMENTE |
| ========= |
| |
| int dam |
| Der Schaden, der voraussichtlich beim zu verteidigenden Lebewesen |
| verursacht werden soll. |
| |
| string* dam_type |
| Der Schadenstyp (oder die Schadenstypen), der beim zu |
| verteidigenden Lebewesen verursacht werden sollen. |
| |
| mapping si_spell |
| Mapping mit zusaetzlichen Informationen zum Angriff |
| Alte Objekte uebergeben manchmal einen Integer (0 fuer |
| physikalischen Angriff, 1 fuer Zauber. |
| |
| object enemy |
| Der Feind, der ein zu verteidigendes Lebewesen angegriffen hat. |
| |
| |
| RUeCKGABEWERT |
| ============= |
| |
| Array mit den Eintraegen der gegebenenfalls veraenderten |
| uebergebenen Parameter: |
| (1) dam [Typ int], |
| (2) dam_type [Typ string*], |
| (3) spell [Typ mapping]. |
| |
| |
| BESCHREIBUNG |
| ============ |
| |
| Es ist moeglich, dass Objekte Angriffe auf Lebewesen abwehren oder |
| umwandeln, sofern diese Objekte bei dem angegriffenen Lebewesen |
| mittels AddDefender() angemeldet wurden und sich der selben Umgebung |
| befinden. |
| Zumeist wird es sich bei den Objekten natuerlich ebenfalls um |
| andere Lebewesen handeln, die das Lebewesen, bei dem sie angemeldet |
| sind, verteidigen sollen. |
| |
| Bei einem Angriff auf das Lebewesen koennen alle Objekte per Aufruf |
| von DefendOther() in einen Angriff eingreifen, wobei die |
| Schadensstaerke, der Schadenstyp (die Schadenstypen), |
| Zusatzinformationen fuer Angriffsspells und der Angreifer als |
| Parameter uebergeben werden. |
| |
| Des weiteren ist zu beachten, dass bei als physikalisch markierten |
| Angriffen in einem Team nur Verteidiger aus der ersten Reihe |
| beruecksichtigt werden und dass bei einem Angriff zufaellig aus |
| allen moeglichen Verteidigern ausgewaehlt wird. |
| |
| Standardmaessig ist diese Funktion in Lebewesen bereits definiert, |
| wobei der Skill SK_DEFEND_OTHER, sofern vorhanden, aufgerufen wird. |
| |
| |
| BEISPIEL |
| ======== |
| |
| Sehr beliebt sind in Gilden NPCs, die den Beschwoerer begleiten und |
| verteidigen, z.B. beschworene Daemonen: |
| |
| inherit "/std/npc"; |
| |
| include <properties.h> |
| |
| object owner; |
| |
| void create() { |
| ::create(); |
| SetProp(P_NAME,"Daemon"); |
| ... |
| } |
| |
| // nach Clonen des Daemons folgende Funktion mit Beschwoerer als |
| // Parameter aufrufen |
| void Identify(object caster) { |
| if (!objectp(caster)) |
| call_out(#'remove,0); |
| owner = caster; |
| owner->AddDefender(this_object()); |
| } |
| |
| // der Daemon wehrt jeden Angriff mit Feuer voll ab, man muss zuerst |
| // den Verteidiger umbringen, um den Beschwoerer toeten zu koennen |
| public <int|string*|mapping>* DefendOther(int dam, |
| string|string* dt, int|mapping spell, object enemy) { |
| if (sizeof(dt) && member(dt, DT_FIRE) != -1) |
| dam = 0; |
| return ({dam, dam_type, spell}); |
| } |
| |
| Soll der Daemon sich auch in ein Team einordnen, in welchem sich der |
| Beschwoerer eventuell befindet, so ist zusaetzlich AssocMember() in |
| diesem Beschwoerer aufzurufen, wobei der Daemon als Parameter |
| uebergeben wird. |
| |
| |
| SIEHE AUCH |
| ========== |
| |
| Funktionen: |
| AddDefender(), RemoveDefender(), InformDefend(), Kill(), |
| IsEnemy(), Defend() |
| |
| Properties |
| P_DEFENDERS |
| |
| Objekte: |
| /std/living/combat.c, /sys/new_skills.h |
| |
| Last modified: 2019-Aug-26, Arathorn |