include force amplifier, attack frequency and hit bonus in portal details
This commit is contained in:
parent
2d674e904a
commit
0bdaa2f5c3
@ -187,22 +187,32 @@ window.getPortalMiscDetails = function(guid,d) {
|
|||||||
|
|
||||||
var apGainText = getAttackApGainText(d,fieldCount,linkCount);
|
var apGainText = getAttackApGainText(d,fieldCount,linkCount);
|
||||||
|
|
||||||
|
var attackValues = getPortalAttackValues(d);
|
||||||
|
|
||||||
|
|
||||||
// collect and html-ify random data
|
// collect and html-ify random data
|
||||||
var randDetailsData = [];
|
|
||||||
if (true) { // or "if (d.owner) {" ...? but this makes the info panel look rather empty for unclaimed portals
|
|
||||||
// these pieces of data are only relevant when the portal is captured
|
|
||||||
randDetailsData.push (
|
|
||||||
playerText, getRangeText(d),
|
|
||||||
linksText, fieldsText,
|
|
||||||
getMitigationText(d,linkCount), getEnergyText(d)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
// and these have some use, even for uncaptured portals
|
var randDetailsData = [
|
||||||
randDetailsData.push (
|
// these pieces of data are only relevant when the portal is captured
|
||||||
apGainText, getHackDetailsText(d)
|
// maybe check if portal is captured and remove?
|
||||||
);
|
// But this makes the info panel look rather empty for unclaimed portals
|
||||||
|
playerText, getRangeText(d),
|
||||||
|
linksText, fieldsText,
|
||||||
|
getMitigationText(d,linkCount), getEnergyText(d),
|
||||||
|
// and these have some use, even for uncaptured portals
|
||||||
|
apGainText, getHackDetailsText(d),
|
||||||
|
];
|
||||||
|
|
||||||
|
if(attackValues.attack_frequency != 0)
|
||||||
|
randDetailsData.push([
|
||||||
|
'<span title="attack frequency" class="text-overflow-ellipsis">attack frequency</span>',
|
||||||
|
'×'+attackValues.attack_frequency]);
|
||||||
|
if(attackValues.hit_bonus != 0)
|
||||||
|
randDetailsData.push(['hit bonus', attackValues.hit_bonus+'%']);
|
||||||
|
if(attackValues.force_amplifier != 0)
|
||||||
|
randDetailsData.push([
|
||||||
|
'<span title="force amplifier" class="text-overflow-ellipsis">force amplifier</span>',
|
||||||
|
'×'+attackValues.force_amplifier]);
|
||||||
|
|
||||||
// artifact details
|
// artifact details
|
||||||
|
|
||||||
|
@ -107,14 +107,14 @@ window.getModDetails = function(d) {
|
|||||||
if (!mod.stats.hasOwnProperty(key)) continue;
|
if (!mod.stats.hasOwnProperty(key)) continue;
|
||||||
var val = mod.stats[key];
|
var val = mod.stats[key];
|
||||||
|
|
||||||
// if (key === 'REMOVAL_STICKINESS' && val == 0) continue; // stat on all mods recently - unknown meaning, not displayed in stock client
|
// if (key === 'REMOVAL_STICKINESS' && val == 0) continue; // stat on all mods recently - unknown meaning, not displayed in stock client
|
||||||
|
|
||||||
// special formatting for known mod stats, where the display of the raw value is less useful
|
// special formatting for known mod stats, where the display of the raw value is less useful
|
||||||
if (key === 'HACK_SPEED') val = (val/10000)+'%'; // 500000 = 50%
|
if (key === 'HACK_SPEED') val = (val/10000)+'%'; // 500000 = 50%
|
||||||
else if (key === 'FORCE_AMPLIFIER') val = (val/1000)+'x'; // 2000 = 2x
|
else if (key === 'HIT_BONUS') val = (val/10000)+'%'; // 300000 = 30%
|
||||||
else if (key === 'LINK_RANGE_MULTIPLIER') val = (val/1000)+'x' // 2000 = 2x
|
else if (key === 'ATTACK_FREQUENCY') val = (val/1000) +'x'; // 2000 = 2x
|
||||||
else if (key === 'HIT_BONUS') val = (val/10000)+'%'; // 2000 = 0.2% (although this seems pretty small to be useful?)
|
else if (key === 'FORCE_AMPLIFIER') val = (val/1000) +'x'; // 2000 = 2x
|
||||||
else if (key === 'ATTACK_FREQUENCY') val = (val/1000)+'x' // 2000 = 2x
|
else if (key === 'LINK_RANGE_MULTIPLIER') val = (val/1000) +'x'; // 2000 = 2x
|
||||||
// else display unmodified. correct for shield mitigation and multihack - unknown for future/other mods
|
// else display unmodified. correct for shield mitigation and multihack - unknown for future/other mods
|
||||||
|
|
||||||
modTooltip += '\n+' + val + ' ' + key.capitalize().replace(/_/g,' ');
|
modTooltip += '\n+' + val + ' ' + key.capitalize().replace(/_/g,' ');
|
||||||
|
@ -69,26 +69,22 @@ window.getPortalRange = function(d) {
|
|||||||
|
|
||||||
window.getLinkAmpRangeBoost = function(d) {
|
window.getLinkAmpRangeBoost = function(d) {
|
||||||
// additional range boost calculation
|
// additional range boost calculation
|
||||||
// (at the time of writing, only rare link amps have been seen in the wild, so there's a little guesswork at how
|
|
||||||
// the stats work and combine - jon 2013-06-26)
|
|
||||||
|
|
||||||
// link amps scale: first is full, second a quarter, the last two an eighth
|
// link amps scale: first is full, second a quarter, the last two an eighth
|
||||||
var scale = [1.0, 0.25, 0.125, 0.125];
|
var scale = [1.0, 0.25, 0.125, 0.125];
|
||||||
|
|
||||||
var boost = 0.0; // initial boost is 0.0 (i.e. no boost over standard range)
|
var boost = 0.0; // initial boost is 0.0 (i.e. no boost over standard range)
|
||||||
var count = 0;
|
|
||||||
|
|
||||||
var linkAmps = getPortalModsByType(d, 'LINK_AMPLIFIER');
|
var linkAmps = getPortalModsByType(d, 'LINK_AMPLIFIER');
|
||||||
|
|
||||||
$.each(linkAmps, function(ind, mod) {
|
linkAmps.forEach(function(mod, i) {
|
||||||
// link amp stat LINK_RANGE_MULTIPLIER is 2000 for rare, and gives 2x boost to the range
|
// link amp stat LINK_RANGE_MULTIPLIER is 2000 for rare, and gives 2x boost to the range
|
||||||
// and very-rare is 7000 and gives 7x the range
|
// and very-rare is 7000 and gives 7x the range
|
||||||
var baseMultiplier = mod.stats.LINK_RANGE_MULTIPLIER/1000;
|
var baseMultiplier = mod.stats.LINK_RANGE_MULTIPLIER/1000;
|
||||||
boost += baseMultiplier*scale[count];
|
boost += baseMultiplier*scale[i];
|
||||||
count++;
|
|
||||||
});
|
});
|
||||||
|
|
||||||
return (count > 0) ? boost : 1.0;
|
return (linkAmps.length > 0) ? boost : 1.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -316,3 +312,42 @@ window.getPortalSummaryData = function(d) {
|
|||||||
type: 'portal'
|
type: 'portal'
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
window.getPortalAttackValues = function(d) {
|
||||||
|
var forceamps = getPortalModsByType(d, 'FORCE_AMP');
|
||||||
|
var turrets = getPortalModsByType(d, 'TURRET');
|
||||||
|
|
||||||
|
// at the time of writing, only rare force amps and turrets have been seen in the wild, so there's a little guesswork
|
||||||
|
// at how the stats work and combine
|
||||||
|
// algorithm has been compied from getLinkAmpRangeBoost
|
||||||
|
// FIXME: only extract stats and put the calculation in a method to be used for link range, force amplifier and attack
|
||||||
|
// frequency
|
||||||
|
// note: scanner shows rounded values (adding a second FA shows: 2.5x+0.2x=2.8x, which should be 2.5x+0.25x=2.75x)
|
||||||
|
|
||||||
|
// amplifier scale: first is full, second a quarter, the last two an eighth
|
||||||
|
var scale = [1.0, 0.25, 0.125, 0.125];
|
||||||
|
|
||||||
|
var attackValues = {
|
||||||
|
hit_bonus: 0,
|
||||||
|
force_amplifier: 0,
|
||||||
|
attack_frequency: 0,
|
||||||
|
};
|
||||||
|
|
||||||
|
forceamps.forEach(function(mod, i) {
|
||||||
|
// force amp stat FORCE_AMPLIFIER is 2000 for rare, and gives 2x boost to the range
|
||||||
|
var baseMultiplier = mod.stats.FORCE_AMPLIFIER / 1000;
|
||||||
|
attackValues.force_amplifier += baseMultiplier * scale[i];
|
||||||
|
});
|
||||||
|
|
||||||
|
turrets.forEach(function(mod, i) {
|
||||||
|
// turret stat ATTACK_FREQUENCY is 2000 for rare, and gives 2x boost to the range
|
||||||
|
var baseMultiplier = mod.stats.ATTACK_FREQUENCY / 1000;
|
||||||
|
attackValues.attack_frequency += baseMultiplier * scale[i];
|
||||||
|
|
||||||
|
attackValues.hit_bonus += mod.stats.HIT_BONUS / 10000;
|
||||||
|
});
|
||||||
|
|
||||||
|
return attackValues;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user