home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / games / volume1 / rogue / patch2 / Patches02 < prev   
Text File  |  1987-06-12  |  19KB  |  845 lines

  1. *** hit.c.orig    Fri May 29 14:20:03 1987
  2. --- hit.c    Fri Jun 12 13:39:57 1987
  3. ***************
  4. *** 13,19 ****
  5.   #include "rogue.h"
  6.   
  7.   object *fight_monster = 0;
  8. - boolean detect_monster;
  9.   char hit_message[80] = "";
  10.   
  11.   extern short halluc, blind, cur_level;
  12. --- 13,18 ----
  13. *** inventory.c.orig    Fri May 29 14:20:35 1987
  14. --- inventory.c    Fri Jun 12 13:12:14 1987
  15. ***************
  16. *** 184,190 ****
  17.       short i, j, n;
  18.       short sylls, s;
  19.   
  20. !     for (i = 0; i < SCROLLS; i++) {
  21.           sylls = get_rand(2, 5);
  22.           (void) strcpy(id_scrolls[i].title, "'");
  23.   
  24. --- 184,190 ----
  25.       short i, j, n;
  26.       short sylls, s;
  27.   
  28. !     for (i = 0; i < SCROLS; i++) {
  29.           sylls = get_rand(2, 5);
  30.           (void) strcpy(id_scrolls[i].title, "'");
  31.   
  32. ***************
  33. *** 250,256 ****
  34.       case UNIDENTIFIED:
  35.   CHECK:
  36.           switch(obj->what_is) {
  37. !         case SCROLL:
  38.               (void) strcat(desc, item_name);
  39.               (void) strcat(desc, "entitled: ");
  40.               (void) strcat(desc, id_table[obj->which_kind].title);
  41. --- 250,256 ----
  42.       case UNIDENTIFIED:
  43.   CHECK:
  44.           switch(obj->what_is) {
  45. !         case SCROL:
  46.               (void) strcat(desc, item_name);
  47.               (void) strcat(desc, "entitled: ");
  48.               (void) strcat(desc, id_table[obj->which_kind].title);
  49. ***************
  50. *** 287,293 ****
  51.           break;
  52.       case CALLED:
  53.   CALL:    switch(obj->what_is) {
  54. !         case SCROLL:
  55.           case POTION:
  56.           case WAND:
  57.           case RING:
  58. --- 287,293 ----
  59.           break;
  60.       case CALLED:
  61.   CALL:    switch(obj->what_is) {
  62. !         case SCROL:
  63.           case POTION:
  64.           case WAND:
  65.           case RING:
  66. ***************
  67. *** 299,305 ****
  68.           break;
  69.       case IDENTIFIED:
  70.   ID:        switch(obj->what_is) {
  71. !         case SCROLL:
  72.           case POTION:
  73.               (void) strcat(desc, item_name);
  74.               (void) strcat(desc, id_table[obj->which_kind].real);
  75. --- 299,305 ----
  76.           break;
  77.       case IDENTIFIED:
  78.   ID:        switch(obj->what_is) {
  79. !         case SCROL:
  80.           case POTION:
  81.               (void) strcat(desc, item_name);
  82.               (void) strcat(desc, id_table[obj->which_kind].real);
  83. ***************
  84. *** 419,425 ****
  85.   object *obj;
  86.   {
  87.       switch(obj->what_is) {
  88. !     case SCROLL:
  89.           return(id_scrolls);
  90.       case POTION:
  91.           return(id_potions);
  92. --- 419,425 ----
  93.   object *obj;
  94.   {
  95.       switch(obj->what_is) {
  96. !     case SCROL:
  97.           return(id_scrolls);
  98.       case POTION:
  99.           return(id_potions);
  100. *** level.c.orig    Fri May 29 14:20:48 1987
  101. --- level.c    Fri Jun 12 13:13:22 1987
  102. ***************
  103. *** 275,287 ****
  104.           dir = RIGHT;
  105.       } else if (same_col(room1, room2) &&
  106.           (rooms[room1].top_row > rooms[room2].bottom_row)) {
  107. !         put_door(&rooms[room1], UP, &row1, &col1);
  108.           put_door(&rooms[room2], DOWN, &row2, &col2);
  109. !         dir = UP;
  110.       } else if (same_col(room1, room2) &&
  111.           (rooms[room2].top_row > rooms[room1].bottom_row)) {
  112.           put_door(&rooms[room1], DOWN, &row1, &col1);
  113. !         put_door(&rooms[room2], UP, &row2, &col2);
  114.           dir = DOWN;
  115.       } else {
  116.           return(0);
  117. --- 275,287 ----
  118.           dir = RIGHT;
  119.       } else if (same_col(room1, room2) &&
  120.           (rooms[room1].top_row > rooms[room2].bottom_row)) {
  121. !         put_door(&rooms[room1], UPWARD, &row1, &col1);
  122.           put_door(&rooms[room2], DOWN, &row2, &col2);
  123. !         dir = UPWARD;
  124.       } else if (same_col(room1, room2) &&
  125.           (rooms[room2].top_row > rooms[room1].bottom_row)) {
  126.           put_door(&rooms[room1], DOWN, &row1, &col1);
  127. !         put_door(&rooms[room2], UPWARD, &row2, &col2);
  128.           dir = DOWN;
  129.       } else {
  130.           return(0);
  131. ***************
  132. *** 337,345 ****
  133.       wall_width = (rm->is_room & R_MAZE) ? 0 : 1;
  134.   
  135.       switch(dir) {
  136. !     case UP:
  137.       case DOWN:
  138. !         *row = ((dir == UP) ? rm->top_row : rm->bottom_row);
  139.           do {
  140.               *col = get_rand(rm->left_col+wall_width,
  141.                   rm->right_col-wall_width);
  142. --- 337,345 ----
  143.       wall_width = (rm->is_room & R_MAZE) ? 0 : 1;
  144.   
  145.       switch(dir) {
  146. !     case UPWARD:
  147.       case DOWN:
  148. !         *row = ((dir == UPWARD) ? rm->top_row : rm->bottom_row);
  149.           do {
  150.               *col = get_rand(rm->left_col+wall_width,
  151.                   rm->right_col-wall_width);
  152. ***************
  153. *** 497,503 ****
  154.                   RIGHT : LEFT;
  155.           } else {
  156.               tunnel_dir = (rooms[rn].top_row < rooms[target_room].top_row) ?
  157. !                 DOWN : UP;
  158.           }
  159.           door_dir = ((tunnel_dir + 4) % DIRS);
  160.           if (rooms[target_room].doors[door_dir/2].oth_room != NO_ROOM) {
  161. --- 497,503 ----
  162.                   RIGHT : LEFT;
  163.           } else {
  164.               tunnel_dir = (rooms[rn].top_row < rooms[target_room].top_row) ?
  165. !                 DOWN : UPWARD;
  166.           }
  167.           door_dir = ((tunnel_dir + 4) % DIRS);
  168.           if (rooms[target_room].doors[door_dir/2].oth_room != NO_ROOM) {
  169. ***************
  170. *** 554,560 ****
  171.                   RIGHT : LEFT;
  172.           } else {
  173.               tunnel_dir = (rooms[rn].top_row < rooms[de].top_row) ?
  174. !                 DOWN : UP;
  175.           }
  176.           draw_simple_passage(srow, scol, drow, dcol, tunnel_dir);
  177.           r_de = de;
  178. --- 554,560 ----
  179.                   RIGHT : LEFT;
  180.           } else {
  181.               tunnel_dir = (rooms[rn].top_row < rooms[de].top_row) ?
  182. !                 DOWN : UPWARD;
  183.           }
  184.           draw_simple_passage(srow, scol, drow, dcol, tunnel_dir);
  185.           r_de = de;
  186. ***************
  187. *** 588,594 ****
  188.       char dirs[4];
  189.       short i, t;
  190.   
  191. !     dirs[0] = UP;
  192.       dirs[1] = DOWN;
  193.       dirs[2] = LEFT;
  194.       dirs[3] = RIGHT;
  195. --- 588,594 ----
  196.       char dirs[4];
  197.       short i, t;
  198.   
  199. !     dirs[0] = UPWARD;
  200.       dirs[1] = DOWN;
  201.       dirs[2] = LEFT;
  202.       dirs[3] = RIGHT;
  203. ***************
  204. *** 607,613 ****
  205.       }
  206.       for (i = 0; i < 4; i++) {
  207.           switch(dirs[i]) {
  208. !         case UP:
  209.               if (((r-1) >= tr) &&
  210.                   (dungeon[r-1][c] != TUNNEL) &&
  211.                   (dungeon[r-1][c-1] != TUNNEL) &&
  212. --- 607,613 ----
  213.       }
  214.       for (i = 0; i < 4; i++) {
  215.           switch(dirs[i]) {
  216. !         case UPWARD:
  217.               if (((r-1) >= tr) &&
  218.                   (dungeon[r-1][c] != TUNNEL) &&
  219.                   (dungeon[r-1][c-1] != TUNNEL) &&
  220. *** machdep.c.orig    Fri Jun 12 13:30:16 1987
  221. --- machdep.c    Fri Jun 12 13:19:48 1987
  222. ***************
  223. *** 39,45 ****
  224.    *      #else
  225.    *         code;
  226.    *      #endif /* UNIX_SYSV */
  227. !  *      }
  228.    *
  229.    * Appropriate variations of this are of course acceptible.
  230.    * The use of "#elseif" is discouraged because of non-portability.
  231. --- 39,45 ----
  232.    *      #else
  233.    *         code;
  234.    *      #endif /* UNIX_SYSV */
  235. ! /*      }
  236.    *
  237.    * Appropriate variations of this are of course acceptible.
  238.    * The use of "#elseif" is discouraged because of non-portability.
  239. ***************
  240. *** 82,97 ****
  241.   
  242.   md_slurp()
  243.   {
  244. !     long ln;
  245.   
  246.   #ifdef UNIX_BSD4_2
  247. !     ioctl(0, TIOCFLUSH, &ln);
  248.   #endif /* UNIX_BSD4_2 */
  249.   #ifdef UNIX_SYSV
  250.       ioctl(0, TCFLSH, &ln);
  251.   #endif /* UNIX_SYSV */
  252.   
  253. !     for (ln = stdin->_cnt; ln > 0; ln--) {
  254.           (void) getchar();
  255.       }
  256.   }
  257. --- 82,100 ----
  258.   
  259.   md_slurp()
  260.   {
  261. !     long ln = 0;
  262.   
  263.   #ifdef UNIX_BSD4_2
  264. !     ioctl(0, FIONREAD, &ln);
  265.   #endif /* UNIX_BSD4_2 */
  266.   #ifdef UNIX_SYSV
  267.       ioctl(0, TCFLSH, &ln);
  268. +     ln = 0;
  269.   #endif /* UNIX_SYSV */
  270.   
  271. !     ln += stdin->_cnt;
  272. !     for (; ln > 0; ln--) {
  273.           (void) getchar();
  274.       }
  275.   }
  276. *** message.c.orig    Fri May 29 14:21:38 1987
  277. --- message.c    Fri Jun 12 13:21:44 1987
  278. ***************
  279. *** 48,57 ****
  280.       msg_cleared = 0;
  281.       msg_col = strlen(msg);
  282.   
  283.       if (did_int) {
  284.           onintr();
  285.       }
  286. -     cant_int = 0;
  287.   }
  288.   
  289.   remessage()
  290. --- 48,58 ----
  291.       msg_cleared = 0;
  292.       msg_col = strlen(msg);
  293.   
  294. +     cant_int = 0;
  295.       if (did_int) {
  296. +         did_int = 0;
  297.           onintr();
  298.       }
  299.   }
  300.   
  301.   remessage()
  302. ***************
  303. *** 256,268 ****
  304.   save_screen()
  305.   {
  306.       FILE *fp;
  307. !     short i, j, row, col;
  308.       char buf[DCOLS+2];
  309.       boolean found_non_blank;
  310.   
  311. -     row = curscr->_cury;
  312. -     col = curscr->_curx;
  313.       if ((fp = fopen("rogue.screen", "w")) != NULL) {
  314.           for (i = 0; i < DROWS; i++) {
  315.               found_non_blank = 0;
  316. --- 257,266 ----
  317.   save_screen()
  318.   {
  319.       FILE *fp;
  320. !     short i, j;
  321.       char buf[DCOLS+2];
  322.       boolean found_non_blank;
  323.   
  324.       if ((fp = fopen("rogue.screen", "w")) != NULL) {
  325.           for (i = 0; i < DROWS; i++) {
  326.               found_non_blank = 0;
  327. ***************
  328. *** 282,289 ****
  329.       } else {
  330.           sound_bell();
  331.       }
  332. -     move(row, col);
  333. -     refresh();
  334.   }
  335.   
  336.   sound_bell()
  337. --- 280,285 ----
  338. *** monster.c.orig    Fri May 29 14:21:49 1987
  339. --- monster.c    Fri Jun 12 13:23:13 1987
  340. ***************
  341. *** 16,22 ****
  342.   boolean mon_disappeared;
  343.   
  344.   char *m_names[] = {
  345. !     "aquatar",
  346.       "bat",
  347.       "centaur",
  348.       "dragon",
  349. --- 16,22 ----
  350.   boolean mon_disappeared;
  351.   
  352.   char *m_names[] = {
  353. !     "aquator",
  354.       "bat",
  355.       "centaur",
  356.       "dragon",
  357. ***************
  358. *** 32,38 ****
  359.       "nymph",
  360.       "orc",
  361.       "phantom",
  362. !     "quasit",
  363.       "rattlesnake",
  364.       "snake",
  365.       "troll",
  366. --- 32,38 ----
  367.       "nymph",
  368.       "orc",
  369.       "phantom",
  370. !     "quagga",
  371.       "rattlesnake",
  372.       "snake",
  373.       "troll",
  374. ***************
  375. *** 479,485 ****
  376.       }
  377.       if (dungeon[row][col] & OBJECT) {
  378.           obj = object_at(&level_objects, row, col);
  379. !         if ((obj->what_is == SCROLL) && (obj->which_kind == SCARE_MONSTER)) {
  380.               return(0);
  381.           }
  382.       }
  383. --- 479,485 ----
  384.       }
  385.       if (dungeon[row][col] & OBJECT) {
  386.           obj = object_at(&level_objects, row, col);
  387. !         if ((obj->what_is == SCROL) && (obj->which_kind == SCARE_MONSTER)) {
  388.               return(0);
  389.           }
  390.       }
  391. *** object.c.orig    Fri May 29 14:22:10 1987
  392. --- object.c    Fri Jun 12 13:24:01 1987
  393. ***************
  394. *** 50,56 ****
  395.   {145, "beige \0                          ", "of see invisible ", 0}
  396.   };
  397.   
  398. ! struct id id_scrolls[SCROLLS] = {
  399.   {505, "                                   ", "of protect armor ", 0},
  400.   {200, "                                   ", "of hold monster ", 0},
  401.   {235, "                                   ", "of enchant weapon ", 0},
  402. --- 50,56 ----
  403.   {145, "beige \0                          ", "of see invisible ", 0}
  404.   };
  405.   
  406. ! struct id id_scrolls[SCROLS] = {
  407.   {505, "                                   ", "of protect armor ", 0},
  408.   {200, "                                   ", "of hold monster ", 0},
  409.   {235, "                                   ", "of enchant weapon ", 0},
  410. ***************
  411. *** 244,250 ****
  412.       char *retstring;
  413.   
  414.       switch(obj->what_is) {
  415. !     case SCROLL:
  416.           retstring = obj->quantity > 1 ? "scrolls " : "scroll ";
  417.           break;
  418.       case POTION:
  419. --- 244,250 ----
  420.       char *retstring;
  421.   
  422.       switch(obj->what_is) {
  423. !     case SCROL:
  424.           retstring = obj->quantity > 1 ? "scrolls " : "scroll ";
  425.           break;
  426.       case POTION:
  427. ***************
  428. *** 308,314 ****
  429.           obj->what_is = gr_what_is();
  430.       }
  431.       switch(obj->what_is) {
  432. !     case SCROLL:
  433.           gr_scroll(obj);
  434.           break;
  435.       case POTION:
  436. --- 308,314 ----
  437.           obj->what_is = gr_what_is();
  438.       }
  439.       switch(obj->what_is) {
  440. !     case SCROL:
  441.           gr_scroll(obj);
  442.           break;
  443.       case POTION:
  444. ***************
  445. *** 342,348 ****
  446.       percent = get_rand(1, 91);
  447.   
  448.       if (percent <= 30) {
  449. !         what_is = SCROLL;
  450.       } else if (percent <= 60) {
  451.           what_is = POTION;
  452.       } else if (percent <= 64) {
  453. --- 342,348 ----
  454.       percent = get_rand(1, 91);
  455.   
  456.       if (percent <= 30) {
  457. !         what_is = SCROL;
  458.       } else if (percent <= 60) {
  459.           what_is = POTION;
  460.       } else if (percent <= 64) {
  461. ***************
  462. *** 366,372 ****
  463.   
  464.       percent = get_rand(0, 85);
  465.   
  466. !     obj->what_is = SCROLL;
  467.   
  468.       if (percent <= 5) {
  469.           obj->which_kind = PROTECT_ARMOR;
  470. --- 366,372 ----
  471.   
  472.       percent = get_rand(0, 85);
  473.   
  474. !     obj->what_is = SCROL;
  475.   
  476.       if (percent <= 5) {
  477.           obj->which_kind = PROTECT_ARMOR;
  478. ***************
  479. *** 694,701 ****
  480.           max = POTIONS - 1;
  481.           break;
  482.       case '?':
  483. !         obj->what_is = SCROLL;
  484. !         max = SCROLLS - 1;
  485.           break;
  486.       case ',':
  487.           obj->what_is = AMULET;
  488. --- 694,701 ----
  489.           max = POTIONS - 1;
  490.           break;
  491.       case '?':
  492. !         obj->what_is = SCROL;
  493. !         max = SCROLS - 1;
  494.           break;
  495.       case ',':
  496.           obj->what_is = AMULET;
  497. *** pack.c.orig    Fri May 29 14:22:20 1987
  498. --- pack.c    Fri Jun 12 13:24:32 1987
  499. ***************
  500. *** 60,66 ****
  501.       obj = object_at(&level_objects, row, col);
  502.       *status = 1;
  503.   
  504. !     if ((obj->what_is == SCROLL) && (obj->which_kind == SCARE_MONSTER) &&
  505.           obj->picked_up) {
  506.           message("the scroll turns to dust as you pick it up", 0);
  507.           dungeon[row][col] &= (~OBJECT);
  508. --- 60,66 ----
  509.       obj = object_at(&level_objects, row, col);
  510.       *status = 1;
  511.   
  512. !     if ((obj->what_is == SCROL) && (obj->which_kind == SCARE_MONSTER) &&
  513.           obj->picked_up) {
  514.           message("the scroll turns to dust as you pick it up", 0);
  515.           dungeon[row][col] &= (~OBJECT);
  516. ***************
  517. *** 157,163 ****
  518.   {
  519.       object *op;
  520.   
  521. !     if (!(obj->what_is & (WEAPON | FOOD | SCROLL | POTION))) {
  522.           return(0);
  523.       }
  524.       if ((obj->what_is == FOOD) && (obj->which_kind == FRUIT)) {
  525. --- 157,163 ----
  526.   {
  527.       object *op;
  528.   
  529. !     if (!(obj->what_is & (WEAPON | FOOD | SCROL | POTION))) {
  530.           return(0);
  531.       }
  532.       if ((obj->what_is == FOOD) && (obj->which_kind == FRUIT)) {
  533. ***************
  534. *** 380,386 ****
  535.       struct id *id_table;
  536.       char buf[MAX_TITLE_LENGTH+2];
  537.   
  538. !     ch = pack_letter("call what?", (SCROLL | POTION | WAND | RING));
  539.   
  540.       if (ch == CANCEL) {
  541.           return;
  542. --- 380,386 ----
  543.       struct id *id_table;
  544.       char buf[MAX_TITLE_LENGTH+2];
  545.   
  546. !     ch = pack_letter("call what?", (SCROL | POTION | WAND | RING));
  547.   
  548.       if (ch == CANCEL) {
  549.           return;
  550. ***************
  551. *** 389,395 ****
  552.           message("no such item.", 0);
  553.           return;
  554.       }
  555. !     if (!(obj->what_is & (SCROLL | POTION | WAND | RING))) {
  556.           message("surely you already know what that's called", 0);
  557.           return;
  558.       }
  559. --- 389,395 ----
  560.           message("no such item.", 0);
  561.           return;
  562.       }
  563. !     if (!(obj->what_is & (SCROL | POTION | WAND | RING))) {
  564.           message("surely you already know what that's called", 0);
  565.           return;
  566.       }
  567. ***************
  568. *** 450,456 ****
  569.           (*c == ')') || (*c == ']') || (*c == '/') || (*c == ','))) {
  570.           switch(*c) {
  571.           case '?':
  572. !             *mask = SCROLL;
  573.               break;
  574.           case '!':
  575.               *mask = POTION;
  576. --- 450,456 ----
  577.           (*c == ')') || (*c == ']') || (*c == '/') || (*c == ','))) {
  578.           switch(*c) {
  579.           case '?':
  580. !             *mask = SCROL;
  581.               break;
  582.           case '!':
  583.               *mask = POTION;
  584. *** patchlevel.h.orig    Thu May 28 15:06:56 1987
  585. --- patchlevel.h    Fri Jun 12 13:24:41 1987
  586. ***************
  587. *** 1 ****
  588. ! #define PATCHLEVEL 1
  589. --- 1 ----
  590. ! #define PATCHLEVEL 2
  591. *** rogue.h.orig    Fri May 29 14:18:42 1987
  592. --- rogue.h    Fri Jun 12 13:25:27 1987
  593. ***************
  594. *** 26,32 ****
  595.   
  596.   #define ARMOR        ((unsigned short)   01)
  597.   #define WEAPON        ((unsigned short)   02)
  598. ! #define SCROLL        ((unsigned short)   04)
  599.   #define POTION        ((unsigned short)  010)
  600.   #define GOLD        ((unsigned short)  020)
  601.   #define FOOD        ((unsigned short)  040)
  602. --- 26,32 ----
  603.   
  604.   #define ARMOR        ((unsigned short)   01)
  605.   #define WEAPON        ((unsigned short)   02)
  606. ! #define SCROL        ((unsigned short)   04)
  607.   #define POTION        ((unsigned short)  010)
  608.   #define GOLD        ((unsigned short)  020)
  609.   #define FOOD        ((unsigned short)  040)
  610. ***************
  611. *** 68,74 ****
  612.   #define CREATE_MONSTER 9
  613.   #define AGGRAVATE_MONSTER 10
  614.   #define MAGIC_MAPPING 11
  615. ! #define SCROLLS 12
  616.   
  617.   #define INCREASE_STRENGTH 0
  618.   #define RESTORE_STRENGTH 1
  619. --- 68,74 ----
  620.   #define CREATE_MONSTER 9
  621.   #define AGGRAVATE_MONSTER 10
  622.   #define MAGIC_MAPPING 11
  623. ! #define SCROLS 12
  624.   
  625.   #define INCREASE_STRENGTH 0
  626.   #define RESTORE_STRENGTH 1
  627. ***************
  628. *** 345,351 ****
  629.   #define QUIT 4
  630.   #define WIN 5
  631.   
  632. ! #define UP 0
  633.   #define UPRIGHT 1
  634.   #define RIGHT 2
  635.   #define RIGHTDOWN 3
  636. --- 345,351 ----
  637.   #define QUIT 4
  638.   #define WIN 5
  639.   
  640. ! #define UPWARD 0
  641.   #define UPRIGHT 1
  642.   #define RIGHT 2
  643.   #define RIGHTDOWN 3
  644. *** room.c.orig    Fri May 29 14:22:54 1987
  645. --- room.c    Fri Jun 12 13:25:59 1987
  646. ***************
  647. *** 140,146 ****
  648.   register unsigned short mask;
  649.   {
  650.           switch(mask) {
  651. !         case SCROLL:
  652.               return('?');
  653.           case POTION:
  654.               return('!');
  655. --- 140,146 ----
  656.   register unsigned short mask;
  657.   {
  658.           switch(mask) {
  659. !         case SCROL:
  660.               return('?');
  661.           case POTION:
  662.               return('!');
  663. ***************
  664. *** 404,410 ****
  665.       short d = -1;
  666.   
  667.       if (*row == rooms[rn].top_row) {
  668. !         d = UP/2;
  669.       } else if (*row == rooms[rn].bottom_row) {
  670.           d = DOWN/2;
  671.       } else if (*col == rooms[rn].left_col) {
  672. --- 404,410 ----
  673.       short d = -1;
  674.   
  675.       if (*row == rooms[rn].top_row) {
  676. !         d = UPWARD/2;
  677.       } else if (*row == rooms[rn].bottom_row) {
  678.           d = DOWN/2;
  679.       } else if (*col == rooms[rn].left_col) {
  680. *** save.c.orig    Fri May 29 14:24:31 1987
  681. --- save.c    Fri Jun 12 13:26:27 1987
  682. ***************
  683. *** 92,98 ****
  684.       r_write(fp, (char *) &rogue, sizeof(fighter));
  685.       write_pack(&rogue.pack, fp);
  686.       rw_id(id_potions, fp, POTIONS, 1);
  687. !     rw_id(id_scrolls, fp, SCROLLS, 1);
  688.       rw_id(id_wands, fp, WANDS, 1);
  689.       rw_id(id_rings, fp, RINGS, 1);
  690.       r_write(fp, (char *) traps, (MAX_TRAPS * sizeof(trap)));
  691. --- 92,98 ----
  692.       r_write(fp, (char *) &rogue, sizeof(fighter));
  693.       write_pack(&rogue.pack, fp);
  694.       rw_id(id_potions, fp, POTIONS, 1);
  695. !     rw_id(id_scrolls, fp, SCROLS, 1);
  696.       rw_id(id_wands, fp, WANDS, 1);
  697.       rw_id(id_rings, fp, RINGS, 1);
  698.       r_write(fp, (char *) traps, (MAX_TRAPS * sizeof(trap)));
  699. ***************
  700. *** 164,170 ****
  701.       r_read(fp, (char *) &rogue, sizeof(fighter));
  702.       read_pack(&rogue.pack, fp, 1);
  703.       rw_id(id_potions, fp, POTIONS, 0);
  704. !     rw_id(id_scrolls, fp, SCROLLS, 0);
  705.       rw_id(id_wands, fp, WANDS, 0);
  706.       rw_id(id_rings, fp, RINGS, 0);
  707.       r_read(fp, (char *) traps, (MAX_TRAPS * sizeof(trap)));
  708. --- 164,170 ----
  709.       r_read(fp, (char *) &rogue, sizeof(fighter));
  710.       read_pack(&rogue.pack, fp, 1);
  711.       rw_id(id_potions, fp, POTIONS, 0);
  712. !     rw_id(id_scrolls, fp, SCROLS, 0);
  713.       rw_id(id_wands, fp, WANDS, 0);
  714.       rw_id(id_rings, fp, RINGS, 0);
  715.       r_read(fp, (char *) traps, (MAX_TRAPS * sizeof(trap)));
  716. *** score.c.orig    Fri May 29 14:25:01 1987
  717. --- score.c    Fri Jun 12 13:27:40 1987
  718. ***************
  719. *** 120,127 ****
  720.   
  721.       if (from_intrpt) {
  722.   
  723. !         orow = curscr->_cury;
  724. !         ocol = curscr->_curx;
  725.           mc = msg_cleared;
  726.   
  727.           for (i = 0; i < DCOLS; i++) {
  728. --- 120,127 ----
  729.   
  730.       if (from_intrpt) {
  731.   
  732. !         orow = rogue.row;
  733. !         ocol = rogue.col;
  734.           mc = msg_cleared;
  735.   
  736.           for (i = 0; i < DCOLS; i++) {
  737. ***************
  738. *** 403,409 ****
  739.       case WAND:
  740.           val = id_wands[wc].value * (obj->class + 1);
  741.           break;
  742. !     case SCROLL:
  743.           val = id_scrolls[wc].value * obj->quantity;
  744.           break;
  745.       case POTION:
  746. --- 403,409 ----
  747.       case WAND:
  748.           val = id_wands[wc].value * (obj->class + 1);
  749.           break;
  750. !     case SCROL:
  751.           val = id_scrolls[wc].value * obj->quantity;
  752.           break;
  753.       case POTION:
  754. ***************
  755. *** 426,432 ****
  756.   {
  757.       short i;
  758.   
  759. !     for (i = 0; i < SCROLLS; i++) {
  760.           id_scrolls[i].id_status = IDENTIFIED;
  761.       }
  762.       for (i = 0; i < WEAPONS; i++) {
  763. --- 426,432 ----
  764.   {
  765.       short i;
  766.   
  767. !     for (i = 0; i < SCROLS; i++) {
  768.           id_scrolls[i].id_status = IDENTIFIED;
  769.       }
  770.       for (i = 0; i < WEAPONS; i++) {
  771. *** use.c.orig    Fri May 29 14:25:52 1987
  772. --- use.c    Fri Jun 12 13:28:05 1987
  773. ***************
  774. *** 148,154 ****
  775.       object *obj;
  776.       char msg[DCOLS];
  777.   
  778. !     ch = pack_letter("read what?", SCROLL);
  779.   
  780.       if (ch == CANCEL) {
  781.           return;
  782. --- 148,154 ----
  783.       object *obj;
  784.       char msg[DCOLS];
  785.   
  786. !     ch = pack_letter("read what?", SCROL);
  787.   
  788.       if (ch == CANCEL) {
  789.           return;
  790. ***************
  791. *** 157,163 ****
  792.           message("no such item.", 0);
  793.           return;
  794.       }
  795. !     if (obj->what_is != SCROLL) {
  796.           message("you can't read that", 0);
  797.           return;
  798.       }
  799. --- 157,163 ----
  800.           message("no such item.", 0);
  801.           return;
  802.       }
  803. !     if (obj->what_is != SCROL) {
  804.           message("you can't read that", 0);
  805.           return;
  806.       }
  807. ***************
  808. *** 336,342 ****
  809.           goto AGAIN;
  810.       }
  811.       obj->identified = 1;
  812. !     if (obj->what_is & (SCROLL | POTION | WEAPON | ARMOR | WAND | RING)) {
  813.           id_table = get_id_table(obj);
  814.           id_table[obj->which_kind].id_status = IDENTIFIED;
  815.       }
  816. --- 336,342 ----
  817.           goto AGAIN;
  818.       }
  819.       obj->identified = 1;
  820. !     if (obj->what_is & (SCROL | POTION | WEAPON | ARMOR | WAND | RING)) {
  821.           id_table = get_id_table(obj);
  822.           id_table[obj->which_kind].id_status = IDENTIFIED;
  823.       }
  824. *** zap.c.orig    Fri May 29 14:26:04 1987
  825. --- zap.c    Fri Jun 12 13:29:07 1987
  826. ***************
  827. *** 14,20 ****
  828.   
  829.   boolean wizard = 0;
  830.   
  831. ! extern boolean being_held, score_only;
  832.   
  833.   zapp()
  834.   {
  835. --- 14,20 ----
  836.   
  837.   boolean wizard = 0;
  838.   
  839. ! extern boolean being_held, score_only, detect_monster;
  840.   
  841.   zapp()
  842.   {
  843.