Skip to content

Instantly share code, notes, and snippets.

@cabron
Last active December 11, 2015 20:29
Show Gist options
  • Save cabron/4656106 to your computer and use it in GitHub Desktop.
Save cabron/4656106 to your computer and use it in GitHub Desktop.
ME3 Manifest Percentages and Character Builds
// ==UserScript==
// @name ME3 Manifest Percentages
// @namespace frostwyrm
// @include http://social.bioware.com/n7hq/home/inventory/?name=*&platform=*
// @include http://social.bioware.com/n7hq/home/characters/?name=*&platform=*
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js
// ==/UserScript==
var percentageize = function (type) {
var denom = 0;
var num = 0;
var totaldenom = 0;
var totalnum = 0;
$($('#' + type + '_content').children().get().reverse()).each(function(index, elem) {
if ($(elem).is("div.card")) {
var src = $($(elem).children().get()[2]).attr('src');
var frac = src.substring(src.lastIndexOf('/') + 1).split('.png')[0];
num += parseInt(frac.split('-')[1]);
denom += parseInt(frac.split('-')[0]);
}
else if ($(elem).is('h3')) {
var percentage = '';
if (num == denom) {
percentage = '100%';
}
else {
percentage = String((num / denom).toFixed(2)).substring(2) + '%';
}
$(elem).html($(elem).html() + ' (' + num + '/' + denom + ') (' + percentage + ')');
totalnum += num;
totaldenom += denom;
num = 0;
denom = 0;
}
});
var percentage = '';
if (totalnum == totaldenom) {
percentage = '100%';
}
else {
percentage = String((totalnum / totaldenom).toFixed(2)).substring(2) + '%';
}
$('#' + type + ' a span').html($('#' + type + ' a span').html() + ' (' + totalnum + '/' + totaldenom + ') (' + percentage + ')');
}
var classes = {
AdeptN7: 'Adept/NFury',
AdeptVolus: 'Adept/Volus',
AdeptKrogan: 'Adept/KroganShaman',
AdeptHumanMaleCerberus: 'Adept/ExCerberus',
AdeptAsariCommando: 'Adept/AsariJusticar',
AdeptDrell: 'Adept/Drell',
AdeptAsari: 'Adept/Asari',
AdeptBatarian: 'Adept/BatarianSlasher',
AdeptHumanFemale: 'Adept/Human',
AdeptHumanMale: 'Adept/Human',
SoldierVorcha: 'Soldier/Vorcha',
SoldierN7: 'Soldier/N7Destroyer',
SoldierHumanMale: 'Soldier/Human',
SoldierBatarian: 'Soldier/Batarian',
SoldierTurian: 'Soldier/Turian',
SoldierKrogan: 'Soldier/Krogan',
N7SoldierTurian: 'Soldier/TurianHavoc',
SoldierMQuarian: 'Soldier/QuarianMarksman',
SoldierGeth: 'Soldier/GethTrooper',
SoldierHumanFemale: 'Soldier/Human',
SoldierHumanMaleBF3: 'Soldier/Battlefield',
EngineerN7: 'Engineer/NDemolisher',
EngineerVolus: 'Engineer/Volus',
EngineerHumanMale: 'Engineer/Human',
EngineerGeth: 'Engineer/Geth',
EngineerHumanFemale: 'Engineer/Human',
EngineerSalarian: 'Engineer/Salarian',
EngineerQuarian: 'Engineer/Quarian',
EngineerVorcha: 'Engineer/Vorcha Hunter',
EngineerTurian: 'Engineer/TurianSaboteur',
EngineerQuarianMale: 'Engineer/QuarianMale',
SentinelN7: 'Sentinel/NPaladin',
SentinelVolus: 'Sentinel/VolusMercenary',
SentinelAsari: 'Sentinel/AsariValkyrie',
SentinelVorcha: 'Sentinel/Vorcha',
SentinelBatarian: 'Sentinel/Batarian',
SentinelTurian: 'Sentinel/Turian',
SentinelKrogan: 'Sentinel/Krogan',
SentinelHumanFemale: 'Sentinel/Human',
SentinelHumanMale: 'Sentinel/Human',
InfiltratorQuarianMale: 'Infiltrator/QuarianMale',
InfiltratorHumanMale: 'Infiltrator/Human',
InfiltratorGeth: 'Infiltrator/Geth',
InfiltratorHumanFemale: 'Infiltrator/Human',
InfiltratorSalarian: 'Infiltrator/Salarian',
InfiltratorAsari: 'Infiltrator/AsariHuntress',
InfiltratorDrell: 'Infiltrator/DrellAssassin',
InfiltratorN7: 'Infiltrator/NShadow',
N7InfiltratorTurian: 'Infiltrator/TurianGhost',
InfiltratorQuarian: 'Infiltrator/Quarian',
VanguardHumanMaleCerberus: 'Vanguard/ExCerberus',
VanguardN7: 'Vanguard/NSlayer',
VanguardHumanMale: 'Vanguard/Human',
VanguardKrogan: 'Vanguard/KroganBattlemaster',
VanguardDrell: 'Vanguard/Drell',
VanguardBatarian: 'Vanguard/BatarianBrawler',
VanguardVolus: 'Vanguard/VolusProtector',
VanguardHumanFemale: 'Vanguard/Human',
VanguardAsari: 'Vanguard/Asari',
}
function make_build(_, character) {
var char_class = character.id.slice(15);
if($('#'+char_class).hasClass('.mpDisable'))
return;
var powers = $(character).children('.statstree').map(function(i, tree) {
var active = $(tree).find('.poweritem').map(function(j, poweritem) { return $(poweritem).hasClass('poweractive'); });
if(active[7] || active[8]) {
return('KLMNOPQR'[(active[8] ? 1:0) + (active[6] ? 2:0) + (active[4] ? 4:0)]);
}
else if(active[5] || active[6]) {
return('GHIJ'[(active[6] ? 1:0) + (active[4] ? 2:0)]);
}
else if(active[3] || active[4]) {
return(active[3] ? 'E':'F');
}
else {
return('ABCD'[active[2] ? 3 : active[1] ? 2 : active[0] ? 1 : 0]);
}
})
var build_class = classes[char_class];
var build = powers.get().join('');
var href = 'http://narida.pytalhost.com/me3/classes/#'+build_class+'/'+build+'//////'
$(character).find('.briefinfo').append($('<a>Build link</a>').attr('href', href));
}
$(document).ready(function () {
if(location.pathname.indexOf('/characters') > -1) {
$(".characterStats").each(make_build);
}
else {
percentageize('weapons');
percentageize('weapon_mods');
percentageize('inventory_characters');
percentageize('gear');
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment