Binary files angband-284/src/angband and angband-285/src/angband differ diff -r -c angband-284/src/birth.c angband-285/src/birth.c *** angband-284/src/birth.c Tue Jul 20 17:20:55 1999 --- angband-285/src/birth.c Sat Jul 24 16:32:58 1999 *************** *** 782,791 **** /* Minimum 100 gold */ if (gold < 100) gold = 100; - /* She charmed the banker into it! -CJS- */ - /* She slept with the banker.. :) -GDH- */ - /* if (p_ptr->psex == SEX_FEMALE) gold += 50; */ - /* Save the gold */ p_ptr->au = gold; } --- 782,787 ---- *************** *** 1056,1063 **** char buf[80]; - bool autoroll = FALSE; - /*** Instructions ***/ --- 1052,1057 ---- *************** *** 1093,1110 **** sprintf(buf, "%c%c %s", I2A(n), p2, str); put_str(buf, 21 + (n/5), 2 + 15 * (n%5)); } - put_str("*) Random", 21 + (n/5), 2 + 15 * (n%5)); /* Choose */ while (1) { ! sprintf(buf, "Choose a sex (%c-%c): ", I2A(0), I2A(n-1)); put_str(buf, 20, 2); c = inkey(); if (c == 'Q') quit(NULL); if (c == 'S') return (FALSE); - if (c == ESCAPE) c = 'a'; k = (islower(c) ? A2I(c) : -1); if (c == '*') k = rand_int(MAX_SEXES); if ((k >= 0) && (k < n)) break; if (c == '?') do_cmd_help(); --- 1087,1104 ---- sprintf(buf, "%c%c %s", I2A(n), p2, str); put_str(buf, 21 + (n/5), 2 + 15 * (n%5)); } /* Choose */ while (1) { ! sprintf(buf, "Choose a sex (%c-%c, or * for random): ", ! I2A(0), I2A(n-1)); put_str(buf, 20, 2); c = inkey(); if (c == 'Q') quit(NULL); if (c == 'S') return (FALSE); k = (islower(c) ? A2I(c) : -1); + if (c == ESCAPE) c = '*'; if (c == '*') k = rand_int(MAX_SEXES); if ((k >= 0) && (k < n)) break; if (c == '?') do_cmd_help(); *************** *** 1115,1120 **** --- 1109,1118 ---- p_ptr->psex = k; sp_ptr = &sex_info[p_ptr->psex]; + /* Sex */ + put_str("Sex", 3, 1); + c_put_str(TERM_L_BLUE, sp_ptr->title, 3, 8); + /* Clean up */ clear_from(15); *************** *** 1137,1154 **** sprintf(buf, "%c%c %s", I2A(n), p2, str); put_str(buf, 21 + (n/5), 2 + 15 * (n%5)); } - put_str("*) Random", 21 + (n/5), 2 + 15 * (n%5)); /* Choose */ while (1) { ! sprintf(buf, "Choose a race (%c-%c): ", I2A(0), I2A(n-1)); put_str(buf, 20, 2); c = inkey(); if (c == 'Q') quit(NULL); if (c == 'S') return (FALSE); - if (c == ESCAPE) c = 'a'; k = (islower(c) ? A2I(c) : -1); if (c == '*') k = rand_int(MAX_RACES); if ((k >= 0) && (k < n)) break; if (c == '?') do_cmd_help(); --- 1135,1152 ---- sprintf(buf, "%c%c %s", I2A(n), p2, str); put_str(buf, 21 + (n/5), 2 + 15 * (n%5)); } /* Choose */ while (1) { ! sprintf(buf, "Choose a race (%c-%c, or * for random): ", ! I2A(0), I2A(n-1)); put_str(buf, 20, 2); c = inkey(); if (c == 'Q') quit(NULL); if (c == 'S') return (FALSE); k = (islower(c) ? A2I(c) : -1); + if (c == ESCAPE) c = '*'; if (c == '*') k = rand_int(MAX_RACES); if ((k >= 0) && (k < n)) break; if (c == '?') do_cmd_help(); *************** *** 1159,1164 **** --- 1157,1166 ---- p_ptr->prace = k; rp_ptr = &race_info[p_ptr->prace]; + /* Race */ + put_str("Race", 4, 1); + c_put_str(TERM_L_BLUE, rp_ptr->title, 4, 8); + /* Clean up */ clear_from(15); *************** *** 1189,1206 **** sprintf(buf, "%c%c %s%s", I2A(n), p2, str, mod); put_str(buf, 21 + (n/3), 2 + 20 * (n%3)); } - put_str("*) Random", 21 + (n/3), 2 + 20 * (n%3)); /* Get a class */ while (1) { ! sprintf(buf, "Choose a class (%c-%c): ", I2A(0), I2A(n-1)); put_str(buf, 20, 2); c = inkey(); if (c == 'Q') quit(NULL); if (c == 'S') return (FALSE); - if (c == ESCAPE) c = 'a'; k = (islower(c) ? A2I(c) : -1); if (c == '*') k = rand_int(MAX_CLASS); if ((k >= 0) && (k < n)) break; if (c == '?') do_cmd_help(); --- 1191,1208 ---- sprintf(buf, "%c%c %s%s", I2A(n), p2, str, mod); put_str(buf, 21 + (n/3), 2 + 20 * (n%3)); } /* Get a class */ while (1) { ! sprintf(buf, "Choose a class (%c-%c, or * for random): ", ! I2A(0), I2A(n-1)); put_str(buf, 20, 2); c = inkey(); if (c == 'Q') quit(NULL); if (c == 'S') return (FALSE); k = (islower(c) ? A2I(c) : -1); + if (c == ESCAPE) c = '*'; if (c == '*') k = rand_int(MAX_CLASS); if ((k >= 0) && (k < n)) break; if (c == '?') do_cmd_help(); *************** *** 1212,1446 **** cp_ptr = &class_info[p_ptr->pclass]; mp_ptr = &magic_info[p_ptr->pclass]; /* Clean up */ clear_from(15); ! /*** Maximize mode ***/ /* Extra info */ Term_putstr(5, 15, -1, TERM_WHITE, ! "Using 'maximize' mode makes the game harder at the start,"); Term_putstr(5, 16, -1, TERM_WHITE, ! "but often makes it easier to win."); ! /* Ask about "maximize" mode */ while (1) { ! put_str("Use 'maximize' mode? (y/n) ", 20, 2); c = inkey(); if (c == 'Q') quit(NULL); if (c == 'S') return (FALSE); if (c == ESCAPE) break; ! if ((c == 'y') || (c == 'n')) break; if (c == '?') do_cmd_help(); ! else bell("Illegal maximize flag!"); } ! /* Set "maximize" mode */ ! p_ptr->maximize = (c == 'y'); ! ! /* Clear */ ! clear_from(15); ! ! ! /*** Preserve mode ***/ ! ! /* Extra info */ ! Term_putstr(5, 15, -1, TERM_WHITE, ! "Using 'preserve' mode makes it difficult to 'lose' artifacts,"); ! Term_putstr(5, 16, -1, TERM_WHITE, ! "but eliminates the 'special' feelings about some levels."); ! ! /* Ask about "preserve" mode */ ! while (1) { ! put_str("Use 'preserve' mode? (y/n) ", 20, 2); ! c = inkey(); ! if (c == 'Q') quit(NULL); ! if (c == 'S') return (FALSE); ! if (c == ESCAPE) break; ! if ((c == 'y') || (c == 'n')) break; ! if (c == '?') do_cmd_help(); ! else bell("Illegal preserve flag!"); } ! /* Set "preserve" mode */ ! p_ptr->preserve = (c == 'y'); ! ! /* Clear */ ! clear_from(15); ! ! ! /*** Advanced play options ***/ ! ! /* Extra info */ ! Term_putstr(5, 15, -1, TERM_WHITE, ! "Experienced Angband players may wish to make the game"); ! Term_putstr(5, 16, -1, TERM_WHITE, ! "more difficult in various ways."); ! ! /* Ask about advanced play */ ! while (1) { ! put_str("See the advanced play options? (y/n) ", 20, 2); ! c = inkey(); ! if (c == 'Q') quit(NULL); ! if (c == 'S') return (FALSE); ! if (c == ESCAPE) break; ! if ((c == 'y') || (c == 'n')) break; ! if (c == '?') do_cmd_help(); ! else bell("Illegal advanced options flag!"); } ! /* Clear */ ! clear_from(15); ! ! if (c == 'y') ! { ! /* Extra info */ ! Term_putstr(5, 15, -1, TERM_WHITE, ! "'Iron Man' mode causes only down staircases to be created,"); ! Term_putstr(5, 16, -1, TERM_WHITE, ! "and makes it impossible to return to town."); ! ! /* Ask about */ ! while (1) ! { ! put_str("Use 'Iron Man' mode? (y/n) ", 20, 2); ! c = inkey(); ! if (c == 'Q') quit(NULL); ! if (c == 'S') return (FALSE); ! if (c == ESCAPE) break; ! if ((c == 'y') || (c == 'n')) break; ! if (c == '?') do_cmd_help(); ! else bell("Illegal 'ironman' flag!"); ! } ! ! /* Set "Iron Man" mode */ ! ironman = (c == 'y'); ! ! /* Clear */ ! clear_from(15); ! ! ! /* Extra info */ ! Term_putstr(5, 15, -1, TERM_WHITE, ! "Without access to the stores or the home, your character will"); ! Term_putstr(5, 16, -1, TERM_WHITE, ! "only be able to use what he can find and carry."); ! ! /* Ask about */ ! while (1) ! { ! put_str("Forbid use of the stores and home? (y/n) ", 20, 2); ! c = inkey(); ! if (c == 'Q') quit(NULL); ! if (c == 'S') return (FALSE); ! if (c == ESCAPE) break; ! if ((c == 'y') || (c == 'n')) break; ! if (c == '?') do_cmd_help(); ! else bell("Illegal 'no_stores' flag!"); ! } ! ! /* Set "no stores" mode */ ! no_stores = (c == 'y'); ! ! /* Clear */ ! clear_from(15); ! ! ! /* Extra info */ ! Term_putstr(5, 15, -1, TERM_WHITE, ! "Without artifacts, resistances are harder to come by,"); ! Term_putstr(5, 16, -1, TERM_WHITE, ! "and good weapons are few and far between."); ! ! /* Ask about */ ! while (1) ! { ! put_str("Forbid artifact creation? (y/n) ", 20, 2); ! c = inkey(); ! if (c == 'Q') quit(NULL); ! if (c == 'S') return (FALSE); ! if (c == ESCAPE) break; ! if ((c == 'y') || (c == 'n')) break; ! if (c == '?') do_cmd_help(); ! else bell("Illegal 'no_artifacts' flag!"); ! } ! ! /* Set "no_artifacts" mode */ ! no_artifacts = (c == 'y'); ! ! /* Clear */ ! clear_from(15); ! ! ! #ifdef GJW_RANDART ! ! /* Extra info */ ! Term_putstr(5, 15, -1, TERM_WHITE, ! "Using random artifacts means that your character will enter a"); ! Term_putstr(5, 16, -1, TERM_WHITE, ! "world with a uniquely generated set of special items."); ! ! /* Ask about */ ! while (!no_artifacts) ! { ! put_str("Use random artifacts? (y/n) ", 20, 2); ! c = inkey(); ! if (c == 'Q') quit(NULL); ! if (c == 'S') return (FALSE); ! if (c == ESCAPE) break; ! if ((c == 'y') || (c == 'n')) break; ! if (c == '?') do_cmd_help(); ! else bell("Illegal 'random_artifacts' flag!"); ! } ! ! /* Set "random_artifacts" mode */ ! random_artifacts = (c == 'y'); ! ! /* Clear */ ! clear_from(15); ! ! #endif /* GJW_RANDART */ ! ! } #ifdef ALLOW_AUTOROLLER /*** Autoroll ***/ - /* Extra info */ - Term_putstr(5, 15, -1, TERM_WHITE, - "The 'autoroller' allows you to specify certain 'minimal' stats,"); - Term_putstr(5, 16, -1, TERM_WHITE, - "but be warned that your various stats may not be independant!"); - - /* Ask about "auto-roller" mode */ - while (1) - { - put_str("Use the Auto-Roller? (y/n) ", 20, 2); - c = inkey(); - if (c == 'Q') quit(NULL); - if (c == 'S') return (FALSE); - if (c == ESCAPE) break; - if ((c == 'y') || (c == 'n')) break; - if (c == '?') do_cmd_help(); - else bell("Illegal autoroller flag!"); - } - - /* Set "autoroll" */ - autoroll = (c == 'y'); - - /* Clear */ - clear_from(15); - - /* Initialize */ ! if (autoroll) { int mval[6]; --- 1214,1277 ---- cp_ptr = &class_info[p_ptr->pclass]; mp_ptr = &magic_info[p_ptr->pclass]; + /* Class */ + put_str("Class", 5, 1); + c_put_str(TERM_L_BLUE, cp_ptr->title, 5, 8); + /* Clean up */ clear_from(15); ! /*** Birth options ***/ /* Extra info */ Term_putstr(5, 15, -1, TERM_WHITE, ! "Various birth options affect your character in various ways, and"); Term_putstr(5, 16, -1, TERM_WHITE, ! "can only be modified before your character is born."); ! /* Verify birth options */ while (1) { ! sprintf(buf, "Verify birth options (y/n)? "); ! put_str(buf, 20, 2); c = inkey(); if (c == 'Q') quit(NULL); if (c == 'S') return (FALSE); if (c == ESCAPE) break; ! if (c == 'y' || c == 'n') break; if (c == '?') do_cmd_help(); ! else bell("Illegal answer!"); } ! /* Verify */ ! if (c == 'y') { ! screen_save(); ! do_cmd_options_aux(4, "Birth Options"); ! screen_load(); } ! /* Use birth options as adult options */ ! for (i = OPT_ADULT; i < OPT_MAX; i++) { ! op_ptr->opt[i] = op_ptr->opt[i - 32]; } ! /* Icky -- Old flags */ ! p_ptr->maximize = adult_maximize; ! p_ptr->preserve = adult_preserve; ! /* Clean up */ ! clear_from(10); #ifdef ALLOW_AUTOROLLER /*** Autoroll ***/ /* Initialize */ ! if (adult_auto_roller) { int mval[6]; *************** *** 1451,1461 **** auto_round = 0L; last_round = 0L; ! /* Clean up */ ! clear_from(10); /* Prompt for the minimum stats */ ! put_str("Enter minimum attribute for: ", 15, 2); /* Output the maximum stats */ for (i = 0; i < 6; i++) --- 1282,1295 ---- auto_round = 0L; last_round = 0L; ! /* Extra info */ ! Term_putstr(5, 15, -1, TERM_WHITE, ! "The auto-roller will automatically ignore characters which do"); ! Term_putstr(5, 16, -1, TERM_WHITE, ! "not meet the minimum values for any stats specified below."); /* Prompt for the minimum stats */ ! put_str("Enter minimum value for: ", 15, 2); /* Output the maximum stats */ for (i = 0; i < 6; i++) *************** *** 1548,1554 **** col = 42; /* Feedback */ ! if (autoroll) { Term_clear(); --- 1382,1388 ---- col = 42; /* Feedback */ ! if (adult_auto_roller) { Term_clear(); *************** *** 1580,1653 **** /* Indicate the state */ put_str("(Hit ESC to stop)", 12, col+13); - } - - /* Otherwise just get a character */ - else - { - /* Get a new character */ - get_stats(); - } - - /* Auto-roll */ - while (autoroll) - { - bool accept = TRUE; ! /* Get a new character */ ! get_stats(); ! /* Advance the round */ ! auto_round++; ! /* Hack -- Prevent overflow */ ! if (auto_round >= 1000000L) break; ! /* Check and count acceptable stats */ ! for (i = 0; i < 6; i++) ! { ! /* This stat is okay */ ! if (stat_use[i] >= stat_limit[i]) ! { ! stat_match[i]++; ! } ! /* This stat is not okay */ ! else { ! accept = FALSE; } - } ! /* Break if "happy" */ ! if (accept) break; ! /* Take note every 25 rolls */ ! flag = (!(auto_round % 25L)); ! /* Update display occasionally */ ! if (flag || (auto_round < last_round + 100)) ! { ! /* Dump data */ ! birth_put_stats(); ! /* Dump round */ ! put_str(format("%10ld", auto_round), 10, col+20); ! /* Make sure they see everything */ ! Term_fresh(); ! /* Delay 1/10 second */ ! if (flag) Term_xtra(TERM_XTRA_DELAY, 100); ! /* Do not wait for a key */ ! inkey_scan = TRUE; ! /* Check for a keypress */ ! if (inkey()) break; } } /* Flush input */ flush(); --- 1414,1487 ---- /* Indicate the state */ put_str("(Hit ESC to stop)", 12, col+13); ! /* Auto-roll */ ! while (1) ! { ! bool accept = TRUE; ! /* Get a new character */ ! get_stats(); ! /* Advance the round */ ! auto_round++; ! /* Hack -- Prevent overflow */ ! if (auto_round >= 1000000L) break; ! /* Check and count acceptable stats */ ! for (i = 0; i < 6; i++) { ! /* This stat is okay */ ! if (stat_use[i] >= stat_limit[i]) ! { ! stat_match[i]++; ! } ! ! /* This stat is not okay */ ! else ! { ! accept = FALSE; ! } } ! /* Break if "happy" */ ! if (accept) break; ! /* Take note every 25 rolls */ ! flag = (!(auto_round % 25L)); ! /* Update display occasionally */ ! if (flag || (auto_round < last_round + 100)) ! { ! /* Dump data */ ! birth_put_stats(); ! /* Dump round */ ! put_str(format("%10ld", auto_round), 10, col+20); ! /* Make sure they see everything */ ! Term_fresh(); ! /* Delay 1/10 second */ ! if (flag) Term_xtra(TERM_XTRA_DELAY, 100); ! /* Do not wait for a key */ ! inkey_scan = TRUE; ! /* Check for a keypress */ ! if (inkey()) break; ! } } } + /* Otherwise just get a character */ + else + { + /* Get a new character */ + get_stats(); + } + /* Flush input */ flush(); *************** *** 1722,1728 **** } /* Warning */ ! bell("Illegal autoroller command!"); } /* Are we done? */ --- 1556,1562 ---- } /* Warning */ ! bell("Illegal auto_roller command!"); } /* Are we done? */ Only in angband-285/src: birth.o Only in angband-285/src: borg1.o Only in angband-285/src: borg2.o Only in angband-285/src: borg3.o Only in angband-285/src: borg4.o Only in angband-285/src: borg5.o Only in angband-285/src: borg6.o Only in angband-285/src: borg7.o Only in angband-285/src: borg8.o Only in angband-285/src: borg9.o diff -r -c angband-284/src/cave.c angband-285/src/cave.c *** angband-284/src/cave.c Tue Jul 20 17:20:57 1999 --- angband-285/src/cave.c Thu Jul 22 17:07:01 1999 *************** *** 323,332 **** { object_type *o_ptr; ! /* Acquire object */ o_ptr = &o_list[this_o_idx]; ! /* Acquire next object */ next_o_idx = o_ptr->next_o_idx; /* Forbid artifact grids */ --- 323,332 ---- { object_type *o_ptr; ! /* Access the object */ o_ptr = &o_list[this_o_idx]; ! /* Access the next object */ next_o_idx = o_ptr->next_o_idx; /* Forbid artifact grids */ *************** *** 772,781 **** { object_type *o_ptr; ! /* Acquire object */ o_ptr = &o_list[this_o_idx]; ! /* Acquire next object */ next_o_idx = o_ptr->next_o_idx; /* Memorized objects */ --- 772,781 ---- { object_type *o_ptr; ! /* Access the object */ o_ptr = &o_list[this_o_idx]; ! /* Access the next object */ next_o_idx = o_ptr->next_o_idx; /* Memorized objects */ *************** *** 804,814 **** /* Use the topmost marked item */ if (!easy_floor) break; ! /* Use a special symbol for a stack or 2 or more items */ if (++floor_num > 1) { ! c = '*'; ! a = TERM_L_GREEN; /* Done */ break; --- 804,814 ---- /* Use the topmost marked item */ if (!easy_floor) break; ! /* Use a special symbol for a stack of objects */ if (++floor_num > 1) { ! c = '&'; ! a = TERM_WHITE; /* Done */ break; *************** *** 820,825 **** --- 820,826 ---- break; #endif /* ALLOW_EASY_FLOOR */ + } } *************** *** 1062,1068 **** { object_type *o_ptr = &o_list[this_o_idx]; ! /* Acquire next object */ next_o_idx = o_ptr->next_o_idx; /* Memorize objects */ --- 1063,1069 ---- { object_type *o_ptr = &o_list[this_o_idx]; ! /* Access the next object */ next_o_idx = o_ptr->next_o_idx; /* Memorize objects */ Only in angband-285/src: cave.o diff -r -c angband-284/src/cmd1.c angband-285/src/cmd1.c *** angband-284/src/cmd1.c Thu Jul 22 11:49:21 1999 --- angband-285/src/cmd1.c Thu Jul 22 17:07:11 1999 *************** *** 438,447 **** { object_type *o_ptr; ! /* Acquire object */ o_ptr = &o_list[this_o_idx]; ! /* Acquire next object */ next_o_idx = o_ptr->next_o_idx; /* Skip non-chests */ --- 438,447 ---- { object_type *o_ptr; ! /* Access the object */ o_ptr = &o_list[this_o_idx]; ! /* Access the next object */ next_o_idx = o_ptr->next_o_idx; /* Skip non-chests */ *************** *** 469,474 **** --- 469,535 ---- } + /* + * Return TRUE if the given object is inscribed with "=g", and + * can be carried. + */ + bool auto_pickup_okay(object_type *o_ptr) + { + cptr s; + + /* It can't be carried */ + if (!inven_carry_okay(o_ptr)) return (FALSE); + + /* No inscription */ + if (!o_ptr->note) return (FALSE); + + /* Find a '=' */ + s = strchr(quark_str(o_ptr->note), '='); + + /* Process inscription */ + while (s) + { + /* =g ('g'et) means auto pickup */ + if (s[1] == 'g') return (TRUE); + + /* Find another '=' */ + s = strchr(s + 1, '='); + } + + /* Don't auto pickup */ + return (FALSE); + } + + + /* + * Helper routine for py_pickup() and py_pickup_floor(). + * Add the given dungeon object to the character's inventory. + * Delete the object afterwards. + */ + void py_pickup_aux(int o_idx) + { + int slot; + + char o_name[80]; + object_type *o_ptr; + + o_ptr = &o_list[o_idx]; + + /* Carry the object */ + slot = inven_carry(o_ptr); + + /* Get the object again */ + o_ptr = &inventory[slot]; + + /* Describe the object */ + object_desc(o_name, o_ptr, TRUE, 3); + + /* Message */ + msg_format("You have %s (%c).", o_name, index_to_label(slot)); + + /* Delete the object */ + delete_object_idx(o_idx); + } /* *************** *** 500,512 **** { object_type *o_ptr; ! /* Acquire object */ o_ptr = &o_list[this_o_idx]; /* Describe the object */ object_desc(o_name, o_ptr, TRUE, 3); ! /* Acquire next object */ next_o_idx = o_ptr->next_o_idx; /* Hack -- disturb */ --- 561,573 ---- { object_type *o_ptr; ! /* Access the object */ o_ptr = &o_list[this_o_idx]; /* Describe the object */ object_desc(o_name, o_ptr, TRUE, 3); ! /* Access the next object */ next_o_idx = o_ptr->next_o_idx; /* Hack -- disturb */ *************** *** 530,587 **** /* Delete the gold */ delete_object_idx(this_o_idx); } ! /* Pick up objects */ ! else { ! /* Describe the object */ ! if (!pickup) ! { ! msg_format("You see %s.", o_name); ! } ! ! /* Note that the pack is too full */ ! else if (!inven_carry_okay(o_ptr)) ! { ! msg_format("You have no room for %s.", o_name); ! } ! ! /* Pick up the item (if requested and allowed) */ ! else ! { ! int okay = TRUE; ! ! /* Hack -- query every item */ ! if (carry_query_flag) ! { ! char out_val[160]; ! sprintf(out_val, "Pick up %s? ", o_name); ! okay = get_check(out_val); ! } ! ! /* Attempt to pick up an object. */ ! if (okay) ! { ! int slot; ! ! /* Carry the item */ ! slot = inven_carry(o_ptr); ! ! /* Get the item again */ ! o_ptr = &inventory[slot]; ! ! /* Describe the object */ ! object_desc(o_name, o_ptr, TRUE, 3); ! /* Message */ ! msg_format("You have %s (%c).", o_name, index_to_label(slot)); ! /* Delete the object */ ! delete_object_idx(this_o_idx); ! } ! } } } } --- 591,639 ---- /* Delete the gold */ delete_object_idx(this_o_idx); + + /* Check the next object */ + continue; } ! /* Test for auto-pickup */ ! if (auto_pickup_okay(o_ptr)) { ! /* Pick up the object */ ! py_pickup_aux(this_o_idx); ! ! /* Check the next object */ ! continue; ! } ! ! /* Describe the object */ ! if (!pickup) ! { ! msg_format("You see %s.", o_name); ! ! /* Check the next object */ ! continue; ! } ! /* Note that the pack is too full */ ! if (!inven_carry_okay(o_ptr)) ! { ! msg_format("You have no room for %s.", o_name); ! ! /* Check the next object */ ! continue; ! } ! /* Hack -- query every item */ ! if (carry_query_flag) ! { ! char out_val[160]; ! sprintf(out_val, "Pick up %s? ", o_name); ! if (!get_check(out_val)) continue; } + + /* Pick up the object */ + py_pickup_aux(this_o_idx); } } *************** *** 1087,1098 **** #ifdef ALLOW_EASY_OPEN ! /* Disarm a visible trap */ ! else if ((do_pickup != easy_open) && ! (cave_feat[y][x] >= FEAT_TRAP_HEAD) && ! (cave_feat[y][x] <= FEAT_TRAP_TAIL)) { (void) do_cmd_disarm_aux(y, x); } #endif /* ALLOW_EASY_OPEN */ --- 1139,1165 ---- #ifdef ALLOW_EASY_OPEN ! /* Disarm a known visible trap */ ! else if ((cave_info[y][x] & (CAVE_MARK)) && ! (do_pickup != easy_open) && ! (cave_feat[y][x] >= FEAT_TRAP_HEAD) && ! (cave_feat[y][x] <= FEAT_TRAP_TAIL)) { + /* Optional auto-repeat */ + if (always_repeat && (p_ptr->command_arg <= 0) && !command_repeating) + { + /* Repeat 99 times */ + p_ptr->command_arg = 99; + } + + /* Icky -- Tim Baker Patch */ + + #if 0 (void) do_cmd_disarm_aux(y, x); + #endif + + do_cmd_disarm(); + return; } #endif /* ALLOW_EASY_OPEN */ *************** *** 1100,1105 **** --- 1167,1175 ---- /* Player can not walk through "walls" */ else if (!cave_floor_bold(y, x)) { + /* disturb() cancel's the auto-repeat! */ + int old_command_rep = p_ptr->command_rep; + /* Disturb the player */ disturb(0, 0); *************** *** 1143,1151 **** /* Closed door */ else if (cave_feat[y][x] < FEAT_SECRET) { #ifdef ALLOW_EASY_OPEN ! if (easy_open && easy_open_door(y, x)) return; #endif /* ALLOW_EASY_OPEN */ --- 1213,1236 ---- /* Closed door */ else if (cave_feat[y][x] < FEAT_SECRET) { + #ifdef ALLOW_EASY_OPEN ! /* Icky -- Tim Baker patch */ ! if (easy_open) ! { ! /* Optional auto-repeat. */ ! if (always_repeat && (p_ptr->command_arg <= 0) && !command_repeating) ! { ! /* Repeat 99 times */ ! p_ptr->command_arg = 99; ! } ! ! p_ptr->command_rep = old_command_rep; ! ! do_cmd_open(); ! return; ! } #endif /* ALLOW_EASY_OPEN */ *************** *** 1626,1635 **** { object_type *o_ptr; ! /* Acquire object */ o_ptr = &o_list[this_o_idx]; ! /* Acquire next object */ next_o_idx = o_ptr->next_o_idx; /* Visible object */ --- 1711,1720 ---- { object_type *o_ptr; ! /* Access the object */ o_ptr = &o_list[this_o_idx]; ! /* Access the next object */ next_o_idx = o_ptr->next_o_idx; /* Visible object */ Only in angband-285/src: cmd1.o diff -r -c angband-284/src/cmd2.c angband-285/src/cmd2.c *** angband-284/src/cmd2.c Tue Jul 20 18:34:09 1999 --- angband-285/src/cmd2.c Thu Jul 22 17:07:16 1999 *************** *** 149,158 **** { object_type *o_ptr; ! /* Acquire object */ o_ptr = &o_list[this_o_idx]; ! /* Acquire next object */ next_o_idx = o_ptr->next_o_idx; /* Skip unknown chests XXX XXX */ --- 149,158 ---- { object_type *o_ptr; ! /* Access the object */ o_ptr = &o_list[this_o_idx]; ! /* Access the next object */ next_o_idx = o_ptr->next_o_idx; /* Skip unknown chests XXX XXX */ *************** *** 472,575 **** } - #ifdef ALLOW_EASY_OPEN - - /* - * If there is a jammed/closed/locked door at the given location, - * then attempt to unlock/open it. Return TRUE if an attempt was - * made (successful or not), otherwise return FALSE. - * - * The code here should be nearly identical to that in - * do_cmd_open_test() and do_cmd_open_aux(). - */ - bool easy_open_door(int y, int x) - { - int i, j; - - /* Must be a closed door */ - if (!((cave_feat[y][x] >= FEAT_DOOR_HEAD) && - (cave_feat[y][x] <= FEAT_DOOR_TAIL))) - { - /* Nope */ - return (FALSE); - } - - /* Jammed door */ - if (cave_feat[y][x] >= FEAT_DOOR_HEAD + 0x08) - { - /* Stuck */ - msg_print("The door appears to be stuck."); - } - - /* Locked door */ - else if (cave_feat[y][x] >= FEAT_DOOR_HEAD + 0x01) - { - /* Disarm factor */ - i = p_ptr->skill_dis; - - /* Penalize some conditions */ - if (p_ptr->blind || no_lite()) i = i / 10; - if (p_ptr->confused || p_ptr->image) i = i / 10; - - /* Extract the lock power */ - j = cave_feat[y][x] - FEAT_DOOR_HEAD; - - /* Extract the difficulty XXX XXX XXX */ - j = i - (j * 4); - - /* Always have a small chance of success */ - if (j < 2) j = 2; - - /* Success */ - if (rand_int(100) < j) - { - /* Message */ - msg_print("You have picked the lock."); - - /* Open the door */ - cave_set_feat(y, x, FEAT_OPEN); - - /* Update some things */ - p_ptr->update |= (PU_UPDATE_VIEW | PU_MONSTERS); - - /* Sound */ - sound(SOUND_OPENDOOR); - - /* Experience */ - gain_exp(1); - } - - /* Failure */ - else - { - /* Failure */ - if (flush_failure) flush(); - - /* Message */ - msg_print("You failed to pick the lock."); - } - } - - /* Closed door */ - else - { - /* Open the door */ - cave_set_feat(y, x, FEAT_OPEN); - - /* Update some things */ - p_ptr->update |= (PU_UPDATE_VIEW | PU_MONSTERS); - - /* Sound */ - sound(SOUND_OPENDOOR); - } - - /* Result */ - return (TRUE); - } - - #endif /* ALLOW_EASY_OPEN */ - - #if defined(ALLOW_EASY_OPEN) /* --- 472,477 ---- *************** *** 641,647 **** /* No (known) traps here */ if (trapped && ! (!object_known_p(o_ptr) || !chest_traps[o_ptr->pval])) { continue; } --- 543,551 ---- /* No (known) traps here */ if (trapped && ! (!object_known_p(o_ptr) || ! (o_ptr->pval < 0) || ! !chest_traps[o_ptr->pval])) { continue; } *************** *** 667,682 **** */ static int coords_to_dir(int y, int x) { ! int d[3][3] = {{7, 4, 1}, {8, 5, 2}, {9, 6, 3}}; ! int dy, dx; ! dy = y - p_ptr->py; ! dx = x - p_ptr->px; ! /* Paranoia */ ! if (ABS(dx) > 1 || ABS(dy) > 1) return (0); ! return d[dx + 1][dy + 1]; } #endif /* ALLOW_EASY_OPEN */ --- 571,586 ---- */ static int coords_to_dir(int y, int x) { ! int d[3][3] = {{7, 4, 1}, {8, 5, 2}, {9, 6, 3}}; ! int dy, dx; ! dy = y - p_ptr->py; ! dx = x - p_ptr->px; ! /* Paranoia */ ! if (ABS(dx) > 1 || ABS(dy) > 1) return (0); ! return d[dx + 1][dy + 1]; } #endif /* ALLOW_EASY_OPEN */ *************** *** 1437,1443 **** * * Returns TRUE if repeated commands may continue */ ! bool do_cmd_disarm_aux(int y, int x) { int i, j, power; --- 1341,1347 ---- * * Returns TRUE if repeated commands may continue */ ! static bool do_cmd_disarm_aux(int y, int x) { int i, j, power; *************** *** 1916,1921 **** --- 1820,1838 ---- /* Tunnel */ more = do_cmd_disarm_aux(y, x); } + + #if 0 + + /* Icky -- Tim Baker Patch */ + + /* Close open doors */ + else if (feat == FEAT_OPEN) + { + /* Close */ + more = do_cmd_close_aux(y, x); + } + + #endif /* Oops */ else Only in angband-285/src: cmd2.o diff -r -c angband-284/src/cmd3.c angband-285/src/cmd3.c *** angband-284/src/cmd3.c Tue Jul 20 17:20:58 1999 --- angband-285/src/cmd3.c Thu Jul 22 16:17:48 1999 *************** *** 672,678 **** /* Lanterns are okay */ if ((o_ptr->tval == TV_LITE) && ! (o_ptr->sval == SV_LITE_LANTERN)) return (TRUE); /* Assume not okay */ return (FALSE); --- 672,682 ---- /* Lanterns are okay */ if ((o_ptr->tval == TV_LITE) && ! (o_ptr->sval == SV_LITE_LANTERN) && ! (o_ptr->pval > 0)) ! { ! return (TRUE); ! } /* Assume not okay */ return (FALSE); *************** *** 696,703 **** item_tester_hook = item_tester_refill_lantern; /* Get an item */ ! q = "Refill with which flask? "; ! s = "You have no flasks of oil."; if (!get_item(&item, q, s, (USE_INVEN | USE_FLOOR))) return; /* Get the item (in the pack) */ --- 700,707 ---- item_tester_hook = item_tester_refill_lantern; /* Get an item */ ! q = "Refill with which source of oil? "; ! s = "You have no sources of oil."; if (!get_item(&item, q, s, (USE_INVEN | USE_FLOOR))) return; /* Get the item (in the pack) */ *************** *** 732,751 **** msg_print("Your lamp is full."); } ! /* Decrease the item (from the pack) */ ! if (item >= 0) { ! inven_item_increase(item, -1); ! inven_item_describe(item); ! inven_item_optimize(item); } ! /* Decrease the item (from the floor) */ else { ! floor_item_increase(0 - item, -1); ! floor_item_describe(0 - item); ! floor_item_optimize(0 - item); } /* Recalculate torch */ --- 736,766 ---- msg_print("Your lamp is full."); } ! /* Lantern */ ! if (o_ptr->sval == SV_LITE_LANTERN) { ! /* No more fuel */ ! o_ptr->pval = 0; } ! /* Torch */ else { ! /* Decrease the item (from the pack) */ ! if (item >= 0) ! { ! inven_item_increase(item, -1); ! inven_item_describe(item); ! inven_item_optimize(item); ! } ! ! /* Decrease the item (from the floor) */ ! else ! { ! floor_item_increase(0 - item, -1); ! floor_item_describe(0 - item); ! floor_item_optimize(0 - item); ! } } /* Recalculate torch */ Only in angband-285/src: cmd3.o diff -r -c angband-284/src/cmd4.c angband-285/src/cmd4.c *** angband-284/src/cmd4.c Tue Jul 20 17:20:58 1999 --- angband-285/src/cmd4.c Sat Jul 24 16:20:34 1999 *************** *** 532,538 **** /* * Interact with some options */ ! static void do_cmd_options_aux(int page, cptr info) { char ch; --- 532,538 ---- /* * Interact with some options */ ! void do_cmd_options_aux(int page, cptr info) { char ch; *************** *** 661,667 **** /* Memorize old flags */ for (j = 0; j < 8; j++) { - /* Acquire current flags */ old_flag[j] = op_ptr->window_flag[j]; } --- 661,666 ---- *************** *** 824,837 **** /* Failure */ if (!fff) return (-1); - /* Skip space */ - fprintf(fff, "\n\n"); - /* Start dumping */ fprintf(fff, "# Automatic option dump\n\n"); ! /* Dump regular options */ ! for (i = 0; i < OPT_MAX; i++) { /* Require a real option */ if (!option_text[i]) continue; --- 823,833 ---- /* Failure */ if (!fff) return (-1); /* Start dumping */ fprintf(fff, "# Automatic option dump\n\n"); ! /* Dump non-adult options */ ! for (i = 0; i < OPT_ADULT; i++) { /* Require a real option */ if (!option_text[i]) continue; *************** *** 918,934 **** prt("(4) Efficiency Options", 7, 5); /* Cheating */ ! prt("(C) Cheating Options", 9, 5); /* Window flags */ ! prt("(W) Window flags", 11, 5); /* Special choices */ ! prt("(D) Base Delay Factor", 13, 5); ! prt("(H) Hitpoint Warning", 14, 5); ! prt("(S) Save As Default", 16, 5); ! prt("(R) Read Default Options", 17, 5); /* Prompt */ prt("Command: ", 20, 0); --- 914,930 ---- prt("(4) Efficiency Options", 7, 5); /* Cheating */ ! prt("(C) Cheating Options", 10, 5); /* Window flags */ ! prt("(W) Window flags", 12, 5); /* Special choices */ ! prt("(D) Base Delay Factor", 14, 5); ! prt("(H) Hitpoint Warning", 15, 5); ! prt("(S) Save As Default", 17, 5); ! prt("(R) Read Default Options", 18, 5); /* Prompt */ prt("Command: ", 20, 0); *************** *** 1533,1539 **** /* Get a macro trigger */ do_cmd_macro_aux(buf); ! /* Acquire action */ k = macro_find_exact(buf); /* Nothing found */ --- 1529,1535 ---- /* Get a macro trigger */ do_cmd_macro_aux(buf); ! /* Access the action */ k = macro_find_exact(buf); /* Nothing found */ *************** *** 2797,2806 **** { object_type *o_ptr; ! /* Acquire object */ o_ptr = &o_list[this_o_idx]; ! /* Acquire next object */ next_o_idx = o_ptr->next_o_idx; /* Ignore non-artifacts */ --- 2793,2802 ---- { object_type *o_ptr; ! /* Access the object */ o_ptr = &o_list[this_o_idx]; ! /* Access the next object */ next_o_idx = o_ptr->next_o_idx; /* Ignore non-artifacts */ Only in angband-285/src: cmd4.o diff -r -c angband-284/src/cmd5.c angband-285/src/cmd5.c *** angband-284/src/cmd5.c Tue Jul 20 17:28:30 1999 --- angband-285/src/cmd5.c Sat Jul 24 14:33:39 1999 *************** *** 1650,1656 **** case 57: { ! if (ironman) { /* No escape */ msg_print("The world remains the same!"); --- 1650,1656 ---- case 57: { ! if (adult_ironman) { /* No escape */ msg_print("The world remains the same!"); Only in angband-285/src: cmd5.o diff -r -c angband-284/src/cmd6.c angband-285/src/cmd6.c *** angband-284/src/cmd6.c Tue Jul 20 17:33:28 1999 --- angband-285/src/cmd6.c Sat Jul 24 15:20:31 1999 *************** *** 2796,2802 **** #ifdef GJW_RANDART ! if (random_artifacts) { switch (a_idx) { --- 2796,2802 ---- #ifdef GJW_RANDART ! if (adult_rand_artifacts) { switch (a_idx) { Only in angband-285/src: cmd6.o diff -r -c angband-284/src/defines.h angband-285/src/defines.h *** angband-284/src/defines.h Tue Jul 20 18:39:18 1999 --- angband-285/src/defines.h Sat Jul 24 16:08:31 1999 *************** *** 1642,1663 **** /* * Bit flags for the "monster_desc" function */ ! #define MDESC_OBJE 0x01 /* Objective (or Reflexive) */ ! #define MDESC_POSS 0x02 /* Possessive (or Reflexive) */ ! #define MDESC_IND1 0x04 /* Indefinites for hidden monsters */ ! #define MDESC_IND2 0x08 /* Indefinites for visible monsters */ ! #define MDESC_PRO1 0x10 /* Pronominalize hidden monsters */ ! #define MDESC_PRO2 0x20 /* Pronominalize visible monsters */ ! #define MDESC_HIDE 0x40 /* Assume the monster is hidden */ ! #define MDESC_SHOW 0x80 /* Assume the monster is visible */ /* * Bit flags for the "get_item" function */ ! #define USE_EQUIP 0x01 /* Allow equip items */ ! #define USE_INVEN 0x02 /* Allow inven items */ ! #define USE_FLOOR 0x04 /* Allow floor items */ --- 1642,1663 ---- /* * Bit flags for the "monster_desc" function */ ! #define MDESC_OBJE 0x01 /* Objective (or Reflexive) */ ! #define MDESC_POSS 0x02 /* Possessive (or Reflexive) */ ! #define MDESC_IND1 0x04 /* Indefinites for hidden monsters */ ! #define MDESC_IND2 0x08 /* Indefinites for visible monsters */ ! #define MDESC_PRO1 0x10 /* Pronominalize hidden monsters */ ! #define MDESC_PRO2 0x20 /* Pronominalize visible monsters */ ! #define MDESC_HIDE 0x40 /* Assume the monster is hidden */ ! #define MDESC_SHOW 0x80 /* Assume the monster is visible */ /* * Bit flags for the "get_item" function */ ! #define USE_EQUIP 0x01 /* Allow equip items */ ! #define USE_INVEN 0x02 /* Allow inven items */ ! #define USE_FLOOR 0x04 /* Allow floor items */ *************** *** 1667,1686 **** /* * Bit flags for the "p_ptr->notice" variable */ ! #define PN_COMBINE 0x00000001L /* Combine the pack */ ! #define PN_REORDER 0x00000002L /* Reorder the pack */ /* xxx (many) */ /* * Bit flags for the "p_ptr->update" variable */ ! #define PU_BONUS 0x00000001L /* Calculate bonuses */ ! #define PU_TORCH 0x00000002L /* Calculate torch radius */ /* xxx (many) */ ! #define PU_HP 0x00000010L /* Calculate chp and mhp */ ! #define PU_MANA 0x00000020L /* Calculate csp and msp */ ! #define PU_SPELLS 0x00000040L /* Calculate spells */ /* xxx (many) */ #define PU_FORGET_VIEW 0x00010000L /* Forget field of view */ #define PU_UPDATE_VIEW 0x00020000L /* Update field of view */ --- 1667,1686 ---- /* * Bit flags for the "p_ptr->notice" variable */ ! #define PN_COMBINE 0x00000001L /* Combine the pack */ ! #define PN_REORDER 0x00000002L /* Reorder the pack */ /* xxx (many) */ /* * Bit flags for the "p_ptr->update" variable */ ! #define PU_BONUS 0x00000001L /* Calculate bonuses */ ! #define PU_TORCH 0x00000002L /* Calculate torch radius */ /* xxx (many) */ ! #define PU_HP 0x00000010L /* Calculate chp and mhp */ ! #define PU_MANA 0x00000020L /* Calculate csp and msp */ ! #define PU_SPELLS 0x00000040L /* Calculate spells */ /* xxx (many) */ #define PU_FORGET_VIEW 0x00010000L /* Forget field of view */ #define PU_UPDATE_VIEW 0x00020000L /* Update field of view */ *************** *** 1688,1752 **** #define PU_FORGET_FLOW 0x00100000L /* Forget flow data */ #define PU_UPDATE_FLOW 0x00200000L /* Update flow data */ /* xxx (many) */ ! #define PU_MONSTERS 0x10000000L /* Update monsters */ ! #define PU_DISTANCE 0x20000000L /* Update distances */ /* xxx */ ! #define PU_PANEL 0x80000000L /* Update panel */ /* * Bit flags for the "p_ptr->redraw" variable */ ! #define PR_MISC 0x00000001L /* Display Race/Class */ ! #define PR_TITLE 0x00000002L /* Display Title */ ! #define PR_LEV 0x00000004L /* Display Level */ ! #define PR_EXP 0x00000008L /* Display Experience */ ! #define PR_STATS 0x00000010L /* Display Stats */ ! #define PR_ARMOR 0x00000020L /* Display Armor */ ! #define PR_HP 0x00000040L /* Display Hitpoints */ ! #define PR_MANA 0x00000080L /* Display Mana */ ! #define PR_GOLD 0x00000100L /* Display Gold */ ! #define PR_DEPTH 0x00000200L /* Display Depth */ ! /* xxx */ ! #define PR_HEALTH 0x00000800L /* Display Health Bar */ ! #define PR_CUT 0x00001000L /* Display Extra (Cut) */ ! #define PR_STUN 0x00002000L /* Display Extra (Stun) */ ! #define PR_HUNGER 0x00004000L /* Display Extra (Hunger) */ ! /* xxx */ ! #define PR_BLIND 0x00010000L /* Display Extra (Blind) */ ! #define PR_CONFUSED 0x00020000L /* Display Extra (Confused) */ ! #define PR_AFRAID 0x00040000L /* Display Extra (Afraid) */ ! #define PR_POISONED 0x00080000L /* Display Extra (Poisoned) */ ! #define PR_STATE 0x00100000L /* Display Extra (State) */ ! #define PR_SPEED 0x00200000L /* Display Extra (Speed) */ ! #define PR_STUDY 0x00400000L /* Display Extra (Study) */ /* xxx */ ! #define PR_EXTRA 0x01000000L /* Display Extra Info */ ! #define PR_BASIC 0x02000000L /* Display Basic Info */ /* xxx */ ! #define PR_MAP 0x08000000L /* Display Map */ /* xxx (many) */ /* * Bit flags for the "p_ptr->window" variable (etc) */ ! #define PW_INVEN 0x00000001L /* Display inven/equip */ ! #define PW_EQUIP 0x00000002L /* Display equip/inven */ ! #define PW_PLAYER_0 0x00000004L /* Display player (basic) */ ! #define PW_PLAYER_1 0x00000008L /* Display player (extra) */ /* xxx */ /* xxx */ ! #define PW_MESSAGE 0x00000040L /* Display messages */ ! #define PW_OVERHEAD 0x00000080L /* Display overhead view */ ! #define PW_MONSTER 0x00000100L /* Display monster recall */ ! #define PW_OBJECT 0x00000200L /* Display object recall */ /* xxx */ ! #define PW_SNAPSHOT 0x00000800L /* Display snap-shot */ /* xxx */ /* xxx */ ! #define PW_BORG_1 0x00004000L /* Display borg messages */ ! #define PW_BORG_2 0x00008000L /* Display borg status */ ! /*** Cave flags ***/ --- 1688,1751 ---- #define PU_FORGET_FLOW 0x00100000L /* Forget flow data */ #define PU_UPDATE_FLOW 0x00200000L /* Update flow data */ /* xxx (many) */ ! #define PU_MONSTERS 0x10000000L /* Update monsters */ ! #define PU_DISTANCE 0x20000000L /* Update distances */ /* xxx */ ! #define PU_PANEL 0x80000000L /* Update panel */ /* * Bit flags for the "p_ptr->redraw" variable */ ! #define PR_MISC 0x00000001L /* Display Race/Class */ ! #define PR_TITLE 0x00000002L /* Display Title */ ! #define PR_LEV 0x00000004L /* Display Level */ ! #define PR_EXP 0x00000008L /* Display Experience */ ! #define PR_STATS 0x00000010L /* Display Stats */ ! #define PR_ARMOR 0x00000020L /* Display Armor */ ! #define PR_HP 0x00000040L /* Display Hitpoints */ ! #define PR_MANA 0x00000080L /* Display Mana */ ! #define PR_GOLD 0x00000100L /* Display Gold */ ! #define PR_DEPTH 0x00000200L /* Display Depth */ ! /* xxx */ ! #define PR_HEALTH 0x00000800L /* Display Health Bar */ ! #define PR_CUT 0x00001000L /* Display Extra (Cut) */ ! #define PR_STUN 0x00002000L /* Display Extra (Stun) */ ! #define PR_HUNGER 0x00004000L /* Display Extra (Hunger) */ ! /* xxx */ ! #define PR_BLIND 0x00010000L /* Display Extra (Blind) */ ! #define PR_CONFUSED 0x00020000L /* Display Extra (Confused) */ ! #define PR_AFRAID 0x00040000L /* Display Extra (Afraid) */ ! #define PR_POISONED 0x00080000L /* Display Extra (Poisoned) */ ! #define PR_STATE 0x00100000L /* Display Extra (State) */ ! #define PR_SPEED 0x00200000L /* Display Extra (Speed) */ ! #define PR_STUDY 0x00400000L /* Display Extra (Study) */ /* xxx */ ! #define PR_EXTRA 0x01000000L /* Display Extra Info */ ! #define PR_BASIC 0x02000000L /* Display Basic Info */ /* xxx */ ! #define PR_MAP 0x08000000L /* Display Map */ /* xxx (many) */ /* * Bit flags for the "p_ptr->window" variable (etc) */ ! #define PW_INVEN 0x00000001L /* Display inven/equip */ ! #define PW_EQUIP 0x00000002L /* Display equip/inven */ ! #define PW_PLAYER_0 0x00000004L /* Display player (basic) */ ! #define PW_PLAYER_1 0x00000008L /* Display player (extra) */ /* xxx */ /* xxx */ ! #define PW_MESSAGE 0x00000040L /* Display messages */ ! #define PW_OVERHEAD 0x00000080L /* Display overhead view */ ! #define PW_MONSTER 0x00000100L /* Display monster recall */ ! #define PW_OBJECT 0x00000200L /* Display object recall */ /* xxx */ ! #define PW_SNAPSHOT 0x00000800L /* Display snap-shot */ /* xxx */ /* xxx */ ! #define PW_BORG_1 0x00004000L /* Display borg messages */ ! #define PW_BORG_2 0x00008000L /* Display borg status */ /*** Cave flags ***/ *************** *** 1755,1768 **** /* * Special cave grid flags */ ! #define CAVE_MARK 0x01 /* memorized feature */ ! #define CAVE_GLOW 0x02 /* self-illuminating */ ! #define CAVE_ICKY 0x04 /* part of a vault */ ! #define CAVE_ROOM 0x08 /* part of a room */ ! #define CAVE_SEEN 0x10 /* seen flag */ ! #define CAVE_VIEW 0x20 /* view flag */ ! #define CAVE_TEMP 0x40 /* temp flag */ ! #define CAVE_WALL 0x80 /* wall flag */ --- 1754,1767 ---- /* * Special cave grid flags */ ! #define CAVE_MARK 0x01 /* memorized feature */ ! #define CAVE_GLOW 0x02 /* self-illuminating */ ! #define CAVE_ICKY 0x04 /* part of a vault */ ! #define CAVE_ROOM 0x08 /* part of a room */ ! #define CAVE_SEEN 0x10 /* seen flag */ ! #define CAVE_VIEW 0x20 /* view flag */ ! #define CAVE_TEMP 0x40 /* temp flag */ ! #define CAVE_WALL 0x80 /* wall flag */ *************** *** 1772,1783 **** /* * Chest trap flags (see "tables.c") */ ! #define CHEST_LOSE_STR 0x01 ! #define CHEST_LOSE_CON 0x02 ! #define CHEST_POISON 0x04 ! #define CHEST_PARALYZE 0x08 ! #define CHEST_EXPLODE 0x10 ! #define CHEST_SUMMON 0x20 /* --- 1771,1782 ---- /* * Chest trap flags (see "tables.c") */ ! #define CHEST_LOSE_STR 0x01 ! #define CHEST_LOSE_CON 0x02 ! #define CHEST_POISON 0x04 ! #define CHEST_PARALYZE 0x08 ! #define CHEST_EXPLODE 0x10 ! #define CHEST_SUMMON 0x20 /* *************** *** 1794,1800 **** /* ! * Constants for object_type.inscrip field. */ #define INSCRIP_NULL 0 #define INSCRIP_TERRIBLE 1 --- 1793,1799 ---- /* ! * Constants for "inscrip" field of "object_type". */ #define INSCRIP_NULL 0 #define INSCRIP_TERRIBLE 1 *************** *** 1806,1819 **** #define INSCRIP_EXCELLENT 7 #define INSCRIP_SPECIAL 8 #define INSCRIP_UNCURSED 9 ! #define INSCRIP_SALE 10 ! #define MAX_INSCRIP 11 /* ! * Some bit-flags for the "smart" field * ! * Most of these map to the "TR2_xxx" flags */ #define SM_OPP_ACID 0x00000001 #define SM_OPP_ELEC 0x00000002 --- 1805,1817 ---- #define INSCRIP_EXCELLENT 7 #define INSCRIP_SPECIAL 8 #define INSCRIP_UNCURSED 9 ! #define MAX_INSCRIP 10 /* ! * Some bit-flags for the "smart" field of "monster_type". * ! * Most of these map to the "TR2_xxx" flags. */ #define SM_OPP_ACID 0x00000001 #define SM_OPP_ELEC 0x00000002 *************** *** 1971,1981 **** * Hack -- flag set 1 -- mask for "pval-dependant" flags. * Note that all "pval" dependant flags must be in "flags1". */ ! #define TR1_PVAL_MASK \ ! (TR1_STR | TR1_INT | TR1_WIS | TR1_DEX | \ ! TR1_CON | TR1_CHR | TR1_XXX1 | TR1_XXX2 | \ ! TR1_STEALTH | TR1_SEARCH | TR1_INFRA | TR1_TUNNEL | \ ! TR1_SPEED | TR1_BLOWS | TR1_SHOTS | TR1_MIGHT) /* --- 1969,1979 ---- * Hack -- flag set 1 -- mask for "pval-dependant" flags. * Note that all "pval" dependant flags must be in "flags1". */ ! #define TR1_PVAL_MASK \ ! (TR1_STR | TR1_INT | TR1_WIS | TR1_DEX | \ ! TR1_CON | TR1_CHR | TR1_XXX1 | TR1_XXX2 | \ ! TR1_STEALTH | TR1_SEARCH | TR1_INFRA | TR1_TUNNEL | \ ! TR1_SPEED | TR1_BLOWS | TR1_SHOTS | TR1_MIGHT) /* *************** *** 2249,2282 **** */ #define RF4_INT_MASK \ ! (0L) #define RF5_INT_MASK \ ! (RF5_HOLD | RF5_SLOW | RF5_CONF | RF5_BLIND | RF5_SCARE) #define RF6_INT_MASK \ ! (RF6_BLINK | RF6_TPORT | RF6_TELE_LEVEL | RF6_TELE_AWAY | \ ! RF6_HEAL | RF6_HASTE | RF6_TRAPS | \ ! RF6_S_KIN | RF6_S_MONSTER | RF6_S_MONSTERS | \ ! RF6_S_ANT | RF6_S_SPIDER | RF6_S_HOUND | RF6_S_HYDRA | \ ! RF6_S_ANGEL | RF6_S_DRAGON | RF6_S_UNDEAD | RF6_S_DEMON | \ ! RF6_S_HI_DRAGON | RF6_S_HI_UNDEAD | RF6_S_HI_DEMON | \ ! RF6_S_WRAITH | RF6_S_UNIQUE) /* * "Bolt" spells that may hurt fellow monsters */ #define RF4_BOLT_MASK \ ! (RF4_ARROW_1 | RF4_ARROW_2 | RF4_ARROW_3 | RF4_ARROW_4) #define RF5_BOLT_MASK \ ! (RF5_BO_ACID | RF5_BO_ELEC | RF5_BO_FIRE | RF5_BO_COLD | \ ! RF5_BO_POIS | RF5_BO_NETH | RF5_BO_WATE | RF5_BO_MANA | \ ! RF5_BO_PLAS | RF5_BO_ICEE | RF5_MISSILE) #define RF6_BOLT_MASK \ ! (0L) /* * Spells that allow the caster to escape --- 2247,2280 ---- */ #define RF4_INT_MASK \ ! (0L) #define RF5_INT_MASK \ ! (RF5_HOLD | RF5_SLOW | RF5_CONF | RF5_BLIND | RF5_SCARE) #define RF6_INT_MASK \ ! (RF6_BLINK | RF6_TPORT | RF6_TELE_LEVEL | RF6_TELE_AWAY | \ ! RF6_HEAL | RF6_HASTE | RF6_TRAPS | \ ! RF6_S_KIN | RF6_S_MONSTER | RF6_S_MONSTERS | \ ! RF6_S_ANT | RF6_S_SPIDER | RF6_S_HOUND | RF6_S_HYDRA | \ ! RF6_S_ANGEL | RF6_S_DRAGON | RF6_S_UNDEAD | RF6_S_DEMON | \ ! RF6_S_HI_DRAGON | RF6_S_HI_UNDEAD | RF6_S_HI_DEMON | \ ! RF6_S_WRAITH | RF6_S_UNIQUE) /* * "Bolt" spells that may hurt fellow monsters */ #define RF4_BOLT_MASK \ ! (RF4_ARROW_1 | RF4_ARROW_2 | RF4_ARROW_3 | RF4_ARROW_4) #define RF5_BOLT_MASK \ ! (RF5_BO_ACID | RF5_BO_ELEC | RF5_BO_FIRE | RF5_BO_COLD | \ ! RF5_BO_POIS | RF5_BO_NETH | RF5_BO_WATE | RF5_BO_MANA | \ ! RF5_BO_PLAS | RF5_BO_ICEE | RF5_MISSILE) #define RF6_BOLT_MASK \ ! (0L) /* * Spells that allow the caster to escape *************** *** 2426,2451 **** - /*** Advanced play option Definitions ***/ - - /* - * Indexes - */ - #define HANDICAP_no_artifacts 0 - #define HANDICAP_no_stores 1 - #define HANDICAP_ironman 2 - #define HANDICAP_rand_artifacts 3 - #define HANDICAP_MAX 4 - - /* - * Hack -- Option symbols - */ - #define no_artifacts p_ptr->handicap[HANDICAP_no_artifacts] - #define no_stores p_ptr->handicap[HANDICAP_no_stores] - #define ironman p_ptr->handicap[HANDICAP_ironman] - #define random_artifacts p_ptr->handicap[HANDICAP_rand_artifacts] - - /*** Option Definitions ***/ /* --- 2424,2429 ---- *************** *** 2531,2540 **** /* xxx */ /* xxx */ /* xxx */ ! #define OPT_MAX 80 - #define OPT_PAGE_MAX 4 /* Number of pages of options -- TNB */ - #define OPT_PER_PAGE 20 /* Max. number of options in a page -- TNB */ /* * Hack -- Option symbols --- 2509,2552 ---- /* xxx */ /* xxx */ /* xxx */ ! /* xxx xxx */ ! ! /* Options for next birth (192-223) */ ! #define OPT_birth_point_based 192 ! #define OPT_birth_auto_roller 193 ! #define OPT_birth_maximize 194 ! #define OPT_birth_preserve 195 ! #define OPT_birth_ironman 196 ! #define OPT_birth_no_stores 197 ! #define OPT_birth_no_artifacts 198 ! #define OPT_birth_rand_artifacts 198 ! ! /* Options from this birth (224-255) */ ! #define OPT_adult_point_based 224 ! #define OPT_adult_auto_roller 225 ! #define OPT_adult_maximize 226 ! #define OPT_adult_preserve 227 ! #define OPT_adult_ironman 228 ! #define OPT_adult_no_stores 229 ! #define OPT_adult_no_artifacts 230 ! #define OPT_adult_rand_artifacts 231 ! ! /* First "birth" option */ ! #define OPT_BIRTH 192 ! ! /* First "adult" option */ ! #define OPT_ADULT 224 ! ! /* Number of options */ ! #define OPT_MAX 256 ! ! ! /* ! * Information for "do_cmd_options()". ! */ ! #define OPT_PAGE_MAX 5 ! #define OPT_PER_PAGE 20 /* * Hack -- Option symbols *************** *** 2611,2624 **** /* xxx */ #define easy_floor op_ptr->opt[OPT_easy_floor] /* xxx */ ! /* xxx */ ! /* xxx */ ! /* xxx */ ! /* xxx */ ! /* xxx */ ! /* xxx */ ! /* xxx */ ! /* xxx */ --- 2623,2648 ---- /* xxx */ #define easy_floor op_ptr->opt[OPT_easy_floor] /* xxx */ ! /* xxx xxx */ ! /* xxx xxx */ ! #define birth_point_based op_ptr->opt[OPT_birth_point_based] ! #define birth_auto_roller op_ptr->opt[OPT_birth_auto_roller] ! #define birth_maximize op_ptr->opt[OPT_birth_maximize] ! #define birth_preserve op_ptr->opt[OPT_birth_preserve] ! #define birth_ironman op_ptr->opt[OPT_birth_ironman] ! #define birth_no_stores op_ptr->opt[OPT_birth_no_stores] ! #define birth_no_artifacts op_ptr->opt[OPT_birth_no_artifacts] ! #define birth_rand_artifacts op_ptr->opt[OPT_birth_rand_artifacts] ! /* xxx xxx */ ! #define adult_point_based op_ptr->opt[OPT_adult_point_based] ! #define adult_auto_roller op_ptr->opt[OPT_adult_auto_roller] ! #define adult_maximize op_ptr->opt[OPT_adult_maximize] ! #define adult_preserve op_ptr->opt[OPT_adult_preserve] ! #define adult_ironman op_ptr->opt[OPT_adult_ironman] ! #define adult_no_stores op_ptr->opt[OPT_adult_no_stores] ! #define adult_no_artifacts op_ptr->opt[OPT_adult_no_artifacts] ! #define adult_rand_artifacts op_ptr->opt[OPT_adult_rand_artifacts] ! /* xxx xxx */ Only in angband-285/src: defines.h~ diff -r -c angband-284/src/dungeon.c angband-285/src/dungeon.c *** angband-284/src/dungeon.c Tue Jul 20 17:34:15 1999 --- angband-285/src/dungeon.c Sat Jul 24 15:20:43 1999 *************** *** 1793,1799 **** { monster_race *r_ptr; ! /* Acquire monster race */ r_ptr = &r_info[p_ptr->monster_race_idx]; /* Check for change of any kind */ --- 1793,1799 ---- { monster_race *r_ptr; ! /* Access the monster race */ r_ptr = &r_info[p_ptr->monster_race_idx]; /* Check for change of any kind */ *************** *** 2062,2069 **** --- 2062,2075 ---- /* Clear the top line */ prt("", 0, 0); + /* Hack -- Set a special flag */ + command_repeating = TRUE; + /* Process the command */ process_command(); + + /* Hack -- Clear the special flag */ + command_repeating = FALSE; } /* Normal command */ *************** *** 2298,2304 **** } /* Ironman players can never go up */ ! if (ironman) { p_ptr->create_up_stair = FALSE; } --- 2304,2310 ---- } /* Ironman players can never go up */ ! if (adult_ironman) { p_ptr->create_up_stair = FALSE; } *************** *** 2671,2679 **** player_birth(); #ifdef GJW_RANDART /* Randomize the artifacts. */ ! if (random_artifacts) do_randart(seed_randart); #endif /* Hack -- enter the world */ --- 2677,2689 ---- player_birth(); #ifdef GJW_RANDART + /* Randomize the artifacts. */ ! if (adult_rand_artifacts) ! { do_randart(seed_randart); + } + #endif /* Hack -- enter the world */ Only in angband-285/src: dungeon.o diff -r -c angband-284/src/externs.h angband-285/src/externs.h *** angband-284/src/externs.h Tue Jul 20 18:34:50 1999 --- angband-285/src/externs.h Sat Jul 24 16:20:10 1999 *************** *** 222,228 **** extern void (*ang_sort_swap)(vptr u, vptr v, int a, int b); extern bool (*get_mon_num_hook)(int r_idx); extern bool (*get_obj_num_hook)(int k_idx); ! /* * Automatically generated "function declarations" --- 222,228 ---- extern void (*ang_sort_swap)(vptr u, vptr v, int a, int b); extern bool (*get_mon_num_hook)(int r_idx); extern bool (*get_obj_num_hook)(int k_idx); ! extern bool command_repeating; /* * Automatically generated "function declarations" *************** *** 271,276 **** --- 271,278 ---- extern sint critical_norm(int weight, int plus, int dam); extern sint tot_dam_aux(object_type *o_ptr, int tdam, monster_type *m_ptr); extern void search(void); + extern bool auto_pickup_okay(object_type *o_ptr); + extern void py_pickup_aux(int o_idx); extern void py_pickup(int pickup); extern void hit_trap(int y, int x); extern void py_attack(int y, int x); *************** *** 319,324 **** --- 321,327 ---- extern void do_cmd_change_name(void); extern void do_cmd_message_one(void); extern void do_cmd_messages(void); + extern void do_cmd_options_aux(int page, cptr info); extern void do_cmd_options(void); extern void do_cmd_pref(void); extern void do_cmd_macros(void); *************** *** 759,776 **** #endif /* ALLOW_REPEAT */ - #ifdef ALLOW_EASY_OPEN - - /* cmd2.c */ - extern bool easy_open_door(int y, int x); - extern bool do_cmd_disarm_aux(int y, int x); - - #endif /* ALLOW_EASY_OPEN */ - #ifdef ALLOW_EASY_FLOOR /* object1.c */ ! extern bool scan_floor(int *items, int *item_num, int y, int x, int mode); extern void show_floor(int y, int x); extern bool get_item_floor(int *cp, cptr pmt, cptr str, int mode); extern void py_pickup_floor(int pickup); --- 762,771 ---- #endif /* ALLOW_REPEAT */ #ifdef ALLOW_EASY_FLOOR /* object1.c */ ! extern sint scan_floor(int *items, int size, int y, int x, int mode); extern void show_floor(int y, int x); extern bool get_item_floor(int *cp, cptr pmt, cptr str, int mode); extern void py_pickup_floor(int pickup); diff -r -c angband-284/src/files.c angband-285/src/files.c *** angband-284/src/files.c Tue Jul 20 17:21:00 1999 --- angband-285/src/files.c Sat Jul 24 15:30:51 1999 *************** *** 478,484 **** /* Process "X:" -- turn option off */ else if (buf[0] == 'X') { ! for (i = 0; i < OPT_MAX; i++) { if (option_text[i] && streq(option_text[i], buf + 2)) { --- 478,485 ---- /* Process "X:" -- turn option off */ else if (buf[0] == 'X') { ! /* Check non-adult options */ ! for (i = 0; i < OPT_ADULT; i++) { if (option_text[i] && streq(option_text[i], buf + 2)) { *************** *** 491,497 **** /* Process "Y:" -- turn option on */ else if (buf[0] == 'Y') { ! for (i = 0; i < OPT_MAX; i++) { if (option_text[i] && streq(option_text[i], buf + 2)) { --- 492,499 ---- /* Process "Y:" -- turn option on */ else if (buf[0] == 'Y') { ! /* Check non-adult options */ ! for (i = 0; i < OPT_ADULT; i++) { if (option_text[i] && streq(option_text[i], buf + 2)) { *************** *** 1881,1887 **** /* Object kind */ k_idx = o_ptr->k_idx; ! /* Acquire "known" flags */ object_flags_known(o_ptr, &f1, &f2, &f3); /* Hack -- assume stat modifiers are known */ --- 1883,1889 ---- /* Object kind */ k_idx = o_ptr->k_idx; ! /* Access the "known" flags */ object_flags_known(o_ptr, &f1, &f2, &f3); /* Hack -- assume stat modifiers are known */ *************** *** 2127,2151 **** fprintf(fff, "\n\n"); - /* Dump misc. information */ - - if (no_stores || no_artifacts || ironman || random_artifacts) - { - fprintf(fff," [Difficulty Settings]\n\n"); - - /* Advanced play options */ - if (no_stores) fprintf(fff, "The stores are closed.\n"); - if (no_artifacts) fprintf(fff, "There are no artifacts.\n"); - if (ironman) fprintf(fff, "There is no retreat.\n"); - if (random_artifacts) - fprintf(fff, "Random artifacts are in effect.\n(Version %s, seed: %lu)\n", - RANDART_VERSION, (unsigned long) seed_randart); - - /* Skip some lines */ - fprintf(fff, "\n\n"); - } - - /* Dump the equipment */ if (p_ptr->equip_cnt) { --- 2129,2134 ---- *************** *** 2189,2194 **** --- 2172,2213 ---- fprintf(fff, "\n\n"); + /* Dump options */ + fprintf(fff, " [Options]\n\n"); + + /* Dump options */ + for (i = 0; i < OPT_MAX; i++) + { + if (option_desc[i]) + { + fprintf(fff, "%-48s: %s (%s)", + option_desc[i], + op_ptr->opt[i] ? "yes" : "no ", + option_text[i]); + } + } + + /* Skip some lines */ + fprintf(fff, "\n\n"); + + + #if 0 + + /* Icky -- Turn this on or not? */ + + /* Dump randart info */ + if (adult_rand_artifacts) + { + fprintf(fff, "Random artifacts version %s, seed: %lu\n", + RANDART_VERSION, (unsigned long) seed_randart); + + /* Skip some lines */ + fprintf(fff, "\n\n"); + } + + #endif + + /* Close it */ my_fclose(fff); *************** *** 3116,3122 **** char o_name[80]; char tmp_val[80]; ! /* Acquire item */ o_ptr = &st_ptr->stock[i]; /* Print header, clear line */ --- 3135,3141 ---- char o_name[80]; char tmp_val[80]; ! /* Access the item */ o_ptr = &st_ptr->stock[i]; /* Print header, clear line */ Only in angband-285/src: files.o diff -r -c angband-284/src/generate.c angband-285/src/generate.c *** angband-284/src/generate.c Tue Jul 20 17:34:26 1999 --- angband-285/src/generate.c Sat Jul 24 14:41:48 1999 *************** *** 401,410 **** } else if (is_quest(p_ptr->depth) || (p_ptr->depth >= MAX_DEPTH-1)) { - if (!ironman) place_up_stairs(y, x); /* If playing ironman, there is no way off quest levels */ } ! else if (ironman || rand_int(100) < 50) { place_down_stairs(y, x); } --- 401,410 ---- } else if (is_quest(p_ptr->depth) || (p_ptr->depth >= MAX_DEPTH-1)) { /* If playing ironman, there is no way off quest levels */ + if (!adult_ironman) place_up_stairs(y, x); } ! else if (adult_ironman || rand_int(100) < 50) { place_down_stairs(y, x); } *************** *** 529,535 **** /* Quest -- must go up */ else if (is_quest(p_ptr->depth) || (p_ptr->depth >= MAX_DEPTH-1)) { ! if (!ironman) { /* Clear previous contents, add up stairs */ cave_set_feat(y, x, FEAT_LESS); --- 529,535 ---- /* Quest -- must go up */ else if (is_quest(p_ptr->depth) || (p_ptr->depth >= MAX_DEPTH-1)) { ! if (!adult_ironman) { /* Clear previous contents, add up stairs */ cave_set_feat(y, x, FEAT_LESS); *************** *** 3109,3115 **** alloc_stairs(FEAT_MORE, rand_range(3, 4), 3); /* Place 1 or 2 up stairs near some walls */ ! if (!ironman) alloc_stairs(FEAT_LESS, rand_range(1, 2), 3); /* Determine the character location */ --- 3109,3115 ---- alloc_stairs(FEAT_MORE, rand_range(3, 4), 3); /* Place 1 or 2 up stairs near some walls */ ! if (!adult_ironman) alloc_stairs(FEAT_LESS, rand_range(1, 2), 3); /* Determine the character location */ *************** *** 3132,3138 **** } /* Hack -- ensure that Ironman players get a quest monster */ ! if (ironman && is_quest(p_ptr->depth)) { monster_race *r_ptr; int y, x; --- 3132,3138 ---- } /* Hack -- ensure that Ironman players get a quest monster */ ! if (adult_ironman && is_quest(p_ptr->depth)) { monster_race *r_ptr; int y, x; Only in angband-285/src: generate.o Only in angband-285/src: init1.o diff -r -c angband-284/src/init2.c angband-285/src/init2.c *** angband-284/src/init2.c Tue Jul 20 17:21:01 1999 --- angband-285/src/init2.c Fri Jul 23 17:22:56 1999 *************** *** 2168,2173 **** --- 2168,2178 ---- } + /*** Pre-allocate the "on sale" quark ***/ + + (void)quark_add("on sale"); + + /*** Pre-allocate space for the "format()" buffer ***/ /* Hack -- Just call the "format()" function */ Only in angband-285/src: init2.o Only in angband-285/src: load1.o diff -r -c angband-284/src/load2.c angband-285/src/load2.c *** angband-284/src/load2.c Tue Jul 20 17:35:06 1999 --- angband-285/src/load2.c Sat Jul 24 15:23:17 1999 *************** *** 565,571 **** /* Inscription */ rd_string(buf, 128); ! if (older_than(2, 8, 4)) { /* An inscription was saved */ if (buf[0]) --- 565,571 ---- /* Inscription */ rd_string(buf, 128); ! if (older_than(2, 8, 5)) { /* An inscription was saved */ if (buf[0]) *************** *** 913,920 **** rd_byte(&m_ptr->stunned); rd_byte(&m_ptr->confused); rd_byte(&m_ptr->monfear); ! if (!older_than(2, 8, 4)) ! rd_s16b(&m_ptr->hold_o_idx); rd_byte(&tmp8u); } --- 913,923 ---- rd_byte(&m_ptr->stunned); rd_byte(&m_ptr->confused); rd_byte(&m_ptr->monfear); ! /* Icky */ ! if (!older_than(2, 8, 5)) ! { ! rd_s16b(&m_ptr->hold_o_idx); ! } rd_byte(&tmp8u); } *************** *** 1180,1199 **** if (older_than(2, 8, 0)) return; - /*** Advanced play options ***/ - - if (!older_than(2, 8, 4)) - { - rd_u16b(&c); - - /* Extract the handicap flags */ - for (i = 0; i < HANDICAP_MAX; ++i) - { - p_ptr->handicap[i] = (c & (0x01 << i)) ? TRUE : FALSE; - } - } - - /*** Normal Options ***/ /* Read the option flags */ --- 1183,1188 ---- *************** *** 1425,1437 **** /* Random artifacts seed */ rd_u32b(&seed_randart); ! if (!older_than(2, 8, 4)) { /* Read the randart version string */ rd_string(buf, 16); /* Avoid problems with random artifact characters */ ! if (random_artifacts) { #ifdef GJW_RANDART --- 1414,1427 ---- /* Random artifacts seed */ rd_u32b(&seed_randart); ! /* Random artifacts info */ ! if (!older_than(2, 8, 5)) { /* Read the randart version string */ rd_string(buf, 16); /* Avoid problems with random artifact characters */ ! if (adult_rand_artifacts) { #ifdef GJW_RANDART *************** *** 1473,1481 **** p_ptr->is_dead = tmp8u; #ifdef GJW_RANDART /* Random artifacts */ if (!(p_ptr->is_dead)) ! if (random_artifacts) do_randart(seed_randart); #endif /* Read "feeling" */ --- 1463,1478 ---- p_ptr->is_dead = tmp8u; #ifdef GJW_RANDART + /* Random artifacts */ if (!(p_ptr->is_dead)) ! { ! if (adult_rand_artifacts) ! { ! do_randart(seed_randart); ! } ! } ! #endif /* Read "feeling" */ *************** *** 2440,2451 **** --- 2437,2454 ---- /* Monster */ if (i_ptr->held_m_idx) { + bool old_carry = testing_carry; + + testing_carry = TRUE; + /* Give the object to the monster */ if (!monster_carry(i_ptr->held_m_idx, i_ptr)) { note(format("Cannot place object %d!", o_max)); return (152); } + + testing_carry = old_carry; } /* Dungeon */ *************** *** 2495,2500 **** --- 2498,2530 ---- { note(format("Cannot place monster %d", i)); return (162); + } + } + + /* Icky */ + if (older_than(2, 8, 5)) + { + /* + * Attach objects carried by a monster to the monster again. + * We look for the each object in o_list[] that is carried by + * a monster. If the monster isn't carrying any object yet, + * then assign it the object. The object with the highest + * o_idx is assumed to be at the head of the list of objects + * carried by a monster. + */ + for (i = o_max; i > 0; i--) + { + /* Access the object */ + object_type *o_ptr = &o_list[i]; + + /* This object isn't carried */ + if (!o_ptr->held_m_idx) continue; + + /* The monster is already carrying an object */ + if (m_list[o_ptr->held_m_idx].hold_o_idx) continue; + + /* Attach the object to the monster */ + m_list[o_ptr->held_m_idx].hold_o_idx = i; } } Only in angband-285/src: load2.o Only in angband-285/src: main-cap.o Only in angband-285/src: main-gcu.o Only in angband-285/src: main-x11.o Only in angband-285/src: main-xaw.o Only in angband-285/src: main.o Only in angband-285/src: melee1.o diff -r -c angband-284/src/melee2.c angband-285/src/melee2.c *** angband-284/src/melee2.c Tue Jul 20 17:38:32 1999 --- angband-285/src/melee2.c Thu Jul 22 17:09:07 1999 *************** *** 3825,3834 **** { object_type *o_ptr; ! /* Acquire object */ o_ptr = &o_list[this_o_idx]; ! /* Acquire next object */ next_o_idx = o_ptr->next_o_idx; /* Skip gold */ --- 3825,3834 ---- { object_type *o_ptr; ! /* Access the object */ o_ptr = &o_list[this_o_idx]; ! /* Access the next object */ next_o_idx = o_ptr->next_o_idx; /* Skip gold */ Only in angband-285/src: melee2.o Only in angband-285/src: monster1.o diff -r -c angband-284/src/monster2.c angband-285/src/monster2.c *** angband-284/src/monster2.c Tue Jul 20 17:21:05 1999 --- angband-285/src/monster2.c Thu Jul 22 17:09:53 1999 *************** *** 56,65 **** { object_type *o_ptr; ! /* Acquire object */ o_ptr = &o_list[this_o_idx]; ! /* Acquire next object */ next_o_idx = o_ptr->next_o_idx; /* Hack -- efficiency */ --- 56,65 ---- { object_type *o_ptr; ! /* Access the object */ o_ptr = &o_list[this_o_idx]; ! /* Access the next object */ next_o_idx = o_ptr->next_o_idx; /* Hack -- efficiency */ *************** *** 126,135 **** { object_type *o_ptr; ! /* Acquire object */ o_ptr = &o_list[this_o_idx]; ! /* Acquire next object */ next_o_idx = o_ptr->next_o_idx; /* Reset monster pointer */ --- 126,135 ---- { object_type *o_ptr; ! /* Access the object */ o_ptr = &o_list[this_o_idx]; ! /* Access the next object */ next_o_idx = o_ptr->next_o_idx; /* Reset monster pointer */ *************** *** 318,324 **** { monster_type *m_ptr; ! /* Acquire monster */ m_ptr = &m_list[i]; /* Skip live monsters */ --- 318,324 ---- { monster_type *m_ptr; ! /* Access the monster */ m_ptr = &m_list[i]; /* Skip live monsters */ *************** *** 1124,1133 **** { object_type *o_ptr; ! /* Acquire object */ o_ptr = &o_list[this_o_idx]; ! /* Acquire next object */ next_o_idx = o_ptr->next_o_idx; /* Check for combination */ --- 1124,1133 ---- { object_type *o_ptr; ! /* Access the object */ o_ptr = &o_list[this_o_idx]; ! /* Access the next object */ next_o_idx = o_ptr->next_o_idx; /* Check for combination */ *************** *** 1315,1321 **** /* Make a new monster */ cave_m_idx[y][x] = m_idx; ! /* Acquire new monster */ m_ptr = &m_list[m_idx]; /* Copy the monster XXX */ --- 1315,1321 ---- /* Make a new monster */ cave_m_idx[y][x] = m_idx; ! /* Access the new monster */ m_ptr = &m_list[m_idx]; /* Copy the monster XXX */ *************** *** 1328,1334 **** /* Update the monster */ update_mon(m_idx, TRUE); ! /* Acquire new race */ r_ptr = &r_info[m_ptr->r_idx]; /* Hack -- Notice new multi-hued monsters */ --- 1328,1334 ---- /* Update the monster */ update_mon(m_idx, TRUE); ! /* Access the new race */ r_ptr = &r_info[m_ptr->r_idx]; /* Hack -- Notice new multi-hued monsters */ Only in angband-285/src: monster2.o diff -r -c angband-284/src/object1.c angband-285/src/object1.c *** angband-284/src/object1.c Tue Jul 20 17:21:05 1999 --- angband-285/src/object1.c Thu Jul 22 17:10:17 1999 *************** *** 3110,3118 **** char tmp_val[80]; ! int out_index[23]; ! byte out_color[23]; ! char out_desc[23][80]; /* Default length */ --- 3110,3118 ---- char tmp_val[80]; ! int out_index[24]; ! byte out_color[24]; ! char out_desc[24][80]; /* Default length */ *************** *** 3226,3234 **** char o_name[80]; ! int out_index[23]; ! byte out_color[23]; ! char out_desc[23][80]; /* Default length */ --- 3226,3234 ---- char o_name[80]; ! int out_index[24]; ! byte out_color[24]; ! char out_desc[24][80]; /* Default length */ *************** *** 3636,3642 **** /* Special index */ k = 0 - (*cp); ! /* Acquire object */ o_ptr = &o_list[k]; /* Validate the item */ --- 3636,3642 ---- /* Special index */ k = 0 - (*cp); ! /* Access the object */ o_ptr = &o_list[k]; /* Validate the item */ *************** *** 3718,3727 **** { object_type *o_ptr; ! /* Acquire object */ o_ptr = &o_list[this_o_idx]; ! /* Acquire next object */ next_o_idx = o_ptr->next_o_idx; /* Accept the item on the floor if legal */ --- 3718,3727 ---- { object_type *o_ptr; ! /* Access the object */ o_ptr = &o_list[this_o_idx]; ! /* Access the next object */ next_o_idx = o_ptr->next_o_idx; /* Accept the item on the floor if legal */ *************** *** 3969,3978 **** { object_type *o_ptr; ! /* Acquire object */ o_ptr = &o_list[this_o_idx]; ! /* Acquire next object */ next_o_idx = o_ptr->next_o_idx; /* Validate the item */ --- 3969,3978 ---- { object_type *o_ptr; ! /* Access the object */ o_ptr = &o_list[this_o_idx]; ! /* Access the next object */ next_o_idx = o_ptr->next_o_idx; /* Validate the item */ *************** *** 4178,4215 **** return (item); } #ifdef ALLOW_EASY_FLOOR /* ! * scan_floor -- * ! * Return a list of o_list[] indexes of items at the given cave ! * location. Valid flags are: * ! * mode & 0x01 -- Item tester ! * mode & 0x02 -- Marked items only ! * mode & 0x04 -- Stop after first */ ! bool scan_floor(int *items, int *item_num, int y, int x, int mode) { int this_o_idx, next_o_idx; int num = 0; - (*item_num) = 0; - /* Sanity */ ! if (!in_bounds(y, x)) return (FALSE); /* Scan all objects in the grid */ for (this_o_idx = cave_o_idx[y][x]; this_o_idx; this_o_idx = next_o_idx) { object_type *o_ptr; ! /* Acquire object */ o_ptr = &o_list[this_o_idx]; ! /* Acquire next object */ next_o_idx = o_ptr->next_o_idx; /* Item tester */ --- 4178,4219 ---- return (item); } + + #ifdef ALLOW_EASY_FLOOR /* ! * Acquire the indexes of objects at a given floor location. ! * ! * Return the number of object indexes acquired. * ! * Never acquire more than "size" object indexes, and never return a ! * number bigger than "size", even if more floor objects exist. * ! * Valid flags are any combination of the bits: ! * ! * 0x01 -- Item tester ! * 0x02 -- Marked items only ! * 0x04 -- Stop after first object */ ! sint scan_floor(int *items, int size, int y, int x, int mode) { int this_o_idx, next_o_idx; int num = 0; /* Sanity */ ! if (!in_bounds(y, x)) return (0); /* Scan all objects in the grid */ for (this_o_idx = cave_o_idx[y][x]; this_o_idx; this_o_idx = next_o_idx) { object_type *o_ptr; ! /* Access the object */ o_ptr = &o_list[this_o_idx]; ! /* Access the next object */ next_o_idx = o_ptr->next_o_idx; /* Item tester */ *************** *** 4224,4240 **** /* Only one */ if (mode & 0x04) break; ! /* XXX Hack -- Enforce limit */ ! if (num == 23) break; } - /* Number of items */ - (*item_num) = num; - /* Result */ ! return (num != 0); } /* * Display a list of the items on the floor at the given location. */ --- 4228,4243 ---- /* Only one */ if (mode & 0x04) break; ! /* Enforce size limit */ ! if (num >= size) break; } /* Result */ ! return (num); } + + /* * Display a list of the items on the floor at the given location. */ *************** *** 4249,4259 **** char tmp_val[80]; ! int out_index[23]; ! byte out_color[23]; ! char out_desc[23][80]; - int floor_list[23], floor_num; /* Default length */ len = 79 - 50; --- 4252,4264 ---- char tmp_val[80]; ! int out_index[24]; ! byte out_color[24]; ! char out_desc[24][80]; ! ! int floor_list[24]; ! int floor_num = 0; /* Default length */ len = 79 - 50; *************** *** 4265,4271 **** if (show_weights) lim -= 9; /* Scan for objects in the grid, using item_tester_okay() */ ! (void) scan_floor(floor_list, &floor_num, y, x, 0x01); /* Display the inventory */ for (k = 0, i = 0; i < floor_num; i++) --- 4270,4276 ---- if (show_weights) lim -= 9; /* Scan for objects in the grid, using item_tester_okay() */ ! floor_num = scan_floor(floor_list, 24, y, x, 0x01); /* Display the inventory */ for (k = 0, i = 0; i < floor_num; i++) *************** *** 4337,4348 **** --- 4342,4358 ---- if (j && (j < 23)) prt("", j + 1, col ? col - 2 : col); } + + /* * This version of get_item() is called by get_item() when * the easy_floor is on. */ bool get_item_floor(int *cp, cptr pmt, cptr str, int mode) { + int py = p_ptr->py; + int px = p_ptr->px; + char n1, n2, which = ' '; int j, k, i1, i2, e1, e2; *************** *** 4364,4370 **** char tmp_val[160]; char out_val[160]; ! int floor_num, floor_list[23], floor_top = 0; #ifdef ALLOW_REPEAT --- 4374,4382 ---- char tmp_val[160]; char out_val[160]; ! int floor_list[24]; ! int floor_num = 0; ! #ifdef ALLOW_REPEAT *************** *** 4379,4385 **** /* Special index */ k = 0 - (*cp); ! /* Acquire object */ o_ptr = &o_list[k]; /* Validate the item */ --- 4391,4397 ---- /* Special index */ k = 0 - (*cp); ! /* Access the object */ o_ptr = &o_list[k]; /* Validate the item */ *************** *** 4453,4466 **** while ((e1 <= e2) && (!get_item_okay(e2))) e2--; - /* Count "okay" floor items */ - floor_num = 0; - /* Restrict floor usage */ if (floor) { /* Scan all objects in the grid */ ! (void) scan_floor(floor_list, &floor_num, p_ptr->py, p_ptr->px, 0x01); } /* Accept inventory */ --- 4465,4475 ---- while ((e1 <= e2) && (!get_item_okay(e2))) e2--; /* Restrict floor usage */ if (floor) { /* Scan all objects in the grid */ ! floor_num = scan_floor(floor_list, 24, py, px, 0x01); } /* Accept inventory */ *************** *** 4616,4630 **** /* Viewing floor */ else if (p_ptr->command_wrk == (USE_FLOOR)) { ! j = floor_top; ! k = MIN(floor_top + 23, floor_num) - 1; /* Extract the legal requests */ ! n1 = I2A(j - floor_top); ! n2 = I2A(k - floor_top); /* Redraw if needed */ ! if (p_ptr->command_see) show_floor(p_ptr->py, p_ptr->px); /* Begin the prompt */ sprintf(out_val, "Floor:"); --- 4625,4639 ---- /* Viewing floor */ else if (p_ptr->command_wrk == (USE_FLOOR)) { ! j = 0; ! k = MIN(23, floor_num) - 1; /* Extract the legal requests */ ! n1 = I2A(j); ! n2 = I2A(k); /* Redraw if needed */ ! if (p_ptr->command_see) show_floor(py, px); /* Begin the prompt */ sprintf(out_val, "Floor:"); *************** *** 4702,4708 **** { if (!allow_equip) { ! bell(""); break; } p_ptr->command_wrk = (USE_EQUIP); --- 4711,4717 ---- { if (!allow_equip) { ! bell("Cannot switch item selector!"); break; } p_ptr->command_wrk = (USE_EQUIP); *************** *** 4711,4717 **** { if (!allow_inven) { ! bell(""); break; } p_ptr->command_wrk = (USE_INVEN); --- 4720,4726 ---- { if (!allow_inven) { ! bell("Cannot switch item selector!"); break; } p_ptr->command_wrk = (USE_INVEN); *************** *** 4728,4734 **** } else { ! bell(""); break; } } --- 4737,4743 ---- } else { ! bell("Cannot switch item selector!"); break; } } *************** *** 4741,4759 **** { if (!allow_floor) { ! bell(""); break; } ! /* ! * If we are already examining the floor, and there ! * is only one item, we will always select it. ! * If we aren't examining the floor and there is only ! * one item, we will select it if floor_query_flag ! * is FALSE. ! */ if (floor_num == 1) { if ((p_ptr->command_wrk == (USE_FLOOR)) || (!floor_query_flag)) { /* Special index */ --- 4750,4766 ---- { if (!allow_floor) { ! bell("Cannot select floor!"); break; } ! /* There is only one item */ if (floor_num == 1) { + /* + * Select the item without asking if we are looking at the + * floor or floor_query_flag is FALSE. + */ if ((p_ptr->command_wrk == (USE_FLOOR)) || (!floor_query_flag)) { /* Special index */ *************** *** 4798,4818 **** /* Look up the tag */ if (!get_tag(&k, which)) { ! bell(""); break; } /* Hack -- Validate the item */ if ((k < INVEN_WIELD) ? !inven : !equip) { ! bell(""); break; } /* Validate the item */ if (!get_item_okay(k)) { ! bell(""); break; } --- 4805,4825 ---- /* Look up the tag */ if (!get_tag(&k, which)) { ! bell("Illegal object choice (tag)!"); break; } /* Hack -- Validate the item */ if ((k < INVEN_WIELD) ? !inven : !equip) { ! bell("Illegal object choice (tag)!"); break; } /* Validate the item */ if (!get_item_okay(k)) { ! bell("Illegal object choice (tag)!"); break; } *************** *** 4871,4877 **** /* Validate the item */ if (!get_item_okay(k)) { ! bell(""); break; } --- 4878,4884 ---- /* Validate the item */ if (!get_item_okay(k)) { ! bell("Illegal object choice (default)!"); break; } *************** *** 4915,4921 **** k = islower(which) ? A2I(which) : -1; if (k < 0 || k >= floor_num) { ! bell(""); break; } --- 4922,4928 ---- k = islower(which) ? A2I(which) : -1; if (k < 0 || k >= floor_num) { ! bell("Illegal object choice (floor)!"); break; } *************** *** 4926,4932 **** /* Validate the item */ if (!(p_ptr->command_wrk == (USE_FLOOR)) && !get_item_okay(k)) { ! bell(""); break; } --- 4933,4939 ---- /* Validate the item */ if (!(p_ptr->command_wrk == (USE_FLOOR)) && !get_item_okay(k)) { ! bell("Illegal object choice (normal)!"); break; } *************** *** 5001,5012 **** return (item); } /* ! * Make the player carry everything in a grid * ! * If "pickup" is FALSE then only gold will be picked up * * This is called by py_pickup() when easy_floor is TRUE. */ void py_pickup_floor(int pickup) { --- 5008,5023 ---- return (item); } + + /* ! * Make the player carry everything in a grid. * ! * If "pickup" is FALSE then only gold will be picked up. * * This is called by py_pickup() when easy_floor is TRUE. + * + * It might be possible to share some code with "scan_floor". XXX XXX XXX */ void py_pickup_floor(int pickup) { *************** *** 5017,5026 **** char o_name[80]; object_type *o_ptr; ! int floor_num = 0, floor_o_idx = 0; ! bool do_pickup = TRUE; bool do_ask = TRUE; --- 5028,5040 ---- char o_name[80]; object_type *o_ptr; + + int floor_list[24]; + int floor_num = 0; ! int pick_o_idx = 0; ! int can_pickup = 0; bool do_ask = TRUE; *************** *** 5029,5041 **** { object_type *o_ptr; ! /* Acquire object */ o_ptr = &o_list[this_o_idx]; /* Describe the object */ object_desc(o_name, o_ptr, TRUE, 3); ! /* Acquire next object */ next_o_idx = o_ptr->next_o_idx; /* Hack -- disturb */ --- 5043,5055 ---- { object_type *o_ptr; ! /* Access the object */ o_ptr = &o_list[this_o_idx]; /* Describe the object */ object_desc(o_name, o_ptr, TRUE, 3); ! /* Access the next object */ next_o_idx = o_ptr->next_o_idx; /* Hack -- disturb */ *************** *** 5060,5086 **** /* Delete the gold */ delete_object_idx(this_o_idx); continue; } ! /* Count non-gold */ ! floor_num++; ! /* Remember this index */ ! floor_o_idx = this_o_idx; } ! /* There were no non-gold items */ if (!floor_num) return; ! /* Mention number of items */ if (!pickup) { ! /* One item */ if (floor_num == 1) { ! /* Acquire object */ ! o_ptr = &o_list[floor_o_idx]; /* Describe the object */ object_desc(o_name, o_ptr, TRUE, 3); --- 5074,5118 ---- /* Delete the gold */ delete_object_idx(this_o_idx); + /* Check the next object */ continue; } ! /* Count non-gold objects that can be picked up. */ ! if (inven_carry_okay(o_ptr)) ! { ! /* Test for auto-pickup */ ! if (auto_pickup_okay(o_ptr)) ! { ! /* Pick up the object */ ! py_pickup_aux(this_o_idx); ! ! /* Check the next object */ ! continue; ! } ! ! /* Count non-gold objects which can be picked up */ ! can_pickup++; ! } ! /* Remember this object index */ ! if (floor_num < 24) floor_list[floor_num] = this_o_idx; ! ! /* Count non-gold objects */ ! floor_num++; } ! /* There are no non-gold objects */ if (!floor_num) return; ! /* Mention number of objects */ if (!pickup) { ! /* One object */ if (floor_num == 1) { ! /* Access the object */ ! o_ptr = &o_list[floor_list[0]]; /* Describe the object */ object_desc(o_name, o_ptr, TRUE, 3); *************** *** 5089,5095 **** msg_format("You see %s.", o_name); } ! /* Multiple items */ else { /* Message */ --- 5121,5127 ---- msg_format("You see %s.", o_name); } ! /* Multiple objects */ else { /* Message */ *************** *** 5100,5178 **** return; } ! /* One item */ if (floor_num == 1) { ! /* Hack -- query every item */ if (carry_query_flag) { char out_val[160]; ! sprintf(out_val, "Pick up %s? ", o_name); ! do_pickup = get_check(out_val); ! } /* Don't ask */ do_ask = FALSE; ! this_o_idx = floor_o_idx; } ! /* Ask */ if (do_ask) { cptr q, s; int item; ! /* Get an item */ q = "Get which item? "; s = "You see nothing there."; if (get_item(&item, q, s, (USE_FLOOR))) { ! this_o_idx = 0 - item; } else { ! do_pickup = FALSE; } } ! /* Pick up the item */ ! if (do_pickup) ! { ! /* Access the item */ ! o_ptr = &o_list[this_o_idx]; ! ! /* Describe the object */ ! object_desc(o_name, o_ptr, TRUE, 3); ! ! /* Note that the pack is too full */ ! if (!inven_carry_okay(o_ptr)) ! { ! msg_format("You have no room for %s.", o_name); ! } ! ! /* Pick up object */ ! else ! { ! int slot; ! ! /* Carry the item */ ! slot = inven_carry(o_ptr); ! ! /* Get the item again */ ! o_ptr = &inventory[slot]; ! ! /* Describe the object */ ! object_desc(o_name, o_ptr, TRUE, 3); ! ! /* Message */ ! msg_format("You have %s (%c).", o_name, index_to_label(slot)); ! ! /* Delete the object */ ! delete_object_idx(this_o_idx); ! } ! } } #endif /* ALLOW_EASY_FLOOR */ --- 5132,5221 ---- return; } ! /* The player has no room for anything on the floor. */ ! if (!can_pickup) ! { ! /* One object */ ! if (floor_num == 1) ! { ! /* Access the object */ ! o_ptr = &o_list[floor_list[0]]; ! ! /* Describe the object */ ! object_desc(o_name, o_ptr, TRUE, 3); ! ! /* Message */ ! msg_format("You have no room for %s.", o_name); ! } ! ! /* Multiple objects */ ! else ! { ! /* Message */ ! msg_print("You have no room for any of the objects on the floor."); ! } ! ! /* Done */ ! return; ! } ! ! /* One object */ if (floor_num == 1) { ! /* Hack -- query every object */ if (carry_query_flag) { char out_val[160]; ! ! /* Access the object */ ! o_ptr = &o_list[floor_list[0]]; ! ! /* Describe the object */ ! object_desc(o_name, o_ptr, TRUE, 3); ! ! /* Build a prompt */ ! (void) sprintf(out_val, "Pick up %s? ", o_name); + /* Ask the user to confirm */ + if (!get_check(out_val)) + { + /* Done */ + return; + } + } + /* Don't ask */ do_ask = FALSE; ! /* Remember the object to pick up */ ! pick_o_idx = floor_list[0]; } ! /* Allow the user to choose an object */ if (do_ask) { cptr q, s; int item; ! /* Restrict the choices */ ! item_tester_hook = inven_carry_okay; ! ! /* Get an object*/ q = "Get which item? "; s = "You see nothing there."; if (get_item(&item, q, s, (USE_FLOOR))) { ! pick_o_idx = 0 - item; } else { ! return; } } ! /* Pick up the object */ ! py_pickup_aux(pick_o_idx); } #endif /* ALLOW_EASY_FLOOR */ Only in angband-285/src: object1.o diff -r -c angband-284/src/object2.c angband-285/src/object2.c *** angband-284/src/object2.c Tue Jul 20 18:21:36 1999 --- angband-285/src/object2.c Sat Jul 24 15:43:11 1999 *************** *** 39,48 **** { object_type *o_ptr; ! /* Acquire object */ o_ptr = &o_list[this_o_idx]; ! /* Acquire next object */ next_o_idx = o_ptr->next_o_idx; /* Done */ --- 39,48 ---- { object_type *o_ptr; ! /* Access the object */ o_ptr = &o_list[this_o_idx]; ! /* Access the next object */ next_o_idx = o_ptr->next_o_idx; /* Done */ *************** *** 90,99 **** { object_type *o_ptr; ! /* Acquire object */ o_ptr = &o_list[this_o_idx]; ! /* Acquire next object */ next_o_idx = o_ptr->next_o_idx; /* Done */ --- 90,99 ---- { object_type *o_ptr; ! /* Access the object */ o_ptr = &o_list[this_o_idx]; ! /* Access the next object */ next_o_idx = o_ptr->next_o_idx; /* Done */ *************** *** 185,194 **** { object_type *o_ptr; ! /* Acquire object */ o_ptr = &o_list[this_o_idx]; ! /* Acquire next object */ next_o_idx = o_ptr->next_o_idx; /* Wipe the object */ --- 185,194 ---- { object_type *o_ptr; ! /* Access the object */ o_ptr = &o_list[this_o_idx]; ! /* Access the next object */ next_o_idx = o_ptr->next_o_idx; /* Wipe the object */ *************** *** 224,230 **** /* Repair objects */ for (i = 1; i < o_max; i++) { ! /* Acquire object */ o_ptr = &o_list[i]; /* Skip "dead" objects */ --- 224,230 ---- /* Repair objects */ for (i = 1; i < o_max; i++) { ! /* Access the object */ o_ptr = &o_list[i]; /* Skip "dead" objects */ *************** *** 239,245 **** } ! /* Acquire object */ o_ptr = &o_list[i1]; --- 239,245 ---- } ! /* Access the object */ o_ptr = &o_list[i1]; *************** *** 248,254 **** { monster_type *m_ptr; ! /* Acquire monster */ m_ptr = &m_list[o_ptr->held_m_idx]; /* Repair monster */ --- 248,254 ---- { monster_type *m_ptr; ! /* Access the monster */ m_ptr = &m_list[o_ptr->held_m_idx]; /* Repair monster */ *************** *** 348,354 **** { monster_type *m_ptr; ! /* Acquire monster */ m_ptr = &m_list[o_ptr->held_m_idx]; /* Get the location */ --- 348,354 ---- { monster_type *m_ptr; ! /* Access the monster */ m_ptr = &m_list[o_ptr->held_m_idx]; /* Get the location */ *************** *** 509,515 **** { object_type *o_ptr; ! /* Acquire object */ o_ptr = &o_list[i]; /* Skip live objects */ --- 509,515 ---- { object_type *o_ptr; ! /* Access the object */ o_ptr = &o_list[i]; /* Skip live objects */ *************** *** 1542,1549 **** int k_idx = 0; ! /* No artifacts */ ! if (no_artifacts) return (FALSE); /* No artifacts in the town */ if (!p_ptr->depth) return (FALSE); --- 1542,1549 ---- int k_idx = 0; ! /* No artifacts, do nothing */ ! if (adult_no_artifacts) return (FALSE); /* No artifacts in the town */ if (!p_ptr->depth) return (FALSE); *************** *** 3112,3118 **** if (great) rolls = 4; /* Hack -- Get no rolls if not allowed */ ! if (!okay || o_ptr->name1 || no_artifacts) rolls = 0; /* Roll for artifacts if allowed */ for (i = 0; i < rolls; i++) --- 3112,3121 ---- if (great) rolls = 4; /* Hack -- Get no rolls if not allowed */ ! if (!okay || o_ptr->name1) rolls = 0; ! ! /* No artifacts, no rolls */ ! if (adult_no_artifacts) rolls = 0; /* Roll for artifacts if allowed */ for (i = 0; i < rolls; i++) *************** *** 3525,3534 **** { object_type *o_ptr; ! /* Acquire object */ o_ptr = &o_list[this_o_idx]; ! /* Acquire next object */ next_o_idx = o_ptr->next_o_idx; /* Check for combination */ --- 3528,3537 ---- { object_type *o_ptr; ! /* Access the object */ o_ptr = &o_list[this_o_idx]; ! /* Access the next object */ next_o_idx = o_ptr->next_o_idx; /* Check for combination */ *************** *** 3558,3564 **** { object_type *o_ptr; ! /* Acquire object */ o_ptr = &o_list[o_idx]; /* Structure Copy */ --- 3561,3567 ---- { object_type *o_ptr; ! /* Access the object */ o_ptr = &o_list[o_idx]; /* Structure Copy */ *************** *** 3690,3699 **** { object_type *o_ptr; ! /* Acquire object */ o_ptr = &o_list[this_o_idx]; ! /* Acquire next object */ next_o_idx = o_ptr->next_o_idx; /* Check for possible combination */ --- 3693,3702 ---- { object_type *o_ptr; ! /* Access the object */ o_ptr = &o_list[this_o_idx]; ! /* Access the next object */ next_o_idx = o_ptr->next_o_idx; /* Check for possible combination */ Only in angband-285/src: object2.o diff -r -c angband-284/src/save.c angband-285/src/save.c *** angband-284/src/save.c Tue Jul 20 17:21:06 1999 --- angband-285/src/save.c Sat Jul 24 15:44:07 1999 *************** *** 932,950 **** wr_u16b(c); - /*** Advanced play options ***/ - - c = 0; - - /* Save the handicap flags */ - for (i = 0; i < HANDICAP_MAX; i++) - { - if (p_ptr->handicap[i]) c |= (0x01 << i); - } - - wr_u16b(c); - - /*** Normal options ***/ /* Reset */ --- 932,937 ---- Only in angband-285/src: save.o diff -r -c angband-284/src/spells1.c angband-285/src/spells1.c *** angband-284/src/spells1.c Tue Jul 20 17:41:01 1999 --- angband-285/src/spells1.c Sat Jul 24 14:41:57 1999 *************** *** 286,292 **** else if (is_quest(p_ptr->depth) || (p_ptr->depth >= MAX_DEPTH-1)) { ! if (!ironman) { msg_print("You rise up through the ceiling."); --- 286,292 ---- else if (is_quest(p_ptr->depth) || (p_ptr->depth >= MAX_DEPTH-1)) { ! if (!adult_ironman) { msg_print("You rise up through the ceiling."); *************** *** 302,308 **** } } ! else if (!ironman && rand_int(100) < 50) { msg_print("You rise up through the ceiling."); --- 302,308 ---- } } ! else if (!adult_ironman && rand_int(100) < 50) { msg_print("You rise up through the ceiling."); *************** *** 1709,1718 **** cptr note_kill = NULL; ! /* Acquire object */ o_ptr = &o_list[this_o_idx]; ! /* Acquire next object */ next_o_idx = o_ptr->next_o_idx; /* Extract the flags */ --- 1709,1718 ---- cptr note_kill = NULL; ! /* Access the object */ o_ptr = &o_list[this_o_idx]; ! /* Access the next object */ next_o_idx = o_ptr->next_o_idx; /* Extract the flags */ Only in angband-285/src: spells1.o diff -r -c angband-284/src/spells2.c angband-285/src/spells2.c *** angband-284/src/spells2.c Tue Jul 20 18:19:31 1999 --- angband-285/src/spells2.c Sat Jul 24 14:42:08 1999 *************** *** 906,912 **** void set_recall(void) { /* Ironman players must kill Morgoth before they leave */ ! if (ironman && !p_ptr->total_winner) { msg_print("Nothing happens."); } --- 906,912 ---- void set_recall(void) { /* Ironman players must kill Morgoth before they leave */ ! if (adult_ironman && !p_ptr->total_winner) { msg_print("Nothing happens."); } *************** *** 1530,1538 **** } else if (is_quest(p_ptr->depth) || (p_ptr->depth >= MAX_DEPTH-1)) { ! if (!ironman) cave_set_feat(py, px, FEAT_LESS); } ! else if (ironman || rand_int(100) < 50) { cave_set_feat(py, px, FEAT_MORE); } --- 1530,1538 ---- } else if (is_quest(p_ptr->depth) || (p_ptr->depth >= MAX_DEPTH-1)) { ! if (!adult_ironman) cave_set_feat(py, px, FEAT_LESS); } ! else if (adult_ironman || rand_int(100) < 50) { cave_set_feat(py, px, FEAT_MORE); } Only in angband-285/src: spells2.o diff -r -c angband-284/src/store.c angband-285/src/store.c *** angband-284/src/store.c Tue Jul 20 17:21:07 1999 --- angband-285/src/store.c Sat Jul 24 15:41:51 1999 *************** *** 3184,3190 **** which = (cave_feat[py][px] - FEAT_SHOP_HEAD); /* Hack -- Check the "locked doors" */ ! if (no_stores || store[which].store_open >= turn) { msg_print("The doors are locked."); return; --- 3184,3190 ---- which = (cave_feat[py][px] - FEAT_SHOP_HEAD); /* Hack -- Check the "locked doors" */ ! if (adult_no_stores || store[which].store_open >= turn) { msg_print("The doors are locked."); return; *************** *** 3442,3449 **** /* Clear the "fixed price" flag */ o_ptr->ident &= ~(IDENT_FIXED); ! /* Inscribe the object as "on sale" */ ! o_ptr->inscrip = INSCRIP_SALE; } } --- 3442,3449 ---- /* Clear the "fixed price" flag */ o_ptr->ident &= ~(IDENT_FIXED); ! /* Hack -- Inscribe the object as "on sale" */ ! if (o_ptr->note == 0) o_ptr->note = quark_add("on sale"); } } Only in angband-285/src: store.o diff -r -c angband-284/src/tables.c angband-285/src/tables.c *** angband-284/src/tables.c Tue Jul 20 18:32:20 1999 --- angband-285/src/tables.c Sat Jul 24 16:13:11 1999 *************** *** 2649,2654 **** --- 2649,2830 ---- NULL, /* xxx */ NULL, /* xxx */ NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + "birth_point_based", /* OPT_birth_point_based */ + "birth_auto_roller", /* OPT_birth_auto_roller */ + "birth_maximize", /* OPT_birth_maximize */ + "birth_preserve", /* OPT_birth_preserve */ + "birth_ironman", /* OPT_birth_ironman */ + "birth_no_stores", /* OPT_birth_no_stores */ + "birth_no_artifacts", /* OPT_birth_no_artifacts */ + "birth_rand_artifacts", /* OPT_birth_rand_artifacts */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + "adult_point_based", /* OPT_adult_point_based */ + "adult_auto_roller", /* OPT_adult_auto_roller */ + "adult_maximize", /* OPT_adult_maximize */ + "adult_preserve", /* OPT_adult_preserve */ + "adult_ironman", /* OPT_adult_ironman */ + "adult_no_stores", /* OPT_adult_no_stores */ + "adult_no_artifacts", /* OPT_adult_no_artifacts */ + "adult_rand_artifacts", /* OPT_adult_rand_artifacts */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ NULL /* xxx */ }; *************** *** 2737,2742 **** --- 2913,3094 ---- NULL, /* xxx */ NULL, /* xxx */ NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + "Allow purchase of stats using points", /* OPT_birth_point_based */ + "Allow specification of minimal stats", /* OPT_birth_auto_roller */ + "Maximize effect of race/class bonuses", /* OPT_birth_maximize */ + "Preserve artifacts when leaving a level", /* OPT_birth_preserve */ + "Forbid player from using up stairs", /* OPT_birth_ironman */ + "Forbid the use of stores and home", /* OPT_birth_no_stores */ + "Forbid the creation of artifacts", /* OPT_birth_no_artifacts */ + "Randomize some of the artifacts", /* OPT_birth_rand_artifacts */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + "Allow purchase of stats using points", /* OPT_adult_point_based */ + "Allow specification of minimal stats", /* OPT_adult_auto_roller */ + "Maximize effect of race/class bonuses", /* OPT_adult_maximize */ + "Preserve artifacts when leaving a level", /* OPT_adult_preserve */ + "Forbid player from using up stairs", /* OPT_adult_ironman */ + "Forbid the use of stores and home", /* OPT_adult_no_stores */ + "Forbid the creation of artifacts", /* OPT_adult_no_artifacts */ + "Randomize some of the artifacts", /* OPT_adult_rand_artifacts */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ + NULL, /* xxx */ NULL /* xxx */ }; *************** *** 2825,2830 **** --- 3177,3358 ---- FALSE, /* xxx */ FALSE, /* xxx */ FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* OPT_birth_point_based */ + FALSE, /* OPT_birth_auto_roller */ + FALSE, /* OPT_birth_maximize */ + FALSE, /* OPT_birth_preserve */ + FALSE, /* OPT_birth_ironman */ + FALSE, /* OPT_birth_no_stores */ + FALSE, /* OPT_birth_no_artifacts */ + FALSE, /* OPT_birth_rand_artifacts */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* OPT_adult_point_based */ + FALSE, /* OPT_adult_auto_roller */ + FALSE, /* OPT_adult_maximize */ + FALSE, /* OPT_adult_preserve */ + FALSE, /* OPT_adult_ironman */ + FALSE, /* OPT_adult_no_stores */ + FALSE, /* OPT_adult_no_artifacts */ + FALSE, /* OPT_adult_rand_artifacts */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ + FALSE, /* xxx */ FALSE /* xxx */ }; *************** *** 2931,2936 **** --- 3459,3489 ---- OPT_easy_open, OPT_easy_floor, OPT_show_stacks + }, + + /*** Birth ***/ + + { + OPT_birth_point_based, + OPT_birth_auto_roller, + OPT_birth_maximize, + OPT_birth_preserve, + OPT_birth_ironman, + OPT_birth_no_stores, + OPT_birth_no_artifacts, + OPT_birth_rand_artifacts, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255 } }; *************** *** 2945,2951 **** "good", "excellent", "special", ! "uncursed", ! "on sale" }; --- 3498,3503 ---- "good", "excellent", "special", ! "uncursed" }; Only in angband-285/src: tables.c~ Only in angband-285/src: tables.o diff -r -c angband-284/src/types.h angband-285/src/types.h *** angband-284/src/types.h Tue Jul 20 17:21:07 1999 --- angband-285/src/types.h Sat Jul 24 14:34:15 1999 *************** *** 920,926 **** bool cheat[CHEAT_MAX]; /* Cheating options */ - bool handicap[HANDICAP_MAX]; /* Advanced play options */ /*** Temporary fields ***/ --- 920,925 ---- Only in angband-285/src: types.h~ Only in angband-285/src: util.o diff -r -c angband-284/src/variable.c angband-285/src/variable.c *** angband-284/src/variable.c Tue Jul 20 17:21:08 1999 --- angband-285/src/variable.c Thu Jul 22 11:54:26 1999 *************** *** 625,627 **** --- 625,631 ---- + /* + * TRUE if process_command() is a repeated call + */ + bool command_repeating = FALSE; Only in angband-285/src: variable.o Only in angband-285/src: wizard1.o Only in angband-285/src: wizard2.o Only in angband-285/src: xtra1.o diff -r -c angband-284/src/xtra2.c angband-285/src/xtra2.c *** angband-284/src/xtra2.c Tue Jul 20 18:05:32 1999 --- angband-285/src/xtra2.c Thu Jul 22 16:36:27 1999 *************** *** 3155,3163 **** /* Scan all objects in the grid */ if (easy_floor) { ! int floor_list[23], floor_num; ! if (scan_floor(floor_list, &floor_num, y, x, 0x02)) { /* Not boring */ boring = FALSE; --- 3155,3167 ---- /* Scan all objects in the grid */ if (easy_floor) { ! int floor_list[24]; ! int floor_num; ! /* Scan for floor objects */ ! floor_num = scan_floor(floor_list, 24, y, x, 0x02); ! ! if (floor_num > 0) { /* Not boring */ boring = FALSE; *************** *** 3183,3190 **** else { /* Message */ ! sprintf(out_val, "%s%s%sa pile of %d items [l,%s]", ! s1, s2, s3, floor_num, info); } prt(out_val, 0, 0); --- 3187,3195 ---- else { /* Message */ ! sprintf(out_val, "%s%s%sa pile of %d items [%c,%s]", ! s1, s2, s3, floor_num, ! rogue_like_commands ? 'x' : 'l', info); } prt(out_val, 0, 0); *************** *** 3193,3200 **** /* Command */ query = inkey(); ! /* Display list of items (query == "el", not "won") */ ! if ((floor_num > 1) && (query == 'l')) { /* Save screen */ screen_save(); --- 3198,3209 ---- /* Command */ query = inkey(); ! /* Icky -- Hard coded command chars! XXX XXX XXX XXX */ ! ! /* Display list of items */ ! if ((floor_num > 1) && ! ((query == (rogue_like_commands ? 'x' : 'l')) || ! (query == ' ') || (query == '*') || (query == '?'))) { /* Save screen */ screen_save(); Only in angband-285/src: xtra2.o Only in angband-285/src: z-form.o Only in angband-285/src: z-rand.o Only in angband-285/src: z-term.o Only in angband-285/src: z-util.o Only in angband-285/src: z-virt.o