Start Info Community Spielen
 
 

Morgengrauner Dokumentation

Dateipfad: /home/mud/mudlib/doc/lfun/drink_soft

drink_soft()
************


FUNKTION
========

   public varargs int drink_soft(int strength, int testonly, string mytext)


DEFINIERT IN
============

   /std/living/life.c


ARGUMENTE
=========

   strength: Wird zu dem augenblicklichen Saettigungsgrad (P_DRINK) addiert.
   testonly: Ist das Flag gesetzt, wird dem Spieler kein DRINK 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 "Durst"-Meldung, die bei
           negativem strength auftritt, wenn P_DRINK wieder 0 ist.


BESCHREIBUNG
============

   Es wird geprueft, ob dem Spieler der angebene Wert "strength" auf
   aktuelle P_DRINK addiert werden kann oder nicht. Ist dies moeglich,
   wird es gemacht, es sei denn das 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 strength + 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 check_and_update_timed_key realisiert
   werden.


BEISPIEL
========

   int heilstelle() {
     if(this_player()->drink_soft(10, 0, "Du blubberst nicht ueberzeugt "
                                  "in der Limonade. Das ist zu viel.\n")) {
       // Platz fuer 10 "Trinken" war noch, diese sind jetzt bereits addiert
       // Nachricht an den Spieler:
       tell_object(this_player(), break_string("Du nimmst einen grossen "
                   "Schluck zuckersuesse Limonade.", 78));

       // alle anderen im Raum bekommen es ggf auch mit:
       // 1) filter(..., #'living) ergibt die Lebewesen im Raum
       // 2) filter_objects(..., "ReceiveMsg") ruft ReceiveMsg an jedem
       // 3) ReceiveMsg(...) bekommt die Folgeparameter
       filter_objects(filter(all_inventory(environment(this_player())),
                             #'living) - ({this_player()}),
                      "ReceiveMsg",
                      this_player()->Name()+
                        " trinkt einen Schluck Limonade.",
                      MT_LOOK|MT_LISTEN,
                      MA_DRINK);

       // Rassenabhaengige Heilung: Sofort oder in Schritten
       // Tragbare Heilungen sollten auch eher buffer_hp/_sp benutzen.
       if(this_player()->QueryProp(P_REAL_RACE)=="Saufziege")
         this_player()->heal_self(30);
       else {
         this_player()->buffer_hp(30,5);
         this_player()->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: 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


zurück zur Übersicht

YOUTUBE | FACEBOOK | TWITTER | DISCORD | FEEDBACK | IMPRESSUM | DATENSCHUTZ 1992–2023 © MorgenGrauen.