drink_alcohol() =============== FUNKTION -------- :: public varargs int drink_alcohol(int strength, int testonly, string mytext) DEFINIERT IN ------------ :: /std/living/life.c ARGUMENTE --------- :: strength: wird zur aktuellen Saettigung P_ALCOHOL dazu addiert testonly: Ist das Flag gesetzt, wird dem Spieler kein ALCOHOL zugefuehrt. Darf nur zum Testen der Heilstelle verwendet werden und muss im normalen Betrieb auf '0' stehen! mytext: Wer selber einen Text bei Misserfolg ausgeben lassen moechte, darf sich hier was nettes ausdenken. Achtung: Das unterdrueckt nicht die "Nuechtern"-Meldung, die bei negativem strength auftreten kann, wenn P_ALCOHOL wieder 0 ist. BESCHREIBUNG ------------ :: Es wird geprueft, ob dem Spieler der angegebene Wert fuer 'strength' auf seine aktuelle P_ALCOHOL addiert werden kann oder nicht. Falls das moeglich ist und testonly = 0, wird P_ALCOHOL entsprechend aktualisiert. Sollen neben P_ALCOHOL noch weitere Props manipuliert werden - bspw. zur Heilung eines Lebewesens - bietet sich die Funktion consume() an. RUECKGABEWERT ------------- :: 0 bei [potentiellem] Misserfolg (strength + P_ALCOHOL > P_MAX_ALCOHOL) 1 bei [potentiellem] Erfolg * potentiell bezieht sich hier auf Nutzung mit 'testonly' != 0 BEMERKUNG --------- :: drink_alocohol() bitte anstatt eigener Manipulationen von P_ALCOHOL und P_MAX_ALCOHOL verwenden. Achtung: Immer erst VOR einer Heilung ausfuehren und bei Erfolg heilen. Bei Heilstellen sollte eine evtl. Heilung des Spielers mit der eigens dafuer eingerichteten Funktion check_and_update_timed_key realisiert werden. BEISPIEL -------- :: int heilstelle() { if(this_player()->drink_alcohol(10, 0, "Du prustest in den Schnaps. " "Der passt nicht mehr rein.\n")) { // Platz fuer 10 "Alkohol" war noch, diese sind jetzt bereits addiert // Nachricht an den Spieler: tell_object(this_player(), break_string("Du trinkst den Schnaps aus.", 78)); // Nachricht an andere Livings im Raum object ob = first_inventory(environment(this_player())); do { if(living(ob) && ob!=this_player()) ob->ReceiveMsg(this_player()->Name()+" trinkt einen Schnaps aus.", MT_LOOK|MT_LISTEN, MA_DRINK); ob = next_inventory(ob); } while(ob); // Rassenabhaengige Heilung: Sofort oder in Schritten // Tragbare Heilungen sollten auch eher buffer_hp/_sp benutzen. if(this_player()->QueryProp(P_REAL_RACE)=="Schnapsdrossel") this_player()->heal_self(30); else { this_player()->buffer_hp(30,5); this_player()->buffer_sp(30,5); } } return 1; } SIEHE AUCH ---------- :: Aehnlich: consume, eat_food, drink_soft Heilung: heal_self, restore_spell_points, restore_hit_points, buffer_hp, buffer_sp Timing: check_and_update_timed_key Enttanken: defuel_drink, defuel_food Props: P_DRINK, P_FOOD, P_ALCOHOL, P_SP, P_HP, P_DEFUEL_TIME_DRINK Konzepte: heilung, enttanken, food 9. August 2015 Gloinson