Start Info Community Spielen
 
 

Morgengrauner Dokumentation

Dateipfad: /home/mud/mudlib/doc//lfun/DefendOther

DefendOther()
*************


FUNKTION
========

   public * 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 

   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 * 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(), DefendOther(), Kill(), IsEnemy(), Defend(), QueryDefenders(), QueryPresentDefenders(), QueryNearDefenders(),

Properties P_DEFENDERS

Objekte: /std/living/combat.c, /sys/new_skills.h

Last modified: 2019-Aug-26, Arathorn


zurück zur Übersicht

YOUTUBE | FACEBOOK | TWITTER | DISCORD | FEEDBACK | IMPRESSUM | DATENSCHUTZ 1992–2023 © MorgenGrauen.