您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
A few interface tweaks to improve your battling experience
当前为
// ==UserScript== // @name ET Battle Helper // @version 0.2 // @description A few interface tweaks to improve your battling experience // @author jimborino // @match http*://*.eternitytower.net/* // @run-at document-end // @namespace https://greasyfork.org/users/156118 // ==/UserScript== (function() { 'use strict'; // Set to false to disable option window.ETBattleHelper = { showEnemyTargets: true, showPlayerTargets: true, highlightExecuteRange: true, showEnemyPercentHealth: true, highlightOwnTarget: true }; // a few styles $("<style type='text/css'> .playerTarget img { border: 1px solid red !important; } #target { font-size: 14px; text-transform: capitalize; } </style>").appendTo("head"); // Enemy HP % and targets Meteor.connection._stream.on("message", function(json) { var message = JSON.parse(json); if(message.msg == "changed" && message.collection == "redis" && message.id.includes("battles-")) { var battleState = JSON.parse(message.fields.value); battleState.enemies.forEach(function(enemy) { var enemyTarget = getUnitById(enemy.target, battleState); if (enemyTarget !== undefined) { enemyTarget = enemyTarget.name; var enemyHealth = enemy.stats.health; var enemyHealthMax = enemy.stats.healthMax; var enemyHealthPercent = (enemyHealth / enemyHealthMax) * 100; var enemyImgEl = $("img#" + enemy.id); if(window.ETBattleHelper.highlightExecuteRange) { if(enemyHealthPercent < 30) { enemyImgEl.siblings(".progress.health-bar").css("border", "2px solid red"); } else { enemyImgEl.siblings(".progress.health-bar").css("border", "none"); } } if(window.ETBattleHelper.showEnemyPercentHealth) { var enemyPercentEl = enemyImgEl.siblings("div#percent"); if(enemyPercentEl.length > 0) { enemyPercentEl.html(enemyHealthPercent.toFixed(2) + "%"); } else { enemyPercentEl = $("<div id='percent'>" + enemyHealthPercent.toFixed(2) + "%</div>"); enemyPercentEl.insertBefore(enemyImgEl); } } if(window.ETBattleHelper.showEnemyTargets) { var enemyTargetEl = enemyImgEl.siblings("div#target"); if(enemyTargetEl.length > 0) { enemyTargetEl.html("( " + enemyTarget + " )"); } else { enemyTargetEl = $("<div id='target'>( " + enemyTarget + " )</div>"); enemyTargetEl.insertBefore(enemyImgEl); } } } }); battleState.units.forEach(function(unit) { var unitTarget = getUnitById(unit.target, battleState); var unitTargetId; if(unitTarget === undefined) { // player targets only change when the target is manually changed // for attacks after an enemy is dead, the target is always the first enemy if(battleState.enemies.length < 1) { // we receive an update when all enemies are dead return; } unitTargetId = battleState.enemies[0].id; unitTarget = battleState.enemies[0].name; } else { unitTargetId = unitTarget.id; unitTarget = unitTarget.name; } var unitImgEl = $("img#" + unit.id); if(window.ETBattleHelper.showPlayerTargets) { var unitTargetEl = unitImgEl.siblings("div#target"); if(unitTargetEl.length > 0) { unitTargetEl.html("( " + unitTarget + " )"); } else { unitTargetEl = $("<div id='target'>( " + unitTarget + " )</div>"); unitTargetEl.insertBefore(unitImgEl); } } if(window.ETBattleHelper.highlightOwnTarget) { $("img#" + unitTargetId).parent().addClass("playerTarget"); $("img#" + unitTargetId).parent() .parent() .siblings() .children() .removeClass("playerTarget"); } }); } }); // Recolor your damage splats var oldReceive = Meteor.connection._livedata_data; var userId = Meteor.userId(); Meteor.connection._livedata_data = function() { if(arguments[0].msg == "changed" && arguments[0].collection == "redis") { var battleState = JSON.parse(arguments[0].fields.value); battleState.tickEvents.forEach(function(tickEvent) { if(tickEvent.from == userId) tickEvent.customColor = "black"; }); arguments[0].fields.value = JSON.stringify(battleState); } var ret = oldReceive.apply(this, arguments); return ret; }; function getUnitById(unitId, battleState) { return battleState.units.concat(battleState.enemies).find(function (el) { if (el.id == unitId) return true; }); } })();