blob: 25ab21322348dd497574062d11d0ca22e76af2de [file] [log] [blame]
Zesstra18626972017-01-31 10:38:27 +01001consume()
2=========
3
4public varargs int consume(mapping cinfo, int testonly)
5
6FUNKTION
7--------
8::
9
10 public varargs int consume(mapping cinfo, int testonly);
11
12 Aenderung der Gesundheit eines Lebewesens durch etwas Konsumierbares.
13
14DEFINIERT IN
15------------
16::
17
18 /std/living/life.c
19
20ARGUMENTE
21---------
22::
23
24 cinfo
25 Mapping mit Informationen ueber die Gesundheitsaenderung
26 Heilung.
27 testonly
28 Gibt an, ob nur die Bedingungen abgetestet werden sollen,
29 oder auch die Wirkung eintreten soll.
30
31RUECKGABEWERT
32-------------
33::
34
35 1 erfolgreich konsumiert
36 0 keine oder falsche Aenderungsdaten in cinfo (nicht benutzbar)
37 <0 Bedingung fuer konsumieren nicht erfuellt, Bitset aus:
38 HC_MAX_FOOD_REACHED - Kann nichts mehr essen
39 HC_MAX_DRINK_REACHED - Kann nichts mehr trinken
40 HC_MAX_ALCOHOL_REACHED - Kann nichts mehr saufen
41 HC_HOOK_CANCELLETION - durch H_HOOK_CONSUME abgebrochen
42
43BESCHREIBUNG
44------------
45::
46
47 Die Funktion stellt eine Moeglichkeit zur Verfuegung, die Aenderung
48 der Gesundheit eines Lebewesens beim Konsumieren von irgendetwas (z.B in
49 einer Kneipe, durch eine Heilstellte oder tragbare Tanke, ...) zentral zu
50 erledigen. Sie vereint in sich die Pruefung auf Durchfuerbarkeit der
51 Aenderung und Anwendung der Aenderung.
52
53 Der erste Parameter gibt die Eigenschaften der Aenderung an, der zweite ob
54 ausschliesslich die Pruefung auf Anwendbarkeit erfolgen soll.
55
56 Das Mapping cinfo hat folgende Struktur:
57 a) Einfache Angabe der betroffenen Properties. In neuem Code bitte nicht
58 machen, dort ein Mapping wie unter b) beschrieben nutzen!
59
60 b) Strukturiert in Effekte und Bedingungen mit folgenden Schluesseln:
61 H_EFFECTS - Mapping der zu aendernden Properties mit dem Umfang der
62 Aenderung, erlaubte Properties siehe H_ALLOWED_EFFECTS
63
64 H_CONDITIONS - Mapping der zu pruefenden Properties mit dem Umfang der
65 Aenderung, erlaubte Properties siehe H_ALLOWED_CONDITIONS
66
67 H_DISTRIBUTION - Verteilung der Aenderung fuer P_SP, P_HP
68 HD_INSTANT bzw. 0: instante Heilung
69 1 - 50: angebene Zahl pro Heartbeat
70 HD_STANDARD: 5 pro Heartbeat
71
72 Aenderungen koennen sowohl positiv als auch negativ sein.
73
74BEMERKUNGEN
75-----------
76::
77
78 Hierbei aber bitte beachten, dass Tanken/Entanken sowie Heilungen ggf. von
79 der (Heilungs-)Balance genehmigt werden muessen!
80
81BEISPIELE
82---------
83::
84
85 Heilung um 100 KP, 50 LP, aber nur wenn 30 P_FOOD gegessen werden kann:
86
87 consume( ([H_EFFECTS: ([P_HP:50, P_SP:100]),
88 H_CONDITIONS: ([P_FOOD:30]) ]) );
89
90 Heilung um 100 KP und Vergiftung um 2, wenn 15 Alkohol getrunken werden
91 koennen. Die SP werden zeitverzoegert mit 10 pro Heartbeat zugefuehrt.
92
93 consume(([H_EFFECTS: ([P_SP: 100, P_POISON: 2]),
94 H_CONDITIONS: ([P_ALCOHOL: 15]),
95 H_DISTRIBUTION: 10]) )
96
97SIEHE AUCH
98----------
99::
100
101 Aehnlich: drink_alcohol, eat_food, drink_soft
102 Heilung: heal_self, restore_spell_points, restore_hit_points,
103 buffer_hp, buffer_sp
104 Timing: check_and_update_timed_key
105 Enttanken: defuel_drink, defuel_food
106 Props: P_DRINK, P_FOOD, P_ALCOHOL, P_SP, P_HP,
107 P_DEFUEL_TIME_DRINK
108 Konzepte: heilung, enttanken, food
109
110LETZTE AeNDERUNG
111----------------
112::
113
114 29.05.2015, Boing
115