Lpc Manpages

FUNKTION:
    public varargs int drink_alcohol(int alc,string mytext,int testonly)

DEFINIERT IN:
    /std/living/life.c

ARGUMENTE:
    alc: wird zur aktuellen Saettigung P_ALCOHOL dazu addiert

    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 alc auftreten kann, wenn P_ALCOHOL 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 angegebene Wert fuer 'alc' 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 -> update_timed_key() realisiert werden.

BEISPIEL:

    #define TP this_player()

    int heilstelle()
     {
      if ( !TP->drink_alcohol(10,"Der Schnaps passt nicht mehr rein!\n") )
       return 1;

      // Platz fuer 10 "Alkohol" war noch, diese sind jetzt bereits addiert
      // Nachricht an den Spieler:
      tell_object(TP,BS(
          "Du trinkst den Schnaps aus. *hick*");

      // alle Lebewesen im Raum bekommen das auch mit
      foreach(object ob:
              (filter(all_inventory(environment(TP)), #'living) - ({TP})))
       ob->ReceiveMsg(TP->Name()+" trinkt einen Schnaps aus.",
                      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, eat_food, drink_soft
     Heilung:   heal_self, restore_spell_points, restore_hit_points, 
                buffer_hp, buffer_sp
     Timing:    update_timed_key, check_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