
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
