Weird Partner Control Code Problems

So my team is trying to have our 6 motor, 6 wheel drive so that both people can control the drive train when necessary for this year’s competition. One is for the ball launcher driver and another for our cap driver.
For some reason when we try to drive our robot certain wheels don’t move when we move the joysticks of certain controllers. Our 1st driver can only move about 2 front wheels and the 2 back wheels and also they twitch every once in a while. While our second driver does not have control of the two front and two back wheels but has control of the 2 middle wheels.
I am just wondering if we can fix this in anyway? Any advice would help.

Below is our code.

#pragma config(Motor,  port1,           RightFrontDrive, tmotorVex393HighSpeed_HBridge, openLoop, reversed, driveRight)
#pragma config(Motor,  port2,           RightMiddleDrive, tmotorVex393HighSpeed_MC29, openLoop, reversed, driveRight)
#pragma config(Motor,  port3,           RightBackDrive, tmotorVex393HighSpeed_MC29, openLoop, reversed, driveRight)
#pragma config(Motor,  port8,           LeftFrontDrive, tmotorVex393HighSpeed_MC29, openLoop, driveRight)
#pragma config(Motor,  port9,           LeftMiddleDrive, tmotorVex393HighSpeed_MC29, openLoop, driveRight)
#pragma config(Motor,  port10,          LeftBackDrive, tmotorVex393HighSpeed_HBridge, openLoop, driveRight)
//*!!Code automatically generated by 'ROBOTC' configuration wizard               !!*//

task main()
{
	//Drive Controls
	//
	int Threshold = 20;
	while (true)
	{
		//Ball Driver Controls
		motor[RightFrontDrive] = vexRT[Ch3];
		motor[RightMiddleDrive] = vexRT[Ch3];
		motor[RightBackDrive] = vexRT[Ch3];
		motor[LeftFrontDrive] = vexrt[Ch2];
		motor[LeftMiddleDrive] = vexRT[Ch2];
		motor[LeftBackDrive] = vexrt]Ch2];
		
	
		//Cap Driver Control
		//Shortcuts For the Loops
		int RightFront;
		RightFront = motor[RightFrontDrive] = vexRT[Ch3Xmtr2];
		int RightMiddle;
		RightMiddle = motor[RightMiddleDrive] = vexRT[Ch3Xmtr2];
		int RightBack;
		RightBack = motor[RightBackDrive] = vexRT[Ch3Xmtr2];
		int LeftFront;
		LeftFront = motor[LeftFrontDrive] = vexRT[Ch2Xmtr2];
		int LeftMiddle;
		LeftMiddle = motor[LeftMiddleDrive] = vexRT[Ch2Xmtr2];
		int LeftBack;
		LeftBack = motor[LeftBackDrive] = vexRT[Ch2Xmtr2];
		
		//Right Side Threshold
		if (RightFront && RightMiddle && RightBack > Threshold || RightFront && RightMiddle && RightBack < -Threshold)
		{
			motor[RightFrontDrive] = 127;
			motor[RightMiddleDrive] = 127;
			motor[RightBackDrive] = 127;
		}
		else
		{
			motor[RightFrontDrive] = 0;
			motor[RightMiddleDrive] = 0;
			motor[RightBackDrive] = 0;
		}
		//Left Side Threshold
		if (LeftFront && LeftMiddle && LeftBack > Threshold || LeftFront && LeftMiddle && LeftBack < -Threshold)
		{
			motor[LeftFrontDrive] = 127;
			motor[LeftMiddleDrive] = 127;
			motor[LeftBackDrive] = 127;
		}
		else
		{
			motor[LeftFrontDrive] = 0;
			motor[LeftMiddleDrive] = 0;
			motor[LeftBackDrive] = 0;
		}
	}
}

You keep setting the motor values to three (likely, might be fewer) different values during each iteration of your loop. I’m surprised it even works as well as you say it does. Try a different approach. When you intake the two stick values from the two joysticks, record them all as int’s without setting any motors. Compare those stored values to figure out what you want the motor values to be. Only set the motor values once with your if statement. Also, theoretically you’re making the processor check the same three values multiple times, which is wasteful; of course, there is also the chance they aren’t the same while you seem to expect them to be the same. But you’re actually using AND statements between several int’s instead of boolean values from comparisons. Finally, if you want to let someone drive, why do you try to only give them such limited control (127 or 0)?

int threshold = 20;
int mainCh2;
int mainCh3;
int partnerCh2;
int partnerCh3;

while(true) {

   // Record the stick values.
   mainCh2 = vexRT[Ch2];
   mainCh3 = vexRT[Ch3];
   partnerCh2 = vexRT[Ch2Xmtr2];
   partnerCh3 = vexRT[Ch3Xmtr2];

   if(abs(mainCh2) < threshold && abs(mainCh3) < threshold) { // if main is not in use, use partner controls
      if(abs(partnerCh2 < threshold) { // check the dead band for the left stick
         motor[LeftFrontDrive] = 0;
         motor[LeftMiddleDrive] = 0;
         motor[LeftBackDrive] = 0;
      }
      else {
         motor[LeftFrontDrive] = partnerCh2;
         motor[LeftMiddleDrive] = partnerCh2;
         motor[LeftBackDrive] = partnerCh2;
      }
      if(abs(partnerCh3 < threshold) { // check the dead band for the right stick
         motor[RightFrontDrive] = 0;
         motor[RightMiddleDrive] = 0;
         motor[RightBackDrive] = 0;
      }
      else {
         motor[RightFrontDrive] = partnerCh3;
         motor[RightMiddleDrive] = partnerCh3;
         motor[RightBackDrive] = partnerCh3;
      }
   }
   else { // if any main stick is in use, let main controller dominate
      if(abs(mainCh2 < threshold) { // check the dead band for the left stick
         motor[LeftFrontDrive] = 0;
         motor[LeftMiddleDrive] = 0;
         motor[LeftBackDrive] = 0;
      }
      else {
         motor[LeftFrontDrive] = mainCh2;
         motor[LeftMiddleDrive] = mainCh2;
         motor[LeftBackDrive] = mainCh2;
      }
      if(abs(mainCh3 < threshold) { // check the dead band for the right stick
         motor[RightFrontDrive] = 0;
         motor[RightMiddleDrive] = 0;
         motor[RightBackDrive] = 0;
      }
      else {
         motor[RightFrontDrive] = mainCh3;
         motor[RightMiddleDrive] = mainCh3;
         motor[RightBackDrive] = mainCh3;
      }
   }