Lpc Manpages

FUNKTION:
    public varargs int drink_soft(int drink,string mytext,int testonly)

DEFINIERT IN:
    /std/living/life.c

ARGUMENTE:
    drink: Wird zu dem augenblicklichen Saettigungsgrad (P_DRINK) addiert.

    mytext: Wer selber einen Text bei Misserfolg ausgeben lassen moechte,
            darf sich hier was nettes ausdenken.
            Achtung: Das unterdrueckt nicht die "Durst"-Meldung, die bei
            negativem drink auftritt, wenn P_DRINK wieder 0 ist.

    testonly: Ist das Flag gesetzt, wird dem Spieler kein FOOD zugefuehrt.
              Darf nur zum Testen der Heilstelle verwendet werden und muss
              im normalen Betrieb auf '0' stehen! (bzw. weggelassen werden,
              da 'varargs')

BESCHREIBUNG:
    Es wird geprueft, ob dem Spieler der angebene Wert "drink" auf
    aktuelle P_DRINK addiert werden kann oder nicht. Ist dies moeglich,
    wird es gemacht, es sei denn, es ist testonly != 0

    Sollen neben P_DRINK noch weitere Props manipuliert werden - bspw. zur
    Heilung eines Lebewesens - bietet sich die Funktion consume() an.

RUECKGABEWERT:
     0, wenn drink + P_DRINK > P_MAX_DRINK
    >0, wenn Erfolg

BEMERKUNG:
    drink_soft() bitte anstatt eigener Manipulationen von P_DRINK und
    P_MAX_DRINK 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 update_timed_key realisiert werden.

BEISPIEL:
    #define TP this_player()

    int heilstelle()
     {
      if ( !TP->drink_soft(10,"Du hast einfach keinen Durst mehr!\n") )
       return 1;

      // Platz fuer 10 "Trinken" war noch, diese sind jetzt bereits addiert
      // Nachricht an den Spieler:
      tell_object(TP,BS(
          "Du nimmst einen grossen Schluck zuckersuesse Limonade.");

      // alle Lebewesen im Raum bekommen das auch mit
      foreach(object ob:
              (filter(all_inventory(environment(TP)), #'living) - ({TP})))
       ob->ReceiveMsg(TP->Name()+" trinkt einen Schluck Limonade.",
                      MT_LOOK|MT_LISTEN,
                      MA_DRINK);

       // Tragbare Heilungen sollten eher buffer_hp/_sp benutzen:
       TP->buffer_hp(30,5);
       TP->buffer_sp(30,5);

      return 1;
     }

SIEHE AUCH:
     Aehnlich:  consume, drink_alcohol, eat_food
     Heilung:   heal_self, restore_spell_points, restore_hit_points, 
                buffer_hp, buffer_sp
     Timing:    update_timed_key
     Enttanken: defuel_drink, defuel_food
     Props:     P_DRINK, P_FOOD, P_ALCOHOL, P_SP, P_HP,
                P_DEFUEL_TIME_DRINK
     Kneipen:   kneipe, AddToMenu, RemoveFromMenu
     Konzepte:  heilung, enttanken, food

----------------------------------------------------------------------------
01.10.17, Torin