2020-07-17 02:04:27 +00:00
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
|
|
|
|
namespace PKHeX.Core
|
2019-11-16 01:34:18 +00:00
|
|
|
|
{
|
2020-06-22 00:46:06 +00:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// Interface that exposes an indication if the Pokémon can Gigantamax.
|
|
|
|
|
/// </summary>
|
2019-11-16 01:34:18 +00:00
|
|
|
|
public interface IGigantamax
|
|
|
|
|
{
|
2020-06-22 00:46:06 +00:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// Indicates if the Pokémon is capable of Gigantamax as opposed to regular Dynamax.
|
|
|
|
|
/// </summary>
|
2019-11-16 01:34:18 +00:00
|
|
|
|
bool CanGigantamax { get; set; }
|
|
|
|
|
}
|
2020-06-24 23:59:26 +00:00
|
|
|
|
|
|
|
|
|
public static class GigantamaxExtensions
|
|
|
|
|
{
|
2020-07-17 02:04:27 +00:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// Checks if either of the input Species can consume the Gigantamax soup, toggling the <see cref="IGigantamax.CanGigantamax"/> flag.
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="_">Unnecessary, just needed for extension method usage.</param>
|
|
|
|
|
/// <param name="currentSpecies">The current species</param>
|
|
|
|
|
/// <param name="originSpecies">The original species (what species it was encountered as)</param>
|
|
|
|
|
/// <returns>True if either species can toggle Gigantamax potential</returns>
|
2020-06-24 23:59:26 +00:00
|
|
|
|
public static bool CanToggleGigantamax(this IGigantamax _, int currentSpecies, int originSpecies)
|
|
|
|
|
{
|
2020-07-17 02:04:27 +00:00
|
|
|
|
var soup = CanEatMaxSoup;
|
|
|
|
|
return soup.Contains(currentSpecies) || (currentSpecies != originSpecies && soup.Contains(originSpecies));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Don't use this method. Use the other overload with multi-species input.
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="_">Unnecessary, just needed for extension method usage.</param>
|
|
|
|
|
/// <param name="currentSpecies">The current species</param>
|
|
|
|
|
/// <returns>True if the species can toggle Gigantamax potential</returns>
|
|
|
|
|
public static bool CanToggleGigantamax(this IGigantamax _, int currentSpecies)
|
|
|
|
|
{
|
|
|
|
|
var soup = CanEatMaxSoup;
|
|
|
|
|
return soup.Contains(currentSpecies);
|
2020-06-24 23:59:26 +00:00
|
|
|
|
}
|
2020-07-17 02:04:27 +00:00
|
|
|
|
|
|
|
|
|
private static readonly HashSet<int> CanEatMaxSoup = new HashSet<int>
|
|
|
|
|
{
|
|
|
|
|
(int)Species.Venusaur,
|
|
|
|
|
(int)Species.Charizard,
|
|
|
|
|
(int)Species.Blastoise,
|
|
|
|
|
(int)Species.Rillaboom,
|
|
|
|
|
(int)Species.Cinderace,
|
|
|
|
|
(int)Species.Inteleon,
|
|
|
|
|
(int)Species.Butterfree,
|
|
|
|
|
(int)Species.Pikachu,
|
|
|
|
|
(int)Species.Meowth,
|
|
|
|
|
(int)Species.Machamp,
|
|
|
|
|
(int)Species.Gengar,
|
|
|
|
|
(int)Species.Lapras,
|
|
|
|
|
(int)Species.Eevee,
|
|
|
|
|
(int)Species.Snorlax,
|
|
|
|
|
(int)Species.Garbodor,
|
|
|
|
|
(int)Species.Drednaw,
|
|
|
|
|
(int)Species.Corviknight,
|
|
|
|
|
(int)Species.Toxtricity,
|
|
|
|
|
(int)Species.Alcremie,
|
|
|
|
|
(int)Species.Duraludon,
|
|
|
|
|
(int)Species.Orbeetle,
|
|
|
|
|
(int)Species.Coalossal,
|
|
|
|
|
(int)Species.Sandaconda,
|
|
|
|
|
(int)Species.Grimmsnarl,
|
|
|
|
|
(int)Species.Flapple,
|
|
|
|
|
(int)Species.Appletun,
|
|
|
|
|
(int)Species.Hatterene,
|
|
|
|
|
(int)Species.Copperajah,
|
|
|
|
|
(int)Species.Kingler,
|
|
|
|
|
(int)Species.Centiskorch,
|
|
|
|
|
(int)Species.Urshifu
|
|
|
|
|
};
|
2020-06-24 23:59:26 +00:00
|
|
|
|
}
|
2020-05-16 22:15:41 +00:00
|
|
|
|
}
|