Versions Compared
compared with
Key
- This line was added.
- This line was removed.
- Formatting was changed.
Excerpt |
---|
Returns an array of dangerous enemy objects near a specific location on the map. |
Code
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
const DEFAULT_THREAT_RANGE = 10; // default range (in tiles) for getThreatsNear() function // getThreatsNear(x,y[,range]) will return an array of dangerous enemy objects near x,y var getThreatsNear = (function() { var oldApproach = function(x,y,range) { range = range || DEFAULT_THREAT_RANGE; var enemies = getEnemyPlayerIDs(); var list = []; // build list of dangerous enemy objects enemies.forEach(function(enemy) { // use specific enums to reduce size of list list = list.concat(enumDroid(enemy,DROID_CYBORG)); list = list.concat(enumDroid(enemy,DROID_WEAPON)); list = list.concat(enumStruct(enemy,DEFENSE)); }); // filter to those within range list = list.filter(function(obj) { return (distBetweenTwoPoints(obj.x,obj.y,x,y) < range); }); return list; } var newApproach = function(x,y,range) { range = range || DEFAULT_THREAT_RANGE; // get list of all enemy objects within range var list = enumRange(x,y,range,ENEMIES); // filter to dangerous objects list = list.filter(function(obj) { switch (obj.type) { case DROID: return (obj.droidType == DROID_WEAPON || obj.droidType == DROID_CYBORG); case STRUCTURE: return (obj.stattype == DEFENCE); } return false; }); return list; } // return relevant function based on presence of enumRange function return (typeof enumRange !-= "undefined") ? newApproach : oldApproach; })(); |
Example
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
// quantify the danger level of a location based // on number of dangerous enemy objects nearby function dangerLevel(x,y,range) { return getThreatsNear(x,y,range).length; } // you could then use dangerLevel() function to work // out which enemy oil derrick is the safest to attack function safestEnemyDerrick() { var enemyDerricks = []; var enemies = getEnemyPlayerIDs(); var danger; // build list of enemy derricks... enemies.forEach(function(enemy) { enemyDerricks = enemyDerricks.concat(enumStruct(enemy,RESOURCE_EXTRACTOR)); }); // if enemy has none, return null... if (enemyDerricks.length == 0) return null; // find safest enemy derrick to attack... enemyDerricks.currentDanger = Number.MAX_VALUE; enemyDerricks.forEach(function(derrick) { danger = dangerLevel(derrick.x,derrick.y); if (danger < enemyDerricks.currentDanger) { enemyDerricks.currentDanger = danger; enemyDerricks.safestDerrick = derrick; } }); return enemyDerricks.safestDerrick; } |
Div | ||
---|---|---|
| ||
AvailabilityRequires:
|
Div | ||
---|---|---|
| ||
See alsoRelated articles:
|