8 hours, distance between tiles and tile occupiers ID.
Shooters now have a minimum distance they would like to move when selecting their movement target between salvos. If they cannot find an unoccupied tile that is beyond this distance, it will consider closer tiles before giving up.
To be able to do this, a function was written to find the distance in tiles between two tiles. It takes two tiles and repeatedly finds the adjacent tile most in line with the direction of the end tile until it has found the full path.
Added an actor variable to the Tile data called 'occupier' to store the ID of the object occupying the tile if there is one. To ensure that this data is constantly logged, all tile occupation is assigned through a generic even that takes center tile, occupied tiles and ID. This event is now called anywhere that objects were previously editing the occupied tiles list in their own manner.
New functionality added of clear tiles based on occupier. This is leveraged for recalculating the space taken up by FSJ after it topples.
Objects that pass their occupied zones to other objects now pass their ownership of these zone as well via a new event that changes the occupier ID of one passed object's tiles to another passed ID.