public boolean checkComponents(MOB mob)
	{
		if((mob!=null)
		&&(mob.session()!=null)
		&&(mob.soulMate()==null)
		&&(!CMSecurity.isAllowed(mob,mob.location(),CMSecurity.SecFlag.COMPONENTS)))
		{
			final Vector<AbilityComponent> componentsRequirements=(Vector<AbilityComponent>)CMLib.ableMapper().getAbilityComponentMap().get(ID().toUpperCase());
			if(componentsRequirements!=null)
			{
				final List<Object> components=CMLib.ableMapper().componentCheck(mob,componentsRequirements);
				if(components==null)
				{
					mob.tell(_("You lack the necessary materials to use this @x1, the requirements are: @x2.",Ability.ACODE_DESCS[classificationCode()&Ability.ALL_ACODES].toLowerCase(),CMLib.ableMapper().getAbilityComponentDesc(mob,ID())));
					return false;
				}
				CMLib.ableMapper().destroyAbilityComponents(components);
			}
		}
		return true;
	}