dbt/cnf/
dbt/lib/
dbt/lib/house/
dbt/lib/text/help/
dbt/lib/world/
dbt/lib/world/qst/
dbt/src/
dbt/src/copyover/
diff -uprN src/act.informative.c circle/src/act.informative.c
--- src/act.informative.c	Sun Jan 03 19:10:01 1999
+++ circle/src/act.informative.c	Wed Jan 06 00:21:23 1999
@@ -51,6 +51,7 @@ extern char *race_abbrevs[];
 extern char *room_bits[];
 extern char *spells[];
 extern char *sector_types[];
+extern char *bridges[];
 extern char *pc_class_types[];
 extern char *pc_race_types[];
 
@@ -463,12 +466,15 @@ void look_at_room(struct char_data * ch,
   send_to_char(CCCYN(ch, C_NRM), ch);
   if (PRF_FLAGGED(ch, PRF_ROOMFLAGS)) {
     sprintbit((long) ROOM_FLAGS(ch->in_room), room_bits, buf);
-/*    sprintf(buf2, "[%5d] %s [ %s]", world[ch->in_room].number,
-            world[ch->in_room].name, buf); */
     sprinttype(SECT(ch->in_room), sector_types, buf1);
+    sprinttype(BRIDGE(ch->in_room), bridges, buf3);
 
-    sprintf(buf2, "[%5d] %s [ %s] [ %s ]", world[ch->in_room].number,
-        world[ch->in_room].name, buf, buf1);
+    if (BRIDGE(ch->in_room) > 0)
+      sprintf(buf2, "[%5d] %s [ %s] [ %s ] [ %s ]", world[ch->in_room].number,
+          world[ch->in_room].name, buf, buf1, buf3);
+    else
+      sprintf(buf2, "[%5d] %s [ %s] [ %s ]", world[ch->in_room].number,
+          world[ch->in_room].name, buf, buf1);
     send_to_char(buf2, ch);
   } else
     send_to_char(world[ch->in_room].name, ch);
diff -uprN src/act.movement.c circle/src/act.movement.c
--- src/act.movement.c	Sun Jan 03 18:02:31 1999
+++ circle/src/act.movement.c	Wed Jan 06 09:45:37 1999
@@ -30,6 +30,7 @@ extern struct index_data *obj_index;
 extern int rev_dir[];
 extern char *dirs[];
 extern char *sector_types[];
+extern char *bridges[];
 extern int movement_loss[];
 
 /* external functs */
@@ -64,7 +65,26 @@ int has_boat(struct char_data *ch)
   return 0;
 }
 
-  
+
+void damagerolls(struct char_data * ch)
+{
+  int dam;
+
+  if (IS_AFFECTED(ch, AFF_SANCTUARY)) {
+    dam = MIN(dam, 18);  /* Max 18 damage when sanctuary */
+    send_to_char("Your sanctuary eases some of the blow!\r\n", ch);
+  }
+  dam = MIN(dam, 100);  /* no more than 100 hp per round */
+  dam = MAX(dam, 0);    /* no less than 0 hp per round */
+  /* You can't damage an immortal! */
+  if ((GET_LEVEL(ch) >= LVL_IMMORT) && !IS_NPC(ch))
+    dam = 0;
+  GET_MAX_HIT(ch) -= dam;
+  GET_HIT(ch) = GET_MAX_HIT(ch);
+  sprintf(buf, "You've permanently lost %d hitpoints due to the damage caused!\r\n", dam);
+  send_to_char(buf, ch);
+}
+
 
 /* do_simple_move assumes
  *    1. That there is no master and no followers.
@@ -131,7 +151,6 @@ int do_simple_move(struct char_data *ch,
     }
   }
 
-
   /* move points needed is avg. move loss for src and destination sect type */
   need_movement = (movement_loss[SECT(ch->in_room)] +
 		   movement_loss[SECT(EXIT(ch, dir)->to_room)]) >> 1;
@@ -168,7 +187,7 @@ int do_simple_move(struct char_data *ch,
       return 0;
     }
   }
-  
+
   if ((riding || ridden_by) && IS_SET(ROOM_FLAGS(EXIT(ch, dir)->to_room), ROOM_TUNNEL)) {
     send_to_char("There isn't enough room there, while mounted.\r\n", ch);
     return 0;
@@ -245,6 +264,14 @@ int do_simple_move(struct char_data *ch,
 
   if (ch->desc != NULL)
     look_at_room(ch, 0);
+
+  /* Okies, did they bridge it? */
+  if (((BRIDGE(ch->in_room) == BRIDGE_SMALL) && (GET_WEIGHT(ch) >= 100)) ||
+    ((BRIDGE(ch->in_room) == BRIDGE_MEDIUM) && (GET_WEIGHT(ch) >= 150)) ||
+    ((BRIDGE(ch->in_room) == BRIDGE_LARGE) && (GET_WEIGHT(ch) >= 200))) {
+    send_to_char("Uh oh, you're too heavy and fall off the bridge!\r\n", ch);
+    damagerolls(ch);
+  }
 
   // DT! (Hopefully these are rare in your MUD) -dak
   if (IS_SET(ROOM_FLAGS(ch->in_room), ROOM_DEATH)) {
diff -uprN src/constants.c circle/src/constants.c
--- src/constants.c	Sun Jan 03 22:04:03 1999
+++ circle/src/constants.c	Tue Jan 05 21:14:57 1999
@@ -93,6 +93,18 @@ const char *sector_types[] = {
 };
 
 
+/* BRIDGE_ */
+/* Make SURE you change the BUFFER (buf3) in redit.c and act.informative.c *
+ * if the text here is enlargened. JB 04/01/99                             */
+const char *bridges[] = {
+  "None",
+  "Small",
+  "Medium",
+  "Large",
+  "\n"
+};
+
+
 /* SEX_x */
 const char *genders[] =
 {
diff -uprN src/db.c circle/src/db.c
--- src/db.c	Sun Jan 03 22:04:43 1999
+++ circle/src/db.c	Mon Jan 04 22:33:15 1999
@@ -733,13 +733,14 @@ void parse_room(FILE * fl, int virtual_n
   world[room_nr].name = fread_string(fl, buf2);
   world[room_nr].description = fread_string(fl, buf2);
 
-  if (!get_line(fl, line) || sscanf(line, " %d %s %d ", t, flags, t + 2) != 3) {
+  if (!get_line(fl, line) || sscanf(line, " %d %s %d %d ", t, flags, t + 2, t + 3) != 4) {
     fprintf(stderr, "SYSERR: Format error in room #%d\n", virtual_nr);
     exit(1);
   }
   /* t[0] is the zone number; ignored with the zone-file system */
   world[room_nr].room_flags = asciiflag_conv(flags);
   world[room_nr].sector_type = t[2];
+  world[room_nr].bridge = t[3];
 
   world[room_nr].func = NULL;
   world[room_nr].contents = NULL;
diff -uprN src/db.h circle/src/db.h
--- src/db.h	Thu Dec 24 00:45:41 1998
+++ circle/src/db.h	Mon Jan 04 22:44:17 1999
@@ -215,11 +215,13 @@ struct ban_list_element {
 char	buf[MAX_STRING_LENGTH];
 char	buf1[MAX_STRING_LENGTH];
 char	buf2[MAX_STRING_LENGTH];
+char    buf3[MAX_STRING_LENGTH];
 char	arg[MAX_STRING_LENGTH];
 #else
 extern char	buf[MAX_STRING_LENGTH];
 extern char	buf1[MAX_STRING_LENGTH];
 extern char	buf2[MAX_STRING_LENGTH];
+extern char     buf3[MAX_STRING_LENGTH];
 extern char	arg[MAX_STRING_LENGTH];
 #endif
 
diff -uprN src/olc.h circle/src/olc.h
--- src/olc.h	Sun Dec 27 00:12:05 1998
+++ circle/src/olc.h	Mon Jan 04 22:15:27 1999
@@ -32,13 +32,14 @@
 
 #define NUM_ROOM_FLAGS          18  /* Indoors, Death, etc              */
 #define NUM_ROOM_SECTORS        13  /* Fly, Underwater, etc             */
+#define NUM_BRIDGES             4   /* Bridge types                     */
 
 #define NUM_MOB_FLAGS           21  /* Nobash, Sentinel, etc            */
 #define NUM_OBJAFF_FLAGS        22
 #define NUM_ATTACK_TYPES	15
 
-#define NUM_ITEM_TYPES          33  /* Weapon, Note, etc                */
-#define NUM_ITEM_FLAGS          30  /* Glow, hum, etc                   */
+#define NUM_ITEM_TYPES          32  /* Weapon, Note, etc                */
+#define NUM_ITEM_FLAGS          32  /* Glow, hum, etc                   */
 #define NUM_ITEM_WEARS          18  /* Wield, Hold, etc                 */
 #define NUM_AFF_FLAGS           24  /* Affects                          */
 #define NUM_APPLIES             28  /* Regen, Hitroll, etc              */
@@ -215,6 +216,7 @@ extern struct olc_save_info *olc_save_li
 #define REDIT_EXTRADESC_MENU 		14
 #define REDIT_EXTRADESC_KEY 		15
 #define REDIT_EXTRADESC_DESCRIPTION 	16
+#define REDIT_BRIDGE                    17
 
 /*
  * Submodes of ZEDIT connectedness.
diff -uprN src/redit.c circle/src/redit.c
--- src/redit.c	Wed Oct 21 20:28:27 1998
+++ circle/src/redit.c	Mon Jan 04 22:43:47 1999
@@ -30,6 +30,7 @@ extern struct obj_data *obj_proto;
 extern struct char_data *mob_proto;
 extern char *room_bits[];
 extern char *sector_types[];
+extern char *bridges[];
 extern char *exit_bits[];
 extern struct zone_data *zone_table;
 extern sh_int r_mortal_start_room;
@@ -51,6 +52,7 @@ void redit_disp_exit_menu(struct descrip
 void redit_disp_exit_flag_menu(struct descriptor_data *d);
 void redit_disp_flag_menu(struct descriptor_data *d);
 void redit_disp_sector_menu(struct descriptor_data *d);
+void redit_disp_bridge_menu(struct descriptor_data *d);
 void redit_disp_menu(struct descriptor_data *d);
 void redit_parse(struct descriptor_data *d, char *arg);
 void redit_setup_new(struct descriptor_data *d);
@@ -351,10 +354,10 @@ void redit_save_to_disk(int zone_num)
       /*
        * Forget making a buffer, lets just write the thing now.
        */
-      fprintf(fp, "#%d\n%s~\n%s~\n%d %d %d\n", counter,
+      fprintf(fp, "#%d\n%s~\n%s~\n%d %d %d %d\n", counter,
 	      room->name ? room->name : "undefined", buf1,
 	      zone_table[room->zone].number,
-	      room->room_flags, room->sector_type);
+              room->room_flags, room->sector_type, room->bridge);
 
       /*
        * Handle exits.
@@ -499,6 +502,7 @@ void redit_disp_extradesc_menu(struct de
   OLC_MODE(d) = REDIT_EXTRADESC_MENU;
 }
 
+
 /*
  * For exits.
  */
@@ -600,6 +604,26 @@ void redit_disp_sector_menu(struct descr
   OLC_MODE(d) = REDIT_SECTOR;
 }
 
+
+/*
+ * For bridges.
+ */
+void redit_disp_bridge_menu(struct descriptor_data *d)
+{
+  int counter, columns = 0;
+
+#if defined(CLEAR_SCREEN)
+  send_to_char("", d->character);
+#endif
+  for (counter = 0; counter < NUM_BRIDGES; counter++) {
+    sprintf(buf, "%s%2d%s) %-20.20s %s", grn, counter, nrm,
+                bridges[counter], !(++columns % 2) ? "\r\n" : "");
+    send_to_char(buf, d->character);
+  }
+  send_to_char("\r\nEnter bridge type : ", d->character);
+  OLC_MODE(d) = REDIT_BRIDGE;
+}
+
 /*
  * The main menu.
  */
@@ -612,6 +636,7 @@ void redit_disp_menu(struct descriptor_d
 
   sprintbit((long)room->room_flags, room_bits, buf1);
   sprinttype(room->sector_type, sector_types, buf2);
+  sprinttype(room->bridge, bridges, buf3);
   sprintf(buf,
 #if defined(CLEAR_SCREEN)
 	  ""
@@ -627,10 +652,7 @@ void redit_disp_menu(struct descriptor_d
           "%s8%s) Exit west      : %s%d\r\n"
           "%s9%s) Exit up        : %s%d\r\n"
           "%sA%s) Exit down      : %s%d\r\n"
-/*          "%sB%s) Exit northeast : %s%d\r\n"
-          "%sC%s) Exit northwest : %s%d\r\n"
-          "%sD%s) Exit southeast : %s%d\r\n"
-          "%sE%s) Exit southwest : %s%d\r\n" */
+          "%sB%s) Bridge Data    : %s%s\r\n"
           "%sF%s) Extra descriptions menu\r\n"
           "%sS%s) Script      : %s%s\r\n"
 	  "%sQ%s) Quit\r\n"
@@ -660,19 +682,8 @@ void redit_disp_menu(struct descriptor_d
 	  grn, nrm, cyn,
 	  room->dir_option[DOWN] && room->dir_option[DOWN]->to_room != -1 ?
 	  world[room->dir_option[DOWN]->to_room].number : -1,
-/*          grn, nrm, cyn,
-          room->dir_option[NORTHEAST] && room->dir_option[NORTHEAST]->to_room != -1 ?
-          world[room->dir_option[NORTHEAST]->to_room].number : -1,
-	  grn, nrm, cyn,
-          room->dir_option[NORTHWEST] && room->dir_option[NORTHWEST]->to_room != -1 ?
-          world[room->dir_option[NORTHWEST]->to_room].number : -1,
-	  grn, nrm, cyn,
-          room->dir_option[SOUTHEAST] && room->dir_option[SOUTHEAST]->to_room != -1 ?
-          world[room->dir_option[SOUTHEAST]->to_room].number : -1,
-	  grn, nrm, cyn,
-          room->dir_option[SOUTHWEST] && room->dir_option[SOUTHWEST]->to_room != -1 ?
-          world[room->dir_option[SOUTHWEST]->to_room].number : -1, */
-	  grn, nrm, 
+          grn, nrm, cyn, buf3,
+	  grn, nrm,
           grn, nrm, cyn, room->proto_script?"Set.":"Not Set.",
           grn, nrm
 	  );
@@ -780,26 +791,10 @@ void redit_parse(struct descriptor_data 
       OLC_VAL(d) = DOWN;
       redit_disp_exit_menu(d);
       break;
-/*    case 'b':
+    case 'b':
     case 'B':
-      OLC_VAL(d) = NORTHEAST;
-      redit_disp_exit_menu(d);
-      break;
-    case 'c':
-    case 'C':
-      OLC_VAL(d) = NORTHWEST;
-      redit_disp_exit_menu(d);
-      break;
-    case 'd':
-    case 'D':
-      OLC_VAL(d) = SOUTHEAST;
-      redit_disp_exit_menu(d);
+      redit_disp_bridge_menu(d);
       break;
-    case 'e':
-    case 'E':
-      OLC_VAL(d) = SOUTHWEST;
-      redit_disp_exit_menu(d);
-      break; */
     case 'f':
     case 'F':
       /*
@@ -867,6 +862,16 @@ void redit_parse(struct descriptor_data 
       return;
     } else
       OLC_ROOM(d)->sector_type = number;
+    break;
+
+  case REDIT_BRIDGE:
+    number = atoi(arg);
+    if (number < 0 || number >= NUM_BRIDGES) {
+      send_to_char("Invalid choice!", d->character);
+      redit_disp_bridge_menu(d);
+      return;
+    } else
+      OLC_ROOM(d)->bridge = number;
     break;
 
   case REDIT_EXIT_MENU:
diff -uprN src/structs.h circle/src/structs.h
--- src/structs.h	Sun Jan 03 19:52:01 1999
+++ circle/src/structs.h	Tue Jan 05 20:36:27 1999
@@ -80,6 +80,13 @@
 #define SECT_BOOK            12            /* Inside a book             */
 #define SECT_ARENA           13            /* In the arena              */
 
+
+/* Bridge types: used in room_data.bridge */
+#define BRIDGE_NONE          0             /* Not a bridge              */
+#define BRIDGE_SMALL         1             /* Small bridge              */
+#define BRIDGE_MEDIUM        2             /* Medium bridge             */
+#define BRIDGE_LARGE         3             /* Large bridge              */
+
 /* char and mob-related defines *****************************************/
 
 
@@ -711,6 +721,7 @@ struct room_data {
    room_vnum number;		/* Rooms number	(vnum)		      */
    sh_int zone;                 /* Room zone (for resetting)          */
    int	sector_type;            /* sector type (move/hide)            */
+   int  bridge;                 /* bridge type (small/medium/large)   */
    char	*name;                  /* Rooms name 'You are ...'           */
    char	*description;           /* Shown when entered                 */
    struct extra_descr_data *ex_description; /* for examine/look       */
diff -uprN src/utils.h circle/src/utils.h
--- src/utils.h	Sun Dec 27 02:43:43 1998
+++ circle/src/utils.h	Mon Jan 04 22:12:59 1999
@@ -213,6 +213,8 @@ void    set_email(struct char_data *ch, 
 
 
 #define SECT(room)	(world[(room)].sector_type)
+#define BRIDGE(room)    (world[(room)].bridge)
+
 
 #define IS_DARK(room)  ( !world[room].light && \
                          (ROOM_FLAGGED(room, ROOM_DARK) || \