Eine Weintraube
![]()
// Eine Traube koestlicher Weintrauben // // - Sie enthaelt eine unterschiedliche Anzahl von Beeren, die man in der // Langbeschreibung sehen kann // - Beim Essen wird die Anzahl reduziert // - Fuer die Funktionalitaet des Essens benutzen wir eat_and_drink // Original von Sunrise@Wunderland 2000 inherit "thing"; #pragma strong_types #include <properties.h> #include <defines.h> private static int num; // die Anzahl der Beeren an der Traube int esse_alle(); // Funktionen fuers Essen int essen(); // dito string long(); // Langbeschreibung void create() { if (!clonep()) return; ::create(); AddId(({"traube", "weintraube", "wein"}), ({"trauben", "weintrauben"})); SetProp(P_NAME, "Weintraube"); SetProp(P_PLURAL, "Weintrauben"); SetProp(P_GENDER, FEMALE); AddDetail(({"beere", "beeren", "weinbeere", "weinbeeren"}), "Lauter saftig suesse Weinbeeren haengen an der Traube."); AddCmd("iss|ess|esse&beere|weinbeere", "essen", "Was willst Du essen?"); AddCmd("iss|ess|esse&beeren|traube|weintraube|trauben", "esse_alle", "Was willst Du essen?"); num = (random(5)+5); SetProp(P_WEIGHT, 10*num); SetProp(P_BULKINESS, 2*num); } // beschreibung // die Funktion long() ist im std-thing enthalten. Wir ueberschreiben sie. string long() { if (num==1) return "An der Weintraube haengt nur noch eine Beere."; return sprintf("An der Weintraube haengen %i grosse %s.", num, num == 1 ? "Weinbeere":"Weinbeeren"); // num == 1 ? "Weinbeere":"Weinbeeren" ist eine verkuerzte if-Abfrage. Ihre Syntax sieht so aus: // bedingung_erfuellt ? wenn_ja : wenn_nein } // einzelne beere essen int essen() { object ob; int zeit; string me, spec; if (environment(ME) != PL) return notify_fail("Du musst die Weintraube erst nehmen.\n"); if (num > 1) { me = "Du isst eine leckere Weinbeere. Sie loescht Deinen " "Durst und Du fuehlst Dich ploetzlich voller Energie."; spec = PL->name(WER, NAME_AUTO|NAME_CAP)+ " isst eine Weinbeere. Dir laeuft das " "Wasser im Mund zusammen. Du willst auch eine."; SetProp(P_WEIGHT, 10*num); SetProp(P_BULKINESS, 2*num); } else { me = "Du isst die letzte Weinbeere.\nDen leeren Stiel " "schnippst Du einfach weg."; spec = PL->name(WER, NAME_AUTO|NAME_CAP)+" isst die letzte " "Weinbeere. Schade."; } // eat_and_drink berechnet anhand von Fluessigkeits-, Feststoff- und Alkohol- // gehalt Saettigung und Heilung des Essens // Bitte die man zu eat_and_drink genau durchlesen :-) // Wenn der Rueckgabewert 0 ist, hat das Essen/Trinken nicht geklappt if (!PL->eat_and_drink(20, 7, 0, 1.0, 1.0, ({ ({ "Die Weinbeere ist im Moment zu viel fuer Dich."}), //misserfolg wegen DRINK ({ "Die Weinbeere ist im Moment zu viel fuer Dich."}), //misserfolg wegen FOOD ({}), //misserfolg wegen ALK ({ me, spec }) }) ) ) //erfolg return 1; num--; if (!num) remove(1); return 1; } //alle auf einmal essen int esse_alle() { object ob; int zeit; if (environment(ME)!=PL) return notify_fail("Du musst die Weintraube erst nehmen.\n"); // eat_and_drink berechnet anhand von Fluessigkeits-, Feststoff- und Alkohol- // gehalt Saettigung und Heilung des Essens // Bitte die man zu eat_and_drink genau durchlesen :-) // Wenn der Rueckgabewert 0 ist, hat das Essen/Trinken nicht geklappt if (!PL->eat_and_drink((20*num), (7*num), 0, 1.0, 1.0, ({ ({ "Du solltest die Weintrauben vielleicht einzeln essen, alle zusammen " "schaffst Du nicht."}), //misserfolg wegen DRINK ({ "Du solltest die Weintrauben vielleicht einzeln essen, alle zusammen " "schaffst Du nicht."}), //misserfolg wegen FOOD ({}), //misserfolg wegen ALK ({ "Du stopfst Dir die ganzen Beeren auf einmal in den " "Mund. Sie sind unglaublich saftig, loeschen Deinen Durst und verlei" "hen Dir neue Energie.\nDen Stiel wirfst Du einfach weg.", PL->name(WER, NAME_AUTO|NAME_CAP)+ " isst die ganze Weintraube auf einmal. Nur den Stiel laesst "+ PL->QueryPronoun(WER)+" uebrig und wirft ihn achtlos weg. "+ PL->name(WER, NAME_AUTO|NAME_CAP)+" hatte wohl Angst, " "dass "+ PL->QueryPronoun(WER)+" DIR etwas abgeben soll."}) })) ) //erfolg return 1; remove(); return 1; } |
| Start » Magierhandbuch » Dokumentation » Programmierbeispiele » Weintraube | |
|
| |