notstrom | c67107e | 2019-08-17 13:16:09 +0200 | [diff] [blame^] | 1 | inherit "/std/room"; |
| 2 | |
| 3 | #include __PATH__(1)"defs.h" |
| 4 | |
| 5 | int cmd_obst(); |
| 6 | |
| 7 | |
| 8 | protected 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 | */ |
| 48 | int 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 | |