
MaterialList()
**************


MaterialList(L)
===============


FUNKTION
========

   varargs string MaterialList(int casus, mixed idinf)


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

   /std/thing/description.c


ARGUMENTE
=========

   int casus   - der Fall, in dem die Materialien dekliniert werden sollen
   mixed idinf - Dinge, welche die Faehigkeiten des Erkennens beeinflussen:
                 Einzelne Werte:
                 * x: allgemeine Erkennung -100 ... 100
                 * who: der Spieler - P_MATERIAL_KNOWLEDGE wird abgefragt
                 * fun: wird evaluiert
                 * what, kann folgendes enthalten:
                   - Eintrag fuer Materialien ([MAT_XXX:-100...100])
                   - Eintrag fuer Materialiengruppen (dito)
                   - ([MATERIAL_SYMMETRIC_RECOGNIZABILITY: mixed mg])
                     * mg ein Array:
                       ({MATGROUP_X1,int z1, MATGROUP_X2, int z2, ...})
                       wobei bei Zugehoerigkeit von string mat zu Gruppe
                       z<n> auf die Faehigkeit addiert, andernfalls davon
                       subtrahiert wird
                 Array mit obigen Werten:
                 - alle Parameter des Arrays sind optional und additiv
                 - ({int x, object who, mapping what, closure fun})


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

   Listet die Materialien auf, aus denen ein Objekt besteht.
   Dabei haengt die Genauigkeit der Materialerkennung von idinf ab. D.h.
   je nach den Faehigkeiten/der angegebenen Faehigkeit wird zB Wolfram
   als "Wolfram" oder nur als "Metall" erkannt.

   Wenn ein Spieler etwas identifiziert, sollte auch TP uebergeben werden,
   bei NPCs koennte das anders aussehen.


RUECKGABEWERT
=============

   String mit Liste der Materialien.


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

   - es werden nur die Materialien angegeben, nicht die Menge.
   - ruft ConvMaterialList() an der MATERIALDB


BEISPIELE
=========

   // simpel
   write("Der Gegenstand besteht aus"+ob->MaterialList(WEM,TP)+".\n")
   // -> "Der Gegenstand besteht aus Gold, Silber und Rubin.\n"

   // komplexer
   ob->SetProp(P_MATERIAL, ([P_NITROGLYCERINE:90,P_GUNPOWDER:10]));
   write("Das enthaelt "+ob->MaterialList(WER,TP)+".\n");
   // -> "Das enthaelt Schwarzpulver und Nitroglycerin."


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

   Konzepte:    material, materialerkennung
   Grundlegend: P_MATERIAL, /sys/thing/material.h
   Methoden:    QueryMaterial(), QueryMaterialGroup()
   Listen:      AllMaterials(), AllGroups(), Dump()
                materialliste, materialgruppen
   Master:      AddMaterial(), ConvMaterialList(), MaterialGroup(),
                GroupName(), MaterialName(),
                GetGroupMembers(), GetMatMembership()
   Sonstiges:   P_MATERIAL_KNOWLEDGE

7. Mai 2004 Gloinson
