Why are game engine properties changing 1 tick late? When I pull out a weapon (weapon-switch), a prop ("Timer_Activate") is set to 10, the number of frames for the weapon-switch animation. If you swap weapons, it will set the prop to 20, and the prop will drop every tick by 1 till it reaches 0. Once the prop is at 0, you can fire. The problem is, if you swap between a weapon, and you hold the fire-button, you will fire 1 bullet before the prop turns into 20. This happens all the time and can be a cheat to gain fast-firing weapons. How can I fix this "lag"? Any help is appreciated. Thanks!

Use my .blend to see the issue firsthand:
Press 1 or 2 for any of the 2 weapons, and make sure you are holding down left-click as you are swapping, you will fire 1 bullet, then the animation plays and the timer is set to 20.

If you cannot download the .blend or can't find the issue, be sure to check out a gif of the problem here. (The gif is slightly modified but you can still see the issue.):
Problem
The problem was that, your integer property Timer was still equal to 45 when the weapon was switched, for exactly one logic tick, allowing a shot to escape. Then, one tick later, the message actuator could deliver the message to assign the property Timer to 0.
Reason
The message system actually takes one logic tick from the time the actuator receives the positive pulse from the controller, to the time when the message sensor on the receiving end receives the message and sends the positive pulse to it's controller(s).
How to fix it
I have un-checked the the check boxes on all of the logic we aren't using so it will be easier to see the necessary change. (re-check them before testing)

Your end result should look like this, only without the actuators on Active_Determiner
Essentially, all you need to do is Delete the logic bricks marked by a red box, and connect the bricks where the Blue lines are.
This will completely cut out the message system, (and the one-tick delay) and directly connect the bricks instead.

result:
It works! - yay!

If you didn't understand that, don't feel bad (logic can be confusing.) here is the blend file in case you did get confused.