; Первый проход, считываем число клеток воды
Полный цикл по всем уровням карты
Полный цикл по всем клеткам уровня
Если клетка — вода
Кол-во клеток воды += 1
Конец
Конец
Конец
!!SN:M-1/кол-во клеток воды/0/1; Создаём массив чисел по числу клеток воды (все 0), v1 = новый уникальный индекс слота
!!SN:W^water_list^/v1; сохранили индекс слота
слот = W^water_list^
i = 0
Полный цикл по всем уровням карты
Полный цикл по всем клеткам уровня
Если клетка — вода
УпакованныеКоординаты = z * 65536 + y * 256 + x
!!SN:Mслот/i/УпакованныеКоординаты;
i += 1
Конец
Конец
Конец
Пусть даны три водяные клетки на карте с координатами (5, 14, 0), (10, 7, 0), (27, 18, 1).
В конце выполнения кода для трёх водяных клеток на карте имеем массив из 3-х элементов.
[0 * 65536 + 14 * 256 + 5, 0 * 65536 + 7 * 256 + 10, 1 * 65536 + 18 * 256 + 27]
Для прохода по всем водным клеткам выполняется цикл
От i = 0 до !!SN:Mслот/?y1 выполнять
!!SN:Mслот/i/?УпакованныеКоординаты; получили координаты водной клетки
!!VRy4:SУпакованныеКоординаты:65536; получили z-координату
УпакованныеКоординаты -= y4 * 65536
!!VRy3:SУпакованныеКоординаты:256; получили y-координату
УпакованныеКоординаты -= y3 * 256
!!VRy2:SУпакованныеКоординаты; получили x-координату
; Проверить, нет ли сундука по y2/y3/y4
Конец
SN:M-1 выделить новый свободный отрицательный слот.