summaryrefslogtreecommitdiff
path: root/npc/maze0/config.txt
diff options
context:
space:
mode:
Diffstat (limited to 'npc/maze0/config.txt')
-rw-r--r--npc/maze0/config.txt128
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;
+}
+
+
+