Try giving the Bullet a PV like 'fired' or something. Then try...
+ Right mouse button is down
++ Trigger Once
--> Spawn Bullet Samus (@ Cannon)
--> Set Bullet Speed = 0
--> Set Bullet.Value('fire') = 0
++ if Bullet.Value('fire') = 0
--> Position Samus (@ Cannon)
--> Bullet Set Angle to Samus.Angle
+ Right mouse button released
++ if Bullet.Value('fire') = 0
--> Set Bullet Speed = 500
--> Set Bullet.Value('fire') = 1
That should do it, I think. Not too complicated either, and only requires 1 additional PV.