diff -BburpN -x '*.0' /src/act.informative.c /new_src/act.informative.c --- /src/act.informative.c 2009-09-19 15:59:29.000000000 -0400 +++ /new_src/act.informative.c 2009-12-02 14:00:46.000000000 -0500 @@ -414,9 +414,9 @@ static void do_auto_exits(struct char_da if (EXIT_FLAGGED(EXIT(ch, door), EX_CLOSED) && !CONFIG_DISP_CLOSED_DOORS) continue; if (EXIT_FLAGGED(EXIT(ch, door), EX_CLOSED)) - send_to_char(ch, "%s(%c)%s ", CCRED(ch, C_NRM), LOWER(*dirs[door]), CCCYN(ch, C_NRM)); + send_to_char(ch, "%s(%s)%s ", CCRED(ch, C_NRM), autoexits[door] , CCCYN(ch, C_NRM)); else - send_to_char(ch, "%c ", LOWER(*dirs[door])); + send_to_char(ch, "%s ", autoexits[door]); slen++; } diff -BburpN -x '*.0' /src/asciimap.c /new_src/asciimap.c --- /src/asciimap.c 2009-09-19 15:54:48.000000000 -0400 +++ /new_src/asciimap.c 2009-12-02 14:07:50.000000000 -0500 @@ -36,8 +36,8 @@ #define MAX_MAP_SIZE (CANVAS_WIDTH - 1)/4 #define MAX_MAP CANVAS_WIDTH -#define MAX_MAP_DIR 6 -#define MAX_MAP_FOLLOW 4 +#define MAX_MAP_DIR 10 +#define MAX_MAP_FOLLOW 10 #define SECT_EMPTY 30 /* anything greater than num sect types */ #define SECT_STRANGE (SECT_EMPTY + 1) @@ -47,10 +47,16 @@ #define DOOR_EW -2 #define DOOR_UP -3 #define DOOR_DOWN -4 -#define VDOOR_NS -5 -#define VDOOR_EW -6 -#define DOOR_NONE -7 -#define NUM_DOOR_TYPES 7 +#define DOOR_DIAGNE -5 +#define DOOR_DIAGNW -6 +#define VDOOR_NS -7 +#define VDOOR_EW -8 +#define VDOOR_DIAGNE -9 +#define VDOOR_DIAGNW -10 +#define DOOR_UP_AND_NE -11 +#define DOOR_DOWN_AND_SE -12 +#define DOOR_NONE -13 +#define NUM_DOOR_TYPES 13 #define MAP_CIRCLE 0 #define MAP_RECTANGLE 1 @@ -67,8 +73,14 @@ struct map_info_type static struct map_info_type door_info[] = { { DOOR_NONE, " " }, + { DOOR_DOWN_AND_SE, "@r-@n\\ " }, + { DOOR_UP_AND_NE, "@r+@n/ " }, + { VDOOR_DIAGNW, " @m+@n " }, + { VDOOR_DIAGNE, " @m+@n "}, { VDOOR_EW, " @m+@n " }, { VDOOR_NS, " @m+@n "}, + { DOOR_DIAGNW, " \\ " }, + { DOOR_DIAGNE, " / " }, { DOOR_DOWN, "@r-@n " }, { DOOR_UP, "@r+@n " }, { DOOR_EW, " - " }, @@ -78,8 +90,14 @@ static struct map_info_type door_info[] static struct map_info_type compact_door_info[] = { { DOOR_NONE, " " }, + { DOOR_DOWN_AND_SE, "@R\\@n" }, + { DOOR_UP_AND_NE, "@R/@n" }, + { VDOOR_DIAGNW, "@m+@n" }, + { VDOOR_DIAGNE, "@m+@n"}, { VDOOR_EW, " @m+@n " }, { VDOOR_NS, " @m+@n "}, + { DOOR_DIAGNW,"\\" }, + { DOOR_DIAGNE,"/" }, { DOOR_DOWN, "@r-@n" }, { DOOR_UP, "@r+@n" }, { DOOR_EW, "-" }, @@ -165,10 +183,10 @@ static struct map_info_type world_map_in static int map[MAX_MAP][MAX_MAP]; -static int offsets[4][2] ={ {-2, 0},{ 0, 2},{ 2, 0},{ 0, -2} }; -static int offsets_worldmap[4][2] ={ {-1, 0},{ 0, 1},{ 1, 0},{ 0, -1} }; -static int door_offsets[6][2] ={ {-1, 0},{ 0, 1},{ 1, 0},{ 0, -1},{ -1, 1},{ 1, 1} }; -static int door_marks[6] = { DOOR_NS, DOOR_EW, DOOR_NS, DOOR_EW, DOOR_UP, DOOR_DOWN }; +static int offsets[10][2] ={ {-2, 0},{ 0, 2},{ 2, 0},{ 0, -2},{0, 0},{ 0, 0},{ -2, -2},{ -2, 2},{2, 2},{ 2, -2} }; +static int offsets_worldmap[10][2] ={ {-1, 0},{ 0, 1},{ 1, 0},{ 0, -1},{0, 0},{ 0, 0},{ -1, -1},{ -1, 1},{1, 1},{ 1, -1} }; +static int door_offsets[10][2] ={ {-1, 0},{ 0, 1},{ 1, 0},{ 0, -1},{ -1, 1},{ 1, 1},{ -1, -1},{ -1, 1},{ 1, 1},{ 1, -1} }; +static int door_marks[10] = { DOOR_NS, DOOR_EW, DOOR_NS, DOOR_EW, DOOR_UP, DOOR_DOWN, DOOR_DIAGNW, DOOR_DIAGNE, DOOR_DIAGNW, DOOR_DIAGNE}; static int vdoor_marks[4] = { VDOOR_NS, VDOOR_EW, VDOOR_NS, VDOOR_EW }; /****************************************************************************** * End Local (File Scope) Defines and Global Variables @@ -250,6 +268,18 @@ static void MapArea(room_rnum room, stru case WEST: if(ypos > 0 || xpos!=x_exit_pos) continue; break; + case NORTHWEST: + if(xpos > 0 || ypos!=y_exit_pos || ypos > 0 || xpos!=x_exit_pos) continue; + break; + case NORTHEAST: + if(xpos > 0 || ypos!=y_exit_pos || ypos < ew_size || xpos!=x_exit_pos) continue; + break; + case SOUTHEAST: + if(xpos < ns_size || ypos!=y_exit_pos || ypos < ew_size || xpos!=x_exit_pos) continue; + break; + case SOUTHWEST: + if(xpos < ns_size || ypos!=y_exit_pos || ypos > 0 || xpos!=x_exit_pos) continue; + break; } @@ -264,7 +294,21 @@ static void MapArea(room_rnum room, stru } if(!worldmap) - map[x+door_offsets[door][0]][y+door_offsets[door][1]] = door_marks[door] ; + if(!worldmap) { + if ((map[x+door_offsets[door][0]][y+door_offsets[door][1]] == DOOR_NONE) || + (map[x+door_offsets[door][0]][y+door_offsets[door][1]] == SECT_EMPTY) ) { + map[x+door_offsets[door][0]][y+door_offsets[door][1]] = door_marks[door]; + } else { + if ( ((door == NORTHEAST) && (map[x+door_offsets[door][0]][y+door_offsets[door][1]] == DOOR_UP)) || + ((door == UP) && (map[x+door_offsets[door][0]][y+door_offsets[door][1]] == DOOR_DIAGNE)) ) { + map[x+door_offsets[door][0]][y+door_offsets[door][1]] = DOOR_UP_AND_NE; + } + else if ( ((door == SOUTHEAST) && (map[x+door_offsets[door][0]][y+door_offsets[door][1]] == DOOR_DOWN)) || + ((door == DOWN) && (map[x+door_offsets[door][0]][y+door_offsets[door][1]] == DOOR_DIAGNW)) ) { + map[x+door_offsets[door][0]][y+door_offsets[door][1]] = DOOR_DOWN_AND_SE; + } + } + } prospect_xpos = prospect_ypos = 0; switch (door) { @@ -277,6 +321,14 @@ static void MapArea(room_rnum room, stru prospect_ypos = ew_size; case EAST: prospect_xpos = world[prospect_room].dir_option[rev_dir[door]] ? x_exit_pos : ns_size/2; + break; + case NORTHEAST: + case NORTHWEST: + case SOUTHEAST: + case SOUTHWEST: + prospect_xpos = world[prospect_room].dir_option[rev_dir[door]] ? x_exit_pos : ns_size/2; + prospect_ypos = world[prospect_room].dir_option[rev_dir[door]] ? y_exit_pos : ew_size/2; + break; } if(worldmap) { diff -BburpN -x '*.0' /src/constants.c /new_src/constants.c --- /src/constants.c 2009-09-19 15:54:48.000000000 -0400 +++ /new_src/constants.c 2009-12-02 13:59:40.000000000 -0500 @@ -40,6 +40,10 @@ const char *dirs[] = "west", "up", "down", + "northwest", + "northeast", + "southeast", + "southwest", "\n" }; @@ -772,7 +776,11 @@ int rev_dir[] = NORTH, EAST, DOWN, - UP + UP, + SOUTHEAST, + SOUTHWEST, + NORTHWEST, + NORTHEAST }; /** How much movement is lost moving through a particular sector type. */ @@ -912,6 +920,21 @@ const char *history_types[] = { "auction", "\n" }; + +const char *autoexits[] = +{ + "n", + "e", + "s", + "w", + "u", + "d", + "nw", + "ne", + "se", + "sw", + "\n" +}; /* --- End of constants arrays. --- */ /* Various arrays we count so we can check the world files. These diff -BburpN -x '*.0' /src/constants.h /new_src/constants.h --- /src/constants.h 2009-09-19 15:54:48.000000000 -0400 +++ /new_src/constants.h 2009-12-02 13:57:22.000000000 -0500 @@ -56,5 +56,6 @@ extern size_t action_bits_count; extern size_t affected_bits_count; extern size_t extra_bits_count; extern size_t wear_bits_count; +extern const char *autoexits[]; #endif /* _CONSTANTS_H_ */ diff -BburpN -x '*.0' /src/interpreter.c /new_src/interpreter.c --- /src/interpreter.c 2009-09-19 15:59:19.000000000 -0400 +++ /new_src/interpreter.c 2009-12-02 13:56:46.000000000 -0500 @@ -69,6 +69,14 @@ cpp_extern const struct command_info cmd { "west" , "w" , POS_STANDING, do_move , 0, SCMD_WEST }, { "up" , "u" , POS_STANDING, do_move , 0, SCMD_UP }, { "down" , "d" , POS_STANDING, do_move , 0, SCMD_DOWN }, + { "northwest", "northw" , POS_STANDING, do_move , 0, SCMD_NW }, + { "nw" , "nw" , POS_STANDING, do_move , 0, SCMD_NW }, + { "northeast", "northe" , POS_STANDING, do_move , 0, SCMD_NE }, + { "ne" , "ne" , POS_STANDING, do_move , 0, SCMD_NE }, + { "southeast", "southe" , POS_STANDING, do_move , 0, SCMD_SE }, + { "se" , "se" , POS_STANDING, do_move , 0, SCMD_SE }, + { "southwest", "southw" , POS_STANDING, do_move , 0, SCMD_SW }, + { "sw" , "sw" , POS_STANDING, do_move , 0, SCMD_SW }, /* now, the main list */ { "at" , "at" , POS_DEAD , do_at , LVL_IMMORT, 0 }, diff -BburpN -x '*.0' /src/interpreter.h /new_src/interpreter.h --- /src/interpreter.h 2009-09-19 15:54:48.000000000 -0400 +++ /new_src/interpreter.h 2009-12-02 13:55:46.000000000 -0500 @@ -99,6 +99,10 @@ struct alias_data { #define SCMD_WEST WEST #define SCMD_UP UP #define SCMD_DOWN DOWN +#define SCMD_NW NORTHWEST +#define SCMD_NE NORTHEAST +#define SCMD_SE SOUTHEAST +#define SCMD_SW SOUTHWEST /** @deprecated all old do_poof stuff is deprecated and unused. */ #define SCMD_POOFIN 0 diff -BburpN -x '*.0' /src/redit.c /new_src/redit.c --- /src/redit.c 2009-09-19 15:54:48.000000000 -0400 +++ /new_src/redit.c 2009-12-02 14:17:55.781250000 -0500 @@ -418,13 +418,13 @@ static void redit_disp_menu(struct descr "%s2%s) Description :\r\n%s%s" "%s3%s) Room flags : %s%s\r\n" "%s4%s) Sector type : %s%s\r\n" - "%s5%s) Exit north : %s%d\r\n" - "%s6%s) Exit east : %s%d\r\n" - "%s7%s) Exit south : %s%d\r\n" - "%s8%s) Exit west : %s%d\r\n" + "%s5%s) Exit north : %s%d%s, %sB%s) Exit northwest : %s%d\r\n" + "%s6%s) Exit east : %s%d%s, %sC%s) Exit northeast : %s%d\r\n" + "%s7%s) Exit south : %s%d%s, %sD%s) Exit southeast : %s%d\r\n" + "%s8%s) Exit west : %s%d%s, %sE%s) Exit southwest : %s%d\r\n" "%s9%s) Exit up : %s%d\r\n" "%sA%s) Exit down : %s%d\r\n" - "%sB%s) Extra descriptions menu\r\n" + "%sF%s) Extra descriptions menu\r\n" "%sS%s) Script : %s%s\r\n" "%sW%s) Copy Room\r\n" "%sX%s) Delete Room\r\n" @@ -440,15 +440,27 @@ static void redit_disp_menu(struct descr grn, nrm, cyn, room->dir_option[NORTH] && room->dir_option[NORTH]->to_room != NOWHERE ? world[room->dir_option[NORTH]->to_room].number : -1, + nrm, grn, nrm, cyn, + room->dir_option[NORTHWEST] && room->dir_option[NORTHWEST]->to_room != NOWHERE ? + world[room->dir_option[NORTHWEST]->to_room].number : -1, grn, nrm, cyn, room->dir_option[EAST] && room->dir_option[EAST]->to_room != NOWHERE ? world[room->dir_option[EAST]->to_room].number : -1, + nrm, grn, nrm, cyn, + room->dir_option[NORTHEAST] && room->dir_option[NORTHEAST]->to_room != NOWHERE ? + world[room->dir_option[NORTHEAST]->to_room].number : -1, grn, nrm, cyn, room->dir_option[SOUTH] && room->dir_option[SOUTH]->to_room != NOWHERE ? world[room->dir_option[SOUTH]->to_room].number : -1, + nrm, grn, nrm, cyn, + room->dir_option[SOUTHEAST] && room->dir_option[SOUTHEAST]->to_room != NOWHERE ? + world[room->dir_option[SOUTHEAST]->to_room].number : -1, grn, nrm, cyn, room->dir_option[WEST] && room->dir_option[WEST]->to_room != NOWHERE ? world[room->dir_option[WEST]->to_room].number : -1, + nrm, grn, nrm, cyn, + room->dir_option[SOUTHWEST] && room->dir_option[SOUTHWEST]->to_room != NOWHERE ? + world[room->dir_option[SOUTHWEST]->to_room].number : -1, grn, nrm, cyn, room->dir_option[UP] && room->dir_option[UP]->to_room != NOWHERE ? world[room->dir_option[UP]->to_room].number : -1, @@ -560,6 +572,26 @@ void redit_parse(struct descriptor_data break; case 'b': case 'B': + OLC_VAL(d) = NORTHWEST; + redit_disp_exit_menu(d); + break; + case 'c': + case 'C': + OLC_VAL(d) = NORTHEAST; + redit_disp_exit_menu(d); + break; + case 'd': + case 'D': + OLC_VAL(d) = SOUTHEAST; + redit_disp_exit_menu(d); + break; + case 'e': + case 'E': + OLC_VAL(d) = SOUTHWEST; + redit_disp_exit_menu(d); + break; + case 'f': + case 'F': /* If the extra description doesn't exist. */ if (!OLC_ROOM(d)->ex_description) CREATE(OLC_ROOM(d)->ex_description, struct extra_descr_data, 1); diff -BburpN -x '*.0' /src/spec_procs.c /new_src/spec_procs.c --- /src/spec_procs.c 2009-09-19 15:54:48.000000000 -0400 +++ /new_src/spec_procs.c 2009-12-02 13:50:54.000000000 -0500 @@ -434,7 +434,7 @@ SPECIAL(guild_guard) /* find out what direction they are trying to go */ for (direction = 0; direction < NUM_OF_DIRS; direction++) - if (!strcmp(cmd_info[cmd].command, dirs[direction])) + if (!strcmp(cmd_info[cmd].command, dirs[direction]) || !strcmp(cmd_info[cmd].command, autoexits[direction])) break; for (i = 0; guild_info[i].guild_room != NOWHERE; i++) { diff -BburpN -x '*.0' /src/structs.h /new_src/structs.h --- /src/structs.h 2009-09-19 15:54:48.000000000 -0400 +++ /new_src/structs.h 2009-12-02 13:50:08.000000000 -0500 @@ -64,10 +64,14 @@ #define WEST 3 /**< The direction west */ #define UP 4 /**< The direction up */ #define DOWN 5 /**< The direction down */ +#define NORTHWEST 6 /**< The direction north-west */ +#define NORTHEAST 7 /**< The direction north-east */ +#define SOUTHEAST 8 /**< The direction south-east */ +#define SOUTHWEST 9 /**< The direction south-west */ /** Total number of directions available to move in. BEFORE CHANGING THIS, make * sure you change every other direction and movement based item that this will * impact. */ -#define NUM_OF_DIRS 6 +#define NUM_OF_DIRS 10 /* Room flags: used in room_data.room_flags */ /* WARNING: In the world files, NEVER set the bits marked "R" ("Reserved") */