Yeah, that can be a problem sometimes. The easiest thing to do that I can think of is to make another variable called "Change" or something and add it in like this:
+ input: On player 1 pressed "Change Weapon"
+ System: Trigger once
+ System: player ('weapon') Equal to "bullet"
+ player ('change') Equal to "0"
-> player: Set 'weapon' to "shotgun"
-> Set 'change' to 1
+ System: player ('weapon') Equal to "shotgun"
+ player ('change') Equal to "0"
-> player: Set 'weapon' to "missile"
-> Set 'change' to 1
+ System: player ('weapon') Equal to "missile"
+ player ('change') Equal to "0"
-> player: Set 'weapon' to "bullet"
-> Set 'change' to 1
And then set it back to zero. That limits it so that it can only pass through one of the conditions rather than all three.