@getLine(GetMapSize 0 0 ) ->LineList EditAddUndo(0) Do (GetListCount(<-linelist) 0) SetTerrain(ToCell(<-linelist[I]) 15) Loop #TraceAllSp (<-LineList) # Bresenham diagonal line # http://ericw.ca/notes/bresenhams-line-algorithm-in-csharp.html :getLine ->z1 ->x1 ->z0 ->x0 CreateList ->line If (Abs(<-z1 <-z0 - ) Abs(<-x1 <-x0 -) GT ) ->steep (true) ->t (<-x0) # swap x0 and z0 ->x0 (<-z0) ->z0 (<-t) ->t (<-x1) # swap x1 and z1 ->x1 (<-z1) ->z1 (<-t) else ->steep (false) endIf if (<-x0 GT (<-x1)) ->swap (true) ->t (<-x0) # swap x0 and x1 ->x0 (<-x1) ->x1 (<-t) ->t (<-z0) # swap z0 and z1 ->z0 (<-z1) ->z1 (<-t) else ->swap (false) endIf ->dx (<-x1 - (<-x0)) ->dz (Abs(<-z1 - (<-z0))) ->error (<-dx / (2)) if (<-z0 <-z1 LT) ->zstep (1) else ->zstep (-1) endif ->z (<-z0) Do(<-x1 <-x0) If (<-swap) if (<-steep) PrependToList(<-line FromCell(<-z I)) else PrependToList(<-line FromCell(I <-z)) endif else if (<-steep) PushList(<-line FromCell(<-z I)) else PushList(<-line FromCell(I <-z)) endif endIf ->error (<-error - (<-dz)) if (<-error LT0) ->z (<-z + (<-zstep)) ->error (<-error + (<-dx)) endIf Loop <-line #return