Awesome
PokΓ©Types
Install
yarn
$ yarn add poke-types
npm
$ npm install --save poke-types
Usage
import { getTypeWeaknesses } from 'poke-types'
import { noEffect, notVeryEffective, superEffective, ultraEffective } from 'poke-types/effectiveness'
const abilityEffectiveness = (targetType, abilityType) => {
switch (getTypeWeaknesses(...targetType)[abilityType]) {
case noEffect: return 'It has no effect...'
case notVeryEffective: return 'It\'s not very effective...'
case superEffective: case ultraEffective: return 'It\'s super effective!'
default: return ''
}
}
const attack = pokemon => target => ability => {
return `
${pokemon.name} used ${ability.name}!
π₯
${abilityEffectiveness(target.type, ability.type)}
`
}
const pikachu = {
name: 'Pikachu',
type: 'electric',
abilities: {
thunderbolt: {
name: 'Thunderbolt',
type: 'electric'
}
},
attack: target => ability => attack(pikachu)(target)(pikachu.abilities[ability])
}
const gyarados = {
name: 'Gyarados',
type: ['water', 'flying']
}
console.log(pikachu.attack(gyarados)('thunderbolt'))
// βββββ Pikachu used Thunderbolt!
// βββββ π₯
// βββββ It's super effective!
API
.effectiveness: Object
noEffect | weak | notVeryEffective | normal | superEffective | ultra |
---|---|---|---|---|---|
0 | 0.25 | 0.5 | 1 | 2 | 4 |
.types: string[]
normal | fire | water | electric | grass | ice | fighting | poison | ground |
---|---|---|---|---|---|---|---|---|
flying | psychic | bug | rock | ghost | dragon | dark | steel | fairy |
.getTypeWeaknesses(type: string, ?secondType: string): Object
type
type name to get weaknesses for
secondType
the second type to get dual type weaknesses for
pokeTypes.getTypeWeaknesses('grass')
// { normal: 1, fire: 2, water: 0.5, ... }
pokeTypes.getTypeWeaknesses('fire', 'bug')
// { normal: 1, fire: 1, water: 2, ... }
.getTypeStrengths(type: string): Object
type:
type name to get type strengths for.
pokeTypes.getTypeStrengths('electric')
// { normal: 1, fire: 1, water: 2, ... }
pokeType.getTypeStrengths('fighting')
// { normal: 2, fire: 1, water: 1, ... }
License
MIT @ Frederik Bosch