@Override
	public boolean invoke(MOB mob, List<String> commands, Physical givenTarget, boolean auto, int asLevel)
	{
		if(mob.fetchEffect(this.ID())!=null)
		{
			Ability A=mob.fetchEffect(ID());
			if(A!=null)
				A.unInvoke();
			A=mob.fetchEffect(ID());
			if(A!=null)
				mob.tell(L("You are already hiding in plain site."));
			return false;
		}

		if(!super.invoke(mob,commands,givenTarget,auto,asLevel))
			return false;

		final MOB highestMOB=getHighestLevelMOB(mob,null);
		final int levelDiff=mob.phyStats().level()-getMOBLevel(highestMOB)-(this.getXLEVELLevel(mob)*2);

		final String str=L("You step to the side and become totally inconspicuous.");

		boolean success=proficiencyCheck(mob,levelDiff*10,auto);

		if(!success)
		{
			if(highestMOB!=null)
				beneficialVisualFizzle(mob,highestMOB,L("<S-NAME> step(s) to the side of <T-NAMESELF>, but end(s) up looking like an idiot."));
			else
				beneficialVisualFizzle(mob,null,L("<S-NAME> step(s) to the side and look(s) like an idiot."));
		}
		else
		{
			final CMMsg msg=CMClass.getMsg(mob,null,this,auto?CMMsg.MSG_OK_ACTION:(CMMsg.MSG_DELICATE_HANDS_ACT|CMMsg.MASK_MOVE),str,CMMsg.NO_EFFECT,null,CMMsg.NO_EFFECT,null);
			if(mob.location().okMessage(mob,msg))
			{
				mob.location().send(mob,msg);
				invoker=mob;
				beneficialAffect(mob,mob,asLevel,0);
				mob.recoverPhyStats();
			}
			else
				success=false;
		}
		return success;
	}