blob: 01d0a778f26386c39ea6055409b93190bca82f39 [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001
Zesstra953f9972017-02-18 15:37:36 +01002drink_alcohol()
3***************
MG Mud User88f12472016-06-24 23:31:02 +02004
MG Mud User88f12472016-06-24 23:31:02 +02005
Zesstra953f9972017-02-18 15:37:36 +01006FUNKTION
7========
MG Mud User88f12472016-06-24 23:31:02 +02008
Zesstra953f9972017-02-18 15:37:36 +01009 public varargs int drink_alcohol(int strength, int testonly, string mytext)
MG Mud User88f12472016-06-24 23:31:02 +020010
MG Mud User88f12472016-06-24 23:31:02 +020011
Zesstra953f9972017-02-18 15:37:36 +010012DEFINIERT IN
13============
MG Mud User88f12472016-06-24 23:31:02 +020014
Zesstra953f9972017-02-18 15:37:36 +010015 /std/living/life.c
MG Mud User88f12472016-06-24 23:31:02 +020016
MG Mud User88f12472016-06-24 23:31:02 +020017
Zesstra953f9972017-02-18 15:37:36 +010018ARGUMENTE
19=========
MG Mud User88f12472016-06-24 23:31:02 +020020
Zesstra953f9972017-02-18 15:37:36 +010021 strength: wird zur aktuellen Saettigung P_ALCOHOL dazu addiert
22 testonly: Ist das Flag gesetzt, wird dem Spieler kein ALCOHOL zugefuehrt.
23 Darf nur zum Testen der Heilstelle verwendet werden und muss
24 im normalen Betrieb auf '0' stehen!
25 mytext: Wer selber einen Text bei Misserfolg ausgeben lassen moechte,
26 darf sich hier was nettes ausdenken.
27 Achtung: Das unterdrueckt nicht die "Nuechtern"-Meldung, die bei
28 negativem strength auftreten kann, wenn P_ALCOHOL wieder 0 ist.
MG Mud User88f12472016-06-24 23:31:02 +020029
MG Mud User88f12472016-06-24 23:31:02 +020030
Zesstra953f9972017-02-18 15:37:36 +010031BESCHREIBUNG
32============
33
34 Es wird geprueft, ob dem Spieler der angegebene Wert fuer 'strength'
35 auf seine aktuelle P_ALCOHOL addiert werden kann oder nicht. Falls
36 das moeglich ist und testonly = 0, wird P_ALCOHOL entsprechend
37 aktualisiert.
38
39 Sollen neben P_ALCOHOL noch weitere Props manipuliert werden - bspw. zur
40 Heilung eines Lebewesens - bietet sich die Funktion consume() an.
41
42
43RUECKGABEWERT
44=============
45
46 0 bei [potentiellem] Misserfolg (strength + P_ALCOHOL > P_MAX_ALCOHOL)
47 1 bei [potentiellem] Erfolg
48 * potentiell bezieht sich hier auf Nutzung mit 'testonly' != 0
49
50
51BEMERKUNG
52=========
53
54 drink_alocohol() bitte anstatt eigener Manipulationen von P_ALCOHOL und
55 P_MAX_ALCOHOL verwenden.
56
57 Achtung: Immer erst VOR einer Heilung ausfuehren und bei Erfolg heilen.
58
59 Bei Heilstellen sollte eine evtl. Heilung des Spielers mit der eigens
60 dafuer eingerichteten Funktion check_and_update_timed_key realisiert
61 werden.
62
63
64BEISPIEL
65========
66
67 int heilstelle() {
68 if(this_player()->drink_alcohol(10, 0,
69 "Du prustest in den Schnaps. "
70 "Der passt nicht mehr rein.\n")) {
71 // Platz fuer 10 "Alkohol" war noch, diese sind jetzt bereits addiert
72 // Nachricht an den Spieler:
73 tell_object(this_player(),
74 break_string("Du trinkst den Schnaps aus.", 78));
75
76 // Nachricht an andere Livings im Raum
77 object ob = first_inventory(environment(this_player()));
78 do {
79 if(living(ob) && ob!=this_player())
80 ob->ReceiveMsg(this_player()->Name()+" trinkt einen Schnaps aus.",
81 MT_LOOK|MT_LISTEN,
82 MA_DRINK);
83 ob = next_inventory(ob);
84 } while(ob);
85
86 // Rassenabhaengige Heilung: Sofort oder in Schritten
87 // Tragbare Heilungen sollten auch eher buffer_hp/_sp benutzen.
88 if(this_player()->QueryProp(P_REAL_RACE)=="Schnapsdrossel")
89 this_player()->heal_self(30);
90 else {
91 this_player()->buffer_hp(30,5);
92 this_player()->buffer_sp(30,5);
93 }
MG Mud User88f12472016-06-24 23:31:02 +020094 }
Zesstra953f9972017-02-18 15:37:36 +010095
96 return 1;
97 }
98
99
100SIEHE AUCH
101==========
102
103 Aehnlich: consume, eat_food, drink_soft
104 Heilung: heal_self, restore_spell_points, restore_hit_points,
105 buffer_hp, buffer_sp
106 Timing: check_and_update_timed_key
107 Enttanken: defuel_drink, defuel_food
108 Props: P_DRINK, P_FOOD, P_ALCOHOL, P_SP, P_HP,
109 P_DEFUEL_TIME_DRINK
110 Konzepte: heilung, enttanken, food
MG Mud User88f12472016-06-24 23:31:02 +0200111
1129. August 2015 Gloinson