blob: 976106fd7bd64888b69932087d6ef8a0bf5419ba [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001Materialerkennung
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
51BEISPIEL:
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
68SIEHE 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
797. Mai 2004 Gloinson