pvpokemon/src/ts/app/models/Pokemon.ts
2019-03-09 14:00:01 -05:00

113 lines
2.9 KiB
TypeScript

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<POGOProtos.Enums.PokemonType, TypeEffectiveness>;
stats : IBaseStats;
statsRank : IBaseStatsRank;
moves : {
quick : Array<IPokemonMove>;
cinematic : Array<IPokemonMove>;
};
}
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<POGOProtos.Enums.PokemonMove, ICombatMoveStats>;