Fantastic Frontier Roblox Wiki
Advertisement

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Press Ctrl-F5.
/*
    Easter egg planned for April Fools.
    Turns on text glitching for our fandom april fools-themed article (Kenneth's Paroxysm Flower Helmet), as well as the secret April Fools minigame.
*/
mw.hook("wikipage.content").add(function($content) {
    // Restrict to certain article. TO-DO: Edit to page-Kenneth_s_Paroxysm_Flower_Helmet.
    if ($("body").hasClass("page-Kenneth_s_Paroxysm_Flower_Helmet") || $("body").hasClass("page-User_As8D")) {
        setTimeout(function() {
            var minigameActive = false;
            
            // ——————————————————————————————————————————————————
            // TextScramble - taken from https://codepen.io/soulwire/pen/mErPAK
            // Changed to work with native JS stuff instead of Babel?
            // ——————————————————————————————————————————————————
            function TextScramble(el) {
                this.el = el;
                this.chars = '!<>-_\\/[]{}—=+*^?#________';
                this.queue = [];
                
                this.setText = function(newText) {
                    var oldText = this.el.innerText;
                    var length = Math.max((oldText || '').length, (newText || '').length);
                    var self = this;
                    var promise = new Promise(function(resolve) { self.resolve = resolve; });
                    this.queue = [];
                    for (var i = 0; i < length; i++) {
                        var from = oldText[i] || '';
                        var to = newText[i] || '';
                        var start = Math.floor(Math.random() * 40);
                        var end = start + Math.floor(Math.random() * 40);
                        this.queue.push({ from: from, to: to, start: start, end: end });
                    }
                    cancelAnimationFrame(this.frameRequest);
                    this.frame = 0;
                    this.update();
                    return promise;
                };
                
                this.update = function() {
                    var output = '';
                    var complete = 0;
                    for (var i = 0, n = this.queue.length; i < n; i++) {
                        var from = this.queue[i].from,
                            to = this.queue[i].to,
                            start = this.queue[i].start,
                            end = this.queue[i].end,
                            char = this.queue[i].char;
                        if (this.frame >= end) {
                            complete++;
                            output += to;
                        } else if (this.frame >= start) {
                            if (!char || Math.random() < 0.28) {
                                char = this.randomChar();
                                this.queue[i].char = char;
                            }
                            output += '<span class="dud">' + char + '</span>';
                        } else {
                            output += from;
                        }
                    }
                    this.el.innerHTML = output;
                    if (complete === this.queue.length) {
                        this.resolve();
                    } else {
                        var self = this;
                        this.frameRequest = requestAnimationFrame(function() {
                            self.update();
                        });
                        this.frame++;
                    }
                };
                
                this.randomChar = function() {
                    return this.chars[Math.floor(Math.random() * this.chars.length)];
                };
            }
            
            // Enable text glitching effects.
            $(".demo-text, .glitch-text").each(function() {
                var lines = [];
                for (var i = 0; i < 10; i++) {
                    if ($(this).attr("data-line" + i) !== undefined)
                        lines.push($(this).attr("data-line" + i));
                }
                
                var fx = new TextScramble(this);
                var counter = 0;
                
                var next = function() {
                    fx.setText(lines[counter]).then(function() {
                        if (minigameActive)
                            return;
                        setTimeout(next, 3600 + Math.random() * 4800);
                    });
                    counter = (counter + 1) % lines.length;
                };
                next();
            });
            
            // Enable toggling on the secret minigame.
            $(".ffools-trigger").click(function() {
                minigameActive = true;
				var spoilerContent = $('.ffa2019-hidden-content').html();
                $("#mw-content-text").empty().html(spoilerContent);


				// ** REMOVED section due to past communication with Code Approver on different scripts ** //
				// Commented out code will not run, and this is left for legacy to the rest of the Fantastic Frontier wiki team who are interested in reading the code.
				
                /*var ifr = document.createElement("iframe"); // container for our easter egg minigame.
                
                // The iframe contains a minigame in which players collects items from the Fantastic Frontier game.
                // Uses 3rd party code:
                // - Three.js (3D engine in JavaScript)
                // - jQuery v3.3.1 (support for confetti effect)
                // - https://codepen.io/Pillowfication/pen/PNEJbY (confetti effect)
                
                // The code for the minigame can be found here: https://uppah.net/ffw_afgame/main.js
                
                ifr.src = "https://uppah.net/ffw_afgame/";
                ifr.width = 700;
                ifr.height = 450;
                $(".mw-content-text").append(ifr);*/
            });
        }, 5000);
    }
});
Advertisement