ConvMaterialList()
******************


FUNKTION
========

   varargs string ConvMaterialList(mixed mats, int casus, mixed idinf)


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

   /p/daemon/materialdb.c (MATERIALDB)


ARGUMENTE
=========

   mixed mats:  - das zu erkennende Material:
                  - ein Mapping, ein String oder ein Stringarray
                    ([MAT_A:y,MAT_B:x,..]) oder MAT_A oder ({MAT_A,MAT_B,..})
   int casus:   - der Fall: 0..3 -> <language.h>: WAS, WESSEN, WEM, WEN
   mixed idinf  - Dinge, welche die Faehigkeiten des Erkennens beeinflussen
                  (siehe "man MaterialList")


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

   Man uebergibt ConvMaterialList() eine Liste von Materialien, die die
   Funktion unter Verwendung von MaterialName() in ihre Bestandteile
   aufsplittet und mit "und" und "," verknuepft zurueckgibt.


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

   string - Materialien, durch Komma und "und" getrennt oder
            "unbekanntes Material"


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

   Wird von /std/thing/description::MaterialList() gerufen.
   Bitte an Objekten auch MaterialList() verwenden.
   Ruft direkt MaterialName() auf.


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

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

7. Mai 2004 Gloinson
