Small issue with bool inside If - need some tips.

Hey guys. Heres the situation, I have a character I’d like to animate drawing a pistol… I can get him to draw it but I just need some logic handling help honestly.

Wasn’t really able to find what I was after from google searches… think I’m searching the wrong thing.

Whats happening is the first time he draws it, it works correctly, because wpnDrawn = false; at start, once I attempt to put the weapon away, it snaps into both of these, and the debug pops like this…
“Holster False”
“Drawing True” and it leads to cancel the rest of my characters animations (Using 3rd person character controller, disabling all other animations while wpnDrwan = true).
I understand why this is happening - I mean that the code is getting checked and right before I holster the weapon, because the key is down, its also checking if its false, and it was just switched back, and I worked my way around it in the past but I just need some general insight for how to handle this situation correctly. I was under the assumption that GetKeyDown would only throw the flag once per hit, not the entire code. Should I put these steps into mini functions and call them? I’m about to call it a night and just wanted some advice I can read when I wake up tomorrow. Thanks guys.

			if (Input.GetKeyDown (KeyCode.LeftControl) && wpnDrawn)
				animation["pDraw1"].speed -= 1;
				animation.Play ("pDraw1");
				wpnDrawn = false;
				Debug.Log ("Holster "+wpnDrawn);
			if (Input.GetKeyDown (KeyCode.LeftControl) && wpnDrawn == false)
				animation["pDraw1"].wrapMode = WrapMode.Once;
				wpnDrawn = true;
				Debug.Log ("Drawing "+wpnDrawn);

GetKeyDown returns true for all calculation during the next frame after the key is pressed. So when LCtrl is pressed and !wpnDrawn, both if clauses are entered. Just add an else after the first }, so only one if will be entered during the frame GetKeyDown == true