diff --git a/commands/battle/command.js b/commands/battle/command.js index e28887e..e77c732 100644 --- a/commands/battle/command.js +++ b/commands/battle/command.js @@ -16,20 +16,21 @@ class Battle extends CommandBaseClass { } async run(context) { - const { connection } = context; + const { client, connection } = context; context.log('silly', 'acquiring user data for search..'); const userData = await connection.memberData(context.member); + const _ = (...x) => client.localize(userData.locale, ...x); context.log('silly', 'got user data'); if (userData.state_engaged) { - await context.send('You cannot do that right now.'); + await context.send(_('commands.general.error.engaged')); return; } if (await connection.isPartyEmpty(context.member)) { - await context.send('You don\'t have a party yet. Use `-choose` to make one.'); + await context.send(_('commands.general.error.partyless', { PREFIX: context.prefix })); return; } @@ -42,7 +43,7 @@ class Battle extends CommandBaseClass { if (party.reduce(function(total, blob) { return total + blob.health; }, 0) <= 0) { await connection.setEngaged(context.member, false); - await context.send('You do not have any blobs in battling condition.'); + await context.send(_('commands.battle.error.all_blobs_fainted')); return; } guild_members.push(context.member); @@ -58,35 +59,37 @@ class Battle extends CommandBaseClass { const enemy_party = await connection.getParty(target_member); if (target_member.user.id === context.member.user.id) { await connection.setEngaged(context.member, false); - await context.send('You cannot battle yourself.'); + await context.send(_('commands.battle.error.battling_yourself')); return; } if (targetData.state_engaged) { await connection.setEngaged(context.member, false); - await context.send('That player is busy.'); + await context.send(_('commands.battle.error.target_engaged')); return; } + if (enemy_party.length !== 6) { await connection.setEngaged(context.member, false); - await context.send('That user has not created a party yet.'); + await context.send(_('commands.battle.error.target_partyless')); return; } if (enemy_party.reduce(function(total, blob) { return total + blob.health; }, 0) <= 0) { await connection.setEngaged(context.member, false); - await context.send('That user does not have any blobs in battling condition.'); + await context.send(_('commands.battle.error.target_blobs_fainted')); return; } guild_members.push(target_member); player_datas.push(targetData); + const _t = (...x) => client.localize(targetData.locale, ...x); await connection.setEngaged(target_member, true); - await context.send(`${target_member}, ${context.member.user.username} has challenged you to a battle!\n\`${context.prefix}accept\` or \`${context.prefix}decline\``); + await context.send(_t('commands.battle.battle_invite', { TARGET: target_member, USER: context.member.user.username, PREFIX: context.prefix })); const re = new RegExp(`^(?:${context.client.prefixRegex})(accept|decline)(.*)$`); const filter = m => (m.author.id === target_member.id && re.test(m.content)); let response; try { response = re.exec((await context.channel.awaitMessages(filter, { max: 1, time: 30000, errors: ['time'] })).first().content); } catch (e) { - // user didnt respond + // user didnt respond await connection.setEngaged(context.member, false); await connection.setEngaged(target_member, false); return; @@ -96,44 +99,14 @@ class Battle extends CommandBaseClass { await connection.setEngaged(target_member, false); return; } - + } - const battle_message = await context.send('Battle starting...'); + const battle_message = await context.send(_('commands.battle.battle_starting')); const controller = new BattleController(context, connection, guild_members, player_datas, battle_message); await controller.setup(); - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - } } diff --git a/commands/choose/command.js b/commands/choose/command.js index 90cbe16..f96d82a 100644 --- a/commands/choose/command.js +++ b/commands/choose/command.js @@ -13,17 +13,18 @@ class Choose extends CommandBaseClass { } async run(context) { - const { message, connection } = context; + const { client, message, connection } = context; context.log('silly', 'acquiring user data for search..'); const userData = await connection.memberData(context.member); + const _ = (...x) => client.localize(userData.locale, ...x); context.log('silly', 'got user data'); await connection.setEngaged(context.member, true); if (userData.state_engaged) { - await context.send('You cannot do that right now.'); + await context.send(_('commands.general.error.engaged')); return; } @@ -41,12 +42,12 @@ class Choose extends CommandBaseClass { }); for (const element of inputted_blobs) { - if (element === '-choose') { + if (element === `${context.prefix}choose`) { continue; } const temp = await connection.searchBlob(element); if (!temp) { - await context.send('One of those blobs does not exist.'); + await context.send(_('commands.choose.error.non_existent_blob')); await connection.setEngaged(context.member, false); return; } @@ -57,7 +58,7 @@ class Choose extends CommandBaseClass { for (let x = 0; x < blobdefs.length; x++) for (let y = 0; y < blobdefs.length; y++) if (x !== y && blobdefs[x].emoji_id === blobdefs[y].emoji_id) { - await context.send('You cannot have multiple of the same blob.'); + await context.send(_('commands.choose.error.duplicated_blob')); await connection.setEngaged(context.member, false); return; } @@ -73,8 +74,7 @@ class Choose extends CommandBaseClass { } }); - await context.send('Your chosen blobs:\n' + blob_emojis.join(' ') - + `\nYou will not be able to change them later. \`${context.prefix}confirm\` or \`${context.prefix}cancel\``); + await context.send(_('commands.choose.choose_prompt', { BLOBS: blob_emojis.join(' '), PREFIX: context.prefix })); const re = new RegExp(`^(?:${context.client.prefixRegex})(confirm|cancel)(.*)$`); const filter = m => (m.author.id === context.author.id && re.test(m.content)); @@ -83,23 +83,23 @@ class Choose extends CommandBaseClass { response = re.exec((await context.channel.awaitMessages(filter, { max: 1, time: 60000, errors: ['time'] })).first().content); } catch (e) { await connection.setEngaged(context.member, false); - // user didnt respond + // user didnt respond return; } if (response[1] === 'confirm') { for (let index = 0; index < blobdefs.length; index++) { await connection.giveBlobParty(context.member, blobdefs[index], index); } - await context.send('Your party has been created!'); + await context.send(_('commands.choose.party_created')); } } else { - await context.send(`You need to choose six blobs to make a party.\nUsage: \`${context.prefix}choose \``); + await context.send(_('commands.choose.error.six_blobs_required', { PREFIX: context.prefix })); } } else { - await context.send('You cannot change your party.'); + await context.send(_('commands.choose.error.cant_change_party')); } await connection.setEngaged(context.member, false); } diff --git a/commands/heal/command.js b/commands/heal/command.js index 94eb6ab..03ab806 100644 --- a/commands/heal/command.js +++ b/commands/heal/command.js @@ -12,22 +12,23 @@ class Heal extends CommandBaseClass { } async run(context) { - const { connection } = context; + const { client, connection } = context; context.log('silly', 'acquiring user data for search..'); const userData = await connection.memberData(context.member); + const _ = (...x) => client.localize(userData.locale, ...x); context.log('silly', 'got user data'); if (userData.state_engaged) { - await context.send('You cannot do that right now.'); + await context.send(_('commands.general.error.engaged')); return; } if (await connection.isPartyEmpty(context.member)) { - await context.send('You don\'t have a party yet. Use `-choose` to make one.'); + await context.send(_('commands.general.error.partyless'), { PREFIX: context.prefix }); return; } await connection.healAllBlobs(context.member); - await context.send('Blobs healed.'); + await context.send(_('commands.general.heal.blobs_healed')); } } module.exports = Heal; diff --git a/commands/inventory/command.js b/commands/inventory/command.js index 2007fa9..62f59b7 100644 --- a/commands/inventory/command.js +++ b/commands/inventory/command.js @@ -22,11 +22,11 @@ class Inventory extends CommandBaseClass { context.log('silly', 'got user data'); if (userData.state_engaged) { - await context.send('You cannot do that right now.'); + await context.send(_('commands.general.error.engaged')); return; } if (await connection.isPartyEmpty(context.member)) { - await context.send('You don\'t have a party yet. Use \`-choose\` to make one.'); + await context.send(_('commands.general.error.partyless'), { PREFIX: context.prefix }); return; } } diff --git a/commands/party/command.js b/commands/party/command.js index 0c595cb..cbc8120 100644 --- a/commands/party/command.js +++ b/commands/party/command.js @@ -13,18 +13,19 @@ class Party extends CommandBaseClass { } async run(context) { - const { connection } = context; + const { client, connection } = context; context.log('silly', 'acquiring user data for search..'); const userData = await connection.memberData(context.member); + const _ = (...x) => client.localize(userData.locale, ...x); context.log('silly', 'got user data'); if (userData.state_engaged) { - await context.send('You cannot do that right now.'); + await context.send(_('commands.general.error.engaged')); return; } if (await connection.isPartyEmpty(context.member)) { - await context.send('You don\'t have a party yet. Use `-choose` to make one.'); + await context.send(_('commands.general.error.partyless'), { PREFIX: context.prefix }); return; } @@ -33,7 +34,7 @@ class Party extends CommandBaseClass { var blob_emojis = []; var cur_total_health = 0; var total_health = 0; - + party.forEach(function(element) { var emoji = context.client.emojis.find(emoji => emoji.id === element.emoji_id); if (emoji) { @@ -62,9 +63,9 @@ class Party extends CommandBaseClass { await context.send({ embed: { color: parseInt(await this.healthColor(cur_total_health / total_health)), - title: `${context.author.username}'s Party`, + title: _('commands.party.party_title', { USER: context.author.username }), footer: { - text: '-stats [slot] to view individual statistics' + text: _('commands.party.stats_command', { PREFIX: context.prefix }) }, fields: fields_array } diff --git a/commands/rank/command.js b/commands/rank/command.js index 5a4c1ab..2d60de6 100644 --- a/commands/rank/command.js +++ b/commands/rank/command.js @@ -13,19 +13,20 @@ class Rank extends CommandBaseClass { } async run(context) { - const { connection } = context; + const { client, connection } = context; context.log('silly', 'acquiring user data for search..'); const userData = await connection.memberData(context.member); + const _ = (...x) => client.localize(userData.locale, ...x); context.log('silly', 'got user data'); if (userData.state_engaged) { - await context.send('You cannot do that right now.'); + await context.send(_('commands.general.error.engaged')); return; } if (await connection.isPartyEmpty(context.member)) { - await context.send('You don\'t have a party yet. Use `-choose` to make one.'); + await context.send(_('commands.general.error.partyless'), { PREFIX: context.prefix }); return; } @@ -36,10 +37,10 @@ class Rank extends CommandBaseClass { var color = 0; var response = ''; - + top5.forEach(function(element) { if (element.user_id === context.author.id) { - response += `**${element.row_number}: <@${element.user_id}> with ${element.ranking} Blob Trophies**\n`; + response += _('commands.rank.response', { PLACE: element.row_number, USERID: element.user_id, TROPHIES: element.ranking }); switch (element.row_number) { case '1': color = 16766720; @@ -53,17 +54,18 @@ class Rank extends CommandBaseClass { } } else - response += `${element.row_number}: <@${element.user_id}> with ${element.ranking} **Blob Trophies**\n`; + response += _('commands.rank.response', { PLACE: element.row_number, USERID: element.user_id, TROPHIES: element.ranking }); }); if (currentRank.row_number > 5) { var adjRanks = await connection.getAdjRanks(context.member, currentRank.row_number); response += '...\n'; - response += `${adjRanks[0].row_number}: <@${adjRanks[0].user_id}> with ${adjRanks[0].ranking} **Blob Trophies**\n`; - response += `**${currentRank.row_number}: <@${currentRank.user_id}> with ${currentRank.ranking} Blob Trophies**`; + response += _('commands.rank.response', { PLACE: adjRanks[0].row_number, USERID: adjRanks[0].user_id, TROPHIES: adjRanks[0].ranking }); + response += _('commands.rank.last_rank_response', { PLACE: currentRank.row_number, USERID: currentRank.user_id, TROPHIES: currentRank.ranking }); if (adjRanks.length === 2) { - response += `\n${adjRanks[1].row_number}: <@${adjRanks[1].user_id}> with ${adjRanks[1].ranking} **Blob Trophies**`; - } + response += `\n`; + response += _('commands.rank.last_rank_response', { PLACE: adjRanks[1].row_number, USERID: adjRanks[1].user_id, TROPHIES: adjRanks[1].ranking }); + } } context.send({ embed: { diff --git a/commands/stats/command.js b/commands/stats/command.js index 973731a..eff3ab7 100644 --- a/commands/stats/command.js +++ b/commands/stats/command.js @@ -12,18 +12,19 @@ class Stats extends CommandBaseClass { } async run(context) { - const { connection } = context; + const { client, connection } = context; context.log('silly', 'acquiring user data for search..'); const userData = await connection.memberData(context.member); + const _ = (...x) => client.localize(userData.locale, ...x); context.log('silly', 'got user data'); if (userData.state_engaged) { - await context.send('You cannot do that right now.'); + await context.send(_('commands.general.error.engaged')); return; } if (await connection.isPartyEmpty(context.member)) { - await context.send('You don\'t have a party yet. Use `-choose` to make one.'); + await context.send(_('commands.general.error.partyless'), { PREFIX: context.prefix }); return; } await connection.setEngaged(context.member, true); @@ -53,7 +54,7 @@ class Stats extends CommandBaseClass { - const stats_message = await context.send('Loading...'); + const stats_message = await context.send(_('commands.stats.loading')); for (let i = 0; i < emojis.length; i++) { await stats_message.react(emojis[i]); @@ -99,24 +100,17 @@ class Stats extends CommandBaseClass { await stats_message.edit({ embed: { color: color, - title: `${context.author.username}'s ${blob.emoji_name}`, + title: _('commands.stats.title', { USER: context.author.username, BLOB: blob.emoji_name}), thumbnail: { url: emoji.url }, footer: { - text: 'React - 1: Blob stats - 2: Attack stats - 3: Stop' + text: _('commands.stats.footer') }, fields: [ { name: 'Stats', - value: - '**Slot:\n' + - 'Level:\n' + - 'Exp:\n' + - 'HP:\n' + - 'Attack:\n' + - 'Defense:\n' + - 'Speed:**', + value: _('commands.stats.blob_stats'), inline: true }, { name: '\u200B', @@ -143,38 +137,50 @@ class Stats extends CommandBaseClass { await stats_message.edit({ embed: { color: color, - title: `${context.author.username}'s ${blob.emoji_name}`, + title: _('commands.stats.title', { USER: context.author.username, BLOB: blob.emoji_name}), thumbnail: { url: emoji.url }, footer: { - text: 'React - 1: Blob stats - 2: Attack stats - 3: Stop' + text: _('commands.stats.footer') }, fields: [ { name: `${move_one.move_name}`, - value: `Power:\t\t\t${move_one.damage}\n` + - `Accuracy:\t\t${(move_one.accuracy) * 100}%\n` + - `PP:\t\t\t\t\t${blob.move_one_pp}/${move_one.max_pp}\n` + - `Description:\t${move_one.description}` + value: _('commands.stats.attack_stats', { + DAMAGE: move_one.damage, + ACCURACY: (move_one.accuracy) * 100, + PP: blob.move_one_pp, + MAXPP: move_one.max_pp, + DESCRIPTION: move_one.description} + ), }, { name: `${move_two.move_name}`, - value: `Power:\t\t\t${move_two.damage}\n` + - `Accuracy:\t\t${(move_two.accuracy) * 100}%\n` + - `PP:\t\t\t\t\t${blob.move_two_pp}/${move_two.max_pp}\n` + - `Description:\t${move_two.description}` + value: _('commands.stats.attack_stats', { + DAMAGE: move_two.damage, + ACCURACY: (move_two.accuracy) * 100, + PP: blob.move_two_pp, + MAXPP: move_two.max_pp, + DESCRIPTION: move_two.description} + ), }, { name: `${move_three.move_name}`, - value: `Power:\t\t\t${move_three.damage}\n` + - `Accuracy:\t\t${(move_three.accuracy) * 100}%\n` + - `PP:\t\t\t\t\t${blob.move_three_pp}/${move_three.max_pp}\n` + - `Description:\t${move_three.description}` + value: _('commands.stats.attack_stats', { + DAMAGE: move_three.damage, + ACCURACY: (move_three.accuracy) * 100, + PP: blob.move_three_pp, + MAXPP: move_three.max_pp, + DESCRIPTION: move_three.description} + ), }, { name: `${move_four.move_name}`, - value: `Power:\t\t\t${move_four.damage}\n` + - `Accuracy:\t\t${(move_four.accuracy) * 100}%\n` + - `PP:\t\t\t\t\t${blob.move_four_pp}/${move_four.max_pp}\n` + - `Description:\t${move_four.description}` + value: _('commands.stats.attack_stats', { + DAMAGE: move_four.damage, + ACCURACY: (move_four.accuracy) * 100, + PP: blob.move_four_pp, + MAXPP: move_four.max_pp, + DESCRIPTION: move_four.description} + ), } ] } @@ -213,7 +219,7 @@ class Stats extends CommandBaseClass { async function ivColor(amount) { const a = '#000000'; // black const b = '#FCC21B'; // blob color - + const ah = parseInt(a.replace(/#/g, ''), 16), ar = ah >> 16, ag = ah >> 8 & 0xff, ab = ah & 0xff, bh = parseInt(b.replace(/#/g, ''), 16), @@ -224,6 +230,6 @@ class Stats extends CommandBaseClass { return '0x' + ((1 << 24) + (rr << 16) + (rg << 8) + rb | 0).toString(16).slice(1); } } - + } module.exports = Stats; diff --git a/commands/use/command.js b/commands/use/command.js index 9ca11b5..90fe1a6 100644 --- a/commands/use/command.js +++ b/commands/use/command.js @@ -13,18 +13,19 @@ class Use extends CommandBaseClass { } async run(context) { - const { connection } = context; + const { client, connection } = context; context.log('silly', 'acquiring user data for search..'); const userData = await connection.memberData(context.member); + const _ = (...x) => client.localize(userData.locale, ...x); context.log('silly', 'got user data'); if (userData.state_engaged) { - await context.send('You cannot do that right now.'); + await context.send(_('commands.general.error.engaged')); return; } if (await connection.isPartyEmpty(context.member)) { - await context.send('You don\'t have a party yet. Use `-choose` to make one.'); + await context.send(_('commands.general.error.partyless'), { PREFIX: context.prefix }); return; } } diff --git a/locale/en.yml b/locale/en.yml index 8f684f5..633a50b 100644 --- a/locale/en.yml +++ b/locale/en.yml @@ -23,22 +23,39 @@ meta: # help strings for various commands help: | Displays commands available to you. - meta: | - Displays info on the bot's current status. eval: | Executes arbitrary JS code. ping: | Calculates the bot connection round-trip time. locale: | - Changes the bot locale. - + Changes the bot locale. choose: | - Choose your team. - - + Chooses your party with the blobs you picked. + battle: | + Starts a blob battle against a bot or a person. + heal: | + Heals all blobs to maximum health. + inventory: | + Displays your inventory's content. + party: | + Displays your blob party and their status. + rank: | + Displays the leaderboard and where you are in. + stats: | + Displays your blob party with detailed information. + store: | + Displays the store with a menu to buy more items. + use: | + Uses an item from your inventory. commands: - # strings used in commands + # strings used in commands + general: + error: + engaged: | + You cannot do that right now. + partyless: | + You don't have a party yet. Use `{PREFIX}choose ` to make one. locale: none: | You must supply a locale name. @@ -48,6 +65,71 @@ commands: That locale couldn't be found. changed: | The guild locale has been changed. Use `{PREFIX}locale ` at any time to change back. - - - + battle: + error: + all_blobs_fainted: | + You do not have any blobs in battling condition. + battling_yourself: | + You cannot battle yourself. + target_engaged: | + That player is busy. + target_partyless: | + That user has not created a party yet. + target_blobs_fainted: | + That user does not have any blobs in battling condition. + battle_starting: | + Battle starting... + battle_invite: | + <@{TARGET}>, {USER} has challenged you to a battle! + `{PREFIX}accept` or `{PREFIX}decline` + choose: + error: + non_existent_blob: | + One of those blobs does not exist. + duplicated_blob: | + You cannot have multiple of the same blob. + six_blobs_required: | + You need to choose six blobs to make a party. + Usage: `{PREFIX}choose ` + cant_change_party: | + You cannot change your party. + choose_prompt: | + Your chosen blobs: + {BLOBS} + You will not be able to change them later. `{PREFIX}confirm` or `{PREFIX}cancel` + party_created: | + Your party has been created! + heal: + blobs_healed: | + Blobs healed. + party: + stats_command: | + {PREFIX}stats [slot] to view individual statistics + party_title: | + {USER}'s Party + rank: + response: | + **{PLACE}: <@{USERID}> with {TROPHIES} Blob Trophies** + + last_rank_response: | + **{PLACE}: <@{USERID}> with {TROPHIES} Blob Trophies** + stats: + loading: | + Loading... + title: | + {USER}'s {BLOB} + blob_stats: | + **Slot: + Level: + Exp: + HP: + Attack: + Defense: + Speed:** + attack_stats: | + Power: {DAMAGE} + Accuracy: {ACCURACY}% + PP: {PP}/{MAXPP} + Description: {DESCRIPTION} + footer: | + React - 1: Blob stats - 2: Attack stats - 3: Stop diff --git a/locale/fr.yml b/locale/fr.yml index f728dd4..6ec9bc7 100644 --- a/locale/fr.yml +++ b/locale/fr.yml @@ -25,8 +25,6 @@ meta: # help strings for various commands help: | Affiche les commandes disponibles pour vous. - meta: | - Affiche des informations sur le status actuel du bot. eval: | Exécute du code JS. ping: | @@ -46,5 +44,3 @@ commands: Cette langue n'a pas été trouvée. changed: | La langue pour ce serveur a été changée. Utilisez `{PREFIX}locale ` n'importe quand pour changer. - - \ No newline at end of file diff --git a/locale/ja.yml b/locale/ja.yml index e90e842..b6220f0 100644 --- a/locale/ja.yml +++ b/locale/ja.yml @@ -23,8 +23,6 @@ meta: # help strings for various commands help: | どのコマンドが使えらえるか表示する - meta: | - ボットの操作情報を表示する eval: | JavaScriptコードを評価する ping: | @@ -32,9 +30,9 @@ meta: locale: | ロケールを変更する - + commands: - # strings used in commands + # strings used in commands locale: none: | ロケール名は必要です。 @@ -44,5 +42,3 @@ commands: そのロケールは見つかりませんでした。 changed: | サーバーのロケールは変更しました。 `{PREFIX}locale <ロケール名>`でいつも変更できます。 - - \ No newline at end of file diff --git a/locale/pt.yml b/locale/pt.yml new file mode 100644 index 0000000..a406c7c --- /dev/null +++ b/locale/pt.yml @@ -0,0 +1,135 @@ + +meta: + # name of the bot. appears in embed footers, etc + # don't translate this, or do, i don't mind + battleblobs: | + BattleBlobs + + help: + no_category: | + Sem Categoria + command_header: | + Lista de Comandos + + categories: + admin: | + Administração + meta: | + Meta + battleblobs: | + BattleBlobs + + commands: + # help strings for various commands + help: | + Mostra comandos disponívels para você. + eval: | + Executa código JS arbitrário. + ping: | + Calcula a conexão do robô em tempo de ida e volta. + locale: | + Muda a linguagem do robô. + choose: | + Escolhe o seu time com os blobs que você escolheu. + battle: | + Começa uma batalha de blobs contra um robô ou uma pessoa. + heal: | + Cura todos os blobs até a vida máxima. + inventory: | + Mostra o conteúdo do seu inventário. + party: | + Mostra a sua equipe de blobs e o estado deles. + rank: | + Mostra a tabela de liderança e aonde você está. + stats: | + Mostra a sua equipe de blobs com informações detalhadas. + store: | + Mostra a loja com um menu para comprar mais itens. + use: | + Usa um item do seu inventário. + +commands: + # strings used in commands + general: + error: + engaged: | + Você não pode fazer isso agora. + partyless: | + Você não tem uma equipe ainda. Use `{PREFIX}choose ` para fazer um. + locale: + none: | + Você deve fornecer o nome da linguagem. + same: | + Você já definiu para essa linguagem. + notfound: | + A linguagem não foi encontrada. + changed: | + A linguagem do servidor foi mudada. Use `{PREFIX}locale ` a qualquer momento para mudar de volta. + battle: + error: + all_blobs_fainted: | + Você não tem nenhum blob com condições de batalhar. + battling_yourself: | + Você não pode batalhar contra você mesmo. + target_engaged: | + Esse jogador está ocupado + target_partyless: | + Esse usuário não criou nenhuma equipe ainda. + target_blobs_fainted: | + Esse usuário não tem nenhum blob com condições de batalhar. + battle_starting: | + Começando a batalha... + battle_invite: | + <@{TARGET}>, {USER} te desafia em uma batalha! + `{PREFIX}accept` ou `{PREFIX}decline` + choose: + error: + non_existent_blob: | + Um desses blobs não existe. + duplicated_blob: | + Você não pode ter mais de um blob igual. + six_blobs_required: | + Você precisa escolher seis blobs para formar uma equipe. + Uso: `{PREFIX}choose ` + cant_change_party: | + Você não pode mudar a sua equipe. + choose_prompt: | + Seus blobs escolhidos: + {BLOBS} + Você não vai poder mudar-la depois. `{PREFIX}confirm` ou `{PREFIX}cancel` + party_created: | + Sua equipe foi criada! + heal: + blobs_healed: + Blobs curado. + party: + stats_command: | + {PREFIX}stats [lote] para ver estatísticas individuais. + party_title: | + Equipe de {USER} + rank: + response: | + **{PLACE}: <@{USERID}> com {TROPHIES} Troféis de Blob** + + last_rank_response: | + **{PLACE}: <@{USERID}> com {TROPHIES} Troféis de Blob** + stats: + loading: | + Loading... + title: | + {BLOB} de {USER} + blob_stats: | + **Lote: + Nível: + Exp: + Vida: + Ataque: + Defesa: + Velocidade:** + attack_stats: | + Poder: {DAMAGE} + Precisão: {ACCURACY}% + PP: {PP}/{MAXPP} + Descrição: {DESCRIPTION} + footer: | + Reaja - 1: Estatísticas do blob - 2: Estatísticas de ataque - 3: Pare diff --git a/setup.sql b/setup.sql index a1b888a..4995cc5 100644 --- a/setup.sql +++ b/setup.sql @@ -3,6 +3,7 @@ COPY locales (id) FROM stdin; en ja fr +pt \. COPY blobrarity (id, name, rarity_scalar) FROM stdin;