Check the score of MixBots!
当前为
// ==UserScript==
// @name MixMob MixBots Score
// @license MIT
// @namespace http://tampermonkey.net/
// @version 0.7
// @description Check the score of MixBots!
// @author ercalote
// @match https://magiceden.io/marketplace/mixbots*
// @match https://www.magiceden.io/marketplace/mixbots*
// @match https://magiceden.io/u/*
// @match https://www.magiceden.io/u/*
// @icon https://www.google.com/s2/favicons?domain=magiceden.io
// @grant GM_log
// @require http://code.jquery.com/jquery-latest.js
// ==/UserScript==
function findParentWithDataIndex(element) {
if (!element) return null;
if (element.getAttribute('data-index') !== null) {
return element;
}
return findParentWithDataIndex(element.parentElement);
}
function createParagraph(text, score) {
var paragraph = document.createElement('p');
paragraph.textContent = text + ': ' + score;
return paragraph;
}
(function() {
'use strict';
let addedDivs = new Set();
var injectedExtraTraits = false;
var minAcceleration = 4;
var minMaxSpeed = 4;
var minDurability = 4;
var minWillpower = 4;
var selectedFaction = 'All';
var selectionChanged = false;
var styles = `
table.tw-w-full tr {
height: 9rem;
}
`
var styleSheet = document.createElement("style")
styleSheet.innerText = styles
document.head.appendChild(styleSheet)
function addDivAfterImage(image) {
var parentDivWithDataIndex = findParentWithDataIndex(image);
var slug = (image.src.match(/SLUG/g) || []).length;
var huntr = (image.src.match(/HUNTR/g) || []).length;
var grnt = (image.src.match(/GRNT/g) || []).length;
var wzrd = (image.src.match(/WZRD/g) || []).length;
var lzrd = (image.src.match(/LZRD/g) || []).length;
var fink = (image.src.match(/FINK/g) || []).length;
var kng = (image.src.match(/KNG/g) || []).length;
var mnstr = (image.src.match(/MNSTR/g) || []).length;
var unique = (image.src.match(/Unique/g) || []).length;
var glitch = (image.src.match(/Glitch/g) || []).length;
var metal = (image.src.match(/Metal/g) || []).length;
var synth = (image.src.match(/Synth/g) || []).length;
var og = (image.src.match(/OG/g) || []).length;
var odd = (image.src.match(/Odd/g) || []).length;
var mixscore = unique * 10 + glitch * 10 + metal * 7 + synth * 5 + og * 2 + odd * 2;
var acceleration = 10 - slug + huntr + fink - kng;
var max_speed = 10 + slug - wzrd + lzrd - fink;
var durability = 10 - huntr + grnt + kng - mnstr;
var willpower = 10 - grnt + wzrd - lzrd + mnstr;
var factionMatch = image.src.match(/mixbots\/(.*?)_/);
var faction = factionMatch ? factionMatch[1] : null;
if (!addedDivs.has(image) && faction !== null) {
if (!parentDivWithDataIndex) {
parentDivWithDataIndex = image.parentElement.parentElement.parentElement.parentElement;
}
if (parentDivWithDataIndex) {
var firstChildDiv = parentDivWithDataIndex.firstElementChild;
if (firstChildDiv) {
var newDiv = document.createElement('div');
newDiv.appendChild(createParagraph('Faction', faction));
newDiv.appendChild(createParagraph('Acceleration', acceleration));
newDiv.appendChild(createParagraph('MaxSpeed', max_speed));
newDiv.appendChild(createParagraph('Durability', durability));
newDiv.appendChild(createParagraph('Willpower', willpower));
newDiv.appendChild(createParagraph('MixScore', mixscore));
firstChildDiv.lastElementChild.appendChild(newDiv);
}
} else {
$(parentDivWithDataIndex).hide();
}
addedDivs.add(image);
}
if (selectionChanged) {
if ((selectedFaction !== 'All' && selectedFaction !== faction) || acceleration < minAcceleration || max_speed < minMaxSpeed || durability < minDurability || willpower < minWillpower) {
$(parentDivWithDataIndex).hide();
} else {
$(parentDivWithDataIndex).show();
}
}
}
function processImages() {
if (!injectedExtraTraits) {
var faction = $(
'<div>' +
'<select id="faction" name="faction" style="margin-right:10px;">' +
'<option value="All" selected>All</option>' +
'<option value="Styler">Styler</option>' +
'<option value="Boff">Boff</option>' +
'<option value="Tek">Tek</option>' +
'</select><label for="faction">Faction</label></div>'
);
var acceleration = $(
'<div>' +
'<select id="minAcceleration" name="minAcceleration" style="margin-right:10px;">' +
'<option value="4" selected>4</option>' +
'<option value="5">5</option>' +
'<option value="6">6</option>' +
'<option value="7">7</option>' +
'<option value="8">8</option>' +
'<option value="9">9</option>' +
'<option value="10">10</option>' +
'<option value="11">11</option>' +
'<option value="12">12</option>' +
'<option value="13">13</option>' +
'<option value="14">14</option>' +
'<option value="15">15</option>' +
'<option value="16">16</option>' +
'</select><label for="minAcceleration">Min. Acceleration</label></div>'
);
var maxspeed = $(
'<div>' +
'<select id="minMaxSpeed" name="minMaxSpeed" style="margin-right:10px;">' +
'<option value="4" selected>4</option>' +
'<option value="5">5</option>' +
'<option value="6">6</option>' +
'<option value="7">7</option>' +
'<option value="8">8</option>' +
'<option value="9">9</option>' +
'<option value="10">10</option>' +
'<option value="11">11</option>' +
'<option value="12">12</option>' +
'<option value="13">13</option>' +
'<option value="14">14</option>' +
'<option value="15">15</option>' +
'<option value="16">16</option>' +
'</select><label for="minAcceleration">Min. MaxSpeed</label></div>'
);
var durability = $(
'<div>' +
'<select id="minDurability" name="minDurability" style="margin-right:10px;">' +
'<option value="4" selected>4</option>' +
'<option value="5">5</option>' +
'<option value="6">6</option>' +
'<option value="7">7</option>' +
'<option value="8">8</option>' +
'<option value="9">9</option>' +
'<option value="10">10</option>' +
'<option value="11">11</option>' +
'<option value="12">12</option>' +
'<option value="13">13</option>' +
'<option value="14">14</option>' +
'<option value="15">15</option>' +
'<option value="16">16</option>' +
'</select><label for="minDurability">Min. Durability:</label></div>'
);
var willpower = $(
'<div>' +
'<select id="minWillpower" name="minWillpower" style="margin-right:10px;">' +
'<option value="4" selected>4</option>' +
'<option value="5">5</option>' +
'<option value="6">6</option>' +
'<option value="7">7</option>' +
'<option value="8">8</option>' +
'<option value="9">9</option>' +
'<option value="10">10</option>' +
'<option value="11">11</option>' +
'<option value="12">12</option>' +
'<option value="13">13</option>' +
'<option value="14">14</option>' +
'<option value="15">15</option>' +
'<option value="16">16</option>' +
'</select><label for="minWillpower">Min. Willpower:</label></div>'
);
if ($("div[id*='panel-traits']").length > 0) {
$("div[id*='panel-traits']").first().parent().before(faction);
$("div[id*='panel-traits']").first().parent().before(acceleration);
$("div[id*='panel-traits']").first().parent().before(maxspeed);
$("div[id*='panel-traits']").first().parent().before(durability);
$("div[id*='panel-traits']").first().parent().before(willpower);
$(document).on('change', '#minAcceleration', function() {
minAcceleration = $(this).val();
selectionChanged = true;
});
$(document).on('change', '#minMaxSpeed', function() {
minMaxSpeed = $(this).val();
selectionChanged = true;
});
$(document).on('change', '#minDurability', function() {
minDurability = $(this).val();
selectionChanged = true;
});
$(document).on('change', '#minWillpower', function() {
minWillpower = $(this).val();
selectionChanged = true;
});
$(document).on('change', '#faction', function() {
selectedFaction = $(this).val();
selectionChanged = true;
});
injectedExtraTraits = true;
}
}
const images = document.querySelectorAll('img');
for (var i = 0; i < images.length; i++) {
if (images[i].src.includes('mixbot')) {
addDivAfterImage(images[i]);
}
}
selectionChanged = false;
}
setInterval(processImages, 200);
})();