You issue is likely with floating the motors in ROBOTC:
Code:
else
{
motor(shooterMotor) = 0;
bFloatDuringInactiveMotorPWM = true;
}
I've notice some erratic behavior if you set a motor, change the bFloatDuringInactiveMotorPWM flag and then set the motor again. Remember that the flag affects all your motors and it seems to only affect motors when you actually set a motor (if you set a motor and then flip the flag, ROBOTC will not apply the coast/float flag until you set the motor again).
You may want to just always float or change the flag back and forth every time before you set any of your motor outputs.