Difference for server/shop.c from version 1.43 to 1.44


version 1.43 version 1.44
Line 1
 
Line 1
 /*  /*
  * static char *rcsid_shop_c =   * static char *rcsid_shop_c =
  *   "$Id: shop.c,v 1.43 2005/10/06 05:27:35 qal21 Exp $";   *   "$Id: shop.c,v 1.44 2005/10/06 13:18:54 cavesomething Exp $";
  */   */
   
 /*  /*
Line 52
 
Line 52
 #define NEUTRAL_RATIO 0.8  #define NEUTRAL_RATIO 0.8
   
 static uint64 pay_from_container(object *pl, object *pouch, uint64 to_pay);  static uint64 pay_from_container(object *pl, object *pouch, uint64 to_pay);
   static uint64 value_limit(uint64 val, int quantity, object *who, int isshop);
   
 #define NUM_COINS 3 /* number of coin types */  #define NUM_COINS 3 /* number of coin types */
 static char *coins[] = {"platinacoin", "goldcoin", "silvercoin", NULL};  static char *coins[] = {"platinacoin", "goldcoin", "silvercoin", NULL};
Line 178
 
Line 179
     }      }
   
     /* Limit amount of money you can get for really great items. */      /* Limit amount of money you can get for really great items. */
     if ((flag==F_TRUE || flag==F_SELL) && who)      if (flag==F_TRUE || flag==F_SELL)
  val=value_limit(val, number, who->map, shop);   val=value_limit(val, number, who, shop);
   
     /* This modification is for bargaining skill.      /* This modification is for bargaining skill.
      * Now only players with max level in bargaining       * Now only players with max level in bargaining
Line 850
 
Line 851
 /* limit the value of items based on the wealth of the shop. If the item is close  /* limit the value of items based on the wealth of the shop. If the item is close
  * to the maximum value a shop will offer, we start to reduce it, if the item is    * to the maximum value a shop will offer, we start to reduce it, if the item is
  * below the minimum value the shop is prepared to trade in, then we don't    * below the minimum value the shop is prepared to trade in, then we don't
  * want it and offer nothing.   * want it and offer nothing. If it isn't a shop, check whether we should do generic
    * value reduction.
  *    *
  */   */
 uint64 value_limit(uint64 val, int quantity, mapstruct *map, int isshop) {  static uint64 value_limit(uint64 val, int quantity, object *who, int isshop) {
     uint64 newval, unit_price;      uint64 newval, unit_price;
     unit_price=val/quantity;      unit_price=val/quantity;
     newval=unit_price;      newval=unit_price;
     if (isshop) {      mapstruct *map;
       if (!isshop || !who) {
    newval=8000+isqrt(unit_price)*20;
       }
       else {
    if (!who->map) {
        LOG(llevError, "value_limit: asked shop price for ob %s on NULL map", who->name);
        return val;
    }
    map=who->map;
  if (map->shopmin && unit_price < map->shopmin) return 0;   if (map->shopmin && unit_price < map->shopmin) return 0;
  else if (map->shopmax && unit_price > map->shopmax/2)   else if (map->shopmax && unit_price > map->shopmax/2)
      newval=MIN((map->shopmax/2)+isqrt(unit_price-map->shopmax/2), map->shopmax);       newval=MIN((map->shopmax/2)+isqrt(unit_price-map->shopmax/2), map->shopmax);


Legend:
line(s) removed in v.1.43 
line(s) changed
 line(s) added in v.1.44

File made using version 1.98 of cvs2html by leaf at 2011-07-21 17:44