Alright, so it took me a bit to make this, but I had fun for an hour or so tongue
I made an array code (which also properly wraps around the edges!) that calculates the movement cost in a given diameter.

use the mouse position to pick a tile, and use the scrollwheel to increase/decrease the tile movement diameter.

have fun!

Code:
#include <acknex.h>
#include <default.c>

#define GRID_size 10
#define GRID_cellsize 32

var GridMoveSquares = 3; // stores size of movement diameter
var GridArray[GRID_size][GRID_size]; // stores size of grid

// visual debug representation variables
var current_row = 3;
var current_col = 1;

// function that resets every GRID value
function resetGrid() {
	var X_index = 0;
	var Y_index = 0;
	
	for(X_index=0; X_index<GRID_size; X_index++) {
		for(Y_index=0; Y_index<GRID_size; Y_index++) {
			GridArray[X_index][Y_index] = 0;
		}
	}
}

// function that visually represents the GRID data
function drawGridData() {
	var column_index = 0;
	var row_index = 0;
	
	for(column_index=0; column_index<GRID_size; column_index++) {
		for(row_index=0; row_index<GRID_size; row_index++) {
			if(GridArray[column_index][row_index] == 0) {
				draw_text(str_for_num(NULL, GridArray[column_index][row_index]), GRID_cellsize*column_index, GRID_cellsize*row_index, vector(255,255,255));
			} else {
				draw_text(str_for_num(NULL, GridArray[column_index][row_index]), GRID_cellsize*column_index, GRID_cellsize*row_index, vector(0,0,255));
			}
		}
	}
}

// actually calculate the cells that can be moved on
function setMoveGrid(var row, var col) {
	var column_index = 0;
	var row_index = 0;
	var clampedIndex;
	
	resetGrid(); // reset
	
	for(column_index=GridMoveSquares; column_index>=0; column_index--) {
		// fill right hand side of column
		clampedIndex = clamp(col+column_index, 0, GRID_size-1);
		GridArray[row][clampedIndex] = column_index;
		for(row_index=GridMoveSquares; row_index>=column_index; row_index--) {
			GridArray[clamp(row+(row_index-column_index), 0, GRID_size-1)][clampedIndex] = row_index;
			GridArray[clamp(row-(row_index-column_index), 0, GRID_size-1)][clampedIndex] = row_index;
		}
		
		// fill left hand side of column
		clampedIndex = clamp(col-column_index, 0, GRID_size-1);
		GridArray[row][clampedIndex] = column_index;
		for(row_index=GridMoveSquares; row_index>=column_index; row_index--) {
			GridArray[clamp(row+(row_index-column_index), 0, GRID_size-1)][clampedIndex] = row_index;
			GridArray[clamp(row-(row_index-column_index), 0, GRID_size-1)][clampedIndex] = row_index;
		}
	}
}

function getMouseInput() {
	current_row = clamp(integer(abs(mouse_pos.x) / GRID_cellsize), 0, GRID_size-1);
	current_col = clamp(integer(abs(mouse_pos.y) / GRID_cellsize), 0, GRID_size-1);
	GridMoveSquares += (mickey.z/120); GridMoveSquares = clamp(GridMoveSquares, 0, GRID_size);
}

function main() {
	mouse_mode = 4;
	resetGrid(); // reset GRID
	
	while(1) {
		getMouseInput();
		setMoveGrid(current_row,current_col); // calculate new GRID data
		
		drawGridData(); // debug draw grid
		wait(1);
	}
}




Formerly known as dennis_fantasy
Portfolio - http://www.designorhea.com/
Project - http://randomchance.cherrygames.org/