From: mogami Date: Thu, 17 Jan 2002 04:29:52 +0000 (+0000) Subject: 鑑定する物がないとき、キャンセル扱いせずに全てのアイテムを選択可能にする。 X-Git-Tag: v2.1.2~2786 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=6123372d8408e7aace852ffdeb73be5ed0927bdb;p=hengbandforosx%2Fhengbandosx.git 鑑定する物がないとき、キャンセル扱いせずに全てのアイテムを選択可能にする。 --- diff --git a/src/externs.h b/src/externs.h index 9f2f76c8f..d6b08068d 100644 --- a/src/externs.h +++ b/src/externs.h @@ -888,6 +888,7 @@ extern void display_equip(void); extern int show_inven(int target_item); extern int show_equip(int target_item); extern void toggle_inven_equip(void); +extern bool can_get_item(void); extern bool get_item(int *cp, cptr pmt, cptr str, int mode); extern void excise_object_idx(int o_idx); extern void delete_object_idx(int o_idx); diff --git a/src/object1.c b/src/object1.c index f23fd87e2..a1f0e3cd6 100644 --- a/src/object1.c +++ b/src/object1.c @@ -4950,7 +4950,24 @@ static int get_tag(int *cp, char tag) return (FALSE); } +/* + * Determine whether get_item() can get some item or not + * assuming mode = (USE_EQUIP | USE_INVEN | USE_FLOOR). + */ +bool can_get_item(void) +{ + int j, floor_list[23], floor_num = 0; + for (j = 0; j < INVEN_TOTAL; j++) + if (item_tester_okay(&inventory[j])) + return TRUE; + + (void)scan_floor(floor_list, &floor_num, py, px, 0x01); + if (floor_num) + return TRUE; + + return FALSE; +} /* * Let the user select an item, save its "index" diff --git a/src/spells3.c b/src/spells3.c index b24ee9ab6..d3e716bf7 100644 --- a/src/spells3.c +++ b/src/spells3.c @@ -2606,6 +2606,18 @@ bool ident_spell(bool only_equip) else item_tester_hook = item_tester_hook_identify; + if (!can_get_item()) + { + if (only_equip) + { + item_tester_hook = item_tester_hook_weapon_armour; + } + else + { + item_tester_hook = NULL; + } + } + /* Get an item */ #ifdef JP q = "¤É¤Î¥¢¥¤¥Æ¥à¤ò´ÕÄꤷ¤Þ¤¹¤«? "; @@ -2768,6 +2780,14 @@ bool identify_fully(bool only_equip) else item_tester_hook = item_tester_hook_identify_fully; + if (!can_get_item()) + { + if (only_equip) + item_tester_hook = item_tester_hook_weapon_armour; + else + item_tester_hook = NULL; + } + /* Get an item */ #ifdef JP q = "¤É¤Î¥¢¥¤¥Æ¥à¤ò´ÕÄꤷ¤Þ¤¹¤«? ";