Because of your last reply ...
I felt a bit shit on getting a suggestive statement about it possibly being a dirty hack
Apologies, anyway ...
The methods work and its all in the events, with standard plugins performance is not an issue par your own game mechanic.
Local storage to preserve the users ID in case of a disconnect or crash.
A var for HostID of the room.
Preferably an array to keep track of connected IDs during the game for every peer. (and perhaps other values such as health etc)
By default when the host leaves a room a peer is automatically picked from that room to become host.
So, with an event to detect if the player that left was the host, recheck if your host and set peer/host group accordingly.
With the array of peer IDs you can reset potentially still connected peers.
When the old host reconnects to the room, it should on join send the new host its old id from the local storage.
The new host receives this, and checks his array of peer IDs, if that old ID was in his array, if yes ... update the peer ID in the array.
Not really a dirt hack ... just smart application of the optional events