X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=src%2Fxtra2.c;h=1f54bd4efac5872986bdab1074473a45e94904e6;hb=1c750bbc037ebf3dfd1f1ff6f3f511530070c241;hp=6dd5d9110b56dc63b080d94fa790c549ae8edf13;hpb=3812165157b73ca44483dc9fc16c06db5f4a4420;p=hengband%2Fhengband.git diff --git a/src/xtra2.c b/src/xtra2.c index 6dd5d9110..1f54bd4ef 100644 --- a/src/xtra2.c +++ b/src/xtra2.c @@ -27,7 +27,7 @@ void check_experience(void) bool level_mutation = FALSE; bool level_inc_stat = FALSE; bool android = (p_ptr->prace == RACE_ANDROID ? TRUE : FALSE); - int old_lev = p_ptr->lev; + PLAYER_LEVEL old_lev = p_ptr->lev; /* Hack -- lower limit */ if (p_ptr->exp < 0) p_ptr->exp = 0; @@ -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; @@ -791,11 +792,11 @@ void monster_death(int m_idx, bool drop_item) { if (r_ptr->blow[i].method == RBM_EXPLODE) { - int flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL; + BIT_FLAGS 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; @@ -923,7 +924,7 @@ void monster_death(int m_idx, bool drop_item) { int wy = y, wx = x; bool pet = is_pet(m_ptr); - u32b mode = 0L; + BIT_FLAGS mode = 0L; if (pet) mode |= PM_FORCE_PET; @@ -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); @@ -1000,7 +1001,7 @@ void monster_death(int m_idx, bool drop_item) if (attempts > 0) { - u32b mode = 0L; + BIT_FLAGS mode = 0L; if (pet) mode |= PM_FORCE_PET; if (summon_specific((pet ? -1 : m_idx), wy, wx, 100, SUMMON_DAWN, mode)) @@ -1016,7 +1017,7 @@ void monster_death(int m_idx, bool drop_item) case MON_UNMAKER: /* One more ultra-hack: An Unmaker goes out with a big bang! */ { - int flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL; + BIT_FLAGS flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL; (void)project(m_idx, 6, y, x, 100, GF_CHAOS, flg, -1); } break; @@ -1131,7 +1132,7 @@ void monster_death(int m_idx, bool drop_item) case MON_ROLENTO: { - int flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL; + BIT_FLAGS flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL; (void)project(m_idx, 3, y, x, damroll(20, 10), GF_FIRE, flg, -1); } break; @@ -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++) @@ -2120,7 +1940,7 @@ msg_format("%sãè¬ãå»ã£ãã", m_name); { int dummy_y = m_ptr->fy; int dummy_x = m_ptr->fx; - u32b mode = 0L; + BIT_FLAGS mode = 0L; if (is_pet(m_ptr)) mode |= PM_FORCE_PET; @@ -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; @@ -2518,7 +2338,7 @@ void verify_panel(void) /* * Monster health description */ -cptr look_mon_desc(monster_type *m_ptr, u32b mode) +cptr look_mon_desc(monster_type *m_ptr, BIT_FLAGS mode) { monster_race *ap_r_ptr = &r_info[m_ptr->ap_r_idx]; bool living; @@ -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); */ @@ -2778,21 +2598,21 @@ bool target_okay(void) */ static bool ang_sort_comp_distance(vptr u, vptr v, int a, int b) { - byte *x = (byte*)(u); - byte *y = (byte*)(v); + POSITION *x = (POSITION*)(u); + POSITION *y = (POSITION*)(v); - int da, db, kx, ky; + POSITION 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)); @@ -2810,8 +2630,8 @@ static bool ang_sort_comp_distance(vptr u, vptr v, int a, int b) */ static bool ang_sort_comp_importance(vptr u, vptr v, int a, int b) { - byte *x = (byte*)(u); - byte *y = (byte*)(v); + POSITION *x = (POSITION*)(u); + POSITION *y = (POSITION*)(v); cave_type *ca_ptr = &cave[y[a]][x[a]]; cave_type *cb_ptr = &cave[y[b]][x[b]]; monster_type *ma_ptr = &m_list[ca_ptr->m_idx]; @@ -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]; @@ -2879,10 +2699,10 @@ static bool ang_sort_comp_importance(vptr u, vptr v, int a, int b) */ static void ang_sort_swap_distance(vptr u, vptr v, int a, int b) { - byte *x = (byte*)(u); - byte *y = (byte*)(v); + POSITION *x = (POSITION*)(u); + POSITION *y = (POSITION*)(v); - byte temp; + POSITION temp; /* Swap "x" */ temp = x[a]; @@ -2900,13 +2720,11 @@ 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 POSITION_IDX target_pick(POSITION y1, POSITION x1, POSITION dy, POSITION dx) { - int i, v; - - int x2, y2, x3, y3, x4, y4; - - int b_i = -1, b_v = 9999; + POSITION_IDX i, v; + POSITION x2, y2, x3, y3, x4, y4; + POSITION_IDX b_i = -1, b_v = 9999; /* Scan the locations */ @@ -3016,7 +2834,7 @@ static bool target_set_accept(int y, int x) * * Return the number of target_able monsters in the set. */ -static void target_set_prepare(int mode) +static void target_set_prepare(BIT_FLAGS mode) { int y, x; int min_hgt, max_hgt, min_wid, max_wid; @@ -3024,10 +2842,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 +2902,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 +2912,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); } @@ -3177,7 +2996,7 @@ bool show_gold_on_floor = FALSE; * * This function must handle blindness/hallucination. */ -static int target_set_aux(int y, int x, int mode, cptr info) +static char target_set_aux(POSITION y, POSITION x, BIT_FLAGS mode, cptr info) { cave_type *c_ptr = &cave[y][x]; s16b this_o_idx, next_o_idx = 0; @@ -3185,11 +3004,12 @@ static int target_set_aux(int y, int x, int mode, cptr info) bool boring = TRUE; s16b feat; feature_type *f_ptr; - int query = '\001'; + char query = '\001'; char out_val[MAX_NLEN+80]; #ifdef ALLOW_EASY_FLOOR - int floor_list[23], floor_num = 0; + OBJECT_IDX floor_list[23]; + ITEM_NUMBER floor_num = 0; /* Scan all objects in the grid */ if (easy_floor) @@ -3443,10 +3263,10 @@ static int target_set_aux(int y, int x, int mode, cptr info) /* Display rough information about items */ #ifdef JP sprintf(out_val, "%s %dåã®ã¢ã¤ãã %s%s ['x'ã§ä¸è¦§, %s]", - s1, floor_num, s2, s3, info); + s1, (int)floor_num, s2, s3, info); #else sprintf(out_val, "%s%s%sa pile of %d items [x,%s]", - s1, s2, s3, floor_num, info); + s1, s2, s3, (int)floor_num, info); #endif prt(out_val, 0, 0); @@ -3465,7 +3285,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(); @@ -3478,10 +3299,10 @@ static int target_set_aux(int y, int x, int mode, cptr info) /* Prompt */ #ifdef JP sprintf(out_val, "%s %dåã®ã¢ã¤ãã %s%s [Enterã§æ¬¡ã¸, %s]", - s1, floor_num, s2, s3, info); + s1, (int)floor_num, s2, s3, info); #else sprintf(out_val, "%s%s%sa pile of %d items [Enter,%s]", - s1, s2, s3, floor_num, info); + s1, s2, s3, (int)floor_num, info); #endif prt(out_val, 0, 0); @@ -3602,7 +3423,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 */ @@ -3758,19 +3579,17 @@ static int target_set_aux(int y, int x, int mode, cptr info) * This command will cancel any old target, even if used from * inside the "look" command. */ -bool target_set(int mode) +bool target_set(BIT_FLAGS 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; - bool flag = TRUE; - char query; - char info[80]; + char same_key; cave_type *c_ptr; @@ -3786,6 +3605,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 +3738,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 +3755,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) { @@ -4051,7 +3888,7 @@ bool target_set(int mode) strcpy(info, _("qæ¢ t決 pèª mè¿ +次 -å", "q,t,p,m,+,-,