X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=src%2Fcmd4.c;h=aac03f1f7c501b30c7a559fdc0a497a80b573193;hb=aabb8b610ae79d124594272e37302c5cd7acdf87;hp=2042419033a6a2111383dd7a909bdd6d06a8d455;hpb=ef1d38f1b9e8cff6a76ed4ac759a3c3873c8689a;p=hengband%2Fhengband.git diff --git a/src/cmd4.c b/src/cmd4.c index 204241903..aac03f1f7 100644 --- a/src/cmd4.c +++ b/src/cmd4.c @@ -44,6 +44,12 @@ #include "world.h" #include "player-status.h" #include "sort.h" +#include "mutation.h" +#include "quest.h" +#include "store.h" +#include "artifact.h" +#include "avatar.h" +#include "object-hook.h" /* @@ -386,7 +392,7 @@ errr do_cmd_write_nikki(int type, int num, concptr note) type == NIKKI_RAND_QUEST_F || type == NIKKI_TO_QUEST) { - IDX old_quest; + QUEST_IDX old_quest; old_quest = p_ptr->inside_quest; p_ptr->inside_quest = (quest[num].type == QUEST_TYPE_RANDOM) ? 0 : num; @@ -420,13 +426,13 @@ errr do_cmd_write_nikki(int type, int num, concptr note) return (-1); } - q_idx = quest_number(dun_level); + q_idx = quest_number(current_floor_ptr->dun_level); if (write_level) { if (p_ptr->inside_arena) note_level = _("アリーナ:", "Arane:"); - else if (!dun_level) + else if (!current_floor_ptr->dun_level) note_level = _("地上:", "Surface:"); else if (q_idx && (is_fixed_quest_idx(q_idx) && !((q_idx == QUEST_OBERON) || (q_idx == QUEST_SERPENT)))) @@ -434,9 +440,9 @@ errr do_cmd_write_nikki(int type, int num, concptr note) else { #ifdef JP - sprintf(note_level_buf, "%d階(%s):", (int)dun_level, d_name+d_info[dungeon_type].name); + sprintf(note_level_buf, "%d階(%s):", (int)current_floor_ptr->dun_level, d_name+d_info[p_ptr->dungeon_idx].name); #else - sprintf(note_level_buf, "%s L%d:", d_name+d_info[dungeon_type].name, (int)dun_level); + sprintf(note_level_buf, "%s L%d:", d_name+d_info[p_ptr->dungeon_idx].name, (int)current_floor_ptr->dun_level); #endif note_level = note_level_buf; } @@ -511,8 +517,8 @@ errr do_cmd_write_nikki(int type, int num, concptr note) { fprintf(fff, _(" %2d:%02d %20s %sの最深階%d階に到達した。\n", " %2d:%02d %20s reached level %d of %s for the first time.\n"), hour, min, note_level, - _(d_name+d_info[dungeon_type].name, num), - _(num, d_name+d_info[dungeon_type].name)); + _(d_name+d_info[p_ptr->dungeon_idx].name, num), + _(num, d_name+d_info[p_ptr->dungeon_idx].name)); break; } case NIKKI_TRUMP: @@ -533,8 +539,8 @@ errr do_cmd_write_nikki(int type, int num, concptr note) } else { - if (!(dun_level+num)) to = _("地上", "the surface"); - else to = format(_("%d階", "level %d"), dun_level+num); + if (!(current_floor_ptr->dun_level+num)) to = _("地上", "the surface"); + else to = format(_("%d階", "level %d"), current_floor_ptr->dun_level+num); } fprintf(fff, _(" %2d:%02d %20s %sへ%s。\n", " %2d:%02d %20s %s %s.\n"), hour, min, note_level, _(to, note), _(note, to)); break; @@ -543,8 +549,8 @@ errr do_cmd_write_nikki(int type, int num, concptr note) { if (!num) fprintf(fff, _(" %2d:%02d %20s 帰還を使って%sの%d階へ下りた。\n", " %2d:%02d %20s recalled to dungeon level %d of %s.\n"), - hour, min, note_level, _(d_name+d_info[dungeon_type].name, (int)max_dlv[dungeon_type]), - _((int)max_dlv[dungeon_type], d_name+d_info[dungeon_type].name)); + hour, min, note_level, _(d_name+d_info[p_ptr->dungeon_idx].name, (int)max_dlv[p_ptr->dungeon_idx]), + _((int)max_dlv[p_ptr->dungeon_idx], d_name+d_info[p_ptr->dungeon_idx].name)); else fprintf(fff, _(" %2d:%02d %20s 帰還を使って地上へと戻った。\n", " %2d:%02d %20s recalled from dungeon to surface.\n"), hour, min, note_level); break; @@ -600,10 +606,10 @@ errr do_cmd_write_nikki(int type, int num, concptr note) case NIKKI_WIZ_TELE: { concptr to; - if (!dun_level) + if (!current_floor_ptr->dun_level) to = _("地上", "the surface"); else - to = format(_("%d階(%s)", "level %d of %s"), dun_level, d_name+d_info[dungeon_type].name); + to = format(_("%d階(%s)", "level %d of %s"), current_floor_ptr->dun_level, d_name+d_info[p_ptr->dungeon_idx].name); fprintf(fff, _(" %2d:%02d %20s %sへとウィザード・テレポートで移動した。\n", " %2d:%02d %20s wizard-teleport to %s.\n"), hour, min, note_level, to); @@ -612,10 +618,10 @@ errr do_cmd_write_nikki(int type, int num, concptr note) case NIKKI_PAT_TELE: { concptr to; - if (!dun_level) + if (!current_floor_ptr->dun_level) to = _("地上", "the surface"); else - to = format(_("%d階(%s)", "level %d of %s"), dun_level, d_name+d_info[dungeon_type].name); + to = format(_("%d階(%s)", "level %d of %s"), current_floor_ptr->dun_level, d_name+d_info[p_ptr->dungeon_idx].name); fprintf(fff, _(" %2d:%02d %20s %sへとパターンの力で移動した。\n", " %2d:%02d %20s used Pattern to teleport to %s.\n"), hour, min, note_level, to); @@ -846,11 +852,11 @@ static void do_cmd_last_get(void) sprintf(buf,_("%sの入手を記録します。", "Do you really want to record getting %s? "),record_o_name); if (!get_check(buf)) return; - turn_tmp = turn; - turn = record_turn; + turn_tmp = current_world_ptr->game_turn; + current_world_ptr->game_turn = record_turn; sprintf(buf,_("%sを手に入れた。", "descover %s."), record_o_name); do_cmd_write_nikki(NIKKI_BUNSHOU, 0, buf); - turn = turn_tmp; + current_world_ptr->game_turn = turn_tmp; } /*! @@ -3218,7 +3224,7 @@ void do_cmd_visuals(void) case '4': { static concptr choice_msg = _("モンスターの[色/文字]を変更します", "Change monster attr/chars"); - static IDX r = 0; + static MONRACE_IDX r = 0; prt(format(_("コマンド: %s", "Command: %s"), choice_msg), 15, 0); @@ -3852,16 +3858,16 @@ void do_cmd_feeling(void) if (p_ptr->wild_mode) return; /* No useful feeling in quests */ - if (p_ptr->inside_quest && !random_quest_number(dun_level)) + if (p_ptr->inside_quest && !random_quest_number(current_floor_ptr->dun_level)) { msg_print(_("典型的なクエストのダンジョンのようだ。", "Looks like a typical quest level.")); return; } /* No useful feeling in town */ - else if (p_ptr->town_num && !dun_level) + else if (p_ptr->town_num && !current_floor_ptr->dun_level) { - if (!strcmp(town[p_ptr->town_num].name, _("荒野", "wilderness"))) + if (!strcmp(town_info[p_ptr->town_num].name, _("荒野", "wilderness"))) { msg_print(_("何かありそうな荒野のようだ。", "Looks like a strange wilderness.")); return; @@ -3874,7 +3880,7 @@ void do_cmd_feeling(void) } /* No useful feeling in the wilderness */ - else if (!dun_level) + else if (!current_floor_ptr->dun_level) { msg_print(_("典型的な荒野のようだ。", "Looks like a typical wilderness.")); return; @@ -4175,7 +4181,7 @@ static IDX collect_monsters(IDX grp_cur, IDX mon_idx[], BIT_FLAGS8 mode) int j; for (j = 0; j < MAX_KUBI; j++) { - if (kubi_r_idx[j] == i || kubi_r_idx[j] - 10000 == i || + if (current_world_ptr->bounty_r_idx[j] == i || current_world_ptr->bounty_r_idx[j] - 10000 == i || (p_ptr->today_mon && p_ptr->today_mon == i)) { wanted = TRUE; @@ -4372,10 +4378,10 @@ static byte object_group_tval[] = * mode & 0x01 : check for non-empty group * mode & 0x02 : visual operation only */ -static int collect_objects(int grp_cur, IDX object_idx[], BIT_FLAGS8 mode) +static KIND_OBJECT_IDX collect_objects(int grp_cur, KIND_OBJECT_IDX object_idx[], BIT_FLAGS8 mode) { - IDX i; - int j, k, object_cnt = 0; + KIND_OBJECT_IDX i, object_cnt = 0; + int j, k; /* Get a list of x_char in this group */ byte group_tval = object_group_tval[grp_cur]; @@ -4455,10 +4461,10 @@ static concptr feature_group_text[] = * * mode & 0x01 : check for non-empty group */ -static int collect_features(int grp_cur, IDX *feat_idx, BIT_FLAGS8 mode) +static FEAT_IDX collect_features(int grp_cur, FEAT_IDX *feat_idx, BIT_FLAGS8 mode) { - IDX i; - int feat_cnt = 0; + FEAT_IDX i; + FEAT_IDX feat_cnt = 0; /* Unused; There is a single group. */ (void)grp_cur; @@ -4795,7 +4801,7 @@ static void do_cmd_knowledge_inven(void) do_cmd_knowledge_inven_aux(fff, &inventory[i], &j, tval, where); } - st_ptr = &town[1].store[STORE_HOME]; + st_ptr = &town_info[1].store[STORE_HOME]; strcpy(where, _("家", "H ")); for (i = 0; i < st_ptr->stock_num; i++) { @@ -5264,21 +5270,19 @@ static void do_cmd_knowledge_artifacts(void) } /* Check the dungeon */ - for (y = 0; y < cur_hgt; y++) + for (y = 0; y < current_floor_ptr->height; y++) { - for (x = 0; x < cur_wid; x++) + for (x = 0; x < current_floor_ptr->width; x++) { - cave_type *c_ptr = &cave[y][x]; + grid_type *g_ptr = ¤t_floor_ptr->grid_array[y][x]; OBJECT_IDX this_o_idx, next_o_idx = 0; /* Scan all objects in the grid */ - for (this_o_idx = c_ptr->o_idx; this_o_idx; this_o_idx = next_o_idx) + for (this_o_idx = g_ptr->o_idx; this_o_idx; this_o_idx = next_o_idx) { object_type *o_ptr; - o_ptr = &o_list[this_o_idx]; - - /* Acquire next object */ + o_ptr = ¤t_floor_ptr->o_list[this_o_idx]; next_o_idx = o_ptr->next_o_idx; /* Ignore non-artifacts */ @@ -5503,7 +5507,8 @@ static void do_cmd_knowledge_uniques(void) */ static void do_cmd_knowledge_weapon_exp(void) { - int i, num, weapon_exp; + int i, num; + SUB_EXP weapon_exp; KIND_OBJECT_IDX j; FILE *fff; @@ -5562,7 +5567,8 @@ static void do_cmd_knowledge_weapon_exp(void) static void do_cmd_knowledge_spell_exp(void) { SPELL_IDX i = 0; - int spell_exp, exp_level; + SUB_EXP spell_exp; + int exp_level; FILE *fff; const magic_type *s_ptr; @@ -5843,7 +5849,7 @@ static void do_cmd_knowledge_pets(void) for (i = m_max - 1; i >= 1; i--) { /* Access the monster */ - m_ptr = &m_list[i]; + m_ptr = ¤t_floor_ptr->m_list[i]; /* Ignore "dead" monsters */ if (!m_ptr->r_idx) continue; @@ -6160,7 +6166,7 @@ static void browser_cursor(char ch, int *column, IDX *grp_cur, int grp_cnt, int old_grp = grp; /* Move up or down */ - grp += ddy[d]; + grp += (IDX)ddy[d]; /* Verify */ if (grp >= grp_cnt) grp = grp_cnt - 1; @@ -6172,7 +6178,7 @@ static void browser_cursor(char ch, int *column, IDX *grp_cur, int grp_cnt, else { /* Move up or down */ - list += ddy[d]; + list += (IDX)ddy[d]; /* Verify */ if (list >= list_cnt) list = list_cnt - 1; @@ -6206,11 +6212,10 @@ static void display_visual_list(int col, int row, int height, int width, TERM_CO /* Display columns until done */ for (j = 0; j < width; j++) { - byte a; - char c; + TERM_COLOR a, ia; + SYMBOL_CODE c, ic; TERM_LEN x = col + j; TERM_LEN y = row + i; - int ia, ic; /* Bigtile mode uses double width */ if (use_bigtile) x += j; @@ -6223,8 +6228,8 @@ static void display_visual_list(int col, int row, int height, int width, TERM_CO (!use_graphics && ic > 0x7f)) continue; - a = (byte)ia; - c = (char)ic; + a = ia; + c = ic; /* Force correct code for both ASCII character and tile */ if (c & 0x80) a |= 0x80; @@ -6361,8 +6366,8 @@ static bool visual_mode_command(char ch, bool *visual_list_ptr, { int eff_width; int d = get_keymap_dir(ch); - byte a = (*cur_attr_ptr & 0x7f); - byte c = *cur_char_ptr; + TERM_COLOR a = (*cur_attr_ptr & 0x7f); + SYMBOL_CODE c = *cur_char_ptr; if (use_bigtile) eff_width = width / 2; else eff_width = width; @@ -6373,8 +6378,8 @@ static bool visual_mode_command(char ch, bool *visual_list_ptr, if ((a == 0x7f) && (ddy[d] > 0)) d = 0; if ((c == 0xff) && (ddx[d] > 0)) d = 0; - a += ddy[d]; - c += ddx[d]; + a += (TERM_COLOR)ddy[d]; + c += (SYMBOL_CODE)ddx[d]; /* Force correct code for both ASCII character and tile */ if (c & 0x80) a |= 0x80; @@ -7528,9 +7533,9 @@ static void do_cmd_knowledge_kubi(void) for (i = 0; i < MAX_KUBI; i++) { - if (kubi_r_idx[i] <= 10000) + if (current_world_ptr->bounty_r_idx[i] <= 10000) { - fprintf(fff,"%s\n", r_name + r_info[kubi_r_idx[i]].name); + fprintf(fff,"%s\n", r_name + r_info[current_world_ptr->bounty_r_idx[i]].name); listed = TRUE; } @@ -7581,9 +7586,8 @@ static void do_cmd_knowledge_virtues(void) } /* -* Dungeon -* -*/ + * Dungeon + */ static void do_cmd_knowledge_dungeon(void) { FILE *fff; @@ -7682,7 +7686,7 @@ static void do_cmd_knowledge_quests_current(FILE *fff) char rand_tmp_str[120] = "\0"; GAME_TEXT name[MAX_NLEN]; monster_race *r_ptr; - IDX i; + QUEST_IDX i; int rand_level = 100; int total = 0; @@ -7695,7 +7699,7 @@ static void do_cmd_knowledge_quests_current(FILE *fff) (quest[i].status == QUEST_STATUS_COMPLETED)) { /* Set the quest number temporary */ - IDX old_quest = p_ptr->inside_quest; + QUEST_IDX old_quest = p_ptr->inside_quest; int j; /* Clear the text */ @@ -8060,7 +8064,7 @@ static void do_cmd_knowledge_quests(void) fd_kill(file_name); /* Free Memory */ - C_KILL(quest_num, max_q_idx, IDX); + C_KILL(quest_num, max_q_idx, QUEST_IDX); } @@ -8077,7 +8081,7 @@ static void do_cmd_knowledge_home(void) GAME_TEXT o_name[MAX_NLEN]; concptr paren = ")"; - process_dungeon_file("w_info.txt", 0, 0, max_wild_y, max_wild_x); + process_dungeon_file("w_info.txt", 0, 0, current_world_ptr->max_wild_y, current_world_ptr->max_wild_x); /* Open a new file */ fff = my_fopen_temp(file_name, 1024); @@ -8090,7 +8094,7 @@ static void do_cmd_knowledge_home(void) if (fff) { /* Print all homes in the different towns */ - st_ptr = &town[1].store[STORE_HOME]; + st_ptr = &town_info[1].store[STORE_HOME]; /* Home -- if anything there */ if (st_ptr->stock_num)