`|split` order used to be p1/p2/spectator/replay. It is now
spectator/p1/p2/replay.
Since the spectator version is the default, it makes a lot more
sense to have the default in index 0 (and more importantly
prepares it for an upcoming refactor).
- Move some variable declarations outside of loops.
- Use single-line if statements wherever reasonable.
- Update a check for Hyper Fang to Gen 6.
- Fix Ghost types getting Chople Berries in Random Doubles Battles.
- Fix a typo intended to fix in d24b184b and another one introduced in the same commit.
This cuts down on reporting delay and bandwidth usage very slightly,
and makes sure join reporting is done in order. It uses slightly
more RAM because of more frequent userList updates. Overall, not
a very big change.
Update Bide to use StallMove, due to it giving it's user Endure for the duration.
Update Echoed Voice, so that the first hit can be protected against, and the second cannot. Also make both hits considered Sound moves.
Update Phantom Force to be in line with other two turn charge moves.
Update GossamerWing to no longer include Lilligant in the list of Pokemon who take reduced damage from Rock, Ice, or Electric type moves, as Lilligant is not a Flying type.
Update Truant's effect to have an onBeforeMovePriority of 99, like in the base files, to fix a small number of bugs where Slaking could still flinch on it's loafing turn, and having to recharge would interupt it as well.
You must now manually send the update by calling `room.update()`
after `room.add()`.
This is because it used to be inconsistent: `ChatRoom#add` would send
the update by default, but `BattleRoom#add` wouldn't.
Now ChatRooms and BattleRooms inherit from a generic Room prototype,
which means, among other things, less code duplication between them.
In the process, sending old message times has been refactored to be
much more sane, and now uses |c:| and |:| instead of |tc|.
Other changes include that user symbols now show up in battles,
like in chat rooms.
This has the side effect of making removeRoom O(n) instead of O(1ish),
but in return, we stop creating a whole bunch of objects, and also
less state that can become inconsistent is good.