This commit implements the Random Doubles Battle format,
a format awaited by hundreds of players.
This first version uses singles viable moves for the movepool
while Doubles team works on the project of gathering viable
moves for all Doubles Pokémon.
The team maker and set maker are slightly different,
choosing items and abilities more useful in doubles, capitalising
less on tiering and more on BST, and changing move priorities.
This is a first version that should be kept updated with new
and better mechanics for its own Team Making algorithms.
Fix Arceus overriding Trick-or-Treat and Forest´s Curse.
Implement Arceus typing more reliably by setting it when it switches into the field.
Display fail messages when trying to modify Arceus´ first type by any means.
Also fix mons keeping their typing when changing to another forme.
Change back pokemon.types to a pointer to the types in the dex entry.
A typeless mon now defaults to ??? rather than undefined in pokemon.getTypes()
Implement methods pokemon.setType and pokemon.addType
'setType' accepts as parameters any amount of types, with the default attributes.
'addType' accepts as parameter a single type, which will have the flag 'isAdded'.
Future moves were making both the user of them and
the Pokémon in the field to faint if the opponent used Destiny Bond
that turn.
Fix this by adding a property to future moves and making Destiny Bond
check it, since Destiny Bond does not work with future moves at all.
Fixes Trick-or-Treat and Forest´s Curse stacking.
Fixes Roost overriding other type changes when it ends.
Fixes Roost not suppressing Flying type adquired afterwards in the turn.
Fixes mons not adquiring Flying type when transforming into a roosted pokemon.
Fixes nature of types (added by Trick-or-Treat or Forest´s Curse) not being passed on use of Reflect Type or Transform.