Goatlings: Battle Again Button

Adds a "Battle Again" button into the Battle Center where appropriate

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         Goatlings: Battle Again Button
// @version      0.1.0
// @description  Adds a "Battle Again" button into the Battle Center where appropriate
// @namespace    https://greatest.deepsurf.us/en/users/322117
// @author       Felix G. "Automalix"
// @include      http://www.goatlings.com/battle*
// @include      http://goatlings.com/battle*
// @include      http://www.goatlings.com/explore*
// @include      http://goatlings.com/explore*
// @run-at       document-body
// ==/UserScript==
(function(){
    "use strict";
    const getAuthToken = function() {
        let linkArr = document.links, urls = [];
        for (let anchors of linkArr) urls.push(anchors.href)
        let logout = urls.find(value => /\/login\/logout\/.{32}\//.test(value)),
            pos = logout.indexOf("logout");
        const TOKEN = logout.slice(pos + 7, pos + 39);
        return TOKEN;
    }
    /* The auth token is required for many features on the site.
    This is not saved anywhere except on the current page you are viewing. */
    const token = getAuthToken();
    let style = document.createElement("style")
    style.type = "text/css";
    style.innerHTML = `#battleAgain{
                           margin:0 auto;
                           text-align:center;
                       }
                       #battleAgainButton {
                           margin:20px auto 0 auto;
                       }
                       #battleEndLinks {
                           margin:20px auto 0 auto;
                       }`
    if(document.getElementsByTagName("head")[0]) document.getElementsByTagName("head")[0].appendChild(style)
    if (/\/battle\/over/.test(document.URL)){
        // Battle Again button implemented as well as new battle footer links for consistency.
        let existingButton = document.querySelector(`input[value="Battle Again"]`),
            battleParameters = sessionStorage.getItem("battleParameters") ? JSON.parse(sessionStorage.getItem("battleParameters")) : "",
            battleAgainButton = "";
        if (battleParameters){
            if(!existingButton){
                battleAgainButton = `
                <form action="${battleParameters.enemyURL}" method="post" accept-charset="utf-8" style="margin:0">
                    <input type="hidden" name="csrf_test_name" value="${token}">
                    <input type="hidden" name="petid" value="${battleParameters.petID}">
                    <input type="submit" name="s" value="Battle Again" id="battleAgainButton">
                </form>`
            } else battleAgainButton = "";
        } else battleAgainButton = `<div id="battleAgainButton"><a href="http://www.goatlings.com/explore/view">Continue Adventure</a></div>`;

        let battleAgainFooter = `<div id="battleAgain">
            ${battleAgainButton}
            <div id="battleEndLinks">
                <a href="http://www.goatlings.com/explore/view">Current Adventure</a> |
                <a href="http://www.goatlings.com/battle/train_challengers">Training Center</a> |
                <a href="http://www.goatlings.com/battle/challengers">Battle Center</a> |
                <a href="http://www.goatlings.com/fountain/">The Fountain</a> |
                <a href="http://www.goatlings.com/inventory/">Your Inventory</a>
            </div>
        </div>`;
        document.querySelector("#content > center > p").remove();
        document.querySelector("#content > center").insertAdjacentHTML('afterend', battleAgainFooter);
    }
    if(document.URL.includes('/explore/')) sessionStorage.removeItem("battleParameters") //delete storage of baddie ID because you can't repeat explore battles
})();