1?> It's easy if you use a global variable "toogle_bullet" the "toogle_bullet" value is global "for all" so the same for all "fish" ... but if using a instance variable "toogle_bullet" in sprite object "fish" ... each fish will have is own "toogle_bullet" variable so different values are managed ! ... i change the number type to boolean because "toogle_bullet" can only be true or false ;-p
2?) Not so easy because more than one fish ;-p, ok i use a for each "fish" with no problem and it works ! ... using "else" here avoid to reverse the test so "if mouse on this fish do action ..." and after creating a else event = "and if not on this fish do action ... "
3?) You can use the "distance" function to retrieve the distance beetween a fish X/Y pos and the mouse X/Y pos ... as 2?) there is more than one fish so function is a little bit more difficult and need a for each fish system ... ok as sample i change the speed of each fish depending on distance between "this" fish and the mouse ! so 200 if on this fish and 200-distance between this fish and the mouse if not ;-p ... in fact using this system there is no need at all testing if the mouse is on this fish ;-p
so i let you made the "final" change like this
For each fish -> fish set bullet speed to clamp(200 - distance(Mouse.X,Mouse.Y,Fish.X,Fish.Y), 50,200)
"Clamp" is a method to force a value to a min/max value if lesser than and more than ... so here bullet speed can never be less than "50" and never be more than "200" ... if 200-distance is between 200 and 50 it will take this value...
The new capx link => here