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