Pokechill

Pokechill panel

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey, Greasemonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да инсталирате разширение, като например Tampermonkey .

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Userscripts.

За да инсталирате скрипта, трябва да инсталирате разширение като Tampermonkey.

За да инсталирате този скрипт, трябва да имате инсталиран скриптов мениджър.

(Вече имам скриптов мениджър, искам да го инсталирам!)

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

(Вече имам инсталиран мениджър на стиловете, искам да го инсталирам!)

// ==UserScript==
// @name         Pokechill
// @namespace    Pokechill
// @version      2026-02-24
// @description  Pokechill panel
// @author       fiammanda
// @license      MIT
// @match        https://play-pokechill.github.io/
// @match        https://g1tyx.github.io/play-pokechill/
// @icon         https://www.google.com/s2/favicons?sz=64&domain=play-pokechill.github.io
// @grant        unsafeWindow
// ==/UserScript==

(function () {
  'use strict';

  const style = document.createElement('style');
  style.textContent = `
    .tm-panel {
      position: fixed;
      top: 20px;
      right: 20px;
      padding: 4px;
      font-size: 15px;
      color: #fff;
      border-radius: 8px;
      box-sizing: border-box;
      z-index: 9;
    }

    .tm-panel div {
      display: flex;
      align-items: center;
      gap: 8px;
      margin: 8px;
    }

    .tm-panel button,
    .tm-panel select {
      flex: 1;
      padding: 4px;
      min-width: max-content;
      border: none;
      border-radius: 4px;
      font-size: 14px;
      cursor: pointer;
    }

    .tm-panel button {
      background: #4caf50;
      color: #fff;
    }

    .tm-panel button:disabled {
      background: #888;
      cursor: not-allowed;
    }

    .tm-panel select {
      padding: 4px 8px;
      background: #fff;
      color: #000;
    }
    #text-data-raw {
      overflow: auto;
      white-space: wrap;
      word-break: break-all;
    }
  `;
  document.head.appendChild(style);

  let interval = null;

  const tickets = [
    '',
    'epochFeather',
    'ancientOrchid',
    'steelKeystone',
    'aetherKeycard',
    'futureDisk',
    'wisdomPetal'
  ];

  const panel = document.createElement('div');
  panel.className = 'tm-panel';

  const div1 = document.createElement('div');
  div1.innerHTML = `<span>游戏速度</span>`;
  const button1 = document.createElement('button');
  button1.textContent = '加速';
  button1.addEventListener('click', () => {
    saved.overrideBattleTimer = 200;
    button1.disabled = true;
    button1.textContent = '已加速';
  });
  div1.append(button1);

  const div2 = document.createElement('div');
  div2.innerHTML = `<span>自动重开</span>`;
  const button2 = document.createElement('button');
  button2.textContent = '已关闭';
  button2.addEventListener('click', () => {
    if (!interval) {
      interval = setInterval(() => {
        document.getElementById('area-rejoin')?.click();
      }, 30000);
      button2.textContent = '已开启';
    } else {
      clearInterval(interval);
      interval = null;
      button2.textContent = '已关闭';
    }
  });
  div2.append(button2);

  const div3 = document.createElement('div');
  div3.innerHTML = `<span>宝蛋掉落</span>`;
  const button3 = document.createElement('button');
  button3.textContent = '+10';
  button3.addEventListener('click', () => {
    item.mysteryEgg.got += 10;
    item.mysteryEgg.newItem += 10;
  });
  const button4 = document.createElement('button');
  button4.textContent = '+100';
  button4.addEventListener('click', () => {
    item.mysteryEgg.got += 100;
    item.mysteryEgg.newItem += 100;
  });
  div3.append(button3, button4);

  const div4 = document.createElement('div');
  div4.innerHTML = `<span>野区轮换</span>`;
  const select1 = document.createElement('select');
  for (let i = 1; i <= 12; i++) {
    const option = document.createElement('option');
    option.value = i;
    option.textContent = i;
    select1.appendChild(option);
  }
  select1.addEventListener('change', () => {
    rotationWildCurrent = Number(select1.value);
  });
  div4.append(select1);

  const div5 = document.createElement('div');
  div5.innerHTML = `<span>副本轮换</span>`;
  const select2 = document.createElement('select');
  for (let i = 1; i <= 3; i++) {
    const option = document.createElement('option');
    option.value = i;
    option.textContent = i;
    select2.appendChild(option);
  }
  select2.addEventListener('change', () => {
    rotationDungeonCurrent = Number(select2.value);
  });
  div5.append(select2);

  const div6 = document.createElement('div');
  div6.innerHTML = `<span>活动轮换</span>`;
  const select3 = document.createElement('select');
  for (let i = 1; i <= 6; i++) {
    const option = document.createElement('option');
    option.value = i;
    option.textContent = i;
    select3.appendChild(option);
  }
  select3.addEventListener('change', () => {
    rotationEventCurrent = Number(select3.value);
  });
  const button5 = document.createElement('button');
  button5.textContent = '票';
  button5.addEventListener('click', () => {
    item[tickets[select3.value]].got += 100;
  });
  div6.append(select3, button5);

  panel.append(div1, div2, div3, div4, div5, div6);

  const timer = setInterval(() => {
    if (saved) {
      clearInterval(timer);

      if (saved.overrideBattleTimer <= 200) {
        button1.disabled = true;
        button1.textContent = '已加速';
      }
      select1.value = rotationWildCurrent;
      select2.value = rotationDungeonCurrent;
      select3.value = rotationEventCurrent;

      document.body.append(panel);

      document.getElementById("tooltipMid").addEventListener('focusin', (e) => {
        const target = e.target;
        if (target.id === "text-data-raw") {
          target.setSelectionRange(0, target.value.length);
        }
      });
    }
  }, 200);

})();