denikson 6 anni fa
parent
commit
5e084fe5a6
1 ha cambiato i file con 24 aggiunte e 5 eliminazioni
  1. 24 5
      commands/facemorph.js

+ 24 - 5
commands/facemorph.js

@@ -20,11 +20,12 @@ function intersects(r1, r2) {
 }
 
 async function morphFaces(faces, data) {
+    let padoru = Math.random() <= getPadoruChance();
     let jimpImage = await Jimp.read(data);
     let emojiKeys = [
         ...client.guilds
             .get(EMOTE_GUILD)
-            .emojis.filter(e => !e.animated)
+            .emojis.filter(e => !e.animated && e.name.startsWith("PADORU") == padoru)
             .keys()
     ];
 
@@ -45,6 +46,13 @@ async function morphFaces(faces, data) {
         eh *= scaleFactor;
 
         emojiImage = emojiImage.scale(scaleFactor);
+        
+        if(padoru) {
+            emojiImage = await emojiImage.color([
+                { apply: "hue", params: [360 * Math.random()] }
+            ]);
+        }
+
         jimpImage = jimpImage.composite(emojiImage, dx - ew / 2, dy - eh / 2);
     }
 
@@ -54,6 +62,7 @@ async function morphFaces(faces, data) {
 const CAPTION_OFFSET = 5;
 
 async function captionFace(faces, data) {
+    let padoru = Math.random() <= getPadoruChance();
     let face = faces[Math.floor(Math.random() * faces.length)];
     let squaredFace = await face.toSquareAsync();
 
@@ -73,13 +82,13 @@ async function captionFace(faces, data) {
     );
     tempImg = await tempImg.scale(targetSize / squaredFace.width);
 
-    let font = await Jimp.loadFont(Jimp.FONT_SANS_16_BLACK);
+    let font = await Jimp.loadFont(padoru ? Jimp.FONT_SANS_16_WHITE : Jimp.FONT_SANS_16_BLACK);
 
-    let text = `${db.get("faceCaptions.pre").randomElement().value()} ${db.get("faceCaptions.post").randomElement().value()}`;
+    let text = padoru ? "PADORU PADORU" : `${db.get("faceCaptions.pre").randomElement().value()} ${db.get("faceCaptions.post").randomElement().value()}`;
 
     let h = Jimp.measureTextHeight(font, text, targetSize - CAPTION_OFFSET * 2);
 
-    let finalImage = await Jimp.create(targetSize, targetSize + h + CAPTION_OFFSET * 2, 0xffffffff);
+    let finalImage = await Jimp.create(targetSize, targetSize + h + CAPTION_OFFSET * 2, padoru ? 0xff : 0xfffd2027);
 
     finalImage = await finalImage.print(
         font,
@@ -93,6 +102,16 @@ async function captionFace(faces, data) {
     return finalImage;
 }
 
+/**
+ * PADORU PADORU
+ */
+function getPadoruChance() {
+    let now = new Date();
+    if(now.getUTCMonth() != 11 || now.getUTCDate() > 26)
+        return 0;
+    return Math.sin(2 * Math.PI * (1.0 / 4.0 * 25.0) * now.getUTCDate());
+}
+
 async function processFaceSwap(message, attachmentUrl, processor, failMessage, successMessage) {
     let data = await request(attachmentUrl, { encoding: null });
 
@@ -158,7 +177,7 @@ async function processFaceSwap(message, attachmentUrl, processor, failMessage, s
 
     jimpImage.quality(90);
     let buffer = await jimpImage.getBufferAsync(Jimp.MIME_JPEG);
-
+    
     let messageContents =
         successMessage ||
         `I noticed a face in the image. I think this looks better ${client.emojis.get("505076258753740810").toString()}`;