@Override
	public boolean preExecute(MOB mob, List<String> commands, int metaFlags, int secondsElapsed, double actionsRemaining)
	throws java.io.IOException
	{
		
		if(secondsElapsed==0)
		{
			if(isOccupiedWithOtherWork(mob))
			{
				CMLib.commands().doCommandFail(mob,new StringXVector(commands),L("You are too busy to dig right now."));
				return false;
			}
			if(mob.isInCombat())
			{
				CMLib.commands().doCommandFail(mob,new StringXVector(commands),L("You are too busy fighting right now."));
				return false;
			}

			final String msgStr=L("<S-NAME> start(s) digging a hole with <O-NAME>.");
			Item I=mob.fetchWieldedItem();
			if(I==null)
				I=mob.getNaturalWeapon();
			final CMMsg msg=CMClass.getMsg(mob,mob.location(),I,CMMsg.MSG_DIG,msgStr);
			msg.setValue(1);
			if(mob.location().okMessage(mob,msg))
				mob.location().send(mob,msg);
			else
				return false;
		}
		else
		if((secondsElapsed % 8)==0)
		{
			if(mob.isInCombat())
			{
				CMLib.commands().doCommandFail(mob,new StringXVector(commands),L("You stop digging."));
				return false;
			}
			final String msgStr=L("<S-NAME> continue(s) digging a hole with <O-NAME>.");
			Item I=mob.fetchWieldedItem();
			if(I==null)
				I=mob.getNaturalWeapon();
			final CMMsg msg=CMClass.getMsg(mob,mob.location(),I,CMMsg.MSG_DIG,msgStr);
			msg.setValue(getDiggingDepth(I));
			if(mob.location().okMessage(mob,msg))
				mob.location().send(mob,msg);
			else
				return false;
		}
		return true;
	}