showdown-calc-cli
Version:
Quick and easy pokemon damage calulations in your terminal
181 lines (180 loc) • 5.62 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getDamageCalcPrompts = void 0;
const _1 = require(".");
const damagePromptValdations_1 = require("./damagePromptValdations");
const getOtherConditions = (gen) => [
...gen >= 4 ? ['Gravity'] : [],
'Reflect',
'Light Screen'
];
const filterWeather = (input) => input === 'No Weather' ? undefined : input;
const filterTerrain = (input) => input === 'No Terrain' ? undefined : input;
const weatherChoices = [
'No Weather',
'Sun',
'Rain',
'Hail',
'Sand'
];
const terrainChoices = [
'No Terrain',
'Electric',
'Psychic',
'Misty',
'Grassy'
];
const getDamageCalcPrompts = (gen) => [
{
name: 'attackerSpecies',
message: 'Species of the attacker',
filter: _1.capitalize,
validate: input => (0, damagePromptValdations_1.validateSpecies)(input, gen)
},
{
name: 'move',
message: 'Move used by the attacker',
filter: _1.capitalize,
validate: input => (0, damagePromptValdations_1.validateMove)(input, gen)
},
{
name: 'atkEv',
message: 'Attack EVs of the attacker',
default: 0,
validate: damagePromptValdations_1.validateEv,
when: ans => (0, _1.isMovePhysical)(ans.move, gen) && gen >= 3
},
{
name: 'spaEv',
message: 'Special Attack EVs of the attacker',
default: 0,
validate: damagePromptValdations_1.validateEv,
when: ans => (0, _1.isMoveSpecial)(ans.move, gen) && gen >= 3
},
{
name: 'atkBoost',
message: 'Attack boost of the attacker, if any',
default: 0,
validate: damagePromptValdations_1.validateBoost,
when: ans => (0, _1.isMovePhysical)(ans.move, gen)
},
{
name: 'spaBoost',
message: () => (gen === 1 ? 'Special' : 'Special Attack') + ' boost of the attacker, if any',
default: 0,
validate: damagePromptValdations_1.validateBoost,
when: ans => (0, _1.isMoveSpecial)(ans.move, gen)
},
{
name: 'attackerNature',
message: 'Nature of the attacker',
default: 'Bashful',
filter: _1.capitalize,
validate: damagePromptValdations_1.validateNature,
when: () => gen >= 3
},
{
name: 'attackerItem',
message: 'Attacker\'s item',
default: 'Non-damage impacting item',
validate: input => (0, damagePromptValdations_1.validateItem)(input, gen),
filter: _1.capitalize,
when: () => gen >= 2
},
{
name: 'attackerAbility',
message: 'Attacker\'s ability',
default: 'Non-damage impacting ability',
validate: input => (0, damagePromptValdations_1.validateAbility)(input, gen),
filter: _1.capitalize,
when: () => gen >= 3
},
{
name: 'defenderSpecies',
message: 'Species of the defender',
filter: _1.capitalize,
validate: input => (0, damagePromptValdations_1.validateSpecies)(input, gen)
},
{
name: 'hpEv',
message: 'HP EVs of the defender',
default: 0,
validate: damagePromptValdations_1.validateEv,
when: () => gen >= 3
},
{
name: 'defEv',
message: 'Defense EVs of the defender',
default: 0,
validate: damagePromptValdations_1.validateEv,
when: ans => (0, _1.isMovePhysical)(ans.move, gen) && gen >= 3
},
{
name: 'spdEv',
message: 'Special Defense EVs of the defender',
default: 0,
validate: damagePromptValdations_1.validateEv,
when: ans => (0, _1.isMoveSpecial)(ans.move, gen) && gen >= 3
},
{
name: 'defBoost',
message: 'Defense boost of the defender, if any',
default: 0,
validate: damagePromptValdations_1.validateBoost,
when: ans => (0, _1.isMovePhysical)(ans.move, gen)
},
{
name: 'spdBoost',
message: () => (gen === 1 ? 'Special' : 'Special defense') + ' boost of the defender, if any',
default: 0,
validate: damagePromptValdations_1.validateBoost,
when: ans => (0, _1.isMoveSpecial)(ans.move, gen)
},
{
name: 'defenderNature',
message: 'Nature of the defender',
default: 'Bashful',
filter: _1.capitalize,
validate: damagePromptValdations_1.validateNature,
when: () => gen >= 3
},
{
name: 'defenderItem',
message: 'Defender\'s item',
default: 'Non-damage impacting item',
validate: input => (0, damagePromptValdations_1.validateItem)(input, gen),
filter: _1.capitalize,
when: () => gen >= 2
},
{
name: 'defenderAbility',
message: 'Defender\'s ability',
default: 'Non-damage impacting ability',
validate: input => (0, damagePromptValdations_1.validateAbility)(input, gen),
filter: _1.capitalize,
when: () => gen >= 3
},
{
name: 'weather',
message: 'Battle weather',
type: 'list',
choices: weatherChoices,
filter: filterWeather,
when: () => gen >= 2
},
{
name: 'terrain',
message: 'Battle terrain',
type: 'list',
choices: terrainChoices,
filter: filterTerrain,
when: gen >= 6
},
{
name: 'otherBattleConditions',
message: 'Other Battle Conditions',
type: 'checkbox',
choices: () => getOtherConditions(gen)
}
];
exports.getDamageCalcPrompts = getDamageCalcPrompts;