Greasy Fork

blhxjysx

碧蓝幻想救援筛选脚本的注入版

目前为 2023-05-05 提交的版本。查看 最新版本

// ==UserScript==
// @name         blhxjysx
// @namespace    https://github.com/Less01
// @version      0.0.1
// @description  碧蓝幻想救援筛选脚本的注入版
// @author       Less01
// @match        *://game.granbluefantasy.jp/
// @match        *://gbf.game.mbga.jp/*
// @license MIT
// ==/UserScript==

(function() {
    'use strict';
    // 设定部分
    let opacity = 0.25;
    let playerCount = 5;
    let enemyHp = 50;
    // console.log(`Alpha: ${opacity}, 最大人数: ${playerCount}, 最低血量: ${enemyHp}`);

    // 监听页面内容变化,当救援列表改变时修改透明度
    const targetNode = document.querySelector("#wrapper>.contents");
    const config = { childList: true, subtree: true };
    const observer = new MutationObserver(
        (mutationsList) => {
            for (let mutation of mutationsList) {
                // 改为mutation.target.id == "prt-search-list"可以只在救援检索启用
                if (mutation.target.className == "prt-raid-list") {
                    let raid_list = mutation.target.querySelectorAll(".btn-multi-raid");
                    // console.log(`raid list length: ${raid_list.length}\n`);
                    for (let raid of raid_list) {
                        let count = raid.querySelector(".prt-flees-in").innerText.replace(/\/\d+/, "");
                        let hp = raid.querySelector(".prt-raid-gauge-inner").getAttribute("style").slice(7, -2);
                        // console.log(`count: ${count}, hp: ${hp}\n`);
                        if (count >= playerCount || hp <= enemyHp) {
                            raid.style.opacity = opacity;
                        }
                    }
                }
            }
        }
    );

    // 打开网页时、游戏内跳转时启用
    function run() {
        if (/^#quest\/assist(\/multi\/\d+|\/event)?$/.test(location.hash)) {
            observer.observe(targetNode, config);
            // console.log("observe\n");
        } else {
            observer.disconnect();
            // console.log("disconnect\n");
        }
    }

    var domain = document.domain;
    if (domain=="game.granbluefantasy.jp" || domain==gbf.game.mbga.jp) {
        // console.log("gbf url match\n");
        run();
        window.addEventListener('hashchange', run);
    }
})();