FindBestWeapon()
================

FUNKTION
--------
::

    varargs object FindBestWeapon(mixed type, int maxmon, int maxw, int hands,
                                  int minwc, mixed restr)

 

DEFINIERT IN
------------
::

    /std/room/shop.c

 

ARGUMENTE
---------
::

    type   - gewuenschter Waffentyp / Waffentypen
    maxmon - Geld das ausgegeben werden darf
    maxw   - Maximales Gewicht
    hands  - Anzahl Haende, die die Waffe belegen darf
    minwc  - minimale gewuenschte Waffenklasse
    restr  - zusaetzliches Argument fuer CheckFindRestrictions()

BESCHREIBUNG
------------
::

    Sucht die beste Waffe, die der Laden verkaufen kann.

 

RUECKGABEWERT
-------------
::

    Die beste Waffe :-)

 

BEMERKUNG
---------
::

    Die Qualitaet der Waffe wird mit EvalWeapon() bestimmt.
    Haben zwei Waffen die gleiche Qualitaet, wird die preiswertere genommen.

 

BEISPIEL
--------
::

    FindBestWeapon(WT_SWORD,5000,1)
    Bestes einhaendiges Schwert unter 5000 Muenzen.

SIEHE AUCH
----------
::

    FindBestArmours(), CheckFindRestrictions(), EvalWeapon()

