X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=src%2Fxtra2.c;h=2b99d52e43ed395eadeacff48a859ed1a19c3c22;hb=9d4b877c27a36774ae5256db6237264298837607;hp=6dd5d9110b56dc63b080d94fa790c549ae8edf13;hpb=3812165157b73ca44483dc9fc16c06db5f4a4420;p=hengband%2Fhengband.git diff --git a/src/xtra2.c b/src/xtra2.c index 6dd5d9110..2b99d52e4 100644 --- a/src/xtra2.c +++ b/src/xtra2.c @@ -230,17 +230,17 @@ msg_format("レベル %d にようこそ。", p_ptr->lev); * Used to allocate proper treasure when "Creeping coins" die * XXX XXX XXX Note the use of actual "monster names" */ -static int get_coin_type(int r_idx) +static int get_coin_type(MONRACE_IDX r_idx) { /* Analyze monsters */ switch (r_idx) { - case MON_COPPER_COINS: return 2; - case MON_SILVER_COINS: return 5; - case MON_GOLD_COINS: return 10; - case MON_MITHRIL_COINS: - case MON_MITHRIL_GOLEM: return 16; - case MON_ADAMANT_COINS: return 17; + case MON_COPPER_COINS: return 2; + case MON_SILVER_COINS: return 5; + case MON_GOLD_COINS: return 10; + case MON_MITHRIL_COINS: + case MON_MITHRIL_GOLEM: return 16; + case MON_ADAMANT_COINS: return 17; } /* Assume nothing */ @@ -254,7 +254,7 @@ static int get_coin_type(int r_idx) * @param k_idx 判定したいオブジェクトのベースアイテムID * @return オブジェクトがクロークならばTRUEを返す */ -static bool kind_is_cloak(int k_idx) +static bool kind_is_cloak(KIND_OBJECT_IDX k_idx) { object_kind *k_ptr = &k_info[k_idx]; @@ -275,7 +275,7 @@ static bool kind_is_cloak(int k_idx) * @param k_idx 判定したいオブジェクトのベースアイテムID * @return オブジェクトが竿状武器ならばTRUEを返す */ -static bool kind_is_polearm(int k_idx) +static bool kind_is_polearm(KIND_OBJECT_IDX k_idx) { object_kind *k_ptr = &k_info[k_idx]; @@ -296,7 +296,7 @@ static bool kind_is_polearm(int k_idx) * @param k_idx 判定したいオブジェクトのベースアイテムID * @return オブジェクトが剣ならばTRUEを返す */ -static bool kind_is_sword(int k_idx) +static bool kind_is_sword(KIND_OBJECT_IDX k_idx) { object_kind *k_ptr = &k_info[k_idx]; @@ -317,7 +317,7 @@ static bool kind_is_sword(int k_idx) * @param k_idx 判定したいオブジェクトのベースアイテムID * @return オブジェクトが魔法書ならばTRUEを返す */ -static bool kind_is_book(int k_idx) +static bool kind_is_book(KIND_OBJECT_IDX k_idx) { object_kind *k_ptr = &k_info[k_idx]; @@ -338,7 +338,7 @@ static bool kind_is_book(int k_idx) * @param k_idx 判定したいオブジェクトのベースアイテムID * @return オブジェクトがベースアイテム時点でGOODなアイテムならばTRUEを返す */ -static bool kind_is_good_book(int k_idx) +static bool kind_is_good_book(KIND_OBJECT_IDX k_idx) { object_kind *k_ptr = &k_info[k_idx]; @@ -359,7 +359,7 @@ static bool kind_is_good_book(int k_idx) * @param k_idx 判定したいオブジェクトのベースアイテムID * @return オブジェクトが鎧ならばTRUEを返す */ -static bool kind_is_armor(int k_idx) +static bool kind_is_armor(KIND_OBJECT_IDX k_idx) { object_kind *k_ptr = &k_info[k_idx]; @@ -380,7 +380,7 @@ static bool kind_is_armor(int k_idx) * @param k_idx 判定したいオブジェクトのベースアイテムID * @return オブジェクトが打撃武器ならばTRUEを返す */ -static bool kind_is_hafted(int k_idx) +static bool kind_is_hafted(KIND_OBJECT_IDX k_idx) { object_kind *k_ptr = &k_info[k_idx]; @@ -420,6 +420,7 @@ void complete_quest(int quest_num) if (!(q_ptr->flags & QUEST_FLAG_SILENT)) { + play_music(TERM_XTRA_MUSIC_BASIC, MUSIC_BASIC_QUEST_CLEAR); msg_print(_("クエストを達成した!", "You just completed your quest!")); msg_print(NULL); } @@ -438,7 +439,7 @@ static int count_all_hostile_monsters(void) { for (y = 0; y < cur_hgt; ++ y) { - int m_idx = cave[y][x].m_idx; + MONSTER_IDX m_idx = cave[y][x].m_idx; if (m_idx > 0 && is_hostile(&m_list[m_idx])) { @@ -458,7 +459,7 @@ static int count_all_hostile_monsters(void) */ void check_quest_completion(monster_type *m_ptr) { - int y, x; + POSITION y, x; int quest_num; @@ -466,7 +467,7 @@ void check_quest_completion(monster_type *m_ptr) bool reward = FALSE; object_type forge; - object_type *q_ptr; + object_type *o_ptr; /* Get the location */ y = m_ptr->fy; @@ -623,7 +624,7 @@ void check_quest_completion(monster_type *m_ptr) /* Create a magical staircase */ if (create_stairs) { - int ny, nx; + POSITION ny, nx; /* Stagger around */ while (cave_perma_bold(y, x) || cave[y][x].o_idx || (cave[y][x].info & CAVE_OBJECT) ) @@ -655,16 +656,16 @@ void check_quest_completion(monster_type *m_ptr) for (i = 0; i < (dun_level / 15)+1; i++) { /* Get local object */ - q_ptr = &forge; + o_ptr = &forge; /* Wipe the object */ - object_wipe(q_ptr); + object_wipe(o_ptr); /* Make a great object */ - make_object(q_ptr, AM_GOOD | AM_GREAT); + make_object(o_ptr, AM_GOOD | AM_GREAT); /* Drop it in the dungeon */ - (void)drop_near(q_ptr, -1, y, x); + (void)drop_near(o_ptr, -1, y, x); } } } @@ -736,7 +737,7 @@ cptr extract_note_dies(monster_race *r_ptr) * it drops all of its objects, which may disappear in crowded rooms. * */ -void monster_death(int m_idx, bool drop_item) +void monster_death(MONSTER_IDX m_idx, bool drop_item) { int i, j, y, x; @@ -793,9 +794,9 @@ void monster_death(int m_idx, bool drop_item) { int flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL; int typ = mbe_info[r_ptr->blow[i].effect].explode_type; - int d_dice = r_ptr->blow[i].d_dice; - int d_side = r_ptr->blow[i].d_side; - int damage = damroll(d_dice, d_side); + DICE_NUMBER d_dice = r_ptr->blow[i].d_dice; + DICE_SID d_side = r_ptr->blow[i].d_side; + HIT_POINT damage = damroll(d_dice, d_side); project(m_idx, 3, y, x, damage, typ, flg, -1); break; @@ -988,7 +989,7 @@ void monster_death(int m_idx, bool drop_item) { if (!one_in_(7)) { - int wy = y, wx = x; + POSITION wy = y, wx = x; int attempts = 100; bool pet = is_pet(m_ptr); @@ -1250,193 +1251,11 @@ void monster_death(int m_idx, bool drop_item) int a_idx = 0; int chance = 0; - switch (m_ptr->r_idx) + for(i = 0; i < 4; i++) { - case MON_OBERON: - if (one_in_(3)) - { - a_idx = ART_JUDGE; - chance = 33; - } - else - { - a_idx = ART_AMBER; - chance = 50; - } - break; - - case MON_GHB: - a_idx = ART_GHB; - chance = 100; - break; - - case MON_STORMBRINGER: - a_idx = ART_STORMBRINGER; - chance = 100; - break; - - case MON_ECHIZEN: - a_idx = ART_CRIMSON; - chance = 50; - break; - - case MON_GANDALF: - a_idx = ART_ICANUS; - chance = 20; - break; - - case MON_OROCHI: - a_idx = ART_KUSANAGI; - chance = 25; - break; - - case MON_DWORKIN: - a_idx = ART_JUDGE; - chance = 20; - break; - - case MON_SAURON: - if (one_in_(10)) - { - a_idx = ART_POWER; - chance = 100; - } - else - { - a_idx = ART_AHO; - chance = 100; - } - break; - - case MON_BRAND: - if (!one_in_(3)) - { - a_idx = ART_BRAND; - chance = 25; - } - else - { - a_idx = ART_WEREWINDLE; - chance = 33; - } - break; - - case MON_CORWIN: - if (!one_in_(3)) - { - a_idx = ART_GRAYSWANDIR; - chance = 33; - } - else - { - a_idx = ART_CORWIN; - chance = 33; - } - break; - - case MON_SURTUR: - if (!one_in_(3)) - { - a_idx = ART_TWILIGHT; - chance = 100; - } - else - { - a_idx = ART_ORB_OF_FATE; - chance = 100; - } - break; - - case MON_SARUMAN: - a_idx = ART_ELENDIL; - chance = 33; - break; - - case MON_FIONA: - a_idx = ART_FIONA; - chance = 50; - break; - - case MON_JULIAN: - a_idx = ART_JULIAN; - chance = 45; - break; - - case MON_KLING: - a_idx = ART_DESTINY; - chance = 40; - break; - - case MON_GOEMON: - a_idx = ART_ZANTETSU; - chance = 100; - break; - - case MON_HAGEN: - a_idx = ART_HAGEN; - chance = 66; - break; - - case MON_CAINE: - a_idx = ART_CAINE; - chance = 50; - break; - - case MON_BULLGATES: - a_idx = ART_WINBLOWS; - chance = 66; - break; - - case MON_LUNGORTHIN: - a_idx = ART_CALRIS; - chance = 50; - break; - - case MON_JACK_SHADOWS: - a_idx = ART_JACK; - chance = 15; - break; - - case MON_DIO: - a_idx = ART_STONEMASK; - chance = 20; - break; - - case MON_BELD: - a_idx = ART_SOULCRUSH; - chance = 10; - break; - - case MON_PIP: - a_idx = ART_EXCALIBUR_J; - chance = 50; - break; - - case MON_SHUTEN: - a_idx = ART_SHUTEN_DOJI; - chance = 33; - break; - - case MON_GOTHMOG: - a_idx = ART_GOTHMOG; - chance = 33; - break; - - case MON_FUNDIN: - a_idx = ART_FUNDIN; - chance = 5; - break; - - case MON_ROBIN_HOOD: - a_idx = ART_ROBIN_HOOD; - chance = 5; - break; - - case MON_KOGAN: - a_idx = ART_NANACHO; - chance = 80; - break; - + if(!r_ptr->artifact_id[i]) break; + a_idx = r_ptr->artifact_id[i]; + chance = r_ptr->artifact_percent[i]; } if ((a_idx > 0) && ((randint0(100) < chance) || p_ptr->wizard)) @@ -1459,12 +1278,12 @@ void monster_death(int m_idx, bool drop_item) if ((r_ptr->flags7 & RF7_GUARDIAN) && (d_info[dungeon_type].final_guardian == m_ptr->r_idx)) { - int k_idx = d_info[dungeon_type].final_object ? d_info[dungeon_type].final_object + IDX k_idx = d_info[dungeon_type].final_object ? d_info[dungeon_type].final_object : lookup_kind(TV_SCROLL, SV_SCROLL_ACQUIREMENT); if (d_info[dungeon_type].final_artifact) { - int a_idx = d_info[dungeon_type].final_artifact; + a_idx = d_info[dungeon_type].final_artifact; artifact_type *a_ptr = &a_info[a_idx]; if (!a_ptr->cur_num) @@ -1585,6 +1404,8 @@ void monster_death(int m_idx, bool drop_item) /* Redraw the "title" */ p_ptr->redraw |= (PR_TITLE); + play_music(TERM_XTRA_MUSIC_BASIC, MUSIC_BASIC_FINAL_QUEST_CLEAR); + do_cmd_write_nikki(NIKKI_BUNSHOU, 0, _("見事に変愚蛮怒の勝利者となった!", "become *WINNER* of Hengband finely!")); if ((p_ptr->pclass == CLASS_CHAOS_WARRIOR) || (p_ptr->muta2 & MUT2_CHAOS_GIFT)) @@ -1615,7 +1436,7 @@ void monster_death(int m_idx, bool drop_item) * "type" is not yet used and should be 0. * */ -int mon_damage_mod(monster_type *m_ptr, int dam, bool is_psy_spear) +HIT_POINT mon_damage_mod(monster_type *m_ptr, HIT_POINT dam, bool is_psy_spear) { monster_race *r_ptr = &r_info[m_ptr->r_idx]; @@ -1657,7 +1478,7 @@ int mon_damage_mod(monster_type *m_ptr, int dam, bool is_psy_spear) * experience point of a monster later. * */ -static void get_exp_from_mon(int dam, monster_type *m_ptr) +static void get_exp_from_mon(HIT_POINT dam, monster_type *m_ptr) { monster_race *r_ptr = &r_info[m_ptr->r_idx]; @@ -1756,7 +1577,7 @@ static void get_exp_from_mon(int dam, monster_type *m_ptr) * to induce changes in the monster recall code. * */ -bool mon_take_hit(int m_idx, int dam, bool *fear, cptr note) +bool mon_take_hit(MONSTER_IDX m_idx, HIT_POINT dam, bool *fear, cptr note) { monster_type *m_ptr = &m_list[m_idx]; monster_race *r_ptr = &r_info[m_ptr->r_idx]; @@ -2020,7 +1841,7 @@ bool mon_take_hit(int m_idx, int dam, bool *fear, cptr note) chg_virtue (V_JUSTICE, -1); } - if ((r_ptr->flags3 & RF3_ANIMAL) && !(r_ptr->flags3 & RF3_EVIL) && !(r_ptr->flags4 & ~(RF4_NOMAGIC_MASK)) && !(r_ptr->flags5 & ~(RF5_NOMAGIC_MASK)) && !(r_ptr->flags6 & ~(RF6_NOMAGIC_MASK))) + if ((r_ptr->flags3 & RF3_ANIMAL) && !(r_ptr->flags3 & RF3_EVIL) && !(r_ptr->flags4 & ~(RF4_NOMAGIC_MASK)) && !(r_ptr->a_ability_flags1 & ~(RF5_NOMAGIC_MASK)) && !(r_ptr->a_ability_flags2 & ~(RF6_NOMAGIC_MASK))) { if (one_in_(4)) chg_virtue(V_NATURE, -1); } @@ -2052,7 +1873,7 @@ bool mon_take_hit(int m_idx, int dam, bool *fear, cptr note) if ((p_ptr->pseikaku == SEIKAKU_COMBAT) || (inventory[INVEN_BOW].name1 == ART_CRIMSON)) msg_format("せっかくだから%sを殺した。", m_name); else -msg_format("%sを殺した。", m_name); + msg_format("%sを殺した。", m_name); #else msg_format("You have killed %s.", m_name); #endif @@ -2062,7 +1883,6 @@ msg_format("%sを殺した。", m_name); /* Death by Physical attack -- non-living monster */ else if (!monster_living(r_ptr)) { - int i; bool explode = FALSE; for (i = 0; i < 4; i++) @@ -2287,7 +2107,7 @@ void resize_map(void) * Waiting command; * Place the cursor on the player */ - if (can_save) move_cursor_relative(py, px); + if (can_save) move_cursor_relative(p_ptr->y, p_ptr->x); /* Refresh */ Term_fresh(); @@ -2413,8 +2233,8 @@ bool change_panel_xy(int y, int x) */ void verify_panel(void) { - int y = py; - int x = px; + int y = p_ptr->y; + int x = p_ptr->x; int wid, hgt; int prow_min; @@ -2710,7 +2530,7 @@ void ang_sort(vptr u, vptr v, int n) * Future versions may restrict the ability to target "trappers" * and "mimics", but the semantics is a little bit weird. */ -bool target_able(int m_idx) +bool target_able(MONSTER_IDX m_idx) { monster_type *m_ptr = &m_list[m_idx]; @@ -2726,7 +2546,7 @@ bool target_able(int m_idx) if (p_ptr->riding && (p_ptr->riding == m_idx)) return (TRUE); /* Monster must be projectable */ - if (!projectable(py, px, m_ptr->fy, m_ptr->fx)) return (FALSE); + if (!projectable(p_ptr->y, p_ptr->x, m_ptr->fy, m_ptr->fx)) return (FALSE); /* XXX XXX XXX Hack -- Never target trappers */ /* if (CLEAR_ATTR && (CLEAR_CHAR)) return (FALSE); */ @@ -2784,15 +2604,15 @@ static bool ang_sort_comp_distance(vptr u, vptr v, int a, int b) int da, db, kx, ky; /* Absolute distance components */ - kx = x[a]; kx -= px; kx = ABS(kx); - ky = y[a]; ky -= py; ky = ABS(ky); + kx = x[a]; kx -= p_ptr->x; kx = ABS(kx); + ky = y[a]; ky -= p_ptr->y; ky = ABS(ky); /* Approximate Double Distance to the first point */ da = ((kx > ky) ? (kx + kx + ky) : (ky + ky + kx)); /* Absolute distance components */ - kx = x[b]; kx -= px; kx = ABS(kx); - ky = y[b]; ky -= py; ky = ABS(ky); + kx = x[b]; kx -= p_ptr->x; kx = ABS(kx); + ky = y[b]; ky -= p_ptr->y; ky = ABS(ky); /* Approximate Double Distance to the first point */ db = ((kx > ky) ? (kx + kx + ky) : (ky + ky + kx)); @@ -2819,8 +2639,8 @@ static bool ang_sort_comp_importance(vptr u, vptr v, int a, int b) monster_race *ap_ra_ptr, *ap_rb_ptr; /* The player grid */ - if (y[a] == py && x[a] == px) return TRUE; - if (y[b] == py && x[b] == px) return FALSE; + if (y[a] == p_ptr->y && x[a] == p_ptr->x) return TRUE; + if (y[b] == p_ptr->y && x[b] == p_ptr->x) return FALSE; /* Extract monster race */ if (ca_ptr->m_idx && ma_ptr->ml) ap_ra_ptr = &r_info[ma_ptr->ap_r_idx]; @@ -2900,7 +2720,7 @@ static void ang_sort_swap_distance(vptr u, vptr v, int a, int b) /* * Hack -- help "select" a location (see below) */ -static s16b target_pick(int y1, int x1, int dy, int dx) +static s16b target_pick(POSITION y1, POSITION x1, POSITION dy, POSITION dx) { int i, v; @@ -3024,10 +2844,10 @@ static void target_set_prepare(int mode) if (mode & TARGET_KILL) { /* Inner range */ - min_hgt = MAX((py - MAX_RANGE), 0); - max_hgt = MIN((py + MAX_RANGE), cur_hgt - 1); - min_wid = MAX((px - MAX_RANGE), 0); - max_wid = MIN((px + MAX_RANGE), cur_wid - 1); + min_hgt = MAX((p_ptr->y - MAX_RANGE), 0); + max_hgt = MIN((p_ptr->y + MAX_RANGE), cur_hgt - 1); + min_wid = MAX((p_ptr->x - MAX_RANGE), 0); + max_wid = MIN((p_ptr->x + MAX_RANGE), cur_wid - 1); } else /* not targetting */ { @@ -3084,7 +2904,7 @@ static void target_set_prepare(int mode) if (p_ptr->riding && target_pet && (temp_n > 1) && (mode & (TARGET_KILL))) { - byte tmp; + POSITION tmp; tmp = temp_y[0]; temp_y[0] = temp_y[1]; @@ -3094,7 +2914,8 @@ static void target_set_prepare(int mode) temp_x[1] = tmp; } } -void target_set_prepare_look(){ + +void target_set_prepare_look(void){ target_set_prepare(TARGET_LOOK); } @@ -3465,7 +3286,8 @@ static int target_set_aux(int y, int x, int mode, cptr info) /* Continue scrolling list if requested */ while (1) { - int i, o_idx; + int i; + IDX o_idx; /* Save screen */ screen_save(); @@ -3602,7 +3424,7 @@ static int target_set_aux(int y, int x, int mode, cptr info) if (have_flag(f_ptr->flags, FF_QUEST_ENTER)) { /* Set the quest number temporary */ - int old_quest = p_ptr->inside_quest; + IDX old_quest = p_ptr->inside_quest; int j; /* Clear the text */ @@ -3761,8 +3583,8 @@ static int target_set_aux(int y, int x, int mode, cptr info) bool target_set(int mode) { int i, d, m, t, bd; - int y = py; - int x = px; + POSITION y = p_ptr->y; + POSITION x = p_ptr->x; bool done = FALSE; @@ -3772,6 +3594,8 @@ bool target_set(int mode) char info[80]; + char same_key; + cave_type *c_ptr; int wid, hgt; @@ -3786,6 +3610,14 @@ bool target_set(int mode) /* Cancel tracking */ /* health_track(0); */ + if (rogue_like_commands) + { + same_key = 'x'; + } + else + { + same_key = 'l'; + } /* Prepare the "temp" array */ target_set_prepare(mode); @@ -3911,8 +3743,8 @@ bool target_set(int mode) /* Recalculate interesting grids */ target_set_prepare(mode); - y = py; - x = px; + y = p_ptr->y; + x = p_ptr->x; } case 'o': @@ -3928,14 +3760,24 @@ bool target_set(int mode) default: { - /* Extract the action (if any) */ - d = get_keymap_dir(query); + if(query == same_key) + { + if (++m == temp_n) + { + m = 0; + if (!expand_list) done = TRUE; + } + } + else + { + /* Extract the action (if any) */ + d = get_keymap_dir(query); - if (!d) bell(); - break; + if (!d) bell(); + break; + } } } - /* Hack -- move around */ if (d) { @@ -4106,8 +3948,8 @@ bool target_set(int mode) /* Recalculate interesting grids */ target_set_prepare(mode); - y = py; - x = px; + y = p_ptr->y; + x = p_ptr->x; } case 'o': @@ -4249,12 +4091,10 @@ bool target_set(int mode) * * Note that confusion over-rides any (explicit?) user choice. */ -bool get_aim_dir(int *dp) +bool get_aim_dir(DIRECTION *dp) { - int dir; - + DIRECTION dir; char command; - cptr p; /* Initialize */ @@ -4619,7 +4459,8 @@ void gain_level_reward(int chosen_reward) object_type forge; char wrath_reason[32] = ""; int nasty_chance = 6; - int dummy = 0, dummy2 = 0; + OBJECT_TYPE_VALUE dummy = 0; + OBJECT_SUBTYPE_VALUE dummy2 = 0; int type, effect; cptr reward = NULL; char o_name[MAX_NLEN]; @@ -4746,7 +4587,7 @@ msg_format("%sの声がささやいた:", msg_print(_("「我が与えし物を賢明に使うべし。」", "'Use my gift wisely.'")); - acquirement(py, px, 1, FALSE, FALSE, FALSE); + acquirement(p_ptr->y, p_ptr->x, 1, FALSE, FALSE, FALSE); reward = _("上質なアイテムを手に入れた。", "a good item"); break; case REW_GREA_OBJ: @@ -4760,7 +4601,7 @@ msg_format("%sの声が響き渡った:", msg_print(_("「我が与えし物を賢明に使うべし。」", "'Use my gift wisely.'")); - acquirement(py, px, 1, TRUE, FALSE, FALSE); + acquirement(p_ptr->y, p_ptr->x, 1, TRUE, FALSE, FALSE); reward = _("高級品のアイテムを手に入れた。", "an excellent item"); break; case REW_CHAOS_WP: @@ -4871,7 +4712,7 @@ msg_format("%sの声が響き渡った:", q_ptr->name2 = EGO_CHAOTIC; /* Drop it in the dungeon */ - (void)drop_near(q_ptr, -1, py, px); + (void)drop_near(q_ptr, -1, p_ptr->y, p_ptr->x); reward = _("(混沌)の武器を手に入れた。", "chaos weapon"); break; case REW_GOOD_OBS: @@ -4885,7 +4726,7 @@ msg_format("%sの声が響き渡った:", msg_print(_("「汝の行いは貴き報いに値せり。」", "'Thy deed hath earned thee a worthy reward.'")); - acquirement(py, px, randint1(2) + 1, FALSE, FALSE, FALSE); + acquirement(p_ptr->y, p_ptr->x, randint1(2) + 1, FALSE, FALSE, FALSE); reward = _("上質なアイテムを手に入れた。", "good items"); break; case REW_GREA_OBS: @@ -4899,7 +4740,7 @@ msg_format("%sの声が響き渡った:", msg_print(_("「下僕よ、汝の献身への我が惜しみ無き報いを見るがよい。」", "'Behold, mortal, how generously I reward thy loyalty.'")); - acquirement(py, px, randint1(2) + 1, TRUE, FALSE, FALSE); + acquirement(p_ptr->y, p_ptr->x, randint1(2) + 1, TRUE, FALSE, FALSE); reward = _("高級品のアイテムを手に入れた。", "excellent items"); break; case REW_TY_CURSE: @@ -4929,7 +4770,7 @@ msg_format("%sの声が響き渡った:", for (dummy = 0; dummy < randint1(5) + 1; dummy++) { - (void)summon_specific(0, py, px, dun_level, 0, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET)); + (void)summon_specific(0, p_ptr->y, p_ptr->x, dun_level, 0, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET)); } reward = _("モンスターを召喚された。", "summoning hostile monsters"); break; @@ -4944,7 +4785,7 @@ msg_format("%sの声が響き渡った:", msg_print(_("「汝、より強き敵を必要とせり!」", "'Thou needst worthier opponents!'")); - activate_hi_summon(py, px, FALSE); + activate_hi_summon(p_ptr->y, p_ptr->x, FALSE); reward = _("モンスターを召喚された。", "summoning many hostile monsters"); break; case REW_DO_HAVOC: @@ -5133,7 +4974,7 @@ msg_format("%sの声がささやいた:", reward = _("禍々しい呪いをかけられた。", "cursing"); break; case 2: - activate_hi_summon(py, px, FALSE); + activate_hi_summon(p_ptr->y, p_ptr->x, FALSE); reward = _("モンスターを召喚された。", "summoning hostile monsters"); break; case 3: @@ -5178,7 +5019,7 @@ msg_format("%sの声がささやいた:", { (void)dec_stat(dummy, 10 + randint1(15), FALSE); } - activate_hi_summon(py, px, FALSE); + activate_hi_summon(p_ptr->y, p_ptr->x, FALSE); (void)activate_ty_curse(FALSE, &count); if (one_in_(2)) { @@ -5206,7 +5047,7 @@ msg_format("%sの声が響き渡った:", msg_print(_("「死と破壊こそ我が喜びなり!」", "'Death and destruction! This pleaseth me!'")); - (void)destroy_area(py, px, 25, FALSE); + (void)destroy_area(p_ptr->y, p_ptr->x, 25, FALSE); reward = _("ダンジョンが*破壊*された。", "*destruct*ing dungeon"); break; case REW_GENOCIDE: @@ -5261,7 +5102,7 @@ msg_format("%sはあなたを無視した。", case REW_SER_DEMO: msg_format(_("%sは褒美として悪魔の使いをよこした!", "%s rewards you with a demonic servant!"),chaos_patrons[p_ptr->chaos_patron]); - if (!summon_specific(-1, py, px, dun_level, SUMMON_DEMON, PM_FORCE_PET)) + if (!summon_specific(-1, p_ptr->y, p_ptr->x, dun_level, SUMMON_DEMON, PM_FORCE_PET)) msg_print(_("何も現れなかった...", "Nobody ever turns up...")); else reward = _("悪魔がペットになった。", "a demonic servant"); @@ -5270,7 +5111,7 @@ msg_format("%sはあなたを無視した。", case REW_SER_MONS: msg_format(_("%sは褒美として使いをよこした!", "%s rewards you with a servant!"),chaos_patrons[p_ptr->chaos_patron]); - if (!summon_specific(-1, py, px, dun_level, 0, PM_FORCE_PET)) + if (!summon_specific(-1, p_ptr->y, p_ptr->x, dun_level, 0, PM_FORCE_PET)) msg_print(_("何も現れなかった...", "Nobody ever turns up...")); else reward = _("モンスターがペットになった。", "a servant"); @@ -5279,7 +5120,7 @@ msg_format("%sはあなたを無視した。", case REW_SER_UNDE: msg_format(_("%sは褒美としてアンデッドの使いをよこした。", "%s rewards you with an undead servant!"),chaos_patrons[p_ptr->chaos_patron]); - if (!summon_specific(-1, py, px, dun_level, SUMMON_UNDEAD, PM_FORCE_PET)) + if (!summon_specific(-1, p_ptr->y, p_ptr->x, dun_level, SUMMON_UNDEAD, PM_FORCE_PET)) msg_print(_("何も現れなかった...", "Nobody ever turns up...")); else reward = _("アンデッドがペットになった。", "an undead servant"); @@ -5304,7 +5145,7 @@ msg_format("%sはあなたを無視した。", * XAngband: determine if a given location is "interesting" * based on target_set_accept function. */ -static bool tgt_pt_accept(int y, int x) +static bool tgt_pt_accept(POSITION y, POSITION x) { cave_type *c_ptr; @@ -5312,7 +5153,7 @@ static bool tgt_pt_accept(int y, int x) if (!(in_bounds(y, x))) return (FALSE); /* Player grid is always interesting */ - if ((y == py) && (x == px)) return (TRUE); + if ((y == p_ptr->y) && (x == p_ptr->x)) return (TRUE); /* Handle hallucination */ if (p_ptr->image) return (FALSE); @@ -5343,7 +5184,7 @@ static bool tgt_pt_accept(int y, int x) */ static void tgt_pt_prepare(void) { - int y, x; + POSITION y, x; /* Reset "temp" array */ temp_n = 0; @@ -5376,10 +5217,11 @@ static void tgt_pt_prepare(void) /* * old -- from PsiAngband. */ -bool tgt_pt(int *x_ptr, int *y_ptr) +bool tgt_pt(POSITION *x_ptr, POSITION *y_ptr) { char ch = 0; - int d, x, y, n = 0; + int d, n = 0; + POSITION x, y; bool success = FALSE; int wid, hgt; @@ -5387,8 +5229,8 @@ bool tgt_pt(int *x_ptr, int *y_ptr) /* Get size */ get_screen_size(&wid, &hgt); - x = px; - y = py; + x = p_ptr->x; + y = p_ptr->y; if (expand_list) { @@ -5448,8 +5290,8 @@ bool tgt_pt(int *x_ptr, int *y_ptr) if (n == temp_n) /* Loop out taget list */ { n = 0; - y = py; - x = px; + y = p_ptr->y; + x = p_ptr->x; verify_panel(); /* Move cursor to player */ /* Update stuff */ @@ -5691,7 +5533,7 @@ s16b gain_energy(void) /* * Return bow energy */ -s16b bow_energy(int sval) +s16b bow_energy(OBJECT_SUBTYPE_VALUE sval) { int energy = 100; @@ -5748,7 +5590,7 @@ s16b bow_energy(int sval) /* * Return bow tmul */ -int bow_tmul(int sval) +int bow_tmul(OBJECT_SUBTYPE_VALUE sval) { int tmul = 0; @@ -5869,10 +5711,10 @@ int spell_exp_level(int spell_exp) * Display a rumor and apply its effects */ -int rumor_num(char *zz, int max_idx) +IDX rumor_num(char *zz, IDX max_idx) { if (strcmp(zz, "*") == 0) return randint1(max_idx - 1); - return atoi(zz); + return (IDX)atoi(zz); } cptr rumor_bind_name(char *base, cptr fullname) @@ -5921,7 +5763,7 @@ void display_rumor(bool ex) { if (strcmp(zz[0], "ARTIFACT") == 0) { - int a_idx, k_idx; + IDX a_idx, k_idx; object_type forge; object_type *q_ptr = &forge; artifact_type *a_ptr; @@ -5942,7 +5784,7 @@ void display_rumor(bool ex) } else if (strcmp(zz[0], "MONSTER") == 0) { - int r_idx; + MONRACE_IDX r_idx; monster_race *r_ptr; while(1) @@ -5982,7 +5824,7 @@ void display_rumor(bool ex) } else if (strcmp(zz[0], "TOWN") == 0) { - int t_idx; + IDX t_idx; s32b visit; while(1)