import POGOProtos from 'pogo-protos'; export const DEFAULT_POKEMON_NAME = 'MissingNo.'; export enum Grade { S, A, B, C, D, F, } export enum TypeEffectiveness { NEUTRAL = 1, SUPER_EFFECTIVE = 1.600000023841858, NOT_VERY_EFFECTIVE = 0.625, IMMUNE = 0.390625, SUPER_EFFECTIVE_X2 = 2.5600000763, NOT_VERY_EFFECTIVE_X3 = 0.244140625, IMMUNE_X2 = 0.1525878906, } export const TypeOrder = [ POGOProtos.Enums.PokemonType.POKEMON_TYPE_NORMAL, POGOProtos.Enums.PokemonType.POKEMON_TYPE_FIGHTING, POGOProtos.Enums.PokemonType.POKEMON_TYPE_FLYING, POGOProtos.Enums.PokemonType.POKEMON_TYPE_POISON, POGOProtos.Enums.PokemonType.POKEMON_TYPE_GROUND, POGOProtos.Enums.PokemonType.POKEMON_TYPE_ROCK, POGOProtos.Enums.PokemonType.POKEMON_TYPE_BUG, POGOProtos.Enums.PokemonType.POKEMON_TYPE_GHOST, POGOProtos.Enums.PokemonType.POKEMON_TYPE_STEEL, POGOProtos.Enums.PokemonType.POKEMON_TYPE_FIRE , POGOProtos.Enums.PokemonType.POKEMON_TYPE_WATER, POGOProtos.Enums.PokemonType.POKEMON_TYPE_GRASS, POGOProtos.Enums.PokemonType.POKEMON_TYPE_ELECTRIC, POGOProtos.Enums.PokemonType.POKEMON_TYPE_PSYCHIC, POGOProtos.Enums.PokemonType.POKEMON_TYPE_ICE, POGOProtos.Enums.PokemonType.POKEMON_TYPE_DRAGON, POGOProtos.Enums.PokemonType.POKEMON_TYPE_DARK, POGOProtos.Enums.PokemonType.POKEMON_TYPE_FAIRY, ]; export interface IBaseStats { baseAttack : number; baseDefense : number; baseStamina : number; } export interface IBaseStatsRank { attackRank : number; defenseRank : number; staminaRank : number; } export interface IMaxStats extends IBaseStats { level : number; } export interface IPokemonSpecies { name : string; dex : number; order : number; genus : string; } export interface IPokemonMove { id : POGOProtos.Enums.PokemonMove; isLegacy : boolean; } export interface IPokemon extends IPokemonSpecies { id : POGOProtos.Enums.PokemonId; form : POGOProtos.Enums.Form; family : POGOProtos.Enums.PokemonFamilyId; types : { type1 : POGOProtos.Enums.PokemonType; type2 : POGOProtos.Enums.PokemonType | null; }; effectiveness : Map; stats : IBaseStats; statsRank : IBaseStatsRank; moves : { quick : Array; cinematic : Array; }; } export interface IStats { cp : number; level : number; ivHp : number; ivAtk : number; ivDef : number; hp : number; atk : number; def : number; total : number; speciesGrade : Grade; metaGrade : Grade; } export interface ICombatMoveStats { id : POGOProtos.Enums.PokemonMove; name : string; type : POGOProtos.Enums.PokemonType; power : number; energyDelta : number; } export type CombatMoveStats = Map;