utility functions to
- get mods from portal details, filtered by type and sorted by strength - get mitigation values TODO: convert existing plugins to use these new functions
This commit is contained in:
parent
1f635f0e50
commit
a9c9d5ff41
@ -205,3 +205,74 @@ window.getPortalImageUrl = function(d) {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
window.getPortalModsByType = function(d, type) {
|
||||
var mods = [];
|
||||
|
||||
$.each(d.portalV2.linkedModArray || [], function(i,mod) {
|
||||
if (mod && mod.type == type) mods.push(mod);
|
||||
});
|
||||
|
||||
var sortKey = {
|
||||
RES_SHIELD: 'MITIGATION',
|
||||
FORCE_AMP: 'FORCE_AMPLIFIER',
|
||||
TURRET: 'HIT_BONUS', // and/or ATTACK_FREQUENCY??
|
||||
HEATSINK: 'HACK_SPEED',
|
||||
MULTIHACK: 'BURNOUT_INSULATION',
|
||||
LINK_AMPLIFIER: 'LINK_RANGE_MULTIPLIER'
|
||||
};
|
||||
|
||||
// prefer to sort mods by stat - so if stats change (as they have for shields and turrets) we still put the highest first
|
||||
if (sortKey[type]) {
|
||||
// we have a stat type to sort by
|
||||
var key = sortKey[type];
|
||||
|
||||
mods.sort (function(a,b) {
|
||||
return b.stats[key] - a.stats[key];
|
||||
});
|
||||
} else {
|
||||
// no known stat type - sort by rarity
|
||||
mods.sort (function(a,b) {
|
||||
// rarity values are COMMON, RARE and VERY_RARE. handy, as that's alphabetical order!
|
||||
if (a.rarity < b.rarity) return -1;
|
||||
if (a.rarity > b.rarity) return 1;
|
||||
return 0;
|
||||
});
|
||||
}
|
||||
|
||||
return mods;
|
||||
}
|
||||
|
||||
|
||||
|
||||
window.getPortalShieldMitigation = function(d) {
|
||||
var shields = getPortalModsByType(d, 'RES_SHIELD');
|
||||
|
||||
var mitigation = 0;
|
||||
$.each(shields, function(i,s) {
|
||||
mitigation += parseInt(s.stats.MITIGATION);
|
||||
});
|
||||
|
||||
return mitigation;
|
||||
}
|
||||
|
||||
window.getPortalLinksMitigation = function(d) {
|
||||
var links = (d.portalV2.linkedEdges||[]).length;
|
||||
var mitigation = Math.round(400/9*Math.atan(links/Math.E));
|
||||
return mitigation;
|
||||
}
|
||||
|
||||
window.getPortalMitigationDetails = function(d) {
|
||||
var mitigation = {
|
||||
shields: getPortalShieldMitigation(d),
|
||||
links: getPortalLinksMitigation(d)
|
||||
};
|
||||
|
||||
// mitigation is limited to 95% (as confirmed by Brandon Badger on G+)
|
||||
mitigation.total = Math.min(95, mitigation.shields+mitigation.links);
|
||||
|
||||
mitigation.excess = (mitigation.shields+mitigation.links) - mitigation.total;
|
||||
|
||||
return mitigation;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user