NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name faction armoury bonus filter
// @namespace torn.com
// @version 1.1
// @author Ahab [1735214]
// @license MIT
// @updateURL https://openuserjs.org/meta/Ahab/faction_armoury_bonus_filter.meta.js
// @match *www.torn.com/factions.php*
// @grant GM_addStyle
// @icon https://www.google.com/s2/favicons?sz=64&domain=torn.com
// @require https://gist.githubusercontent.com/BrockA/2625891/raw/9c97aa67ff9c5d56be34a55ad6c18a314e5eb548/waitForKeyElements.js
// ==/UserScript==
GM_addStyle(`
.bonusButton{
font-family: fjalla one,Arial,serif;
font-size: 14px;
text-align: center;
border-radius: 5px;
padding: 5px 10px;
cursor: pointer;
color: var(--btn-color);
text-shadow: var(--btn-text-shadow);
background: var(--btn-background);
border: var(--btn-border);
display: inline-block;
vertical-align: middle;
}
.bonusButton:hover{
background: var(--btn-hover-background);
}
`)
const bonusWeapons = {'Blindfire':'blindfire','Burn':'burn','Demoralized':'demoralized','Emasculate':'emasculate','Freeze':'freeze','Hazardous':'hazardous','Laceration':'laceration','Poisoned':'poisoned','Shock':'shock','Smash':'smash','Spray':'spray','Storage':'storage','Toxin':'toxin','Achilles':'achilles','Assassinate':'assassinate','Backstab':'backstab','Berserk':'berserk','Bleed':'bleed','Blindside':'blindside','Bloodlust':'bloodlust','Comeback':'comeback','Conserve':'conserve','Cripple':'cripple','Crusher':'crusher','Cupid':'cupid','Deadeye':'deadeye','Deadly':'deadly','Disarm':'disarm','Double-edged':'doubleedged','Double Tap':'fury','Empower':'empower','Eviscerate':'eviscerate','Execute':'execute','Expose':'expose','Finale':'finale','Focus':'focus','Frenzy':'frenzy','Fury':'fury','Grace':'grace','Home Run':'homerun','Irradiate':'irradiate','Motivation':'motivation','Paralyzed':'paralyzed','Parry':'parry','Penetrate':'penetrate','Plunder':'plunder','Powerful':'powerful','Proficience':'proficience','Puncture':'puncture','Quicken':'quicken','Rage':'rage','Revitalize':'revitalize','Roshambo':'roshambo','Slow':'slow','Smurf':'smurf','Specialist':'specialist','Stricken':'stricken','Stun':'stun','Suppress':'suppress','Sure Shot':'sureshot','Throttle':'throttle','Warlord':'warlord','Weaken':'weaken','Wind-up':'windup','Wither':'wither'}
const bonusArmours = {'Impenetrable':'bullets-protection','Impregnable':'melee-protection','Insurmountable':'quarter-life-damage-mitigation','Invulnerable':'negative-status_mitigation','Imperviable':'life-bonus','Immutable':'sentinel','Irrepressible':'vanguard','Impassable':'full-block'}
const listen = $(document).on('mouseup', '#bonus', function(event) {
if(selected == event.target.attributes[2].nodeValue){
$(event.target).css('background','')
selected = ""
buttonAction('same')
}else{
selected = event.target.attributes[2].nodeValue
$("button[id*='bonus']").filter(":not("+selected+")").css('background','')
$(event.target).css('background','var(--btn-hover-background)')
buttonAction()
}
})
var tempRow = $("<div class='bonusCont'></div>")
var selected = ""
function buttonAction(action){
if(action == 'same'){
if(window.location.href.includes('factions')){
$("li[class*='bonus'] :first-child").parent().parent().parent().show()
}else{
$("span[class='bonus-attachment-icons'] :first-child").parent().parent().parent().parent().parent().show()
}
}else{
if(window.location.href.includes('factions')){
$("li[class*='bonus'] :first-child").filter(":not('.bonus-attachment-"+selected+"')").parent().parent().parent().hide();
$("li[class*='bonus'] i[class*='bonus-attachment-"+selected+"']").parent().parent().parent().show();
}else{
$("span[class='bonus-attachment-icons'] :first-child").filter(":not('.bonus-attachment-"+selected+"')").parent().parent().parent().parent().parent().hide();
$("span[class='bonus-attachment-icons'] i[class*='bonus-attachment-"+selected+"']").parent().parent().parent().parent().parent().show();
}
}
}
function init(){
var target = ""
if(window.location.href.includes('factions')){
target = $('div[id*="faction-armoury-tabs"]')[0];
}else{
target = $('div[id*="auction-house-tabs"]')[0];
}
var config = { attributes: false, childList: true, characterData: false, subtree: true };
var tab = new MutationObserver(function(mutations) {
$.each(mutations, function(i,v){
if(mutations[i].target.className.includes('items60x30') && mutations[i].addedNodes.length > 1 || mutations[i].target.className.indexOf('items-list') > -1 && mutations[i].addedNodes.length > 1 && mutations[i].target.className.indexOf('time') == -1){
$("div[class*='bonusCont']").remove()
$(document).off('mouseup', listen);
load()
tab.disconnect();
}
})
})
tab.observe(target, config);
load()
}
function load(){
if($("div[class*='bonusCont']").length == 0 && window.location.href.includes('weapons')){
if(window.location.href.includes('factions')){
add(bonusWeapons)
}else{
$("div#types-tab-1 img[src*='/images/items']").load(function(){
$("div#types-tab-1 img[src*='/images/items']").off('load')
add(bonusWeapons)
}).each(function(){
if(this.complete) {
$(this).trigger('load');
}
});
}
}else if($("div[class*='bonusCont']").length == 0 && window.location.href.includes('armour') || $("div[class*='bonusCont']").length == 0 && window.location.href.includes('armor')){
if(window.location.href.includes('factions')){
add(bonusArmours)
}else{
$("div#types-tab-2 img[src*='/images/items']").load(function(){
$("div#types-tab-2 img[src*='/images/items']").off('load')
add(bonusArmours)
}).each(function(){
if(this.complete) {
$(this).trigger('load');
}
});
}
}
}
function add(itemCat){
tempRow = $("<div class='bonusCont'></div>")
$.each(Object.keys(itemCat).sort(), function(i,v){
if($("li[class*='bonus'] i[class*='bonus-attachment-"+itemCat[v]+"']").length > 0 || $("div[class*='iconsbonuses'] span[class*='bonus'] i[class*='bonus-attachment-"+itemCat[v]+"']").length > 0){
tempRow.append("<button id='bonus' class='bonusButton' name='"+itemCat[v]+"'>"+v+"</button>")
}
})
$(tempRow).insertAfter($("hr[class*='delimiter-999 m-top10']"))
if($("button[name*='"+selected+"']").length > 0){
$("button[name*='"+selected+"']").css('background','var(--btn-hover-background)')
buttonAction()
}
listen
}
if(window.location.href.includes('factions')){
waitForKeyElements("ul.item-list .last", init);
}else{
waitForKeyElements("div .pagination-l", init);
}