diff options
Diffstat (limited to 'npc/maze0/config.txt')
-rw-r--r-- | npc/maze0/config.txt | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/npc/maze0/config.txt b/npc/maze0/config.txt new file mode 100644 index 000000000..9b81fa7ed --- /dev/null +++ b/npc/maze0/config.txt @@ -0,0 +1,128 @@ +// TMW2 Scripts +// Author: +// Jesusalva +// Description: +// Maze generation script +// Based on https://wiki.themanaworld.org/index.php/Archive:Afterlife#maze_generation +// Begin script, instance is required. Maze is Saved to player data. +// Scopes: MAZE_ {ID, MX, MY} or {X_Y$} or {X_Y_ALLOWEDTYPES} + +// MazeVar(x,y,param) +function script MazeVar { + return "MAZE_"+getarg(0)+"_"+getarg(1)+getarg(2, ""); + end; +} + +// ParseMaze(instanceID, mapType) +function script ParseMaze { + end; +} + +// WarpToMaze(instanceID, x, y) +function script WarpToMaze { + end; +} + +// GenerateMaze(width, height, instanceID) +function script GenerateMaze { + // Save maze configuration + MAZE_ID=getarg(2); + MAZE_MX=getarg(0); + MAZE_MY=getarg(1); + + //////////////////// + // SETUP + .@x=0; .@y=0; + + // For every column: + while (.@x < MAZE_MX) { + // For every cell: + while (.@y < MAZE_MY) { + + // Case 1: Left column + if (.@y == 0) { + + // NW edge + if (.@x == 0) + setarray getd(MazeVar(.@x, .@y, "_ALLOWEDTYPES")), + MAZEMAPTYPE_DEADS, MAZEMAPTYPE_DEADE, + MAZEMAPTYPE_CURVESE; + // NE edge + else if (.@x == MAZE_MX) + setarray getd(MazeVar(.@x, .@y, "_ALLOWEDTYPES")), + MAZEMAPTYPE_DEADS, MAZEMAPTYPE_DEADW, + MAZEMAPTYPE_CURVESW; + // North wall + else + setarray getd(MazeVar(.@x, .@y, "_ALLOWEDTYPES")), + MAZEMAPTYPE_DEADS, MAZEMAPTYPE_DEADW, MAZEMAPTYPE_DEADE, + MAZEMAPTYPE_TWES, MAZEMAPTYPE_LINEWE, + MAZEMAPTYPE_CURVESE, MAZEMAPTYPE_CURVESW; + + + // Case 2: Right column + } else if (.@y == MAZE_MY) { + + // SW edge + if (.@x == 0) + setarray getd(MazeVar(.@x, .@y, "_ALLOWEDTYPES")), + MAZEMAPTYPE_DEADN, MAZEMAPTYPE_DEADE, + MAZEMAPTYPE_CURVENE; + // SE edge + else if (.@x == MAZE_MX) + setarray getd(MazeVar(.@x, .@y, "_ALLOWEDTYPES")), + MAZEMAPTYPE_DEADN, MAZEMAPTYPE_DEADW, + MAZEMAPTYPE_CURVENW; + // South wall + else + setarray getd(MazeVar(.@x, .@y, "_ALLOWEDTYPES")), + MAZEMAPTYPE_DEADN, MAZEMAPTYPE_DEADW, MAZEMAPTYPE_DEADE, + MAZEMAPTYPE_TWEN, MAZEMAPTYPE_LINEWE, + MAZEMAPTYPE_CURVENE, MAZEMAPTYPE_CURVENW; + + + // Case 3: Nothing in special + } else { + setarray getd(MazeVar(.@x, .@y, "_ALLOWEDTYPES")), + MAZEMAPTYPE_DEADN, MAZEMAPTYPE_DEADW, MAZEMAPTYPE_DEADE, MAZEMAPTYPE_DEADS, + MAZEMAPTYPE_CURVENW, MAZEMAPTYPE_CURVENE, MAZEMAPTYPE_CURVESW, MAZEMAPTYPE_CURVESE, + MAZEMAPTYPE_TNWS, MAZEMAPTYPE_TNES, MAZEMAPTYPE_TWEN, MAZEMAPTYPE_TWES, + MAZEMAPTYPE_LINEWE, MAZEMAPTYPE_LINENS, MAZEMAPTYPE_CROSS; + } + + + // End the setup loop + } + } + + + //////////////////// + // BUILDING + .@x=0; .@y=0; + + // For every line: + while (.@y < MAZE_MY) { + // For every cell: + while (.@x < MAZE_MX) { + + // End the build loop + } + } + end; +} + + +// ParseMaze(instanceID, mapType) +function script ParseMaze { + end; +} + +// One warp handler per maze map +maze0,30,30,0 script #MazeMaster NPC_HIDDEN,{ + function mazeGen; + function parseConnections; + end; +} + + + |