X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=src%2Fbldg.c;h=2185bfc7b7360a59f4182ea05f16c325df45b606;hb=4303d14833e69d5a8fb635f641b6cd25302d38a4;hp=8864d0a0a4692f017dc15eb907dfcb9168e23d7c;hpb=b0a7483c73fd45223e4c263aab7031be1236dac4;p=hengbandforosx%2Fhengbandosx.git diff --git a/src/bldg.c b/src/bldg.c index 8864d0a0a..2185bfc7b 100644 --- a/src/bldg.c +++ b/src/bldg.c @@ -14,9 +14,12 @@ #include "angband.h" #include "floor.h" +#include "object-boost.h" #include "object-hook.h" +#include "monster.h" #include "monsterrace-hook.h" #include "melee.h" +#include "wild.h" #include "world.h" #include "sort.h" @@ -24,6 +27,10 @@ #include "mutation.h" #include "quest.h" #include "artifact.h" +#include "cmd-spell.h" +#include "rumor.h" +#include "player-status.h" +#include "spells-status.h" /*! * ループ中で / hack as in leave_store in store.c @@ -1441,6 +1448,7 @@ void battle_monsters(void) } for (i=0;i<4;i++) { + if (power[i] <= 0) break; power[i] = total*60/power[i]; if (tekitou && ((power[i] < 160) || power[i] > 1500)) break; if ((power[i] < 160) && randint0(20)) break; @@ -1457,15 +1465,15 @@ void battle_monsters(void) */ static bool kakutoujou(void) { - s32b maxbet; - s32b wager; + PRICE maxbet; + PRICE wager; char out_val[160], tmp_str[80]; concptr p; - if ((turn - old_battle) > TURNS_PER_TICK*250) + if ((current_world_ptr->game_turn - old_battle) > TURNS_PER_TICK * 250) { battle_monsters(); - old_battle = turn; + old_battle = current_world_ptr->game_turn; } screen_save(); @@ -1516,9 +1524,9 @@ static bool kakutoujou(void) else bell(); } - clear_bldg(4,4); - for (i=0;i<4;i++) - if (i !=sel_monster) clear_bldg(i+5,i+5); + clear_bldg(4, 4); + for (i = 0; i < 4; i++) + if (i != sel_monster) clear_bldg(i + 5, i + 5); maxbet = p_ptr->lev * 200; @@ -1633,9 +1641,9 @@ static void shoukinkubi(void) { byte color; concptr done_mark; - monster_race *r_ptr = &r_info[(kubi_r_idx[i] > 10000 ? kubi_r_idx[i] - 10000 : kubi_r_idx[i])]; + monster_race *r_ptr = &r_info[(current_world_ptr->bounty_r_idx[i] > 10000 ? current_world_ptr->bounty_r_idx[i] - 10000 : current_world_ptr->bounty_r_idx[i])]; - if (kubi_r_idx[i] > 10000) + if (current_world_ptr->bounty_r_idx[i] > 10000) { color = TERM_RED; done_mark = _("(済)", "(done)"); @@ -1825,7 +1833,7 @@ static bool kankin(void) for (i = INVEN_PACK-1; i >= 0; i--) { o_ptr = &inventory[i]; - if ((o_ptr->tval == TV_CORPSE) && (o_ptr->pval == kubi_r_idx[j])) + if ((o_ptr->tval == TV_CORPSE) && (o_ptr->pval == current_world_ptr->bounty_r_idx[j])) { char buf[MAX_NLEN+20]; int num, k; @@ -1837,14 +1845,14 @@ static bool kankin(void) if (!get_check(buf)) continue; #if 0 /* Obsoleted */ - msg_format(_("賞金 %ld$を手に入れた。", "You get %ldgp."), (r_info[kubi_r_idx[j]].level + 1) * 300 * o_ptr->number); - p_ptr->au += (r_info[kubi_r_idx[j]].level+1) * 300 * o_ptr->number; + msg_format(_("賞金 %ld$を手に入れた。", "You get %ldgp."), (r_info[current_world_ptr->bounty_r_idx[j]].level + 1) * 300 * o_ptr->number); + p_ptr->au += (r_info[current_world_ptr->bounty_r_idx[j]].level+1) * 300 * o_ptr->number; p_ptr->redraw |= (PR_GOLD); inven_item_increase(i, -o_ptr->number); inven_item_describe(i); inven_item_optimize(i); chg_virtue(V_JUSTICE, 5); - kubi_r_idx[j] += 10000; + current_world_ptr->bounty_r_idx[j] += 10000; change = TRUE; #endif /* Obsoleted */ @@ -1855,18 +1863,18 @@ static bool kankin(void) inven_item_optimize(i); chg_virtue(V_JUSTICE, 5); - kubi_r_idx[j] += 10000; + current_world_ptr->bounty_r_idx[j] += 10000; /* Count number of unique corpses already handed */ for (num = 0, k = 0; k < MAX_KUBI; k++) { - if (kubi_r_idx[k] >= 10000) num++; + if (current_world_ptr->bounty_r_idx[k] >= 10000) num++; } msg_format(_("これで合計 %d ポイント獲得しました。" ,"You earned %d point%s total."), num, (num > 1 ? "s" : "")); /* Prepare to make a prize */ object_prep(&forge, lookup_kind(prize_list[num-1].tval, prize_list[num-1].sval)); - apply_magic(&forge, object_level, AM_NO_FIXED_ART); + apply_magic(&forge, current_floor_ptr->object_level, AM_NO_FIXED_ART); object_aware(&forge); object_known(&forge); @@ -1934,7 +1942,7 @@ static bool inn_comm(int cmd) } else { - s32b oldturn = turn; + s32b oldturn = current_world_ptr->game_turn; int prev_day, prev_hour, prev_min; extract_day_hour_min(&prev_day, &prev_hour, &prev_min); @@ -1943,11 +1951,11 @@ static bool inn_comm(int cmd) else do_cmd_write_nikki(NIKKI_BUNSHOU, 0, _("宿屋に泊まった。", "stay over night at the inn.")); - turn = (turn / (TURNS_PER_TICK * TOWN_DAWN / 2) + 1) * (TURNS_PER_TICK * TOWN_DAWN / 2); - if (dungeon_turn < dungeon_turn_limit) + current_world_ptr->game_turn = (current_world_ptr->game_turn / (TURNS_PER_TICK * TOWN_DAWN / 2) + 1) * (TURNS_PER_TICK * TOWN_DAWN / 2); + if (current_world_ptr->dungeon_turn < current_world_ptr->dungeon_turn_limit) { - dungeon_turn += MIN((turn - oldturn), TURNS_PER_TICK * 250) * INN_DUNGEON_TURN_ADJ; - if (dungeon_turn > dungeon_turn_limit) dungeon_turn = dungeon_turn_limit; + current_world_ptr->dungeon_turn += MIN((current_world_ptr->game_turn - oldturn), TURNS_PER_TICK * 250) * INN_DUNGEON_TURN_ADJ; + if (current_world_ptr->dungeon_turn > current_world_ptr->dungeon_turn_limit) current_world_ptr->dungeon_turn = current_world_ptr->dungeon_turn_limit; } prevent_turn_overflow(); @@ -2075,7 +2083,7 @@ static void castle_quest(void) clear_bldg(4, 18); /* Current quest of the building */ - q_index = cave[p_ptr->y][p_ptr->x].special; + q_index = current_floor_ptr->grid_array[p_ptr->y][p_ptr->x].special; /* Is there a quest available at the building? */ if (!q_index) @@ -2148,7 +2156,11 @@ static void castle_quest(void) q_ptr->cur_num = 0; name = (r_name + r_ptr->name); - msg_format(_("クエスト: %sを %d体倒す", "Your quest: kill %d %s"), name,q_ptr->max_num); +#ifdef JP + msg_format("クエスト: %sを %d体倒す", name, q_ptr->max_num); +#else + msg_format("Your quest: kill %d %s", q_ptr->max_num, name); +#endif } else { @@ -3137,7 +3149,7 @@ static PRICE repair_broken_weapon_aux(PRICE bcost) one_ability(o_ptr); } - msg_print(_("これはかなりの業物だったようだ。", "This blade seems to be exceptionally.")); + msg_print(_("これはかなりの業物だったようだ。", "This blade seems to be exceptional.")); } object_desc(basenm, o_ptr, OD_NAME_ONLY); @@ -3646,7 +3658,7 @@ bool tele_town(void) POSITION x, y; int num = 0; - if (dun_level) + if (current_floor_ptr->dun_level) { msg_print(_("この魔法は地上でしか使えない!", "This spell can only be used on the surface!")); return FALSE; @@ -3667,7 +3679,7 @@ bool tele_town(void) if ((i == NO_TOWN) || (i == SECRET_TOWN) || (i == p_ptr->town_num) || !(p_ptr->visit & (1L << (i - 1)))) continue; - sprintf(buf, "%c) %-20s", I2A(i - 1), town[i].name); + sprintf(buf, "%c) %-20s", I2A(i - 1), town_info[i].name); prt(buf, 5 + i, 5); num++; } @@ -3680,7 +3692,7 @@ bool tele_town(void) return FALSE; } - prt(_("どこに行きますか:", "Which town you go: "), 0, 0); + prt(_("どこに行きますか:", "Where do you want to go: "), 0, 0); while(1) { i = inkey(); @@ -3695,9 +3707,9 @@ bool tele_town(void) break; } - for (y = 0; y < max_wild_y; y++) + for (y = 0; y < current_world_ptr->max_wild_y; y++) { - for (x = 0; x < max_wild_x; x++) + for (x = 0; x < current_world_ptr->max_wild_x; x++) { if(wilderness[y][x].town == (i-'a'+1)) { @@ -3870,12 +3882,7 @@ static bool research_mon(void) /* Sort if needed */ if (why) { - /* Select the sort method */ - ang_sort_comp = ang_sort_comp_hook; - ang_sort_swap = ang_sort_swap_hook; - - /* Sort the array */ - ang_sort(who, &why, n); + ang_sort(who, &why, n, ang_sort_comp_hook, ang_sort_swap_hook); } @@ -4188,7 +4195,7 @@ void do_cmd_quest(void) { if(p_ptr->wild_mode) return; - p_ptr->energy_use = 100; + take_turn(p_ptr, 100); if (!cave_have_flag_bold(p_ptr->y, p_ptr->x, FF_QUEST_ENTER)) { @@ -4209,8 +4216,8 @@ void do_cmd_quest(void) leave_quest_check(); - if (quest[p_ptr->inside_quest].type != QUEST_TYPE_RANDOM) dun_level = 1; - p_ptr->inside_quest = cave[p_ptr->y][p_ptr->x].special; + if (quest[p_ptr->inside_quest].type != QUEST_TYPE_RANDOM) current_floor_ptr->dun_level = 1; + p_ptr->inside_quest = current_floor_ptr->grid_array[p_ptr->y][p_ptr->x].special; p_ptr->leaving = TRUE; } @@ -4230,7 +4237,7 @@ void do_cmd_bldg(void) if(p_ptr->wild_mode) return; - p_ptr->energy_use = 100; + take_turn(p_ptr, 100); if (!cave_have_flag_bold(p_ptr->y, p_ptr->x, FF_BLDG)) { @@ -4238,7 +4245,7 @@ void do_cmd_bldg(void) return; } - which = f_info[cave[p_ptr->y][p_ptr->x].feat].subtype; + which = f_info[current_floor_ptr->grid_array[p_ptr->y][p_ptr->x].feat].subtype; bldg = &building[which]; @@ -4268,7 +4275,7 @@ void do_cmd_bldg(void) command_new = SPECIAL_KEY_BUILDING; /* No energy needed to re-enter the arena */ - p_ptr->energy_use = 0; + free_turn(p_ptr); } return; @@ -4285,7 +4292,7 @@ void do_cmd_bldg(void) command_new = SPECIAL_KEY_BUILDING; /* No energy needed to re-enter the arena */ - p_ptr->energy_use = 0; + free_turn(p_ptr); return; }