public void giveBonus(MOB mob, Electronics item)
	{
		if((mob==null)||(item==null))
			return;

		if((System.currentTimeMillis()-lastCastHelp)<300000)
			return;

		String experName;
		if(CMLib.dice().rollPercentage()>50)
		{
			final Manufacturer m=item.getFinalManufacturer();
			if(m!=null)
			{
				experName=m.name();
			}
			else
				return;
		}
		else
		{
			final Technical.TechType ttype = item.getTechType();
			if(ttype!=null)
			{
				experName=ttype.getDisplayName();
			}
			else
				return;
		}
		Pair<String,Integer> expertise=mob.fetchExpertise(experName+"%");
		final int currentExpertise=(expertise!=null)?expertise.second.intValue():0;
		if(((int)Math.round(Math.sqrt((mob.charStats().getStat(CharStats.STAT_INTELLIGENCE)))*34.0*Math.random()))>=currentExpertise)
		{
			mob.addExpertise(experName+"%"+(currentExpertise+1));
			lastCastHelp=System.currentTimeMillis();
			AstroEngineering A=(AstroEngineering)mob.fetchAbility(ID());
			if(A!=null)
				A.lastCastHelp=System.currentTimeMillis();
			mob.tell(mob,null,null,L("You gain some new insights about @x1.",CMLib.english().makePlural(experName.toLowerCase())));
		}
	}