summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJesusaves <cpntb1@ymail.com>2019-10-13 03:32:17 -0300
committerJesusaves <cpntb1@ymail.com>2019-10-13 03:32:17 -0300
commit3b2f0a5987f0daa309b0a43f3a5ca909f0069178 (patch)
tree361dfd2b1de8474614658d33de2faa4ae3510c92
parent71fd1ac27f0b3f44a96c33ff511e4f462e31a636 (diff)
downloadserverdata-3b2f0a5987f0daa309b0a43f3a5ca909f0069178.tar.gz
serverdata-3b2f0a5987f0daa309b0a43f3a5ca909f0069178.tar.bz2
serverdata-3b2f0a5987f0daa309b0a43f3a5ca909f0069178.tar.xz
serverdata-3b2f0a5987f0daa309b0a43f3a5ca909f0069178.zip
Somewhat acceptable
-rw-r--r--npc/maze0/config.txt189
1 files changed, 177 insertions, 12 deletions
diff --git a/npc/maze0/config.txt b/npc/maze0/config.txt
index 07bc3222d..5a0f315ae 100644
--- a/npc/maze0/config.txt
+++ b/npc/maze0/config.txt
@@ -14,12 +14,6 @@ function script MazeVar {
}
/////////////////////////////////////////////////////////////////////////////////
-// WarpToMaze(instanceID, x, y)
-function script WarpToMaze {
- end;
-}
-
-/////////////////////////////////////////////////////////////////////////////////
// SetMazeCon(Maze, north, west, east, south)
function script SetMazeCon {
setd(getarg(0)+"$["+MAZENORTH+"]", getarg(1));
@@ -68,7 +62,7 @@ function script ParseMaze {
case MAZEMAPTYPE_NULL:
SetMazeCon(.@v$, "WALL", "WALL", "WALL", "WALL");
// It's a fallback
- Exception("ERROR IN PARSER, FALLBACK", RB_DEBUGMES|RB_ISFATAL);
+ Exception("ERROR IN PARSER, FALLBACK", RB_DEBUGMES|RB_IRCBROADCAST);
return true;
break;
@@ -223,10 +217,14 @@ function script ParseMaze {
/////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////
-// GenerateMaze(width, height, instanceID)
+// GenerateMaze(width, height) → Returns instance ID
function script GenerateMaze {
+ // Create the Maze instance or die trying
+ .@inst = instance_create("Maze "+getcharid(0), getcharid(3), IOT_CHAR);
+ if (.@inst < 0) end;
+ MAZE_ID=.@inst;
+
// Save maze configuration
- MAZE_ID=getarg(2);
MAZE_MX=getarg(0);
MAZE_MY=getarg(1);
freeloop(true);
@@ -385,20 +383,187 @@ function script GenerateMaze {
freeloop(false);
debugmes "[STATUS] Finished";
+ // 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);
+ return .@inst;
+}
+
+/////////////////////////////////////////////////////////////////////////////////
+// WarpToMaze(dir)
+function script WarpToMaze {
+ // Look up the destination map
+ switch (getarg(0)) {
+ case DIR_NORTH:
+ .@dst$=getd(MazeVar(MAZE_X, MAZE_Y, "$["+MAZENORTH+"]"));
+ break;
+ case DIR_SOUTH:
+ .@dst$=getd(MazeVar(MAZE_X, MAZE_Y, "$["+MAZESOUTH+"]"));
+ break;
+ case DIR_WEST:
+ .@dst$=getd(MazeVar(MAZE_X, MAZE_Y, "$["+MAZE_WEST+"]"));
+ break;
+ case DIR_EAST:
+ .@dst$=getd(MazeVar(MAZE_X, MAZE_Y, "$["+MAZE_EAST+"]"));
+ break;
+ }
+ // 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]);
+
+ // Time to generate .@x and .@y
+ .@x=30;
+ .@y=30;
+ switch (.@id) {
+ // Assumed position
+ case MAZEMAPTYPE_NULL:
+ .@x=30; .@y=30; break;
+ case MAZEMAPTYPE_DEADS:
+ .@x=29; .@y=38; break;
+ case MAZEMAPTYPE_DEADW:
+ .@x=21; .@y=31; break;
+ case MAZEMAPTYPE_DEADN:
+ .@x=29; .@y=21; break;
+ case MAZEMAPTYPE_DEADE:
+ .@x=38; .@y=31; break;
+ // We need your direction
+ // TODO
+ }
+
+ // We don't need MAZE_ID do we?
+ warp "mz"+.@id+"@"+getcharid(0), .@x, .@y;
+ return;
+}
+
+/////////////////////////////////////////////////////////////////////////////////
+// InitMaze(maze_x, maze_y)
+function script InitMaze {
+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;
+}
-// One warp handler per maze map
+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);
- GenerateMaze(5, 5, 0);
+ GenerateMaze(5, 5);
+ 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
+*/