FilterArmours()
***************


FUNKTION
========

   public object *FilterArmours(closure filterfun, varargs mixed* extra)


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

   /std/living/clothing.c


ARGUMENTE
=========

   closure filterfun
     Die Closure, die entscheiden soll, ob eine Ruestung im Ergebnisarray
     enthalten sein soll.



   mixed extra
     Beliebig viele Extra-Argumente, die <filterfun> uebergeben werden.


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

   Diese Funktion ruft <filterfunc> fuer jede getragene Ruestung des
   Lebewesen mit der jeweiligen Ruestung als Argument auf und liefert ein
   Array mit allen Ruestungen zurueck, fuer die <filterfun> einen Wert != 0
   zurueckliefert.
   Die <extra> Argumente werden als zusaetzliche Parameter an <filterfun>
   uebergeben und duerfen keine Referenzen sein.



   Diese Variante ist zu bevorzugen, wenn man Ruestungen nach bestimmten
   Kriterien durchsuchen will und QueryArmourByType() nicht ausreichend sein
   sollte.


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

   Ein Array von Objekten mit allen passenden Ruestungen.


BEISPIELE
=========

   1) Ich moechte gerne alle Ruestungen haben, die beschaedigt sind:
   private int _is_damaged(object ruestung) {
       return ruestung->QueryProp(P_DAMAGE);
   }
   ...
   object *damaged_armours = PL->FilterArmours(#'_is_damaged);

   2) Ich moechte alle Ruestungen, die groesser als 50cm sind.
   private int _armour_is_bigger(object ruestung, int size) {
     return ruestung->QueryProp(P_SIZE) > size;
   }
   ...
   object *big_armours = PL->FilterArmours(#'_amour_is_bigger, 50);

   3) alle Ruestungen mit einer speziellen ID.
   private int _has_id(object ruestung, string idstr) {
     return ruestung->id(idstr);
   }
   object *has_id = PL->FilterArmours(#'_has_id, "\ntolleruestung");

   4) alle Ruestungen mit einer speziellen ID, die groesser als 50cm sind.
   private int _has_id(object ruestung, string idstr, int size) {
     return ruestung->id(idstr) && ruestung->QueryProp(P_SIZE) > size;
   }
   object *has_id = PL->FilterArmours(#'_has_id, "\ntolleruestung", 50);

   5) ueberhaupt alle getragene Ruestung
   object *rue = PL->FilterArmours(#'objectp)


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

   Wear(), WearArmour(), WearClothing(), Unwear(), UnwearArmour(),
   UnwearClothing()
   P_CLOTHING, P_ARMOURS
   FilterClothing(), QueryArmourByType()


ZULETZT GEAeNDERT
=================

14.03.2009, Zesstra
