function Canal::_GetUsedTiles(from, to, is_aqueduct) { local used_list = AIList(); local offset = AIMap.GetTileX(from) == AIMap.GetTileX(to) ? this._map_size_x : 1; local dir; if (offset == 1) { dir = 1; // Axis X } else if (offset == this._map_size_x) { dir = 2; // Axis Y } local ramp = 4; local head = 8; local complement = is_aqueduct ? head : (head | ramp); used_list.AddItem(from, dir | complement); used_list.AddItem(to, dir | complement); if (from > to) { local swap = from; from = to; to = swap; } if (is_aqueduct) { complement = ramp; } local tile_offset = from + offset; while (tile_offset != to) { used_list.AddItem(tile_offset, dir | complement); tile_offset += offset; } return used_list; }