Merge pull request #219 from Hollow011/patch-1
Create compute_AP_stats.user.js
This commit is contained in:
commit
b9443e1bfc
44
main.js
44
main.js
@ -181,27 +181,35 @@ window.NOMINATIM = 'http://nominatim.openstreetmap.org/search?format=json&limit=
|
|||||||
|
|
||||||
// INGRESS CONSTANTS /////////////////////////////////////////////////
|
// INGRESS CONSTANTS /////////////////////////////////////////////////
|
||||||
// http://decodeingress.me/2012/11/18/ingress-portal-levels-and-link-range/
|
// http://decodeingress.me/2012/11/18/ingress-portal-levels-and-link-range/
|
||||||
var RESO_NRG = [0, 1000, 1500, 2000, 2500, 3000, 4000, 5000, 6000];
|
window.RESO_NRG = [0, 1000, 1500, 2000, 2500, 3000, 4000, 5000, 6000];
|
||||||
var MAX_XM_PER_LEVEL = [0, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 10000];
|
window.MAX_XM_PER_LEVEL = [0, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 10000];
|
||||||
var MIN_AP_FOR_LEVEL = [0, 10000, 30000, 70000, 150000, 300000, 600000, 1200000];
|
window.MIN_AP_FOR_LEVEL = [0, 10000, 30000, 70000, 150000, 300000, 600000, 1200000];
|
||||||
var HACK_RANGE = 40; // in meters, max. distance from portal to be able to access it
|
window.HACK_RANGE = 40; // in meters, max. distance from portal to be able to access it
|
||||||
var OCTANTS = ['E', 'NE', 'N', 'NW', 'W', 'SW', 'S', 'SE'];
|
window.OCTANTS = ['E', 'NE', 'N', 'NW', 'W', 'SW', 'S', 'SE'];
|
||||||
var DESTROY_RESONATOR = 75; //AP for destroying portal
|
window.DESTROY_RESONATOR = 75; //AP for destroying portal
|
||||||
var DESTROY_LINK = 187; //AP for destroying link
|
window.DESTROY_LINK = 187; //AP for destroying link
|
||||||
var DESTROY_FIELD = 750; //AP for destroying field
|
window.DESTROY_FIELD = 750; //AP for destroying field
|
||||||
var CAPTURE_PORTAL = 500; //AP for capturing a portal
|
window.CAPTURE_PORTAL = 500; //AP for capturing a portal
|
||||||
var DEPLOY_RESONATOR = 125; //AP for deploying a resonator
|
window.DEPLOY_RESONATOR = 125; //AP for deploying a resonator
|
||||||
var COMPLETION_BONUS = 250; //AP for deploying all resonators on portal
|
window.COMPLETION_BONUS = 250; //AP for deploying all resonators on portal
|
||||||
|
|
||||||
// OTHER MORE-OR-LESS CONSTANTS //////////////////////////////////////
|
// OTHER MORE-OR-LESS CONSTANTS //////////////////////////////////////
|
||||||
var TEAM_NONE = 0, TEAM_RES = 1, TEAM_ENL = 2;
|
window.TEAM_NONE = 0;
|
||||||
var TEAM_TO_CSS = ['none', 'res', 'enl'];
|
window.TEAM_RES = 1;
|
||||||
var TYPE_UNKNOWN = 0, TYPE_PORTAL = 1, TYPE_LINK = 2, TYPE_FIELD = 3, TYPE_PLAYER = 4, TYPE_CHAT = 5, TYPE_RESONATOR = 6;
|
window.TEAM_ENL = 2;
|
||||||
|
window.TEAM_TO_CSS = ['none', 'res', 'enl'];
|
||||||
|
window.TYPE_UNKNOWN = 0;
|
||||||
|
window.TYPE_PORTAL = 1;
|
||||||
|
window.TYPE_LINK = 2;
|
||||||
|
window.TYPE_FIELD = 3;
|
||||||
|
window.TYPE_PLAYER = 4;
|
||||||
|
window.TYPE_CHAT = 5;
|
||||||
|
window.TYPE_RESONATOR = 6;
|
||||||
|
|
||||||
var SLOT_TO_LAT = [0, Math.sqrt(2)/2, 1, Math.sqrt(2)/2, 0, -Math.sqrt(2)/2, -1, -Math.sqrt(2)/2];
|
window.SLOT_TO_LAT = [0, Math.sqrt(2)/2, 1, Math.sqrt(2)/2, 0, -Math.sqrt(2)/2, -1, -Math.sqrt(2)/2];
|
||||||
var SLOT_TO_LNG = [1, Math.sqrt(2)/2, 0, -Math.sqrt(2)/2, -1, -Math.sqrt(2)/2, 0, Math.sqrt(2)/2];
|
window.SLOT_TO_LNG = [1, Math.sqrt(2)/2, 0, -Math.sqrt(2)/2, -1, -Math.sqrt(2)/2, 0, Math.sqrt(2)/2];
|
||||||
var EARTH_RADIUS=6378137;
|
window.EARTH_RADIUS=6378137;
|
||||||
var DEG2RAD = Math.PI / 180;
|
window.DEG2RAD = Math.PI / 180;
|
||||||
|
|
||||||
// STORAGE ///////////////////////////////////////////////////////////
|
// STORAGE ///////////////////////////////////////////////////////////
|
||||||
// global variables used for storage. Most likely READ ONLY. Proper
|
// global variables used for storage. Most likely READ ONLY. Proper
|
||||||
|
@ -15,7 +15,7 @@ Available Plugins
|
|||||||
- [**Render Limit Increase**](https://raw.github.com/breunigs/ingress-intel-total-conversion/gh-pages/plugins/render-limit-increase.user.js) increases render limits. Good for high density areas (e.g. London, UK) and faster PCs.
|
- [**Render Limit Increase**](https://raw.github.com/breunigs/ingress-intel-total-conversion/gh-pages/plugins/render-limit-increase.user.js) increases render limits. Good for high density areas (e.g. London, UK) and faster PCs.
|
||||||
- [**Resonator Display Zoom Level Decrease**](https://raw.github.com/breunigs/ingress-intel-total-conversion/gh-pages/plugins/resonator-display-zoom-level-decrease.user.js) Resonator start displaying earlier.
|
- [**Resonator Display Zoom Level Decrease**](https://raw.github.com/breunigs/ingress-intel-total-conversion/gh-pages/plugins/resonator-display-zoom-level-decrease.user.js) Resonator start displaying earlier.
|
||||||
- [**Player Tracker**](https://raw.github.com/breunigs/ingress-intel-total-conversion/gh-pages/plugins/player-tracker.user.js) Draws trails for user actions in the last hour. At the last known location there’s a tooltip that shows the data in a table. [View screenshot](http://breunigs.github.com/ingress-intel-total-conversion/screenshots/plugin_player_tracker.png). **REQUIRES IITC v0.7+**. 0.7 is not yet available. You need to build it yourself.
|
- [**Player Tracker**](https://raw.github.com/breunigs/ingress-intel-total-conversion/gh-pages/plugins/player-tracker.user.js) Draws trails for user actions in the last hour. At the last known location there’s a tooltip that shows the data in a table. [View screenshot](http://breunigs.github.com/ingress-intel-total-conversion/screenshots/plugin_player_tracker.png). **REQUIRES IITC v0.7+**. 0.7 is not yet available. You need to build it yourself.
|
||||||
|
- [**Compute AP Stats**](https://raw.github.com/breunigs/ingress-intel-total-conversion/gh-pages/plugins/compute-ap-stats.user.js) Shows the potential AP an agent could obtain by destroying and rebuilding all the portals in the current zoom area.
|
||||||
|
|
||||||
Hacking
|
Hacking
|
||||||
-------
|
-------
|
||||||
|
122
plugins/compute-ap-stats.user.js
Normal file
122
plugins/compute-ap-stats.user.js
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
// ==UserScript==
|
||||||
|
// @id iitc-plugin-compute-ap-stats@Hollow011
|
||||||
|
// @name iitc: Compute AP statistics
|
||||||
|
// @version 0.1
|
||||||
|
// @namespace https://github.com/breunigs/ingress-intel-total-conversion
|
||||||
|
// @updateURL https://raw.github.com/breunigs/ingress-intel-total-conversion/gh-pages/plugins/compute-ap-stats.user.js
|
||||||
|
// @downloadURL https://raw.github.com/breunigs/ingress-intel-total-conversion/gh-pages/plugins/compute-ap-stats.user.js
|
||||||
|
// @description Tries to determine overal AP stats for the current zoom
|
||||||
|
// @include http://www.ingress.com/intel*
|
||||||
|
// @match http://www.ingress.com/intel*
|
||||||
|
// ==/UserScript==
|
||||||
|
|
||||||
|
function wrapper() {
|
||||||
|
// ensure plugin framework is there, even if iitc is not yet loaded
|
||||||
|
if(typeof window.plugin !== 'function') window.plugin = function() {};
|
||||||
|
|
||||||
|
|
||||||
|
// PLUGIN START ////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
// use own namespace for plugin
|
||||||
|
window.plugin.compAPStats = function() {};
|
||||||
|
|
||||||
|
window.plugin.compAPStats.setupCallback = function() {
|
||||||
|
$('#toolbox').append('<a onclick="window.plugin.compAPStats.guess()">Compute AP Stats</a> ');
|
||||||
|
}
|
||||||
|
|
||||||
|
window.plugin.compAPStats.compAPStats = function() {
|
||||||
|
|
||||||
|
var totalAP_RES = 0;
|
||||||
|
var totalAP_ENL = 0;
|
||||||
|
|
||||||
|
var allResEdges = [];
|
||||||
|
var allResFields = [];
|
||||||
|
var allEnlEdges = [];
|
||||||
|
var allEnlFields = [];
|
||||||
|
|
||||||
|
|
||||||
|
// Grab every portal in the viewable area and compute individual AP stats
|
||||||
|
$.each(window.portals, function(ind, portal) {
|
||||||
|
var d = portal.options.details;
|
||||||
|
|
||||||
|
var portalStats = getAttackApGain(d);
|
||||||
|
var portalSum = portalStats.resoAp + portalStats.captureAp;
|
||||||
|
|
||||||
|
if (getTeam(d) === TEAM_ENL) {
|
||||||
|
totalAP_RES += portalSum;
|
||||||
|
|
||||||
|
$.each(d.portalV2.linkedEdges, function(ind, edge) {
|
||||||
|
if(!edge) return true;
|
||||||
|
allEnlEdges.push(edge.edgeGuid);
|
||||||
|
});
|
||||||
|
|
||||||
|
$.each(d.portalV2.linkedFields, function(ind, field) {
|
||||||
|
if(!field) return true;
|
||||||
|
allEnlFields.push(field);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else if (getTeam(d) === TEAM_RES) {
|
||||||
|
totalAP_ENL += portalSum;
|
||||||
|
|
||||||
|
$.each(d.portalV2.linkedEdges, function(ind, edge) {
|
||||||
|
if(!edge) return true;
|
||||||
|
allResEdges.push(edge.edgeGuid);
|
||||||
|
});
|
||||||
|
|
||||||
|
$.each(d.portalV2.linkedFields, function(ind, field) {
|
||||||
|
if(!field) return true;
|
||||||
|
allResFields.push(field);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
// it's a neutral portal, potential for both teams. by definition no fields or edges
|
||||||
|
totalAP_ENL += portalSum;
|
||||||
|
totalAP_RES += portalSum;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Compute team field AP
|
||||||
|
allResFields = uniqueArray(allResFields);
|
||||||
|
totalAP_ENL += (allResFields.length * DESTROY_FIELD);
|
||||||
|
allEnlFields = uniqueArray(allEnlFields);
|
||||||
|
totalAP_RES += (allEnlFields.length * DESTROY_FIELD);
|
||||||
|
|
||||||
|
// Compute team Link AP
|
||||||
|
allResEdges = uniqueArray(allResEdges);
|
||||||
|
totalAP_ENL += (allResEdges.length * DESTROY_LINK);
|
||||||
|
allEnlEdges = uniqueArray(allEnlEdges);
|
||||||
|
totalAP_RES += (allEnlEdges.length * DESTROY_LINK);
|
||||||
|
|
||||||
|
return [totalAP_RES, totalAP_ENL];
|
||||||
|
}
|
||||||
|
|
||||||
|
window.plugin.compAPStats.guess = function() {
|
||||||
|
var res = window.plugin.compAPStats.compAPStats();
|
||||||
|
var totalAP_RES = res[0];
|
||||||
|
var totalAP_ENL = res[1];
|
||||||
|
|
||||||
|
var s = 'Calculated AP gain potential:\n\n';
|
||||||
|
s += 'Available Resistance AP:\t' + digits(totalAP_RES) + '\n';
|
||||||
|
s += 'Available Enlightened AP:\t' + digits(totalAP_ENL) + '\n';
|
||||||
|
|
||||||
|
alert(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
var setup = function() {
|
||||||
|
window.plugin.compAPStats.setupCallback();
|
||||||
|
}
|
||||||
|
|
||||||
|
// PLUGIN END //////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
if(window.iitcLoaded && typeof setup === 'function') {
|
||||||
|
setup();
|
||||||
|
} else {
|
||||||
|
if(window.bootPlugins)
|
||||||
|
window.bootPlugins.push(setup);
|
||||||
|
else
|
||||||
|
window.bootPlugins = [setup];
|
||||||
|
}
|
||||||
|
} // wrapper end
|
||||||
|
// inject code into site context
|
||||||
|
var script = document.createElement('script');
|
||||||
|
script.appendChild(document.createTextNode('('+ wrapper +')();'));
|
||||||
|
(document.body || document.head || document.documentElement).appendChild(script);
|
Loading…
x
Reference in New Issue
Block a user