@Override
	public boolean invoke(MOB mob, Vector commands, Physical givenTarget, boolean auto, int asLevel)
	{
		if(!super.invoke(mob,commands,givenTarget,auto,asLevel))
			return false;
		final boolean success=proficiencyCheck(mob,0,auto);

		if(!success)
			mob.tell(_("Your plant senses fail you."));
		else
		{
			final CMMsg msg=CMClass.getMsg(mob,null,null,CMMsg.MSG_QUIETMOVEMENT|CMMsg.MASK_MAGIC,null);
			if(mob.location().okMessage(mob,msg))
			{
				mob.location().send(mob,msg);
				final StringBuffer yourPlants=new StringBuffer("");
				int plantNum=0;
				final int[] cols={
						ListingLibrary.ColFixer.fixColWidth(3,mob.session()),
						ListingLibrary.ColFixer.fixColWidth(20,mob.session()),
						ListingLibrary.ColFixer.fixColWidth(40,mob.session())
					};
				final Vector V=myPlantRooms(mob);
				for(int v=0;v<V.size();v++)
				{
					final Room R=(Room)V.elementAt(v);
					if(R!=null)
					{
						int i=0;
						Item I=myPlant(R,mob,0);
						while(I!=null)
						{
							yourPlants.append(CMStrings.padRight(""+(++plantNum),cols[0])+" ");
							yourPlants.append(CMStrings.padRight(I.name(),cols[1])+" ");
							yourPlants.append(CMStrings.padRight(R.displayText(mob),cols[2]));
							yourPlants.append("\n\r");
							I=myPlant(R,mob,++i);
						}
					}
				}
				if(V.size()==0)
					mob.tell(_("You don't sense that there are ANY plants which are attuned to you."));
				else
					mob.tell(_("### Plant Name           Location\n\r@x1",yourPlants.toString()));
			}
		}
		return success;
	}