From ecca350ff0ccae6a91d01c401a262ad6b03cd3b7 Mon Sep 17 00:00:00 2001 From: Dragon Fire Date: Thu, 23 Apr 2020 22:11:57 -0400 Subject: [PATCH] Megaman Zero Dialogue Command --- README.md | 7 ++- assets/fonts/megaman_zero_dialog.ttf | Bin 0 -> 16980 bytes assets/images/zero-dialogue.png | Bin 0 -> 6157 bytes commands/edit-image/zero-dialogue.js | 69 +++++++++++++++++++++++++++ package.json | 2 +- 5 files changed, 76 insertions(+), 2 deletions(-) create mode 100644 assets/fonts/megaman_zero_dialog.ttf create mode 100644 assets/images/zero-dialogue.png create mode 100644 commands/edit-image/zero-dialogue.js diff --git a/README.md b/README.md index cca42d78..cbfc57e2 100644 --- a/README.md +++ b/README.md @@ -132,7 +132,7 @@ in the appropriate channel's topic to use it. ## Commands -Total: 401 +Total: 402 ### Utility: @@ -446,6 +446,7 @@ Total: 401 * **silhouette:** Draws a silhouette of an image or a user's avatar. * **square:** Draws an image or a user's avatar as a square. * **tint:** Draws an image or a user's avatar but tinted a specific color. +* **zero-dialogue:** Sends a text box from Megaman Zero with the quote of your choice. ### Avatar Manipulation: @@ -678,6 +679,8 @@ here. * bulbapedia ([API](https://bulbapedia.bulbagarden.net/w/api.php)) - [Bulletin of the Atomic Scientists](https://thebulletin.org/) * doomsday-clock ([Doomsday Clock Data](https://thebulletin.org/doomsday-clock/current-time/)) +- [Capcom](http://www.capcom.com/us/) + * zero-dialogue ([Image, Original "Megaman Zero" Game](http://megaman.capcom.com/)) - [cheesecakejedi](https://imgur.com/user/cheesecakejedi) * axis-cult-sign-up ([Image](https://imgur.com/gallery/quQTD)) - [Cheng Xiao](https://www.instagram.com/chengxiao_0715/) @@ -925,6 +928,8 @@ here. * mayo-clinic (Disease Data) - [MDN Web Docs](https://developer.mozilla.org/en-US/) * mdn (API) +- [Megadreamer](https://www.deviantart.com/megadreamer) + * zero-dialogue ([Megaman Zero Dialogue Font](https://www.deviantart.com/megadreamer/art/Megaman-Zero-dialog-font-513708688)) - [Merriam-Webster's Collegiate® Dictionary](https://www.merriam-webster.com/) * define ([API](https://dictionaryapi.com/products/api-collegiate-dictionary)) * hangman ([API](https://dictionaryapi.com/products/api-collegiate-dictionary)) diff --git a/assets/fonts/megaman_zero_dialog.ttf b/assets/fonts/megaman_zero_dialog.ttf new file mode 100644 index 0000000000000000000000000000000000000000..8fbf384d94b527b367a5776bc0fffd75912f816e GIT binary patch literal 16980 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 DBPZ2H literal 0 HcmV?d00001 diff --git a/commands/edit-image/zero-dialogue.js b/commands/edit-image/zero-dialogue.js new file mode 100644 index 00000000..edef0724 --- /dev/null +++ b/commands/edit-image/zero-dialogue.js @@ -0,0 +1,69 @@ +const Command = require('../../structures/Command'); +const { createCanvas, loadImage, registerFont } = require('canvas'); +const path = require('path'); +const { wrapText } = require('../../util/Canvas'); +registerFont(path.join(__dirname, '..', '..', 'assets', 'fonts', 'megaman_zero_dialog.ttf'), { family: 'MM Zero' }); + +module.exports = class ZeroDialogueCommand extends Command { + constructor(client) { + super(client, { + name: 'zero-dialogue', + aliases: [ + 'megaman-zero-dialogue', + 'mm-zero-dialogue', + 'zero-dialog', + 'megaman-zero-dialog', + 'mm-zero-dialog', + 'zero-quote', + 'megaman-zero-quote', + 'mm-zero-quote', + 'zero', + 'megaman-zero', + 'mm-zero' + ], + group: 'edit-image', + memberName: 'zero-dialogue', + description: 'Sends a text box from Megaman Zero with the quote of your choice.', + throttling: { + usages: 1, + duration: 10 + }, + clientPermissions: ['ATTACH_FILES'], + credit: [ + { + name: 'Capcom', + url: 'http://www.capcom.com/us/', + reason: 'Image, Original "Megaman Zero" Game', + reasonURL: 'http://megaman.capcom.com/' + }, + { + name: 'Megadreamer', + url: 'https://www.deviantart.com/megadreamer', + reason: 'Megaman Zero Dialogue Font', + reasonURL: 'https://www.deviantart.com/megadreamer/art/Megaman-Zero-dialog-font-513708688' + } + ], + args: [ + { + key: 'quote', + prompt: 'What should Zero say?', + type: 'string', + max: 50 + } + ] + }); + } + + async run(msg, { quote }) { + const base = await loadImage(path.join(__dirname, '..', '..', 'assets', 'images', 'zero-dialogue.png')); + const canvas = createCanvas(base.width, base.height); + const ctx = canvas.getContext('2d'); + ctx.drawImage(base, 0, 0); + ctx.font = '42px MM Zero'; + ctx.fillStyle = 'white'; + let text = await wrapText(ctx, quote, 425); + text = text.length > 2 ? `${text.slice(2).join('\n')}...` : text.join('\n'); + ctx.fillText(text, 8, 8); + return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'zero-dialogue.png' }] }); + } +}; diff --git a/package.json b/package.json index 43c6124a..92a69ca6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "xiao", - "version": "113.15.4", + "version": "113.16.0", "description": "Your personal server companion.", "main": "Xiao.js", "scripts": {