QuerySellValue()
****************


FUNKTION
========

   varargs int QuerySellValue(object ob, object client);


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

   /std/trading_price.c


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

   Diese Funktion kann dazu genutzt werden, den Verkaufspreis in einem
   Laden global zu veraendern. Sofern dies zugunsten der Spieler geschieht,
   muss dafuer die Zustimmung des zustaendigen Regionsmagiers und der
   Balance eingeholt werden. Zudem sollte es nicht in jedem x-beliebigen
   Laden genutzt werden, sondern nur in recht abgelegenen Gebieten, in
   die man nicht einfach skripten kann.

   Ein Beispiel ist der Laden auf dem Kutter in Port Vain, der nur in
   laengeren Intervallen mal zugaenglich ist.


BEISPIEL
========

   Ein Laden zahlt 10% ueber dem normalen Verkaufspreis:

   private int sell_factor = 110;

   varargs int QuerySellValue(object ob, object client) {
     // Es wird nicht naeher geprueft, ob <ob> ein gueltiger Objektpointer
     // ist, da der Laden selbst sicherstellt, dass das so ist. Wenn
     // das doch einmal nicht der Fall sein sollte, liegt der Fehler
     // woanders. Einen Bug auszuloesen ist dann sinnvoll.

     // Basispreis ermitteln
     int preis = ::QuerySellValue(ob, client);
     // und den Bonus aufschlagen.
     preis = (sell_factor * preis)/100;

     // Nicht mehr auszahlen, als das Objekt an sich wert ist.
     return min(preis, ob->QueryProp(P_VALUE));
   }

LETZTE AENDERUNG: 18-Jun-2015, Arathorn
