blob: d4f50b7859b3a6653cfc25f4d9459d4f1fb903ae [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001AddMaterial()
2FUNKTION:
3 private static varargs void AddMaterial(string mat, int gender,
4 mixed names, mixed groups,
5 mixed dif) {
6
7DEFINIERT IN:
8 /p/daemon/materialdb.c (MATERIALDB)
9
10ARGUMENTE:
11 string mat
12 Materialstring, definiert in <thing/material.h>
13
14 int gender
15 Geschlecht des einzutragenden Materials
16
17 mixed names
18 Name des Materials:
19 - "<Nominativ>" oder (meist nur Nom. und Gen. noetig)
20 - ({"<Nominativ>","<Genitiv>","<Dativ>","<Akkusativ>"})
21
22 mixed groups
23 Eingruppierung des Materials:
24 - MATGROUP_XXX oder ({MATGROUP_XXX,...})
25 - ([MAT_GROUP_XXX:xx,MATGROUP_YYY:yy,...])
26
27 mixed dif
28 Schwierigkeiten bei der Erkennbarkeit:
29 - int x oder ({MINMAT,x1,MATPOS1,x2,MATPOS2 ...})
30 - xn: Erkennbarkeitsschwierigkeit (100=100%) -100..100
31 - MINMAT: Erkennung zumindest als _dieses_ Material
32 moeglich
33 - MATPOSn: moegliches Material, erkennbar, wenn
34 Erkennbarkeitfaehigkeit>=xn
35 -> das letzte MATPOS muss natuerlich
36 string mat entsprechen
37
38BESCHREIBUNG:
39 Es wird in die Materialiendatenbank eine neues Material aufgenommen,
40 die Stringkonstante dafuer wird vorher in <thing/material.h> fest-
41 gelegt. Falls der Genitiv nicht Nominativ+"s" entspricht (z.B. "Seide"),
42 sollte dieser explizit angegeben werden.
43 Nach Neuladen der Datenbank ist dieses Material auch per MaterialName(),
44 'erkennbar' (siehe mixed dif, siehe Beispiel) bzw. seinen einzelnen
45 Gruppen zuordnbar.
46
47BEISPIELE:
48 AddMaterial(MAT_NITROGLYCERINE,NEUTER,"Nitroglycerin",
49 ({MATGROUP_EXPLOSIVE,MATGROUP_FLUID}),
50 ({MAT_OIL,25,MAT_MISC_EXPLOSIVE,50,MAT_NITROGLYCERINE}));
51
52 Damit wird das Material Nytroglycerin aufgenommen, ein explosiver
53 (damit entflammbarer) sowie fluessiger Stoff. Liegt die Erkennungs-
54 faehigkeit (MaterialName()) unter 25, wird es nur als Oel erkannt,
55 liegt sie unter 50, wird es zumindest als explosives Material erkannt,
56 liegt sie ueber 49, so wird es korrekt erkannt (wie schade :) ).
57
58BEMERKUNGEN:
59 Wird in der create() der Datenbank aufgerufen. Zu beachten:
60 - vor Eintrag eines _neuen_ Materials die Datenbank durchsuchen!
61 - bei den Materialiengruppen die automatischen Abhaengigkeiten in
62 AddMaterial() durchsehen!
63 - bitte Datenbank neu laden
64
65SIEHE AUCH:
66 Konzepte: material, materialerkennung
67 Grundlegend: P_MATERIAL, /sys/thing/material.h
68 Methoden: QueryMaterial(), QueryMaterialGroup(), MaterialList(),
69 Listen: AllMaterials(), AllGroups(), Dump()
70 materialliste, materialgruppen
71 Master: ConvMaterialList(), MaterialGroup(),
72 GroupName(), MaterialName(),
73 GetGroupMembers(), GetMatMembership()
74 Sonstiges: P_MATERIAL_KNOWLEDGE
75
767. Mai 2004 Gloinson