@Override
	public boolean tick(Tickable ticking, int tickID)
	{
		if(!super.tick(ticking, tickID))
			return false;
		final Physical affected=this.affected;
		if(affected instanceof MOB)
		{
			final MOB mob=(MOB)affected;
			if((mob.isInCombat())
			||(CMLib.flags().isFalling(affected))
			||(!CMLib.flags().isAliveAwakeMobileUnbound(mob,true)))
			{
				aborted=true;
				unInvoke();
				return false;
			}
			if(tickDown==4)
				mob.location().show(mob,null,CMMsg.MSG_NOISYMOVEMENT,L("<S-NAME> <S-IS-ARE> almost done building a smuggler's hold."));
			else
			if((tickDown%4)==0)
			{
				final int pct=(int)Math.round(CMath.div(totalTicks-tickDown,totalTicks)*100.0);
				mob.location().show(mob,null,this,CMMsg.MSG_NOISYMOVEMENT,L("<S-NAME> continue(s) building a smuggler's hold (@x1% completed).",""+pct),null,L("<S-NAME> continue(s) building a smuggler's hold."));
			}
		}
		return true;
	}