diff options
36 files changed, 5 insertions, 862 deletions
diff --git a/conf/map/maps.conf b/conf/map/maps.conf index 0b6f710bc..02dc29a0c 100644 --- a/conf/map/maps.conf +++ b/conf/map/maps.conf @@ -238,22 +238,6 @@ map_list: ( "boss", "botcheck", "guilds", - "maze0", - "maze1", - "maze10", - "maze11", - "maze12", - "maze13", - "maze14", - "maze15", - "maze2", - "maze3", - "maze4", - "maze5", - "maze6", - "maze7", - "maze8", - "maze9", "sec_pri", "soren-2", "soren", diff --git a/db/map_index.txt b/db/map_index.txt index 154e3a6b1..002148fb4 100644 --- a/db/map_index.txt +++ b/db/map_index.txt @@ -235,24 +235,8 @@ boss 235 botcheck 236 guilds 237 -maze0 238 -maze1 239 -maze10 240 -maze11 241 -maze12 242 -maze13 243 -maze14 244 -maze15 245 -maze2 246 -maze3 247 -maze4 248 -maze5 249 -maze6 250 -maze7 251 -maze8 252 -maze9 253 -sec_pri 254 -soren-2 255 -soren 256 -test 257 -testbg 258 +sec_pri 238 +soren-2 239 +soren 240 +test 241 +testbg 242 diff --git a/maps/re/maze0.mcache b/maps/re/maze0.mcache Binary files differdeleted file mode 100644 index 283b0f0ac..000000000 --- a/maps/re/maze0.mcache +++ /dev/null diff --git a/maps/re/maze1.mcache b/maps/re/maze1.mcache Binary files differdeleted file mode 100644 index d5d4296f9..000000000 --- a/maps/re/maze1.mcache +++ /dev/null diff --git a/maps/re/maze10.mcache b/maps/re/maze10.mcache Binary files differdeleted file mode 100644 index eccabadab..000000000 --- a/maps/re/maze10.mcache +++ /dev/null diff --git a/maps/re/maze11.mcache b/maps/re/maze11.mcache Binary files differdeleted file mode 100644 index 0dc122050..000000000 --- a/maps/re/maze11.mcache +++ /dev/null diff --git a/maps/re/maze12.mcache b/maps/re/maze12.mcache Binary files differdeleted file mode 100644 index 9c10b6a36..000000000 --- a/maps/re/maze12.mcache +++ /dev/null diff --git a/maps/re/maze13.mcache b/maps/re/maze13.mcache Binary files differdeleted file mode 100644 index fa525561d..000000000 --- a/maps/re/maze13.mcache +++ /dev/null diff --git a/maps/re/maze14.mcache b/maps/re/maze14.mcache Binary files differdeleted file mode 100644 index dbda4a6d7..000000000 --- a/maps/re/maze14.mcache +++ /dev/null diff --git a/maps/re/maze15.mcache b/maps/re/maze15.mcache Binary files differdeleted file mode 100644 index 2fd2f507f..000000000 --- a/maps/re/maze15.mcache +++ /dev/null diff --git a/maps/re/maze2.mcache b/maps/re/maze2.mcache Binary files differdeleted file mode 100644 index 4d118cddd..000000000 --- a/maps/re/maze2.mcache +++ /dev/null diff --git a/maps/re/maze3.mcache b/maps/re/maze3.mcache Binary files differdeleted file mode 100644 index f74a50ca1..000000000 --- a/maps/re/maze3.mcache +++ /dev/null diff --git a/maps/re/maze4.mcache b/maps/re/maze4.mcache Binary files differdeleted file mode 100644 index f1cef24a6..000000000 --- a/maps/re/maze4.mcache +++ /dev/null diff --git a/maps/re/maze5.mcache b/maps/re/maze5.mcache Binary files differdeleted file mode 100644 index 0749b84a6..000000000 --- a/maps/re/maze5.mcache +++ /dev/null diff --git a/maps/re/maze6.mcache b/maps/re/maze6.mcache Binary files differdeleted file mode 100644 index 36713aa00..000000000 --- a/maps/re/maze6.mcache +++ /dev/null diff --git a/maps/re/maze7.mcache b/maps/re/maze7.mcache Binary files differdeleted file mode 100644 index 5debe5807..000000000 --- a/maps/re/maze7.mcache +++ /dev/null diff --git a/maps/re/maze8.mcache b/maps/re/maze8.mcache Binary files differdeleted file mode 100644 index e0212bfcd..000000000 --- a/maps/re/maze8.mcache +++ /dev/null diff --git a/maps/re/maze9.mcache b/maps/re/maze9.mcache Binary files differdeleted file mode 100644 index 509eeb76f..000000000 --- a/maps/re/maze9.mcache +++ /dev/null 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. |