This commit is contained in:
Dragon Fire
2021-01-18 17:45:13 -05:00
parent 902d6e3717
commit bd202d7ff9
3 changed files with 19 additions and 5 deletions
+9 -3
View File
@@ -54,7 +54,11 @@ module.exports = class PokedexCommand extends Command {
const data = await this.client.pokemon.fetch(pokemon); const data = await this.client.pokemon.fetch(pokemon);
if (!data) return msg.say('Could not find any results.'); if (!data) return msg.say('Could not find any results.');
if (!data.gameDataCached) await data.fetchGameData(); if (!data.gameDataCached) await data.fetchGameData();
const variety = data.varieties.find(vrity => form ? vrity.name.toLowerCase() === form : vrity.default); const variety = data.varieties.find(vrity => {
if (!form) return vrity.default;
if (!vrity.name && form === 'normal') return true;
return vrity.name.toLowerCase() === form;
});
if (!variety) { if (!variety) {
const varieties = data.varieties.map(vrity => vrity.name || 'Normal'); const varieties = data.varieties.map(vrity => vrity.name || 'Normal');
return msg.say(`Invalid form. The forms available for this Pokémon are: ${list(varieties, 'and')}`); return msg.say(`Invalid form. The forms available for this Pokémon are: ${list(varieties, 'and')}`);
@@ -69,6 +73,7 @@ module.exports = class PokedexCommand extends Command {
spd: Math.round((variety.stats.spd / 255) * 10) * 2, spd: Math.round((variety.stats.spd / 255) * 10) * 2,
total: Math.round((statTotal / 720) * 10) * 2 total: Math.round((statTotal / 720) * 10) * 2
}; };
const displayForms = data.varieties.filter(vrity => vrity.statsDiffer);
const embed = new MessageEmbed() const embed = new MessageEmbed()
.setColor(0xED1C24) .setColor(0xED1C24)
.setAuthor(`#${data.displayID} - ${data.name}`, data.boxImageURL, data.serebiiURL) .setAuthor(`#${data.displayID} - ${data.name}`, data.boxImageURL, data.serebiiURL)
@@ -85,8 +90,9 @@ module.exports = class PokedexCommand extends Command {
`) `)
.addField(' Abilities', variety.abilities.join('/')) .addField(' Abilities', variety.abilities.join('/'))
.addField(' Other Forms', stripIndents` .addField(' Other Forms', stripIndents`
Use ${this.usage(`${data.id} <form>`)} to get stats for another form. _Use ${this.usage(`${data.id} <form>`)} to get stats for another form._
Forms Available: ${data.varieties.map(vrity => vrity.name || 'Normal').join(', ')}
**Forms Available:** ${displayForms.map(vrity => `\`${vrity.name || 'Normal'}\``).join(', ')}
`); `);
return msg.embed(embed); return msg.embed(embed);
} catch (err) { } catch (err) {
-1
View File
@@ -126,7 +126,6 @@ module.exports = class PokedexCommand extends Command {
} }
return msg.embed(embed); return msg.embed(embed);
} catch (err) { } catch (err) {
throw err;
return msg.reply(`Oh no, an error occurred: \`${err.message}\`. Try again later!`); return msg.reply(`Oh no, an error occurred: \`${err.message}\`. Try again later!`);
} }
} }
+10 -1
View File
@@ -39,6 +39,7 @@ module.exports = class Pokemon {
name: name || null, name: name || null,
mega: data.missingno ? false : null, mega: data.missingno ? false : null,
stats: data.missingno ? variety.stats : {}, stats: data.missingno ? variety.stats : {},
statsDiffer: data.missingno ? true : null,
default: variety.is_default, default: variety.is_default,
types: data.missingno ? variety.types : [], types: data.missingno ? variety.types : [],
abilities: data.missingno ? variety.abilities : [] abilities: data.missingno ? variety.abilities : []
@@ -139,6 +140,7 @@ module.exports = class Pokemon {
sDef: defaultBody.stats.find(stat => stat.stat.name === 'special-defense').base_stat, sDef: defaultBody.stats.find(stat => stat.stat.name === 'special-defense').base_stat,
spd: defaultBody.stats.find(stat => stat.stat.name === 'speed').base_stat spd: defaultBody.stats.find(stat => stat.stat.name === 'speed').base_stat
}; };
defaultVariety.statsDiffer = true;
const inSwordShield = defaultBody.moves const inSwordShield = defaultBody.moves
.some(move => move.version_group_details.some(mve => mve.version_group.name === 'sword-shield')); .some(move => move.version_group_details.some(mve => mve.version_group.name === 'sword-shield'));
this.moveSetVersion = inSwordShield ? 'sword-shield' : 'ultra-sun-ultra-moon'; this.moveSetVersion = inSwordShield ? 'sword-shield' : 'ultra-sun-ultra-moon';
@@ -165,7 +167,14 @@ module.exports = class Pokemon {
sAtk: body.stats.find(stat => stat.stat.name === 'special-attack').base_stat, sAtk: body.stats.find(stat => stat.stat.name === 'special-attack').base_stat,
sDef: body.stats.find(stat => stat.stat.name === 'special-defense').base_stat, sDef: body.stats.find(stat => stat.stat.name === 'special-defense').base_stat,
spd: body.stats.find(stat => stat.stat.name === 'speed').base_stat spd: body.stats.find(stat => stat.stat.name === 'speed').base_stat
} };
const baseStats = defaultVariety.stats;
variety.statsDiffer = baseStats.hp !== variety.stats.hp
|| baseStats.atk !== variety.stats.atk
|| baseStats.def !== variety.stats.def
|| baseStats.sAtk !== variety.stats.sAtk
|| baseStats.sDef !== variety.stats.sDef
|| baseStats.spd !== variety.stats.spd;
for (const ability of body.abilities) { for (const ability of body.abilities) {
const { body: abilityBody } = await request.get(ability.ability.url); const { body: abilityBody } = await request.get(ability.ability.url);
variety.abilities.push(abilityBody.names.find(name => name.language.name === 'en').name); variety.abilities.push(abilityBody.names.find(name => name.language.name === 'en').name);