| |
| MaterialName() |
| ************** |
| |
| |
| FUNKTION |
| ======== |
| |
| varargs string MaterialName(string mat, int casus, mixed idinf) |
| |
| |
| DEFINIERT IN |
| ============ |
| |
| /p/daemon/materialdb.c (MATERIALDB) |
| |
| |
| ARGUMENTE |
| ========= |
| |
| string mat - das zu erkennende Material |
| int casus - der Fall |
| mixed idinf - Dinge, welche die Faehigkeiten des Erkennens beeinflussen |
| (siehe "man MaterialList") |
| |
| |
| BESCHREIBUNG |
| ============ |
| |
| Diese Funktion sucht unter Beruecksichtigung der Erkennungsbe- |
| schraenkungen des Materials und Faehigkeiten des Spielers den |
| Klarnamen des Materials heraus und gibt den zurueck. |
| |
| |
| RUECKGABEWERT |
| ============= |
| |
| string: Materialname oder genereller Name. |
| |
| |
| BEISPIELE |
| ========= |
| |
| // der hier mag alle existierenden Juwelen, auch wenn welche ergaenzt |
| // werden sollten |
| // Parameter: 1. ein Juwel, 2. Casus, 3. 100% Erkennung - ob er sie |
| // beim Empfang dann auch zu 100% erkennt, steht hier nicht! |
| string* likeit; |
| likeit=MATERIALDB->GetGroupMembers(MATGROUP_JEWEL); |
| ... |
| write("Der Alte sagt: Ich mag "+ |
| MATERIALDB->MaterialName(likeit[random(sizeof(likeit))], WEN, 100)+ |
| ".\n"); |
| ... |
| |
| // ein weiser schmied: |
| int i; |
| string *mat, mname, mgroup; |
| mat=m_indices(ob->queryprop(p_material)); |
| i=sizeof(mat); |
| |
| write("der schmied sagt: "+ob->name(wer)+" besteht aus ...\n"); |
| while(i--) { |
| // den namen erkennen/aussprechen: |
| // materialien werden allgemein ganz schlecht erkannt (zu 5%), aber |
| // alles aus metall wird zu +100% gut erkannt ... |
| mname=materialdb->materialname(mat[i], wer, |
| ({5, ([material_symmetric_recognizability: |
| ({matgroup_metal, 100})])})); |
| |
| // und nur metalle analysieren ... |
| if(materialdb->materialgroup(([mat[i]:100]),matgroup_metal)>=100) { |
| int j; |
| string *mgr; |
| mgr=materialdb->getmatmembership(mat[i]); |
| j=sizeof(mgr); |
| mgroup=" gehoert zu "; |
| while(j--) { |
| mgroup+=materialdb->groupname(mgr[j]); |
| if(j>0) mgroup+=", "; |
| } |
| } else mgroup=" kenne ich nicht"; |
| printf("%-12.12s: %s\n",mname, mgroup); |
| } |
| |
| |
| SIEHE AUCH |
| ========== |
| |
| Konzepte: material, materialerkennung |
| Grundlegend: P_MATERIAL, /sys/thing/material.h |
| Master: AddMaterial(), ConvMaterialList(), MaterialGroup(), |
| GroupName() |
| GetGroupMembers(), GetMatMembership() |
| |
| 7. Mai 2004 Gloinson |