MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame^] | 1 | Materialerkennung |
| 2 | ================= |
| 3 | |
| 4 | Bei MaterialName(mat,casus,idinf) und MaterialList(casus,idinf) id der |
| 5 | Parameter <idinf> als Angabe dafuer gedacht, wie gut Materialien |
| 6 | erkannt werden sollen. Es sind folgende Arten von Angaben moeglich: |
| 7 | |
| 8 | - Ein Array |
| 9 | Die einzelnen Arrayelemente werden nach untenstehenden Regeln |
| 10 | behandelt und deren Ergebnisse addiert. |
| 11 | - Ein Objekt |
| 12 | In diesem Fall wird |
| 13 | ob->QueryProp(P_MATERIAL_KNOWLEDGE) |
| 14 | nach untenstehenden Regeln behandelt. |
| 15 | Diese Property ist fuer rassenabhaengige Faehigkeiten gedacht. |
| 16 | - Eine Zahl |
| 17 | In diesem Fall wird der Wert direkt als Faehigkeit angesehen, das |
| 18 | Material erkennen zu koennen. |
| 19 | - Eine Closure |
| 20 | In diesem Fall wird der Returnwert von |
| 21 | funcall(closure,material,gruppen_in_denen_diese_material_ist) |
| 22 | genommen. |
| 23 | - Ein Mapping |
| 24 | In einem Mapping sind 3 Arten von Eintraegen moeglich: |
| 25 | - Ist im Mapping unter <mat> eine Zahl eingetragen, wird diese |
| 26 | genommen und die weiteren Eintraege nicht weiter ausgewertet. |
| 27 | - Die Werte von allen Gruppen im Mapping, zu denen das Material |
| 28 | gehoert, werden addiert. |
| 29 | - Falls das Mapping einen Eintrag MATERIAL_SYMMETRIC_RECOGNIZABILITY |
| 30 | hat, der ein Array von der Form |
| 31 | ({gruppe1, wert1, gruppe2, wert2, ...}) |
| 32 | ist, wird fuer jede dieser Gruppen der zugehoerige Wert |
| 33 | addiert, falls das Material in der Gruppe ist, und sonst |
| 34 | abgezogen. |
| 35 | Im Beispiel: ({MATGROUP_BIO: 5}) gibt einen Erkennbonus von 5% auf |
| 36 | alle biologischen Materialien, aber einen Malus von -5% auf alle |
| 37 | nichtbiologischen Materialien. |
| 38 | |
| 39 | Schwer erkennbare Materialien haben in der Materialdatenbank eine |
| 40 | zusaetzliche Angabe der Form |
| 41 | ({mat1, wert2, mat3, wert4, mat5, ... wert(n-1), mat(n)}) |
| 42 | wobei mat(n) das Material selber ist. |
| 43 | |
| 44 | Das erkannte Material ist das Material mat(k), bei dem die |
| 45 | wert(k-1) <= Erkennungsfaehigkeit < wert(k+1) |
| 46 | ist. Bei Erkennungsfaehigkeit 100 oder mehr wird das Material auf jeden |
| 47 | Fall erkannt. |
| 48 | |
| 49 | Der Wert fuer Durchschnittsspieler ist 0. |
| 50 | |
| 51 | BEISPIEL: |
| 52 | Angenommen, bei Platin waere die Angabe in der Datenbank |
| 53 | ({Metall, -20, Silber, 20, Platin}) |
| 54 | Ein Spieler ohne besondere Erkennungsfaehigkeiten (also Wert 0) wuerde |
| 55 | also Platin fuer Silber halten, jemand, der von Metallen keine Ahnung |
| 56 | hat (beispielsweise mit der Angabe ([MATGROUP_METAL:-25]) in |
| 57 | P_MATERIAL_KNOWLEDGE) sieht nur noch, dass es ein Metall ist und jemand |
| 58 | mit ueberdurchschnittlicher Faehigkeit erkennt Platin als das, was es |
| 59 | ist. |
| 60 | |
| 61 | P_MATERIAL_KNOWLEDGE koennte z.B. fuer Rassen wie folgt gesetzt werden: |
| 62 | Elf: ([MATGROUP_WOOD:30]) |
| 63 | Zwerg: ([MATGROUP_STONE:30]) |
| 64 | oder etwas komplexer |
| 65 | Zwerg: ([MATGROUP_STONE:30, |
| 66 | MATERIAL_SYMMETRIC_RECOGNIZABILITY: ({MATGROUP_BIO: -5})]) |
| 67 | |
| 68 | SIEHE AUCH: |
| 69 | Konzepte: material |
| 70 | Grundlegend: P_MATERIAL, /sys/thing/material.h |
| 71 | Methoden: QueryMaterial(), QueryMaterialGroup(), MaterialList(), |
| 72 | Listen: AllMaterials(), AllGroups(), Dump() |
| 73 | materialliste, materialgruppen |
| 74 | Master: AddMaterial(), ConvMaterialList(), MaterialGroup(), |
| 75 | GroupName(), MaterialName(), |
| 76 | GetGroupMembers(), GetMatMembership() |
| 77 | Sonstiges: P_MATERIAL_KNOWLEDGE |
| 78 | |
| 79 | 7. Mai 2004 Gloinson |