blob: d3057d213ab2178900d5d7dae3ca3883e089c2a6 [file] [log] [blame]
notstromc67107e2019-08-17 13:16:09 +02001inherit "/std/room";
2
3#include __PATH__(1)"defs.h"
4
5int cmd_obst();
6
7
8protected void create() {
9 ::create();
10
11 SetProp(P_INT_SHORT, "Eine Huette mit Obst");
12 SetProp(P_INT_LONG, BSLF(
13 "Die Huette ist irgendwie beleuchtet, aber das ist es nicht, was "
14 "Deine Aufmerksamkeit fesselt. Auf dem Tisch, der in der Mitte des "
15 "Raumes steht, befindet sich eine Schale voller Obst. Das sieht "
16 "wirklich appetitlich aus, Du moechtest es direkt essen."));
17
18 SetProp(P_LIGHT, 1);
19 SetProp(P_INDOORS, 1);
20 SetProp(P_LIGHT_TYPE, LT_GLOWING);
21
22 AddCmd("iss|ess|esse&obst", #'cmd_obst,
23 "Wen oder was willst Du essen?^");
24}
25
26
27/*
28 Sollverhalten der Tanke:
29 Alle 40 min pro Spieler je 100+random(60) Food und Drink tanken, dabei
30 Ticks von 12 LP/KP. Saettigung nur 5 Food.
31*/
32
33/*
34 Anmerkung:
35 Es ist guter Stil, in einem Kommentar vor dem Code der Tanke zu
36 dokumentieren, welche Werte Du mit dem Erzmagier der Heilungsbalance
37 ausgehandelt hast.
38
39 Dies sind exakt die Werte, die die Tanke am Bergpfad oberhalb von
40 Kobayashis Seilbahnstation verwendet. Sprich Deine Tanken auf jeden
41 Fall mit dem Erzmagier, der fuer die Heilungsbalance zustaendig ist, ab.
42 (Das ist momentan Humni, falls sich das aendert, weiss Dein Sponsor das
43 aber.)
44
45 Generell solltest Du fuer Heilungsangelegenheiten die Manpage wiz/heilung
46 lesen.
47*/
48int cmd_obst() {
49 /*
50 Allgemeiner Hinweis zum Arbeiten mit Timed Keys und Heilstellen:
51
52 Als erstes solltest Du bitte die Manpages zu check_timed_key() und
53 check_and_update_timed_key() nachlesen.
54 Wir haben hier einen Sonderfall: Wir wollen nur Heilung alle 40
55 Minuten erlauben, UND wir wollen nicht, dass der Spieler erst wieder
56 40 Minuten warten muss, wenn er dieses Mal nichts essen kann, weil
57 er gerade ueberfressen ist. Deshalb pruefen wir erst den Key, bevor
58 wir "wie ueblich" mit check_and_timed_key() arbeiten.
59
60 Wenn der Spieler auch die Wartezeit aufgebrummt bekommen soll, falls
61 er gerade ueberfressen ist, dann sollte man so vorgehen wie in dem
62 Beispiel der Manpage.
63 */
64
65 /*
66 Da der Timed Key ueber das ganze Mud eindeutig sein muss, empfiehlt
67 es sich, den eigenen Magiernamen darin zu verwenden. Gute Praxis ist
68 es, wenn Du etwas wie "Magiername_Gebiet_Stelle" verwendest, dann
69 kommst Du auch mit Deinen eigenen Timed Keys nicht durcheinander.
70 */
71
72 // Beim Ueberpruefen nicht Key setzen, TP koennte ja vollgefuttert sein:
73 if (TP->check_timed_key("notstrom_tutorial2018_obst")==0) {
74 if (TP->eat_food(5, 0,
75 "Du bist schon so vollgefuttert, dass nichtmal mehr etwas "
76 "Obst geht.")) {
77 // Returnwert wurde bereits oben geprueft:
78 TP->check_and_update_timed_key(2400, "notstrom_tutorial2018_obst");
79 TP->buffer_hp(100+random(60), 12);
80 TP->buffer_sp(100+random(60), 12);
81
82 tell_object(TP, BSLF(
83 "'Esst Obst, und Ihr bleibt gesund', sagten sie. Jetzt hast Du "
84 "schon so viel Obst gegessen, und Dir wird immer schlechter ..."));
85 tell_room(TO, BSLF(
86 TPN+" etwas mampft Obst aus der Schale."),
87 ({TP}));
88 }
89 } else {
90 tell_object(TP, BSLF(
91 "Du bist bereits absolut gemaestet, Du bringst keinen Bissen mehr "
92 "herunter. Vielleicht ein andermal ..."));
93 }
94 return 1;
95}
96