blob: 66b61732f924869a31d866a83fb6d0bd379e02a9 [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001// (c) by Padreic (Padreic@mg.mud.de)
2
3// Anmerkung: Heutzutage gibt es fuer Lebensmittel (bzw. alle Dinge, die
4// man essen oder trinken kann) ein Standardobjekt namens /std/food,
5// welches viele Funktionalitaet mitbringt, die man ansonsten selber
6// muehsam basteln muss. Die Verwendung ist dringend empfohlen.
7
8#include <properties.h> // wieder unsere allgemeinen Properties
9
10inherit "/std/thing";
11
12// globale Variable, die angibt, wie voll die Flasche ist. Es sind 5
13// Portionen enthalten.
14int menge = 5;
15
16protected void create()
17{
18 ::create();
19 // Objekt ueber seine Properties beschreiben...
20 // P_SHORT und P_LONG werden direkt als Funktion implementiert (s.u.)
21 SetProp(P_NAME, "Milchflasche");
22 SetProp(P_GENDER, FEMALE);
23 SetProp(P_VALUE, 80);
24 SetProp(P_WEIGHT, 1000);
25 AddId(({"flasche", "milchflasche"}));
26 AddCmd(({"trink", "trinke"}), "_trinken");
27}
28
29// Anstelle von P_SHORT Kurzbeschreibung ueber Funktion short().
30// Dies ist nicht immer moeglich, da nicht zwangslaeufig zu jeder Propertie
31// eine gleichnamige Funktion existiert.
32// Es ist allerdings noch sog. Querymethoden (siehe dazu <man QueryProp> und
33// <man Query> bei Bedarf).
34public string short()
35{
36 string str;
37 switch(menge) {
38 case 1: str="Eine fast leere Milchflasche.\n"; break;
39 case 2: str="Eine bald leere Milchflasche.\n"; break;
40 case 3: str="Eine halbvolle Milchflasche.\n"; break;
41 case 4: str="Eine fast volle Milchflasche.\n"; break;
42 case 5: str="Eine volle Milchflasche.\n"; break;
43 default: str="Eine leere Milchflasche.\n";
44 }
45 return str;
46}
47
48public string long()
49{
50 if (menge>1)
51 return "Eine Flasche mit leckerer Vollmilch.\n";
52 else
53 return "Die Milchflasche ist bald leider schon alle, Du solltest "
54 "Dich vielleicht mal\nnach Nachschub umsehn.\n";
55}
56
57public int _trinken(string str)
58{
59 notify_fail("Syntax: trinke aus milchflasche\n");
60
61 // Falls die ersten vier Zeichen in dem uebergebenen String ungleich
62 // "aus " sind, dann fuehlt sich das Objekt nicht angesprochen, kann das
63 // Verb also nicht komplett abarbeiten und gibt deshalb eine 0 zurueck.
64 if (str[0..3]!="aus ") return 0;
65
66 // Ich benutze nun alles ab dem vierten Zeichen und pruefe, ob sich das
67 // Objekt davon angesprochen fuehlt. Hierzu dient die Funktion id().
68 // Grosser Vorteil: Uebersichtlich und spaeteres Ergaenzen von Ids bzw.
69 // Adjektiven geht sehr einfach und erspart lange if()-Abfragen.
70 if ( !id(str[4..]) ) return 0;
71
72 if (menge<=0) {
73 write("Die Milchflasche ist leider schon leer :(.\n");
74 }
75 else {
76 // drink_soft() ist eine Funktion, die in allen Lebewesen im
77 // Morgengrauen definiert ist und ueber die man sowohl Abfragen als
78 // auch hochsetzen von P_DRINK vornehmen sollte.
79 if (this_player()->drink_soft(10)) {
80
81 // heal_self() ist auch in allen Lebewesen definiert und heilt bei
82 // dem Lebewesen Lebens- und Konzentrationspunkte.
83 this_player()->heal_self(10);
84 write("Genuesslich trinkst Du einen Schluck Milch.\n");
85 say(this_player()->Name(WER)+" trinkt einen Schluck Vollmilch,\n");
86 menge--;
87 }
88 else write("Soviel kannst Du leider nicht mehr trinken.\n");
89 }
90 return 1;
91}