@Override
	public String prompt(MOB mob,
						 String oldVal,
						 int showNumber,
						 int showFlag,
						 String FieldDisp,
						 boolean emptyOK,
						 boolean rawPrint,
						 int maxChars,
						 String help,
						 CMEval eval,
						 Object[] choices)
	throws IOException
	{
		if((mob==null)||(mob.session() == null))
			return oldVal;
		if((showFlag>0)&&(showFlag!=showNumber))
			return oldVal;
		String showVal=oldVal;
		if((maxChars > 0)&&(showVal.length()>maxChars)&& (!((showFlag!=showNumber)&&(showFlag>-999))))
			showVal=showVal.substring(0,maxChars)+"...";
		if(rawPrint)
			mob.session().safeRawPrintln(showNumber+". "+FieldDisp+": '"+showVal+"'.");
		else
			mob.tell(showNumber+". "+FieldDisp+": '"+showVal+"'.");
		if((showFlag!=showNumber)&&(showFlag>-999))
			return oldVal;
		String newName="?";
		boolean mcp =mob.session().isAllowedMcp("dns-org-mud-moo-simpleedit", (float)1.0);
		final String promptStr=L("Enter a new value@x1@x2@x3\n\r:",(emptyOK?" (or NULL)":""),(mcp?" (or \\#$#)":""),(help!=null?" (?)":""));
		while(newName.equals("?")&&(mob.session()!=null)&&(!mob.session().isStopped()))
		{
			newName=mob.session().prompt(promptStr,"");
			if(mcp && newName.equals("\\#$#"))
			{
				int tag=Math.abs(new Random(System.currentTimeMillis()).nextInt());
				mob.session().sendMcpCommand("dns-org-mud-moo-simpleedit-content", 
						" reference: #64.name name: Data type: string content*: \"\" _data-tag: "+tag);
				List<String> strs = Resources.getFileLineVector(new StringBuffer(oldVal));
				for(String s : strs)
					mob.session().rawPrintln("#$#* "+tag+" content: "+s);
				mob.session().rawPrintln("#$#: "+tag);
				newName = "?";
			}
			else
			if(newName.equals("?")&&((help!=null)||((choices!=null)&&(choices.length>0))))
			{
				if(help!=null)
					mob.tell(help);
				else
					mob.tell(L("You choices are: @x1",CMParms.toListString(choices)));
			}
			else
			{
				final boolean noEntry=(newName.trim().length()==0);
				if(noEntry)
					newName=oldVal;
				else
				if((newName.equalsIgnoreCase("null"))&&(emptyOK))
					newName="";

				if(eval!=null)
				try
				{
					final Object value=eval.eval(newName,choices,emptyOK);
					if(value instanceof String)
						newName=(String)value;
				}
				catch(final CMException e)
				{
					mob.tell(e.getMessage());
					mob.tell(L("You choices are: @x1",CMParms.toListString(choices)));
					newName="?";
					continue;
				}
				if((noEntry)&&(newName.equals(oldVal)))
					break;
				return newName;
			}
		}
		mob.tell(L("(no change)"));
		return oldVal;
	}