@Override
	public ShopKeeper.ShopPrice pawningPrice(MOB seller,
											 MOB buyer,
											 Environmental product,
											 ShopKeeper shop)
	{
		double number=1.0;
		final ShopKeeper.ShopPrice val=new ShopKeeper.ShopPrice();
		try
		{
			if(product instanceof PackagedItems)
			{
				number=((PackagedItems)product).numberOfItemsInPackage();
				product=((PackagedItems)product).peekFirstItem();
			}
			else
			if(product instanceof RawMaterial)
			{
				number = ((RawMaterial)product).basePhyStats().weight();
				product = (Environmental)product.copyOf();
				((RawMaterial) product).basePhyStats().setWeight(1);
				((RawMaterial) product).phyStats().setWeight(1);
				int baseValue = ((RawMaterial) product).baseGoldValue();
				if(baseValue > number)
					((RawMaterial) product).setBaseValue( (int)Math.round(baseValue / number));
				else
				if(baseValue > 0)
					((RawMaterial) product).setBaseValue( 1);
			}
			if(product==null)
				return val;
			final int stockPrice=shop.getShop().stockPrice(product);
			if(stockPrice<=-100)
			{
				return val;
			}
	
			if(stockPrice>=0.0)
				val.absoluteGoldPrice=stockPrice;
			else
				val.absoluteGoldPrice=rawSpecificGoldPrice(product,shop.getShop());
	
			if(buyer==null)
			{
				val.absoluteGoldPrice *= number;
				return val;
			}
	
			double prejudiceFactor=prejudiceFactor(buyer,shop.finalPrejudiceFactors(),true);
			final Room loc=CMLib.map().roomLocation(shop);
			prejudiceFactor*=itemPriceFactor(product,loc,shop.finalItemPricingAdjustments(),true);
			val.absoluteGoldPrice=CMath.mul(prejudiceFactor,val.absoluteGoldPrice);
	
			// gets the shopkeeper a deal on junk.  Pays 5% at 3 charisma, and 50% at 35
			double buyPrice=CMath.div(CMath.mul(val.absoluteGoldPrice,buyer.charStats().getStat(CharStats.STAT_CHARISMA)),70.0);
			if(!(product instanceof Ability))
				buyPrice=CMath.mul(buyPrice,1.0-devalue(shop,product,number));
	
	
			final double sellPrice=sellingPrice(seller,buyer,product,shop,false).absoluteGoldPrice;
	
			if(buyPrice>sellPrice)
				val.absoluteGoldPrice=sellPrice;
			else
				val.absoluteGoldPrice=buyPrice;
	
			val.absoluteGoldPrice *= number;

			if(val.absoluteGoldPrice<=0.0)
				val.absoluteGoldPrice=1.0;
		}
		finally
		{
			if((number > 1.0)&&(product!=null))
				product.destroy();
		}
		return val;
	}