@Override
	public boolean invoke(MOB mob, List<String> commands, Physical givenTarget, boolean auto, int asLevel)
	{
		if((commands.size()<1)&&(givenTarget==null))
		{
			mob.tell(L("What would you like to open?"));
			return false;
		}
		final Environmental item=super.getAnyTarget(mob,commands,givenTarget,Wearable.FILTER_UNWORNONLY);
		if(item==null)
			return false;
		if((item instanceof MOB)
		||(item instanceof Area)
		||(item instanceof Room))
		{
			mob.tell(L("You can't open that!"));
			return false;
		}

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

		final boolean success=proficiencyCheck(mob,0,auto);

		if(success)
		{
			final CMMsg msg=CMClass.getMsg(mob,item,this,CMMsg.MSG_THIEF_ACT,L("<S-NAME> open(s) <T-NAME>."),CMMsg.NO_EFFECT,null,CMMsg.NO_EFFECT,null);
			if(mob.location().okMessage(mob,msg))
			{
				mob.location().send(mob,msg);
				CMLib.commands().postOpen(mob,item,true);
			}
		}
		else
		{
			beneficialVisualFizzle(mob,item,L("<S-NAME> attempt(s) to open <T-NAME> quietly, but fail(s)."));
			CMLib.commands().postOpen(mob,item,false);
		}
		return success;
	}