Other great resources: Official JS API docs, Scripting Forum
propulsionCanReach()
- Aubergine
Â
Syntax
var returnValue = propulsionCanReach(propulsion, x1, y1, x2, y2);
Parameters
Parameter | Type | Mandatory | Notes | Game version |
---|---|---|---|---|
propulsion | String | A string defining the propulsion id (see propulsion.txt or propulsion.ini) | 3.2 | |
x1 | Number | The x co-ordinate of the start position | 3.2 | |
y1 | Number | The y co-ordinate of the start position | 3.2 | |
x2 | Number | The x co-ordinate of the destination | 3.2 | |
y2 | Number | The y co-ordinate of the destination | 3.2 |
Return value
Value | Type | Notes | Game version |
---|---|---|---|
true | Boolean | The propulsion can travel between the two points (ignores player-build blockades) | 3.1 Beta 1 |
false | Boolean | The propulsion is not capable of travelling between the two points. | 3.1 Beta 1 |
<error> | Error | Invalid parameters or droid not found. | 3.1 Beta 1 |
Notes
The function ignores player built structures (tank traps, walls, etc) and features (trees, skyscrapers, etc). The assumption is that you'll blow them up on the way to your destination.
If you plan to scan all tiles on the map for both land and hover access, that would be as much as 131,072 iterations on a 256x256 map! And each check is doing path finding to determine the route that propulsion would take from A to B. And you could have up to 9 AIs (and even 10 if scavengers join the fun) doing the same thing at the same time.
So, if you plan to scan the whole map, do it incrementally using a timer and only process a few tiles at a time. Note: You don't need to change the start position (your base), you'd just be changing the destination.
Example
// get my start position var myPos = startPositions(playerData[me].position); Â // get player 2's start position var theirPos = startPositions(playerData[1].position); Â if ( propulsionCanReach("wheeled01", myPos.x, myPos.y, theirPos.x, theirPos.y) ) { // I can reach them with wheels, half-track, hover, track and vtol } else if ( propulsionCanReach("hover01", myPos.x, myPos.y, theirPos.x, theirPos.y) ) { // I can only reach them with hover and VTOL } else { // I can only reach them with VTOL (assuming VTOLs can get anywhere on the map) }
Availability 3.2+
Requires:
- Warzone 3.1 Beta 1 and above.
Contents
Jump to:
See also
Related articles:
- droidCanReach() – check if a specific droid can reach some destination from it's current position
- distBetweenTwoPoints() – calculate straight-line distance between two points on the map
Â