Add link to roomauth guide in /roomhelp
Gear Grind should not call the RNG
Merge pull request #1372 from sirDonovan/roomhelp

Add link to roomauth guide in /roomhelp
Gen 1: Implement Rage properly
Fix IP miscount for banned users
Fix ghost users staying in rooms when a user merged into a banned account
A mismatch between the key in `room.users` and the userid arised due to the fact that users had their `userid` property updated before getting disconnected from the server.
Make Random Battle changes

- Prevent Oblivion Wing + Hurricane Yveltal
- Increase non-mega Banette's level
Gen 1: Improve status, stat, and volatiles handling
Burn attack drop is not negated the same way as speed.
It's just halving the attack stat and a boost with Swords Dance exactly negates it.
Use the same calculation as the cartridge for the probabilities for statuses and status damage:
The attack in burn is halved and floored, then if 0 put to 1.
The speed in paralyse is quartered, floored and then if 0 put to 1.
The chance to get fully paralyzed is if random 0-255 < 64.
The chance for confusion self hit is if random 0-255 >= 128.
If the Pokémon is fully paralysed or self-hits in confusion, most move volatiles are removed.
This changes also add the invulnerable bug for two-turn moves.
Gen 1: Hi Jump Kick recoil also hits your own Subtitute
Also call clampIntRange from Battle, not from BattlePokemon.
Also remove the damage message from confusion, only the message from Substitute must appear.
Gen 1: Add Confusion self-hit bug with two Substitutes
If the confused Pokemon has a Substitute up, damage will be dealt to the opponent's Substitute instead.
If the opponent doesn't have a Substitute up, no damage will be dealt.
Gen 1: Add correct partial trapping rolls
The initial roll was still wrong.
Also there's no need to declare a variable for a random.
Gen 1: Remove properly Dig and Fly invulnerabilities
Gen 1: Refactor damage formula
Refactored damage formula, now following cartridge step by step.
Fix typo in previous commit