
TakeFlaw()
**********


FUNKTION
========

   varargs void TakeFlaw(object enemy); (Waffen)
   varargs void TakeFlaw(string* dam_types,mapping einfos) (Ruestungen)


DEFINIERT IN
============

   /std/armour/combat.c,
   /std/weapon/combat.c


ARGUMENTE
=========

   keine


BESCHREIBUNG
============

   Diese Funktion wird in Waffen und Ruestungen waehrend des Kampfes
   aufgerufen. In einer Waffe erfolgt der Aufruf bei jedem Schlag mit
   dieser Waffe, bei Ruestungen wird TakeFlaw() in einer zufaellig
   ausgewaehlten getragenen Ruestung aufgerufen.
   Waffen bekommen das Gegnerobjekt uebergeben, Ruestungen die erweiterten
   DefendInfos (s. dort fuer Details). Aufgrund dieser Informationen kann
   man den Schaden, den ein Gegenstand nimmt, flexibler gestalten (z.B. bei
   einer Waffe in Abhaengigkeit von P_BODY des Gegners.)

   Soweit man die Funktion nicht ueberlaedt, bewirkt sie nichts weiter als
   das Erhoehen eines Zaehlers, der mit QueryFlaw() abgefragt werden kann.


RUeCKGABEWERT
=============

   keiner


BEMERKUNGEN
===========

   Die Waffen-/ Ruestungsklasse wird nicht automatisch reduziert! Wenn
   eine Waffe oder Ruestung sich abnutzen soll, muss man TakeFlaw()
   ueberladen und dort entsprechend handeln, oder (fuer einfache
   Faelle) die Property P_QUALITY setzen.


BEISPIELE
=========

   Eine Waffe, deren Waffenklasse alle 20 Schlaege um 1 abnimmt:

   inherit "/std/weapon";

   #include <properties.h>
   #include <combat.h>

   protected void create() {
     /* Das Uebliche... */
   }

   varargs void TakeFlaw(object enemy) {
     /* erstmal den Zaehler erhoehen... */
     ::TakeFlaw(enemy);

     /* jetzt den aktuellen Zaehlerstand abfragen */
     int flaw = QueryFlaw()[0];

     /* Abzug nur jeden 20. Schlag */
     if (!(flaw % 20)) {
       /* So, jetzt fuer den Schaden sorgen. Hierfuer benutzt */
       /* man am sichersten die eingebaute Funktion Damage() */
       Damage(1);
     }
   }

   Dieses einfache Beispiel haette natuerlich auch ueber ein
   SetProp(P_QUALITY,20); im create() realisiert werden koennen.


SIEHE AUCH
==========

   QueryFlaw(), Damage(), DefendInfo, P_QUALITY, /std/armour/combat.c,
   /std/weapon/combat.c

Last modified: Thu May 22 10:30:10 1997 by Paracelsus
