First, make your brine by mixing warm water, minced garlic, salt, and MSG in a large ziplock bag. Add the chicken legs, seal well, and refrigerate for exactly 30 minutes - no longer, or the chicken will be too salty.
While waiting, mix milk and beaten egg in a bowl. In another large container with a lid, combine cornstarch, flour, salt, garlic powder, onion powder, five-spice powder, and MSG if using. This is your coating mix.
Start heating your shortening in a deep pot or fryer. You need about 3 inches of oil, heated to 350°F (180°C). Use a thermometer to check the temperature.
After 30 minutes, take the chicken out of the brine and throw the liquid away. Pat each piece dry with paper towels.
Take one piece of chicken at a time. Dip it in the milk-egg mixture, let the excess drip off. Put it in the coating mix container, cover, and shake well to coat. For extra crispiness, you can dip it again in the milk mixture and coat again with flour.
When your oil is hot, carefully put 4-5 pieces of chicken in. Don't overcrowd or the oil temperature will drop. Fry for 12-15 minutes, turning occasionally, until golden brown. Check that the internal temperature reaches 165°F (74°C). Place on a wire rack to drain.
While the chicken fries, make your gravy. In a pot over medium heat, mix 3 tablespoons of your leftover coating mix with chicken stock, chicken drippings, milk, and cream. Keep whisking until it thickens how you like it.
Let the chicken rest for 5 minutes on the wire rack - this keeps it crispy. Serve hot with rice and warm gravy on the side. Give everyone their own small bowl of gravy for dipping.
Remember: keep your oil temperature steady at 350°F, don't marinate longer than 30 minutes, and always fry in small batches for the crispiest chicken.