QueryMaterial(L)
FUNKTION:
     int QueryMaterial(string mat)

DEFINIERT IN:
     /std/thing/description.c

ARGUMENTE:
     string mat -	Material, auf das getestet werden soll

BESCHREIBUNG:
     Testet, ob ein Gegenstand aus dem angegebenen Material besteht
     und gibt dessen Anteil zurueck.
     Die Rueckgabe ist im Wertebereich -100 (Antigruppen) bis +100 (%).

RUECKGABEWERT:
     Anteil in Prozent.

BEISPIELE:
     if(ob->QueryMaterial(MAT_IVORY)<=0)
       write("Daraus kannst Du keine Billiardkugeln schnitzen!\n");

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

7. Mai 2004 Gloinson