Lpc Manpages

FUNKTION:
    public varargs int eat_food(int food, string mytext, int testonly )

DEFINIERT IN:
    /std/living/life.c

ARGUMENTE:
    food: Wird zu dem augenblicklichen Saettigungsgrad (P_FOOD) addiert.

    mytext: Wer selber einen Text bei Misserfolg ausgeben lassen moechte,
            darf sich hier was nettes ausdenken.
            Achtung: Das unterdrueckt nicht die "Hunger"-Meldung, die bei
            negativem food auftreten kann, wenn P_FOOD 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 "strength" auf seine
    aktuelle P_FOOD addiert werden kann oder nicht. Ist dies moeglich, wird
    es gemacht, es sei denn, es ist testonly != 0

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

RUECKGABEWERT:
     0, wenn strength + P_FOOD > P_MAX_FOOD.
    >0, wenn Erfolg.

BEMERKUNG:
    eat_food() bitte anstatt eigener Manipulationen von P_FOOD und
    P_MAX_FOOD 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()
    {
      // Wenn auf das P_FOOD des Spielers die angegebenen 10 nicht mehr addiert
      // addiert werden koennen (weil sonst P_MAX_FOOD ueberschritten wird),
      // wird die Fehlermeldung ausgegeben, dass der Spieler nichts mehr
      // essen/trinken kann.
      // Bei gesetztem 'mytext' wird 'mytext' an den Spieler ausgegeben.
      // Ansonsten wird die Standardmeldung ausgegeben.

      if ( !TP->eat_food(10,"Der Keks ist zuviel fuer Dich.\n") )
       return 1;

      // Spieler hatte noch ausreichend Spielraum bei P_FOOD. Die 10 sind 
      // schon addiert worden. Jetzt Nachricht ausgeben:
      tell_object(TP,BS(
          "Du knabberst ein bisschen an dem Keks herum und fuehlst Dich "
          "gleich viel besser."));

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

      // 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, 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