@Override
	public boolean okMessage(Environmental oking, CMMsg msg)
	{
		if((oking==null)||(!(oking instanceof MOB)))
		   return super.okMessage(oking,msg);
		final MOB mob=(MOB)oking;
		if(msg.amITarget(mob)
		&&(msg.targetMinor()==CMMsg.TYP_GIVE)
		&&(msg.tool() instanceof Coins))
		{
			final String currency=CMLib.beanCounter().getCurrency(mob);
			final double[] owe=totalMoneyOwed(mob,msg.source());
			final double coins=((Coins)msg.tool()).getTotalValue();
			if((paid!=null)&&(paid.contains(msg.source())))
				owe[OWE_TOTAL]-=owe[OWE_CITIZENTAX];
			final String owed=CMLib.beanCounter().nameCurrencyShort(currency,owe[OWE_TOTAL]);
			if((!((Coins)msg.tool()).getCurrency().equals(CMLib.beanCounter().getCurrency(mob))))
			{
				msg.source().tell(L("@x1 refuses your money.",mob.name(msg.source())));
				CMLib.commands().postSay(mob,msg.source(),L("I don't accept that kind of currency."),false,false);
				return false;
			}
			if(coins<owe[OWE_TOTAL])
			{
				msg.source().tell(L("@x1 refuses your money.",mob.name(msg.source())));
				CMLib.commands().postSay(mob,msg.source(),L("That's not enough.  You owe @x1.  Try again.",owed),false,false);
				return false;
			}
		}
		return true;
	}