summaryrefslogtreecommitdiff
path: root/npc
diff options
context:
space:
mode:
Diffstat (limited to 'npc')
-rw-r--r--npc/_import.txt16
-rw-r--r--npc/maze0/_import.txt3
-rw-r--r--npc/maze0/config.txt776
-rw-r--r--npc/maze1/_import.txt2
-rw-r--r--npc/maze10/_import.txt2
-rw-r--r--npc/maze11/_import.txt2
-rw-r--r--npc/maze12/_import.txt2
-rw-r--r--npc/maze13/_import.txt2
-rw-r--r--npc/maze14/_import.txt2
-rw-r--r--npc/maze15/_import.txt2
-rw-r--r--npc/maze2/_import.txt2
-rw-r--r--npc/maze3/_import.txt2
-rw-r--r--npc/maze4/_import.txt2
-rw-r--r--npc/maze5/_import.txt2
-rw-r--r--npc/maze6/_import.txt2
-rw-r--r--npc/maze7/_import.txt2
-rw-r--r--npc/maze8/_import.txt2
-rw-r--r--npc/maze9/_import.txt2
18 files changed, 0 insertions, 825 deletions
diff --git a/npc/_import.txt b/npc/_import.txt
index 15d640822..1bbae746d 100644
--- a/npc/_import.txt
+++ b/npc/_import.txt
@@ -237,22 +237,6 @@
@include "npc/boss/_import.txt"
@include "npc/botcheck/_import.txt"
@include "npc/guilds/_import.txt"
-@include "npc/maze0/_import.txt"
-@include "npc/maze1/_import.txt"
-@include "npc/maze10/_import.txt"
-@include "npc/maze11/_import.txt"
-@include "npc/maze12/_import.txt"
-@include "npc/maze13/_import.txt"
-@include "npc/maze14/_import.txt"
-@include "npc/maze15/_import.txt"
-@include "npc/maze2/_import.txt"
-@include "npc/maze3/_import.txt"
-@include "npc/maze4/_import.txt"
-@include "npc/maze5/_import.txt"
-@include "npc/maze6/_import.txt"
-@include "npc/maze7/_import.txt"
-@include "npc/maze8/_import.txt"
-@include "npc/maze9/_import.txt"
@include "npc/sec_pri/_import.txt"
@include "npc/soren-2/_import.txt"
@include "npc/soren/_import.txt"
diff --git a/npc/maze0/_import.txt b/npc/maze0/_import.txt
deleted file mode 100644
index 8bad6906c..000000000
--- a/npc/maze0/_import.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// Map maze0: Jesusalva's Trap
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-"npc/maze0/config.txt",
diff --git a/npc/maze0/config.txt b/npc/maze0/config.txt
deleted file mode 100644
index 601e333f4..000000000
--- a/npc/maze0/config.txt
+++ /dev/null
@@ -1,776 +0,0 @@
-// TMW2 Scripts
-// Author:
-// Jesusalva
-// Description:
-// Maze generation script (Protip: (30,30) is ALWAYS reachable - for @warp)
-// 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} or {X_Y_ID}
-
-/////////////////////////////////////////////////////////////////////////////////
-// MazeVar(x,y,param)
-function script MazeVar {
- return "MAZE_"+getarg(0)+"_"+getarg(1)+getarg(2, "");
-}
-
-/////////////////////////////////////////////////////////////////////////////////
-// SetMazeCon(Maze, north, west, east, south)
-function script SetMazeCon {
- setd(getarg(0)+"$["+MAZENORTH+"]", getarg(1));
- setd(getarg(0)+"$["+MAZE_WEST+"]", getarg(2));
- setd(getarg(0)+"$["+MAZE_EAST+"]", getarg(3));
- setd(getarg(0)+"$["+MAZESOUTH+"]", getarg(4));
- return;
-}
-
-/////////////////////////////////////////////////////////////////////////////////
-// UpdateMazeCon(Maze, x, y)
-function script UpdateMazeCon {
- if (getd(getarg(0)+"$["+MAZENORTH+"]") != "WALL")
- setd(getarg(0)+"$["+MAZENORTH+"]", str(getarg(1))+"_"+str(getarg(2)-1));
-
- if (getd(getarg(0)+"$["+MAZE_WEST+"]") != "WALL")
- setd(getarg(0)+"$["+MAZE_WEST+"]", str(getarg(1)-1)+"_"+str(getarg(2)));
-
- if (getd(getarg(0)+"$["+MAZE_EAST+"]") != "WALL")
- setd(getarg(0)+"$["+MAZE_EAST+"]", str(getarg(1)+1)+"_"+str(getarg(2)));
-
- if (getd(getarg(0)+"$["+MAZESOUTH+"]") != "WALL")
- setd(getarg(0)+"$["+MAZESOUTH+"]", str(getarg(1))+"_"+str(getarg(2)+1));
- return;
-}
-
-/////////////////////////////////////////////////////////////////////////////////
-// FindMazeTypeByCon(Maze)
-function script FindMazeTypeByCon {
- .@n=false;.@s=false;.@w=false;.@e=false;
- if (getd(getarg(0)+"$["+MAZENORTH+"]") != "WALL")
- .@n=true;
-
- if (getd(getarg(0)+"$["+MAZE_WEST+"]") != "WALL")
- .@w=true;
-
- if (getd(getarg(0)+"$["+MAZE_EAST+"]") != "WALL")
- .@e=true;
-
- if (getd(getarg(0)+"$["+MAZESOUTH+"]") != "WALL")
- .@s=true;
-
- if (.@n && .@w && .@e && .@s)
- return MAZEMAPTYPE_CROSS;
- else if (.@n && .@w && .@s)
- return MAZEMAPTYPE_TNWS;
- else if (.@n && .@e && .@s)
- return MAZEMAPTYPE_TNES;
- else if (.@w && .@e && .@n)
- return MAZEMAPTYPE_TEWN;
- else if (.@w && .@e && .@s)
- return MAZEMAPTYPE_TWES;
- else if (.@n && .@w)
- return MAZEMAPTYPE_CURVENW;
- else if (.@n && .@e)
- return MAZEMAPTYPE_CURVENE;
- else if (.@s && .@w)
- return MAZEMAPTYPE_CURVESW;
- else if (.@s && .@w)
- return MAZEMAPTYPE_CURVESE;
- else if (.@n && .@s)
- return MAZEMAPTYPE_LINENS;
- else if (.@w && .@e)
- return MAZEMAPTYPE_LINEWE;
- else if (.@s)
- return MAZEMAPTYPE_DEADS;
- else if (.@w)
- return MAZEMAPTYPE_DEADW;
- else if (.@n)
- return MAZEMAPTYPE_DEADN;
- else if (.@e)
- return MAZEMAPTYPE_DEADE;
- else
- return MAZEMAPTYPE_NULL;
-
- return -1;
-}
-
-/////////////////////////////////////////////////////////////////////////////////
-/////////////////////////////////////////////////////////////////////////////////
-/////////////////////////////////////////////////////////////////////////////////
-// ParseMaze(mapType, x, y)
-function script ParseMaze {
- .@t=getarg(0);
- .@x=getarg(1);
- .@y=getarg(2);
-
- /*
- // Prepare .@sim, the simulator array
- copyarray(.@sim,
- getd(MazeVar(.@x, .@y, "_ALLOWEDTYPES")),
- getarraysize(getd(MazeVar(.@x, .@y, "_ALLOWEDTYPES"))));
- */
-
- // Setup the maze connectors
- .@v$=MazeVar(.@x, .@y);
- switch (.@t) {
- case MAZEMAPTYPE_NULL:
- SetMazeCon(.@v$, "WALL", "WALL", "WALL", "WALL");
- // It's a fallback
- Exception("ERROR IN PARSER, FALLBACK", RB_DEBUGMES|RB_IRCBROADCAST);
- return true;
- break;
-
- // N W E S
- case MAZEMAPTYPE_DEADS:
- SetMazeCon(.@v$, "WALL", "WALL", "WALL", "");
- break;
- case MAZEMAPTYPE_DEADW:
- SetMazeCon(.@v$, "WALL", "", "WALL", "WALL");
- break;
- case MAZEMAPTYPE_DEADN:
- SetMazeCon(.@v$, "", "WALL", "WALL", "WALL");
- break;
- case MAZEMAPTYPE_DEADE:
- SetMazeCon(.@v$, "WALL", "WALL", "", "WALL");
- break;
-
- // N W E S
- case MAZEMAPTYPE_CURVENW:
- SetMazeCon(.@v$, "", "", "WALL", "WALL");
- break;
- case MAZEMAPTYPE_CURVENE:
- SetMazeCon(.@v$, "", "WALL", "", "WALL");
- break;
- case MAZEMAPTYPE_CURVESW:
- SetMazeCon(.@v$, "WALL", "", "WALL", "");
- break;
- case MAZEMAPTYPE_CURVESE:
- SetMazeCon(.@v$, "WALL", "WALL", "", "");
- break;
-
- // N W E S
- case MAZEMAPTYPE_TNWS:
- SetMazeCon(.@v$, "", "", "WALL", "");
- break;
- case MAZEMAPTYPE_TNES:
- SetMazeCon(.@v$, "", "WALL", "", "");
- break;
- case MAZEMAPTYPE_TWEN:
- SetMazeCon(.@v$, "", "", "", "WALL");
- break;
- case MAZEMAPTYPE_TWES:
- SetMazeCon(.@v$, "WALL", "", "", "");
- break;
-
- // N W E S
- case MAZEMAPTYPE_LINENS:
- SetMazeCon(.@v$, "", "WALL", "WALL", "");
- break;
- case MAZEMAPTYPE_LINEWE:
- SetMazeCon(.@v$, "WALL", "", "", "WALL");
- break;
-
- // N W E S
- case MAZEMAPTYPE_CROSS:
- SetMazeCon(.@v$, "", "", "", "");
- break;
- }
-
- // Now that connectors are set, we do simulations
- /*
- debugmes "(%d, %d) found %s (ID %d)", .@x, .@y, getd(MazeVar(.@x, .@y, "$["+MAZENORTH+"]")), getd(MazeVar(.@x, .@y, "_ID"));
-
- debugmes "(%d, %d) is with north %s (ID %d)", .@x, .@y, getd(MazeVar(.@x, .@y, "$["+MAZENORTH+"]")), getd(MazeVar(.@x, .@y, "_ID"));
- debugmes ".@v$ is %s", .@v$;
- debugmes ".@v$[NORTH] is %s", getd(.@v$+"$["+MAZENORTH+"]");
- */
-
- //////////////////////////
- // Way north
- if (getd(.@v$+"$["+MAZENORTH+"]") != "WALL") {
- // Does north map accept this?
- //debugmes "(%d, %d) is worth proccessing in NORTH", .@x, .@y;
-
- // Case 1: We're in the edge
- if (.@y == 0)
- return false;
-
- // Case 2: South direction thinks it is a wall
- if (getd(MazeVar(.@x, .@y-1, "$["+MAZESOUTH+"]")) == "WALL")
- return false;
-
- //debugmes "(%d, %d) found %s (ID %d)", .@x, .@y, getd(MazeVar(.@x, .@y-1, "$["+MAZESOUTH+"]")), getd(MazeVar(.@x, .@y-1, "_ID"));
- // Okay, this is a valid movement, we continue
- } else {
- // Case 1: We're in the edge
- if (.@y != 0) {
- // Case 2: South direction thinks it is a wall
- if (getd(MazeVar(.@x, .@y-1, "$["+MAZESOUTH+"]")) != "WALL")
- return false;
- }
- }
-
- //////////////////////////
- // Way west
- if (getd(.@v$+"$["+MAZE_WEST+"]") != "WALL") {
- // Does west map accept this?
-
- // Case 1: We're in the edge
- if (.@x == 0)
- return false;
-
- // Case 2: West direction thinks it is a wall
- if (getd(MazeVar(.@x-1, .@y, "$["+MAZE_EAST+"]")) == "WALL")
- return false;
-
- // Okay, this is a valid movement, we continue
- } else {
- // Case 1: We're in the edge
- if (.@x != 0) {
- // Case 2: West direction thinks it is a wall
- if (getd(MazeVar(.@x-1, .@y, "$["+MAZE_EAST+"]")) != "WALL")
- return false;
- }
- }
-
- //////////////////////////
- // Way down
- if (getd(.@v$+"$["+MAZESOUTH+"]") != "WALL") {
- // Can we do this?
-
- // Case 1: We're in the edge
- if (.@y == MAZE_MY-1)
- return false;
-
- // Case 2: Down direction is invalid?
- // TODO
-
- // Okay, this is a valid movement, we continue
- }
-
- //////////////////////////
- // Way east
- if (getd(.@v$+"$["+MAZE_EAST+"]") != "WALL") {
- // Can we do this?
-
- // Case 1: We're in the edge
- if (.@x == MAZE_MX-1)
- return false;
-
- // Case 2: Right direction is invalid?
- // TODO
-
- // Okay, this is a valid movement, we continue
- }
-
- // All checks passed!
- UpdateMazeCon(.@v$, .@x, .@y);
- return true;
-}
-
-/////////////////////////////////////////////////////////////////////////////////
-/////////////////////////////////////////////////////////////////////////////////
-/////////////////////////////////////////////////////////////////////////////////
-// MazeFix() → Breaks islands at cost of randomness
-// runs after ParseMaze. By now, maze structure is set and working
-function script MazeFix {
- // FIXME: BROKEN
- if (!$@GM_OVERRIDE)
- return;
-
- .@x=0; .@y=0;
- debugmes "(%d, %d)", MAZE_MX, MAZE_MY;
- while (.@x < MAZE_MX) {
- // For every cell:
- while (.@y < MAZE_MY) {
- .@v$=MazeVar(.@x, .@y); // Our ID
- .@skip=false;
-
- // It need to have either a way east, or a way south
- if (getd(.@v$+"$["+MAZE_EAST+"]") != "WALL")
- .@skip=true;
- if (getd(.@v$+"$["+MAZESOUTH+"]") != "WALL")
- .@skip=true;
-
- // Finally skip
- if (.@skip) {
- .@y++;
- continue;
- }
-
- .@dirns=any(true, false);
-
- // If it doesn't, but is an edge, so we cannot enforce both rules
- // Do note (x,y) only goes to (MX-1, MY-1) because index
- if (.@x >= MAZE_MX-1 || .@y >= MAZE_MY-1)
- .@skip=true;
-
- // Finally skip
- if (.@skip) {
- // End of X axis (row)
- if (.@x >= MAZE_MX-1) {
- .@x1=0; .@al=true;
- while (.@x1 < .@x) {
- .@vi=MazeVar(.@x1, .@y);
- // There's a wall somewhere
- if (getd(.@v$+"$["+MAZE_EAST+"]") == "WALL") {
- .@al=false;
- break;
- }
- .@x1++;
- }
- // There's no walls, so we need safeties
- if (.@al) {
- // Could pick a random place, but...
- .@skip=false; .@dirns=true;
- }
- // End of Y axis (column)
- } else {
- .@y1=0; .@al=true;
- while (.@y1 < .@y) {
- .@vi=MazeVar(.@x, .@y1);
- // There's a wall somewhere
- if (getd(.@v$+"$["+MAZESOUTH+"]") == "WALL") {
- .@al=false;
- break;
- }
- .@y1++;
- }
- // There's no walls, so we need safeties
- if (.@al) {
- // Could pick a random place, but...
- .@skip=false; .@dirns=false;
- }
- }
- }
-
- // All fine, continue to next row
- if (.@skip) {
- .@y++;
- continue;
- }
-
- debugmes "(%d, %d) editing from %d", .@x, .@y, getd(.@v$+"_ID");
-
- // At least one of those paths must be open
- if (.@dirns) {
- // Force the opening to south
- .@v2$=MazeVar(.@x, .@y+1);
- setd(.@v$+"$["+MAZESOUTH+"]", str(.@x)+"_"+str(.@y+1));
- setd(.@v2$+"$["+MAZENORTH+"]", str(.@x)+"_"+str(.@y));
- debugmes "Edited NS axis: %s -> %s", .@v$, .@v2$;
- } else {
- // Force the opening to east
- .@v2$=MazeVar(.@x+1, .@y);
- setd(.@v$+"$["+MAZE_EAST+"]", str(.@x+1)+"_"+str(.@y));
- setd(.@v2$+"$["+MAZE_WEST+"]", str(.@x)+"_"+str(.@y));
- debugmes "Edited WE axis: %s -> %s", .@v$, .@v2$;
- }
- // Fix type
- setd(.@v$+"_ID", FindMazeTypeByCon(.@v$));
- setd(.@v2$+"_ID", FindMazeTypeByCon(.@v2$));
-
- // End the fix loop
- .@y++;
- debugmes "(%d, %d)", .@x, .@y;
- }
- .@x++;
- .@y=0;
- debugmes "(%d, %d)", .@x, .@y;
- }
- debugmes "(%d, %d)", .@x, .@y;
- return;
-}
-
-/////////////////////////////////////////////////////////////////////////////////
-/////////////////////////////////////////////////////////////////////////////////
-/////////////////////////////////////////////////////////////////////////////////
-// GenerateMaze(width, height) → Returns instance ID
-function script GenerateMaze {
- // Save maze configuration
- MAZE_MX=getarg(0);
- MAZE_MY=getarg(1);
- freeloop(true);
-
- // Delete previous maze data as relevant
- debugmes "[STATUS] Clean up";
- for (.@y=0; .@y < MAZE_MY; .@y++) {
- for (.@x=0; .@x < MAZE_MX; .@x++) {
- setd(MazeVar(.@x, .@y, "_ID"), 0);
- deletearray(getd(MazeVar(.@x, .@y, "_ALLOWEDTYPES")));
- deletearray(getd(MazeVar(.@x, .@y, "$")));
- }
- }
-
- ////////////////////
- // SETUP
- .@x=0; .@y=0;
- debugmes "[STATUS] Setup";
-
- // 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-1)
- 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-1) {
-
- // SW edge
- if (.@x == 0)
- setarray getd(MazeVar(.@x, .@y, "_ALLOWEDTYPES")),
- MAZEMAPTYPE_DEADN, MAZEMAPTYPE_DEADE,
- MAZEMAPTYPE_CURVENE;
- // SE edge
- else if (.@x == MAZE_MX-1)
- 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
- .@y++;
- }
- .@x++;
- .@y=0;
- }
-
-
- ////////////////////
- // BUILDING
- .@x=0; .@y=0;
- debugmes "[STATUS] Build";
-
- // For every line:
- while (.@y < MAZE_MY) {
- // For every cell:
- while (.@x < MAZE_MX) {
-
- //debugmes "[STATUS] [BUILD %d %d] Running...", .@x, .@y;
- // While connections weren't parsed
- do {
- // We start at (0,0) and go to (MAZE_MX,0)
- // Then we go to (0,MAZE_MY) until (MAZE_MX,MAZE_MY)
- // Shuffle the array
- array_shuffle(getd(MazeVar(.@x, .@y, "_ALLOWEDTYPES")));
- freeloop(true);
-
- if (getarraysize(getd(MazeVar(.@x, .@y, "_ALLOWEDTYPES"))))
- .@mztype=array_pop(getd(MazeVar(.@x, .@y, "_ALLOWEDTYPES")));
- else
- .@mztype=-1;
-
- // XXX: MAZEMAPTYPE_NULL is also a bug
- if (.@mztype <= 0) {
- Exception("ERROR IN MAZE BUILDER ("+.@x+","+.@y+") MTYPEXY", RB_DEBUGMES|RB_IRCBROADCAST);
- .@mztype=MAZEMAPTYPE_NULL;
- }
- setd(MazeVar(.@x, .@y, "_ID"), .@mztype);
-
- // Attempt to parse connections
- } while (!ParseMaze(.@mztype, .@x, .@y));
-
- // End the build loop
- .@x++;
- }
- .@y++;
- .@x=0;
- }
-
- // Lose some randomness to try to ensure every place is accessible
- debugmes "[STATUS] Island Fix";
- MazeFix();
-
- // Debug the statuses
- .@x=0; .@y=0;
- setarray .@debug$, ".",
- "↑", "→", "↓", "←",
- "⮠", "⮡", "⮢", "⮣",
- "ㅓ", "ㅏ", "ㅗ", "T",
- "|", "—", "𐘁\ ";
- debugmes "[STATUS] Finishing...";
- for (.@y=0; .@y < MAZE_MY; .@y++) {
- .@l$="";
- .@lb$="";
- freeloop(true);
- for (.@x=0; .@x < MAZE_MX; .@x++) {
- .@symbol$=getd(".@debug$["+getd(MazeVar(.@x, .@y, "_ID"))+"]");
- //debugmes "[rpts] %d %d = %d", .@x, .@y, getd(MazeVar(.@x, .@y, "_ID"));
- .@l$=.@l$+","+getd(MazeVar(.@x, .@y, "_ID"));
- .@lb$=.@lb$+" "+.@symbol$;
- }
- // Debug human readable format + a easy to grep-replace RNG
- // Pseudo-rng example: $@MAZES_12_4 = Random Maze 12, Row 4
- // On the example, replace VAR_X with "MAZES_12"
- debugmes "[REPORT-SA] setarray $@VAR_X_%d%s;", .@y, .@l$; // SetArray
- debugmes "[REPORT-HR] %s", .@lb$; // HumanReadable
- }
-
-
- freeloop(false);
- debugmes "[STATUS] Finished";
- return true;
-}
-
-/////////////////////////////////////////////////////////////////////////////////
-// WarpToMaze(dir)
-function script WarpToMaze {
- // Look up the destination map
- switch (getarg(0)) {
- case DIR_NORTH:
- .@dst$=getd(MazeVar(MAZE_X, MAZE_Y, "$["+MAZENORTH+"]"));
- .@x=29; .@y=38;
- break;
- case DIR_SOUTH:
- .@dst$=getd(MazeVar(MAZE_X, MAZE_Y, "$["+MAZESOUTH+"]"));
- .@x=29; .@y=21;
- break;
- case DIR_WEST:
- .@dst$=getd(MazeVar(MAZE_X, MAZE_Y, "$["+MAZE_WEST+"]"));
- .@x=38; .@y=31;
- break;
- case DIR_EAST:
- .@dst$=getd(MazeVar(MAZE_X, MAZE_Y, "$["+MAZE_EAST+"]"));
- .@x=21; .@y=31;
- break;
- default:
- return Exception("INVALID DIRECTION", RB_DEFAULT|RB_ISFATAL);
- }
-
- // Get MAPID
- .@id=getd("MAZE_"+.@dst$+"_ID");
- explode(.@crd$, .@dst$, "_");
- debugmes "%s = (%d,%d)", .@dst$, .@crd$[0], .@crd$[1];
- // Warp you based on MAPID and update your coordinates
- MAZE_X=atoi(.@crd$[0]);
- MAZE_Y=atoi(.@crd$[1]);
-
- switch (.@id) {
- // If a special map have different warp rules, specify here
- case MAZEMAPTYPE_NULL:
- .@x=30; .@y=30; break;
- }
-
- // We don't need MAZE_ID do we?
- warp "mz"+.@id+"@"+getcharid(0), .@x, .@y;
- return;
-}
-
-/////////////////////////////////////////////////////////////////////////////////
-// CreateMaze()
-function script CreateMaze {
- // Create the Maze instance or die trying
- .@inst = instance_create("Maze "+getcharid(0), getcharid(3), IOT_CHAR);
- if (.@inst < 0) end;
- MAZE_ID=.@inst;
- // Attach instance maps
- instance_attachmap("maze0", .@inst, false, "mz0@"+getcharid(0));
- instance_attachmap("maze1", .@inst, false, "mz1@"+getcharid(0));
- instance_attachmap("maze2", .@inst, false, "mz2@"+getcharid(0));
- instance_attachmap("maze3", .@inst, false, "mz3@"+getcharid(0));
- instance_attachmap("maze4", .@inst, false, "mz4@"+getcharid(0));
- instance_attachmap("maze5", .@inst, false, "mz5@"+getcharid(0));
- instance_attachmap("maze6", .@inst, false, "mz6@"+getcharid(0));
- instance_attachmap("maze7", .@inst, false, "mz7@"+getcharid(0));
- instance_attachmap("maze8", .@inst, false, "mz8@"+getcharid(0));
- instance_attachmap("maze9", .@inst, false, "mz9@"+getcharid(0));
- instance_attachmap("maze10", .@inst, false, "mz10@"+getcharid(0));
- instance_attachmap("maze11", .@inst, false, "mz11@"+getcharid(0));
- instance_attachmap("maze12", .@inst, false, "mz12@"+getcharid(0));
- instance_attachmap("maze13", .@inst, false, "mz13@"+getcharid(0));
- instance_attachmap("maze14", .@inst, false, "mz14@"+getcharid(0));
- instance_attachmap("maze15", .@inst, false, "mz15@"+getcharid(0));
- // Instance lasts one hour
- instance_set_timeout(3600, 3600, .@inst);
- instance_init(.@inst);
-
- debugmes "Maze instance created: %s", MAZE_ID;
- return .@inst;
-}
-
-// InitMaze(maze_x, maze_y, {renew=True})
-function script InitMaze {
- // Should we renew the instance?
- if (getarg(2, true))
- instance_set_timeout(3600, 3600, MAZE_ID);
-
- MAZE_X=getarg(0);
- MAZE_Y=getarg(1);
- .@id=getd(MazeVar(MAZE_X, MAZE_Y, "_ID"));
- warp "mz"+.@id+"@"+getcharid(0), 30, 30;
- dispbottom l("Good luck!");
- return;
-}
-
-// Warp NPCs
-maze1,29,39,0 script #MZSOUTH NPC_SUMMONING_CIRC,0,0,{
- end;
-OnTouch:
- WarpToMaze(DIR_SOUTH);
- end;
-}
-
-maze2,20,31,0 script #MZWEST NPC_SUMMONING_CIRC,0,0,{
- end;
-OnTouch:
- WarpToMaze(DIR_WEST);
- end;
-}
-
-maze3,29,20,0 script #MZNORTH NPC_SUMMONING_CIRC,0,0,{
- end;
-OnTouch:
- WarpToMaze(DIR_NORTH);
- end;
-}
-
-maze4,39,31,0 script #MZEAST NPC_SUMMONING_CIRC,0,0,{
- end;
-OnTouch:
- WarpToMaze(DIR_EAST);
- end;
-}
-
-maze5,29,20,0 duplicate(#MZNORTH) #MZ5N NPC_SUMMONING_CIRC,0,0
-maze5,20,31,0 duplicate(#MZWEST) #MZ5W NPC_SUMMONING_CIRC,0,0
-
-maze6,29,20,0 duplicate(#MZNORTH) #MZ6N NPC_SUMMONING_CIRC,0,0
-maze6,39,31,0 duplicate(#MZEAST) #MZ6E NPC_SUMMONING_CIRC,0,0
-
-maze7,29,39,0 duplicate(#MZSOUTH) #MZ7S NPC_SUMMONING_CIRC,0,0
-maze7,20,31,0 duplicate(#MZWEST) #MZ7W NPC_SUMMONING_CIRC,0,0
-
-maze8,29,39,0 duplicate(#MZSOUTH) #MZ8S NPC_SUMMONING_CIRC,0,0
-maze8,39,31,0 duplicate(#MZEAST) #MZ8E NPC_SUMMONING_CIRC,0,0
-
-maze9,29,20,0 duplicate(#MZNORTH) #MZ9N NPC_SUMMONING_CIRC,0,0
-maze9,20,31,0 duplicate(#MZWEST) #MZ9W NPC_SUMMONING_CIRC,0,0
-maze9,29,39,0 duplicate(#MZSOUTH) #MZ9S NPC_SUMMONING_CIRC,0,0
-
-maze10,29,20,0 duplicate(#MZNORTH) #MZ10N NPC_SUMMONING_CIRC,0,0
-maze10,39,31,0 duplicate(#MZEAST) #MZ10E NPC_SUMMONING_CIRC,0,0
-maze10,29,39,0 duplicate(#MZSOUTH) #MZ10S NPC_SUMMONING_CIRC,0,0
-
-maze11,20,31,0 duplicate(#MZWEST) #MZ11W NPC_SUMMONING_CIRC,0,0
-maze11,39,31,0 duplicate(#MZEAST) #MZ11E NPC_SUMMONING_CIRC,0,0
-maze11,29,20,0 duplicate(#MZNORTH) #MZ11N NPC_SUMMONING_CIRC,0,0
-
-maze12,20,31,0 duplicate(#MZWEST) #MZ12W NPC_SUMMONING_CIRC,0,0
-maze12,39,31,0 duplicate(#MZEAST) #MZ12E NPC_SUMMONING_CIRC,0,0
-maze12,29,39,0 duplicate(#MZSOUTH) #MZ12S NPC_SUMMONING_CIRC,0,0
-
-maze13,29,20,0 duplicate(#MZNORTH) #MZ13N NPC_SUMMONING_CIRC,0,0
-maze13,29,39,0 duplicate(#MZSOUTH) #MZ13S NPC_SUMMONING_CIRC,0,0
-
-maze14,20,31,0 duplicate(#MZWEST) #MZ14W NPC_SUMMONING_CIRC,0,0
-maze14,39,31,0 duplicate(#MZEAST) #MZ14E NPC_SUMMONING_CIRC,0,0
-
-maze15,29,20,0 duplicate(#MZNORTH) #MZ15N NPC_SUMMONING_CIRC,0,0
-maze15,20,31,0 duplicate(#MZWEST) #MZ15W NPC_SUMMONING_CIRC,0,0
-maze15,29,39,0 duplicate(#MZSOUTH) #MZ15S NPC_SUMMONING_CIRC,0,0
-maze15,39,31,0 duplicate(#MZEAST) #MZ15E NPC_SUMMONING_CIRC,0,0
-
-// Testing framework
-maze0,30,30,0 script #MazeMaster NPC_MONA,{
- /*
- function mazeGen;
- function parseConnections;
- */
- //GenerateMaze(7, 7, 0);
- select
- l("Playtesting"),
- l("RMG"),
- l("RMG+Playtest");
- mes "";
- .@x=5;.@y=5;
- if (@menu >= 2) {
- // Width
- mesf "Width (%d-25): ", max(1, @xvar);
- input .@x, max(1, @xvar), 25;
-
- // Height
- mesf "Height (%d-25): ", max(1, @yvar);
- input .@y, max(1, @yvar), 25;
-
- // Amount of copies
- mesf "N. Copies: ";
- input .@loop, 1, 100;
-
- // Prevent bugs
- @xvar=.@x; @yvar=.@y;
- }
-
- if (@menu == 2) {
- freeloop(true);
- for (.@i=0; .@i < .@loop; .@i++) {
- GenerateMaze(.@x, .@y);
- debugmes "";
- debugmes "";
- // Throw some entropy
- .@noname=rand2(.@loop*(1+.@i));
- freeloop(true);
- }
- freeloop(false);
- close;
- }
-
- GenerateMaze(.@x, .@y);
- CreateMaze();
- InitMaze(0, 0);
- end;
-}
-
-// Mapflags
-/*
-maze0 mapflag nowarpto
-maze1 mapflag nowarpto
-maze2 mapflag nowarpto
-maze3 mapflag nowarpto
-maze4 mapflag nowarpto
-maze5 mapflag nowarpto
-maze6 mapflag nowarpto
-maze7 mapflag nowarpto
-maze8 mapflag nowarpto
-maze9 mapflag nowarpto
-maze10 mapflag nowarpto
-maze11 mapflag nowarpto
-maze12 mapflag nowarpto
-maze13 mapflag nowarpto
-maze14 mapflag nowarpto
-maze15 mapflag nowarpto
-*/
-
diff --git a/npc/maze1/_import.txt b/npc/maze1/_import.txt
deleted file mode 100644
index 432077154..000000000
--- a/npc/maze1/_import.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-// Map maze1: Jesusalva's Trap
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
diff --git a/npc/maze10/_import.txt b/npc/maze10/_import.txt
deleted file mode 100644
index 63222b4b0..000000000
--- a/npc/maze10/_import.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-// Map maze10: Jesusalva's Trap
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
diff --git a/npc/maze11/_import.txt b/npc/maze11/_import.txt
deleted file mode 100644
index 11592e845..000000000
--- a/npc/maze11/_import.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-// Map maze11: Jesusalva's Trap
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
diff --git a/npc/maze12/_import.txt b/npc/maze12/_import.txt
deleted file mode 100644
index 08c1110b8..000000000
--- a/npc/maze12/_import.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-// Map maze12: Jesusalva's Trap
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
diff --git a/npc/maze13/_import.txt b/npc/maze13/_import.txt
deleted file mode 100644
index b7aaf0fe3..000000000
--- a/npc/maze13/_import.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-// Map maze13: Jesusalva's Trap
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
diff --git a/npc/maze14/_import.txt b/npc/maze14/_import.txt
deleted file mode 100644
index fd0a904b8..000000000
--- a/npc/maze14/_import.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-// Map maze14: Jesusalva's Trap
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
diff --git a/npc/maze15/_import.txt b/npc/maze15/_import.txt
deleted file mode 100644
index 5833ba17c..000000000
--- a/npc/maze15/_import.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-// Map maze15: Jesusalva's Trap
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
diff --git a/npc/maze2/_import.txt b/npc/maze2/_import.txt
deleted file mode 100644
index bae535704..000000000
--- a/npc/maze2/_import.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-// Map maze2: Jesusalva's Trap
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
diff --git a/npc/maze3/_import.txt b/npc/maze3/_import.txt
deleted file mode 100644
index 0b54276f5..000000000
--- a/npc/maze3/_import.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-// Map maze3: Jesusalva's Trap
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
diff --git a/npc/maze4/_import.txt b/npc/maze4/_import.txt
deleted file mode 100644
index acdfbcee2..000000000
--- a/npc/maze4/_import.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-// Map maze4: Jesusalva's Trap
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
diff --git a/npc/maze5/_import.txt b/npc/maze5/_import.txt
deleted file mode 100644
index 7649a951e..000000000
--- a/npc/maze5/_import.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-// Map maze5: Jesusalva's Trap
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
diff --git a/npc/maze6/_import.txt b/npc/maze6/_import.txt
deleted file mode 100644
index be1fd23a5..000000000
--- a/npc/maze6/_import.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-// Map maze6: Jesusalva's Trap
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
diff --git a/npc/maze7/_import.txt b/npc/maze7/_import.txt
deleted file mode 100644
index f73cd9310..000000000
--- a/npc/maze7/_import.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-// Map maze7: Jesusalva's Trap
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
diff --git a/npc/maze8/_import.txt b/npc/maze8/_import.txt
deleted file mode 100644
index 4bbc9eb09..000000000
--- a/npc/maze8/_import.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-// Map maze8: Jesusalva's Trap
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
diff --git a/npc/maze9/_import.txt b/npc/maze9/_import.txt
deleted file mode 100644
index abccc1d00..000000000
--- a/npc/maze9/_import.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-// Map maze9: Jesusalva's Trap
-// This file is generated automatically. All manually added changes will be removed when running the Converter.