=begin

#===============================================================================
# To do
#===============================================================================

Other notes:
- If a battle ends because of Rocky Helmet damage, the side that the Rocky
  Helmet holder is on should lose (Gen 7+) or win (Gen 6-).

Can use Fly from within the Town Map if possible. (Good QoL, add if possible.)
(Will be implemented by me in the next PR)

Make example event that combines the Gen 8 fossils.

#===============================================================================
# Low priority or ignorable
#===============================================================================

Marks, which are symbols randomly given to wild Pokémon which append a title to
its name when sent out in battle. A Pokémon can only have 0 or 1 marks. The
title can be toggled. Ribbons also provide a title, and can similarly be
toggled. (Probably don't bother implementing.)

Bicycle that can work on water.

Town Map added to the pause menu. (Don't bother adding.)

Remote access to storage boxes via the party screen if you have the Pokémon Box
Link item (and it's allowed to be used - in Gyms and some other places it's
forbidden).

New evolution methods:
- Milcery: spinning while holding an item. (Doesn't suit our control scheme.
           We're not adding a way to easily spin on the spot just for this, cf.
           not having to turn your computer upside-down to evolve Inkay.)
- Galarian Yamask: going to a particular spot after a battle in which it lost
                   49+ HP from a single attack and hasn't fainted since then;
                   healing doesn't affect this. (Utter nonsense, find a better
                   way.)

I think there are some alternate forms which don't have a hidden ability while
their base forms do. I don't think the compiler supports this, and instead
treats Abilities and HiddenAbilities separately. Can work around this by setting
HiddenAbilities to be the same as Abilities. I'm not too happy with this.

Look at Sweet Scent's out of battle effect, namely whether it should try to
cause a horde battle (and what does that mean in Essentials? Maybe 1v3).

Maybe have multiple sets of Pickup items for multiple Gens. Probably not. Gens
7+ seem to have different item probability calculations - investigate.

Add a newer type of berry tree mechanics? Have a separate setting that prevents
deterioration?

The happiness evolution threshold value has lowered from 220 to 160. This is
because, in Gen 8, you have to use Pokémon Camp or berries to raise a Pokémon's
happiness above 179, which in turn is because affection effects have been added
(chance of resisting a KO, chance of shaking off a status problem, etc.) that
apply above 179 happiness. Pokémon Camp will not be added. Affection effects and
the 179 soft cap/160 evolution threshold may be added (the latter two should be
treated as related rather than separate settings).

Some abilities have changed effects:
- If another Pokémon faints before a Pokémon with Analytic makes its move,
  Analytic calculates whether it would have moved before or after the fainted
  Pokémon. In Gen 8, speed- and priority-modifying effects aren't considered,
  but in earlier Gens they are. Ignoring as this would be far too complicated to
  care about.

#===============================================================================
# Implemented
#===============================================================================

Pokémon sent to storage aren't healed - see Settings::HEAL_STORED_POKEMON.

Super shininess. Only difference is an alternate shiny common animation with
square sparkles; a mon is super shiny if the calculated number that is compared
to Settings::SHINY_POKEMON_CHANCE is exactly 0 - see Settings::SUPER_SHINY.

Can now give a Rare Candy to a max level Pokémon, which will trigger its
evolution (presumably the item isn't consumed if it can't at least try to evolve
it) - see Settings::RARE_CANDY_USABLE_AT_MAX_LEVEL.

In Gen 8+, a taught TR should be added to the Pokémon's first_moves array. This
is done regardless of Generation, and doesn't need to be limited to Gen 8+.

New evolution methods:
- Kubfu (triggered by an event; Kubfu's form can be set beforehand by the event,
  so don't worry about the multiple forms it can evolve into)
- Galarian Farfetch'd (performing 3 critical hits in a single battle)

Added AI for new moves/items/abilities.

Ability Effect Changes
- Intimidate now triggers Rattled. Rattled needs a new ability handler just for
  triggering this way.

Move Effect Changes
- Teleport switches the user out. If the user is a wild Pokémon, ends the battle
  instead.
- Look at the moves Nature Power turns into. (Unchanged since Gen 7)
- Curse's Ghost effect now targets a random foe (don't know if it can be non-
  adjacent); the target cannot be chosen by the player (it appears to target the
  user).
- Multiple Quashed Pokémon now move in order from fastest to slowest, rather
  than the order in which they were Quashed.
- Ensure that Choice items cause different moves to fail (without subtracting
  PP) if they were forced to be used by Instruct/Dancer.
- Rapid Spin now raises the user's Speed by 1 stage (100% additional effect
  chance).
- Howl's target changed to UserAndAllies, and is now a sound move. It is now
  blocked by Soundproof (I don't know if it should be checking the allies for
  pbImmunityByAbility, but leaning towards yes; will Volt Absorb block an
  Electrified Howl?). Needs a new function code, since it now affects targets
  rather than the user.
- Healing Wish's effect and Lunar Dance's effect are no longer used up if a
  Pokémon that switches to the targeted position can't make use of it. Each
  position can only have one of each effect applied at once.

Item Effect Changes
- Escape Rope's code now supports both consumable and non-consumable versions,
  depending on its definition in items.txt.
- If Leppa Berry is forced to be consumed, it will first try to work on a move
  with 0 PP left (preferring the earliest such move in the list of moves), and
  failing that, the earliest move in the list of moves which has any PP missing
  (no matter how much).
- Ability Capsule/Ability Patch should fail if used on Zygarde.
- Iron Ball shouldn't modify the effectiveness of Ground moves against a Flying
  holder if the holder is grounded by another effect that isn't Iron Ball.
  Opted to ignore this effect, and to modify the holder's effectiveness no matter
  what.

Other changes:
- Multi-Attack's power changed to 120.
- Rapid Spin's power changed to 50.
- Vice Grip renamed to Vise Grip.
- King's Rock/Razor Fang should probably stop using a flag to determine if a
  move is boosted by it, and instead check def flinchingMove?.
- Moveset changes.
- Some (12) existing species changed egg groups:
      Ralts, Kirlia, Gardevoir, and Gallade: Amorphous to Humanlike/Amorphous
      Trapinch, Vibrava, and Flygon: Bug to Bug/Dragon
      Hawlucha: Human-Like to Flying/Humanlike
      Bergmite and Avalugg: Monster to Monster/Mineral
      Noibat and Noivern: Flying to Flying/Dragon
- Aegislash's stats changed.
- Koffing/Weezing gained new abilities.
- Some items change names (Stick -> Leek, Bicycle -> Bike in Gen 6+, etc.). Only
  Stick changed.
- Changes to evolutions due to removal of moss rock/ice rock/magnetic field.
- Form differences.
- Maybe the DNA Splicers/N-Solarizer/N-Lunarizer/Reins of Unity should actually
  be two items each (one that combines, one that splits) and they alternate upon
  use. No reasonable game would have multiple sets of Pokémon to fuse at once,
  so allowing just one of each fusion at a time is probably fine.
- Zygarde Cube now changes a Zygarde's form/ability.

What happens to the PP of Iron Head when turned into/from Behemoth Blade/Bash
for Zacian/Zamazenta? It gets decreased to the total PP if it is higher than the
total PP of the new move, but cannot increase. This is already what happens.

In Gen 7+, Shaymin/Hoopa revert their form when withdrawn from storage rather
than when deposited. It still also reverts under other conditions. Shaymin
reverts its form when deposited in the Day Care (all Gens).

The game records, for each species, how many have been caught or defeated
(counts both wild and trainer battles), and the shiny chance increases for that
species because of this. This value is also shown in the Pokédex entry screen.

Some moves have changed properties/effects:
- Parting Shot is able to make the user switch out if its effect is redirected
  by Mirror Armor. Throat Spray is triggered and applies before the switch.
  (The Throat Spray part is done by default). All this already works this way.

=end
