propulsionCanReach()

(info) Other great resources: Official JS API docs, Scripting Forum

propulsionCanReach()

Find out if a specific propulsion can travel between two points on the map...

 

Syntax

var returnValue = propulsionCanReach(propulsion, x1, y1, x2, y2);

Parameters

Parameter

Type

Mandatory

Notes

Game version

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

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) }