P_MATERIAL_KNOWLEDGE
NAME:
     P_MATERIAL_KNOWLEDGE				"material_knowledge"

DEFINIERT IN:
     <thing/material.h>

BESCHREIBUNG:
     Mapping, Closure oder Integer mit Regeln zur Materialienerkennung. Die
     Regeln sind in "man materialerkennung" zu lesen.

     Diese werden bei Angabe eines Spielerobjektes in MaterialList() oder
     MaterialName() an diesem abgefragt und hat Einfluss darauf, ob ein
     Material genau, generell oder gar nicht erkannt wird.

     In den einzelnen Rassenshells sind Defaultwerte dafuer angegeben.


BEISPIELE:
     // Erkennungsbonus auf diverse Materialgruppen und
     // Erkennungsbonus/-malus auf biologische/nichtbiologische Materialien
     SetProp(P_MATERIAL_KNOWLEDGE,
	([MATGROUP_WOOD:20,
	  MATGROUP_METAL:20,
	  MATGROUP_ELEMENTAL:20,
	  MATGROUP_CLOTH:20,
	  MATERIAL_SYMMETRIC_RECOGNIZABILITY: ({MATGROUP_BIO,5})]));

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

7. Mai 2004 Gloinson