All right, I looked at it. The first and last problems were solved, but the middle problem i'm still a little confused on.
You're not specifying that the peer should be checking and setting the bits for THEIR peer. Since you don't specify, the code is probably picking the first instance, which is the host's peer object. This is why it works for the host, because they are accidentally picking their own peer
How can I set the bits for my peer only?
Also, most of your enemy code should be in the Host group. You don't want peers running logic for the enemies because things can happen differently on the Host's computer and the Peer's computer, resulting in mismatches game states and weird glitches. The peers should only be TOLD what is happening by the host (using the object syncing and via messages)
What code exactly should be put into the host group?
Please pardon my ignorance, I don't have much experience with multiplayer. Thanks,
Give me a Pixel