Difference for server/shop.c from version 1.34 to 1.35


version 1.34 version 1.35
Line 1
 
Line 1
 /*  /*
  * static char *rcsid_shop_c =   * static char *rcsid_shop_c =
  *   "$Id: shop.c,v 1.34 2005/03/06 20:38:54 akirschbaum Exp $";   *   "$Id: shop.c,v 1.35 2005/04/14 06:12:57 mwedel Exp $";
  */   */
   
 /*  /*
Line 36
 
Line 36
 #endif  #endif
   
   
 static uint64 pay_from_container(object *pouch, uint64 to_pay);  static uint64 pay_from_container(object *pl, object *pouch, uint64 to_pay);
   
   
 #define NUM_COINS 3 /* number of coin types */  #define NUM_COINS 3 /* number of coin types */
Line 342
 
Line 342
     if (to_pay==0) return 1;      if (to_pay==0) return 1;
     if (to_pay > query_money(pl)) return 0;      if (to_pay > query_money(pl)) return 0;
   
     to_pay = pay_from_container(pl, to_pay);      to_pay = pay_from_container(pl, pl, to_pay);
   
     for (pouch=pl->inv; (pouch!=NULL) && (to_pay>0); pouch=pouch->below) {      for (pouch=pl->inv; (pouch!=NULL) && (to_pay>0); pouch=pouch->below) {
  if (pouch->type == CONTAINER   if (pouch->type == CONTAINER
      && QUERY_FLAG(pouch, FLAG_APPLIED)       && QUERY_FLAG(pouch, FLAG_APPLIED)
      && (pouch->race == NULL || strstr(pouch->race, "gold"))) {       && (pouch->race == NULL || strstr(pouch->race, "gold"))) {
      to_pay = pay_from_container(pouch, to_pay);       to_pay = pay_from_container(pl, pouch, to_pay);
  }   }
     }      }
     fix_player(pl);      fix_player(pl);
Line 377
 
Line 377
     if (saved_money > 0)      if (saved_money > 0)
       change_exp(pl,saved_money,"bargaining",SK_EXP_NONE);        change_exp(pl,saved_money,"bargaining",SK_EXP_NONE);
   
     to_pay = pay_from_container(pl, to_pay);      to_pay = pay_from_container(pl, pl, to_pay);
   
     for (pouch=pl->inv; (pouch!=NULL) && (to_pay>0); pouch=pouch->below) {      for (pouch=pl->inv; (pouch!=NULL) && (to_pay>0); pouch=pouch->below) {
  if (pouch->type == CONTAINER   if (pouch->type == CONTAINER
      && QUERY_FLAG(pouch, FLAG_APPLIED)       && QUERY_FLAG(pouch, FLAG_APPLIED)
      && (pouch->race == NULL || strstr(pouch->race, "gold"))) {       && (pouch->race == NULL || strstr(pouch->race, "gold"))) {
      to_pay = pay_from_container(pouch, to_pay);       to_pay = pay_from_container(pl, pouch, to_pay);
  }   }
     }      }
     if (settings.real_wiz == FALSE && QUERY_FLAG(pl, FLAG_WAS_WIZ))      if (settings.real_wiz == FALSE && QUERY_FLAG(pl, FLAG_WAS_WIZ))
Line 406
 
Line 406
  * to_pay is the required amount.   * to_pay is the required amount.
  * returns the amount still missing after using "pouch".   * returns the amount still missing after using "pouch".
  */   */
 static uint64 pay_from_container(object *pouch, uint64 to_pay) {  static uint64 pay_from_container(object *pl, object *pouch, uint64 to_pay) {
     int count, i;      int count, i;
     sint64 remain;      sint64 remain;
     object *tmp, *coin_objs[NUM_COINS], *next;      object *tmp, *coin_objs[NUM_COINS], *next;
     archetype *at;      archetype *at;
     object *who;  
   
     if (pouch->type != PLAYER && pouch->type != CONTAINER) return to_pay;      if (pouch->type != PLAYER && pouch->type != CONTAINER) return to_pay;
   
Line 434
 
Line 433
      pouch->name, coins[NUM_COINS-1-i]);       pouch->name, coins[NUM_COINS-1-i]);
  remove_ob(tmp);   remove_ob(tmp);
  coin_objs[i]->nrof += tmp->nrof;   coin_objs[i]->nrof += tmp->nrof;
  esrv_del_item(pouch->contr, tmp->count);   esrv_del_item(pl->contr, tmp->count);
  free_object(tmp);   free_object(tmp);
      }       }
      else {       else {
  remove_ob(tmp);   remove_ob(tmp);
  if(pouch->type==PLAYER) esrv_del_item(pouch->contr, tmp->count);   if(pouch->type==PLAYER) esrv_del_item(pl->contr, tmp->count);
  coin_objs[i] = tmp;   coin_objs[i] = tmp;
      }       }
      break;       break;
Line 487
 
Line 486
     for (i=0; i<NUM_COINS; i++) {      for (i=0; i<NUM_COINS; i++) {
  if (coin_objs[i]->nrof) {   if (coin_objs[i]->nrof) {
      object *tmp = insert_ob_in_ob(coin_objs[i], pouch);       object *tmp = insert_ob_in_ob(coin_objs[i], pouch);
      for (who = pouch; who && who->type!=PLAYER && who->env!=NULL; who=who->env) ;  
      esrv_send_item(who, tmp);       esrv_send_item(pl, tmp);
      esrv_send_item (who, pouch);       esrv_send_item (pl, pouch);
      if(who != pouch) esrv_update_item (UPD_WEIGHT, who, pouch);       if (pl != pouch) esrv_update_item (UPD_WEIGHT, pl, pouch);
      if (pouch->type != PLAYER) {       if (pl->type != PLAYER) {
  esrv_send_item (who, who);   esrv_send_item (pl, pl);
      }       }
  } else {   } else {
      free_object(coin_objs[i]);       free_object(coin_objs[i]);


Legend:
line(s) removed in v.1.34 
line(s) changed
 line(s) added in v.1.35

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