| Materialerkennung |
| ================= |
| |
| Bei MaterialName(mat,casus,idinf) und MaterialList(casus,idinf) id der |
| Parameter <idinf> als Angabe dafuer gedacht, wie gut Materialien |
| erkannt werden sollen. Es sind folgende Arten von Angaben moeglich: |
| |
| - Ein Array |
| Die einzelnen Arrayelemente werden nach untenstehenden Regeln |
| behandelt und deren Ergebnisse addiert. |
| - Ein Objekt |
| In diesem Fall wird |
| ob->QueryProp(P_MATERIAL_KNOWLEDGE) |
| nach untenstehenden Regeln behandelt. |
| Diese Property ist fuer rassenabhaengige Faehigkeiten gedacht. |
| - Eine Zahl |
| In diesem Fall wird der Wert direkt als Faehigkeit angesehen, das |
| Material erkennen zu koennen. |
| - Eine Closure |
| In diesem Fall wird der Returnwert von |
| funcall(closure,material,gruppen_in_denen_diese_material_ist) |
| genommen. |
| - Ein Mapping |
| In einem Mapping sind 3 Arten von Eintraegen moeglich: |
| - Ist im Mapping unter <mat> eine Zahl eingetragen, wird diese |
| genommen und die weiteren Eintraege nicht weiter ausgewertet. |
| - Die Werte von allen Gruppen im Mapping, zu denen das Material |
| gehoert, werden addiert. |
| - Falls das Mapping einen Eintrag MATERIAL_SYMMETRIC_RECOGNIZABILITY |
| hat, der ein Array von der Form |
| ({gruppe1, wert1, gruppe2, wert2, ...}) |
| ist, wird fuer jede dieser Gruppen der zugehoerige Wert |
| addiert, falls das Material in der Gruppe ist, und sonst |
| abgezogen. |
| Im Beispiel: ({MATGROUP_BIO: 5}) gibt einen Erkennbonus von 5% auf |
| alle biologischen Materialien, aber einen Malus von -5% auf alle |
| nichtbiologischen Materialien. |
| |
| Schwer erkennbare Materialien haben in der Materialdatenbank eine |
| zusaetzliche Angabe der Form |
| ({mat1, wert2, mat3, wert4, mat5, ... wert(n-1), mat(n)}) |
| wobei mat(n) das Material selber ist. |
| |
| Das erkannte Material ist das Material mat(k), bei dem die |
| wert(k-1) <= Erkennungsfaehigkeit < wert(k+1) |
| ist. Bei Erkennungsfaehigkeit 100 oder mehr wird das Material auf jeden |
| Fall erkannt. |
| |
| Der Wert fuer Durchschnittsspieler ist 0. |
| |
| BEISPIEL: |
| Angenommen, bei Platin waere die Angabe in der Datenbank |
| ({Metall, -20, Silber, 20, Platin}) |
| Ein Spieler ohne besondere Erkennungsfaehigkeiten (also Wert 0) wuerde |
| also Platin fuer Silber halten, jemand, der von Metallen keine Ahnung |
| hat (beispielsweise mit der Angabe ([MATGROUP_METAL:-25]) in |
| P_MATERIAL_KNOWLEDGE) sieht nur noch, dass es ein Metall ist und jemand |
| mit ueberdurchschnittlicher Faehigkeit erkennt Platin als das, was es |
| ist. |
| |
| P_MATERIAL_KNOWLEDGE koennte z.B. fuer Rassen wie folgt gesetzt werden: |
| Elf: ([MATGROUP_WOOD:30]) |
| Zwerg: ([MATGROUP_STONE:30]) |
| oder etwas komplexer |
| Zwerg: ([MATGROUP_STONE:30, |
| MATERIAL_SYMMETRIC_RECOGNIZABILITY: ({MATGROUP_BIO: -5})]) |
| |
| SIEHE AUCH: |
| Konzepte: material |
| Grundlegend: P_MATERIAL, MatDB, /sys/materials.h |
| Methoden: QueryMaterial(), QueryMaterialGroup(), MaterialList(), |
| Listen: AllMaterials(), AllGroups(), Dump() |
| materialliste, materialgruppen |
| Master: ConvMaterialList(), MaterialGroup(), GroupName(), |
| MaterialName(), GetGroupMembers(), GetMatMembership() |
| Sonstiges: P_MATERIAL_KNOWLEDGE |
| |
| 7. Mai 2004 Gloinson |