BreakoutEDU answers script

alerts or prints the answers whenever you open a lock.

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

// ==UserScript==
// @name         BreakoutEDU answers script
// @namespace    http://tampermonkey.net/
// @version      2024-09-23
// @description  alerts or prints the answers whenever you open a lock.
// @author       PowfuArras
// @match        https://student.breakoutedu.com/
// @icon         https://www.google.com/s2/favicons?sz=64&domain=breakoutedu.com
// @grant        none
// @license      GNU AGPLv3
// ==/UserScript==

(function () {
    "use strict";

    const nativeOpen = XMLHttpRequest.prototype.open;
    XMLHttpRequest.prototype.open = function (method, url, ...rest) {
        if (url.includes("student.breakoutedu.com/game-with-locks/play/lock-of-the-day")) {
            this.addEventListener('load', function () {
                const response = this.responseText;
                const data = JSON.parse(response);
                if (data.payload.gameLocks.length !== 1) {
                    console.log("Not supported. Printing answers to console.");
                    console.table(data.payload.gameLocks.map(lock => lock.ans));
                }
                alert(`The answer is:\n\n${data.payload.gameLocks[0].ans.replaceAll(",", ", ")}`);
            });
        }
        return nativeOpen.call(this, method, url, ...rest);
    };
})();