diff --git a/doc/sphinx/lfun/QueryBuyValue.rst b/doc/sphinx/lfun/QueryBuyValue.rst
new file mode 100644
index 0000000..815cf5e
--- /dev/null
+++ b/doc/sphinx/lfun/QueryBuyValue.rst
@@ -0,0 +1,62 @@
+QueryBuyValue()
+===============
+
+QueryBuyValue()
+
+Funktion
+    static varargs int QueryBuyValue(mixed ob, object client)
+
+Definiert in
+    /std/room/shop
+
+Argumente
+    ob 
+      Das zu kaufende Objekt (String oder object).
+      Im Normalfall handelt es sich um ein Objekt. Ausnahme sind 
+      Gegenstaende, die mit AddFixedObject() hinzugefuegt wurden.
+    client 
+      Der Kaeufer.
+
+Beschreibung
+    Ermittelt den Preis, den <client> fuer <ob> zu bezahlen hat.
+
+Rueckgabewert
+    Der Preis als Integer.
+
+Beispiel
+    Ein Haendler, der Spielern die ihm geholfen haben einen Rabatt von 10% 
+    gewaehrt
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+::
+
+    
+
+    object *helpers;
+    protected void create()
+    {
+      ::create();
+      helpers=({});
+      ...
+    }
+
+    
+
+    static varargs int QueryBuyValue(mixed ob, object client)
+    {
+      if(member(helpers,client)!=-1)
+      {
+        return ::QueryBuyValue(ob,client)*9/10;
+      }
+      return ::QueryBuyValue(ob,client);
+    }
+
+Siehe auch:
+    Funktionen:
+      AddFixedObject(), RemoveFixedObject(), SetStorageRoom(), 
+      QueryStorageRoom(), QueryBuyFact(), sell_obj(), buy_obj()
+    Properties:
+      P_KEEPER, P_MIN_STOCK, P_STORE_CONSUME
+
+
+Letzte Aenderung: 21.05.2014, Bugfix
+
