swordmasters.io擊殺倍數

swordmasters.io擊殺

// ==UserScript==
// @name        swordmasters.io擊殺倍數
// @namespace   http://tampermonkey.net/
// @match       https://swordmasters.io/*
// @grant       none
// @version     1.0
// @author      huang-wei-lun
// @description swordmasters.io擊殺
// ==/UserScript==
(function () {
    console.clear();
    console.log("🔧 [SwordMasters.io 教學模擬腳本啟動]");

    // 模擬玩家與敵人資料
    const player = {
        x: 100,
        y: 100,
        speed: 2,
        attackRange: 10,
        kills: 0,
        multiplier: 1
    };

    let killStreak = 0;
    let lastKillTime = Date.now();

    // 隨機生成敵人
    let enemies = Array.from({ length: 5 }, (_, i) => ({
        id: i + 1,
        x: Math.random() * 200 + 50,
        y: Math.random() * 200 + 50,
        hp: 30
    }));

    // 自訂 UI:顯示擊殺與倍率
    const uiBox = document.createElement('div');
    uiBox.style.position = 'fixed';
    uiBox.style.top = '10px';
    uiBox.style.right = '10px';
    uiBox.style.backgroundColor = 'rgba(0, 0, 0, 0.7)';
    uiBox.style.color = 'lime';
    uiBox.style.padding = '10px';
    uiBox.style.fontFamily = 'monospace';
    uiBox.style.zIndex = 9999;
    uiBox.innerHTML = `擊殺數: 0<br>倍率: x1`;
    document.body.appendChild(uiBox);

    // 距離計算
    function getDistance(a, b) {
        return Math.hypot(a.x - b.x, a.y - b.y);
    }

    // 找到最近敵人
    function getClosestEnemy() {
        let closest = null;
        let minDist = Infinity;
        enemies.forEach(enemy => {
            const dist = getDistance(player, enemy);
            if (enemy.hp > 0 && dist < minDist) {
                closest = enemy;
                minDist = dist;
            }
        });
        return closest;
    }

    // 模擬攻擊敵人
    function attackEnemy(enemy) {
        if (!enemy) return;

        const dist = getDistance(player, enemy);
        if (dist <= player.attackRange) {
            enemy.hp -= 10;
            console.log(`⚔️ 攻擊敵人 ${enemy.id},剩餘 HP: ${enemy.hp}`);

            if (enemy.hp <= 0) {
                const now = Date.now();

                // 殺敵連擊倍率計算
                if (now - lastKillTime < 3000) {
                    killStreak += 1;
                    player.multiplier = Math.min(1 + killStreak, 5); // 最多 x5 倍
                } else {
                    killStreak = 1;
                    player.multiplier = 1;
                }

                lastKillTime = now;
                player.kills += 1;

                console.log(`💀 擊殺敵人 ${enemy.id}!總擊殺:${player.kills}`);
                updateUI();
            }
        }
    }

    // 移動靠近敵人
    function moveTo(enemy) {
        if (!enemy) return;
        const dx = enemy.x - player.x;
        const dy = enemy.y - player.y;
        const dist = Math.hypot(dx, dy);
        if (dist > player.attackRange) {
            player.x += (dx / dist) * player.speed;
            player.y += (dy / dist) * player.speed;
        }
    }

    // 更新 UI
    function updateUI() {
        uiBox.innerHTML = `擊殺數: ${player.kills}<br>倍率: x${player.multiplier}`;
    }

    // 主循環
    const loop = setInterval(() => {
        const target = getClosestEnemy();
        moveTo(target);
        attackEnemy(target);
    }, 300);

})();