#include "angband.h"
#include "object-hook.h"
+#include "melee.h"
+
/*!
* ループ中で / hack as in leave_store in store.c
p_ptr->monster_race_idx = arena_info[p_ptr->arena_number].r_idx;
p_ptr->window |= (PW_MONSTER);
- window_stuff();
+ handle_stuff();
}
break;
/* Peruse the arena help file */
(void)show_file(TRUE, _("arena_j.txt", "arena.txt"), NULL, 0, 0);
-
- /* Load screen */
screen_load();
break;
cards[i] = deck[deck_ptr++];
kaeruka[i] = 0; /* default:nokosu */
}
-
-#if 0
- /* debug:RF */
- cards[0] = 12;
- cards[1] = 0;
- cards[2] = 9;
- cards[3] = 11;
- cards[4] = 10;
-#endif
-#if 0
- /* debug:SF */
- cards[0] = 3;
- cards[1] = 2;
- cards[2] = 4;
- cards[3] = 6;
- cards[4] = 5;
-#endif
-#if 0
- /* debug:Four Cards */
- cards[0] = 0;
- cards[1] = 0 + 13 * 1;
- cards[2] = 0 + 13 * 2;
- cards[3] = 0 + 13 * 3;
- cards[4] = 51;
-#endif
-#if 0
- /* debug:Straight1 */
- cards[0] = 1;
- cards[1] = 0 + 13;
- cards[2] = 3;
- cards[3] = 2 + 26;
- cards[4] = 4;
-#endif
-#if 0
- /* debug:Straight2 */
- cards[0] = 12;
- cards[1] = 0;
- cards[2] = 9;
- cards[3] = 11 + 13 * 2;
- cards[4] = 10;
-#endif
-#if 0
- /* debug:Straight3 */
- cards[0] = 52;
- cards[1] = 0;
- cards[2] = 9;
- cards[3] = 11 + 13 * 2;
- cards[4] = 10;
-#endif
-#if 0
- /* debug:Straight4 */
- cards[0] = 12;
- cards[1] = 52;
- cards[2] = 9;
- cards[3] = 11 + 13 * 2;
- cards[4] = 10;
-#endif
-#if 0
- /* debug:Straight5 */
- cards[0] = 4;
- cards[1] = 5 + 13;
- cards[2] = 6;
- cards[3] = 7 + 26;
- cards[4] = 3;
-#endif
-#if 0
- /* debug:Five Card1 */
- cards[0] = 4;
- cards[1] = 52;
- cards[2] = 4 + 13;
- cards[3] = 4 + 26;
- cards[4] = 4 + 39;
-#endif
-#if 0
- /* debug:Five Card2 */
- cards[1] = 52;
- cards[0] = 4;
- cards[2] = 4 + 13;
- cards[3] = 4 + 26;
- cards[4] = 4 + 39;
-#endif
-#if 0
- /* debug */
- cards[0] = 52;
- cards[1] = 0;
- cards[2] = 1;
- cards[3] = 2;
- cards[4] = 3;
-#endif
/* suteruno wo kimeru */
prt(_("残すカードを決めて下さい(方向で移動, スペースで選択)。", "Stay witch? "), 0, 0);
INVENTORY_IDX i;
int j;
bool change = FALSE;
- char o_name[MAX_NLEN];
+ GAME_TEXT o_name[MAX_NLEN];
object_type *o_ptr;
/* Loop for inventory and right/left arm */
/* Auto-inscription */
autopick_alter_item(item_new, FALSE);
-
- /* Handle stuff */
handle_stuff();
change = TRUE;
/* Peruse the building help file */
(void)show_file(TRUE, _("jbldg.txt", "bldg.txt"), NULL, 0, 0);
-
- /* Load screen */
screen_load();
}
}
/*!
- * @brief モンスターへの命中率の計算
- * @param to_h 命中値
- * @param ac 敵AC
- * @return 命中確率
- */
-static PERCENTAGE hit_chance(HIT_PROB to_h, ARMOUR_CLASS ac)
-{
- PERCENTAGE chance = 0;
- int meichuu = p_ptr->skill_thn + (p_ptr->to_h[0] + to_h) * BTH_PLUS_ADJ;
-
- if (meichuu <= 0) return 5;
-
- chance = 100 - ((ac * 75) / meichuu);
-
- if (chance > 95) chance = 95;
- if (chance < 5) chance = 5;
- if (p_ptr->pseikaku == SEIKAKU_NAMAKE)
- chance = (chance * 19 + 9) / 20;
- return chance;
-}
-
-/*!
* @brief 武器匠における武器一つ毎の完全情報を表示する。
* @param o_ptr オブジェクトの構造体の参照ポインタ。
* @param row 表示する列の左端
*/
static void list_weapon(object_type *o_ptr, TERM_LEN row, TERM_LEN col)
{
- char o_name[MAX_NLEN];
+ GAME_TEXT o_name[MAX_NLEN];
char tmp_str[80];
- /* Effective dices */
DICE_NUMBER eff_dd = o_ptr->dd + p_ptr->to_dd[0];
DICE_SID eff_ds = o_ptr->ds + p_ptr->to_ds[0];
+ HIT_RELIABILITY reli = p_ptr->skill_thn + (p_ptr->to_h[0] + o_ptr->to_h) * BTH_PLUS_ADJ;
/* Print the weapon name */
object_desc(o_name, o_ptr, OD_NAME_ONLY);
/* Print the weapons base damage dice */
sprintf(tmp_str, " %2d %2d %2d %2d %2d (%%)",
- hit_chance(o_ptr->to_h, 0), hit_chance(o_ptr->to_h, 50), hit_chance(o_ptr->to_h, 100),
- hit_chance(o_ptr->to_h, 150), hit_chance(o_ptr->to_h, 200));
+ hit_chance(reli, 0),
+ hit_chance(reli, 50),
+ hit_chance(reli, 100),
+ hit_chance(reli, 150),
+ hit_chance(reli, 200));
put_str(tmp_str, row+3, col);
c_put_str(TERM_YELLOW, _("可能なダメージ:", "Possible Damage:"), row+5, col);
PRICE total = 0;
PRICE cost = 0; /* First time no price */
- /* Save the screen */
screen_save();
-
- /* Clear the screen */
clear_bldg(0, 22);
/* Store copy of original wielded weapon */
i_ptr = &inventory[INVEN_RARM];
object_copy(&orig_weapon, i_ptr);
- /* Only compare melee weapons */
- item_tester_no_ryoute = TRUE;
item_tester_hook = item_tester_hook_orthodox_melee_weapons;
/* Get the first weapon */
q = _("第一の武器は?", "What is your first weapon? ");
s = _("比べるものがありません。", "You have nothing to compare.");
- if (!get_item(&item, q, s, (USE_EQUIP | USE_INVEN)))
+ o_ptr[0] = choose_object(&item, q, s, (USE_EQUIP | USE_INVEN | IGNORE_BOTHHAND_SLOT));
+ if (!o_ptr)
{
screen_load();
return (0);
}
- /* Get the item (in the pack) */
- o_ptr[0] = &inventory[item];
n = 1;
total = bcost;
while (TRUE)
{
- /* Clear the screen */
clear_bldg(0, 22);
/* Only compare melee weapons */
- item_tester_no_ryoute = TRUE;
item_tester_hook = item_tester_hook_orthodox_melee_weapons;
/* Hack -- prevent "icky" message */
/* Copy i-th weapon into the weapon slot (if it's not already there) */
if (o_ptr[i] != i_ptr) object_copy(i_ptr, o_ptr[i]);
- /* Get the new values */
- calc_bonuses();
+ p_ptr->update |= PU_BONUS;
+ handle_stuff();
/* List the new values */
list_weapon(o_ptr[i], row, col);
}
/* Reset the values for the old weapon */
- calc_bonuses();
+ p_ptr->update |= PU_BONUS;
+ handle_stuff();
character_xtra = old_character_xtra;
s = _("比べるものがありません。", "You have nothing to compare.");
/* Get the second weapon */
- if (!get_item(&item2, q, s, (USE_EQUIP | USE_INVEN))) continue;
+ o_ptr[1] = choose_object(&item2, q, s, (USE_EQUIP | USE_INVEN | IGNORE_BOTHHAND_SLOT));
+ if (!o_ptr) continue;
total += cost;
cost = bcost / 2;
-
- /* Get the item (in the pack) */
- o_ptr[1] = &inventory[item2];
n = 2;
}
else
break;
}
}
-
- /* Restore the screen */
screen_load();
return (total);
int i, dd_bonus, ds_bonus;
KIND_OBJECT_IDX k_idx;
char basenm[MAX_NLEN];
- cptr q, s; /* For get_item prompt */
+ cptr q, s;
int row = 7;
-
- /* Clear screen */
clear_bldg(0, 22);
prt(_("修復には材料となるもう1つの武器が必要です。", "Hand one material weapon to repair a broken weapon."), row, 2);
/* Only forge broken weapons */
item_tester_hook = item_tester_hook_broken_weapon;
- if (!get_item(&item, q, s, (USE_INVEN | USE_EQUIP))) return (0);
-
- /* Get the item (in the pack) */
- o_ptr = &inventory[item];
+ o_ptr = choose_object(&item, q, s, (USE_INVEN | USE_EQUIP));
+ if (!o_ptr) return (0);
/* It is worthless */
if (!object_is_ego(o_ptr) && !object_is_artifact(o_ptr))
/* Only forge broken weapons */
item_tester_hook = item_tester_hook_orthodox_melee_weapons;
- if (!get_item(&mater, q, s, (USE_INVEN | USE_EQUIP))) return (0);
+ mo_ptr = choose_object(&mater, q, s, (USE_INVEN | USE_EQUIP));
+ if (!mo_ptr) return (0);
if (mater == item)
{
msg_print(_("クラインの壷じゃない!", "This is not a klein bottle!"));
return (0);
}
- /* Get the item (in the pack) */
- mo_ptr = &inventory[mater];
-
/* Display item name */
object_desc(basenm, mo_ptr, OD_NAME_ONLY);
prt(format(_("材料とする武器: %s", "Material : %s"), basenm), row+4, 2);
return (0);
}
+ p_ptr->total_weight -= o_ptr->weight;
+
if (o_ptr->sval == SV_BROKEN_DAGGER)
{
- IDX j;
+ KIND_OBJECT_IDX j;
int n = 1;
/* Suppress compiler warning */
}
}
- /* */
if (have_flag(k_ptr->flags, TR_BLOWS))
{
int bmax = MIN(3, MAX(1, 40 / (o_ptr->dd * o_ptr->ds)));
/* Add repaired flag */
o_ptr->discount = 99;
+ p_ptr->total_weight += o_ptr->weight;
+ calc_android_exp();
+
/* Decrease material object */
inven_item_increase(mater, -1);
inven_item_optimize(mater);
*/
static bool enchant_item(PRICE cost, HIT_PROB to_hit, HIT_POINT to_dam, ARMOUR_CLASS to_ac)
{
- int i;
- OBJECT_IDX item;
- bool okay = FALSE;
+ int i;
+ OBJECT_IDX item;
+ bool okay = FALSE;
object_type *o_ptr;
- cptr q, s;
- int maxenchant = (p_ptr->lev / 5);
- char tmp_str[MAX_NLEN];
+ cptr q, s;
+ int maxenchant = (p_ptr->lev / 5);
+ char tmp_str[MAX_NLEN];
clear_bldg(4, 18);
-#ifdef JP
- prt(format("現在のあなたの技量だと、+%d まで改良できます。", maxenchant), 5, 0);
- prt(format(" 改良の料金は一個につき$%d です。", cost), 7, 0);
-#else
- prt(format(" Based on your skill, we can improve up to +%d.", maxenchant), 5, 0);
- prt(format(" The price for the service is %d gold per item.", cost), 7, 0);
-#endif
-
- item_tester_no_ryoute = TRUE;
+ prt(format(_("現在のあなたの技量だと、+%d まで改良できます。", " Based on your skill, we can improve up to +%d."), maxenchant), 5, 0);
+ prt(format(_(" 改良の料金は一個につき$%d です。", " The price for the service is %d gold per item."), cost), 7, 0);
q = _("どのアイテムを改良しますか?", "Improve which item? ");
s = _("改良できるものがありません。", "You have nothing to improve.");
- if (!get_item(&item, q, s, (USE_INVEN | USE_EQUIP))) return (FALSE);
-
- /* Get the item (in the pack) */
- o_ptr = &inventory[item];
+ o_ptr = choose_object(&item, q, s, (USE_INVEN | USE_EQUIP | IGNORE_BOTHHAND_SLOT));
+ if (!o_ptr) return (FALSE);
/* Check if the player has enough money */
if (p_ptr->au < (cost * o_ptr->number))
q = _("どのアイテムに魔力を充填しますか? ", "Recharge which item? ");
s = _("魔力を充填すべきアイテムがない。", "You have nothing to recharge.");
- if (!get_item(&item, q, s, (USE_INVEN | USE_FLOOR))) return;
-
- /* Get the item (in the pack) */
- if (item >= 0)
- {
- o_ptr = &inventory[item];
- }
- /* Get the item (on the floor) */
- else
- {
- o_ptr = &o_list[0 - item];
- }
+ o_ptr = choose_object(&item, q, s, (USE_INVEN | USE_FLOOR));
+ if (!o_ptr) return;
k_ptr = &k_info[o_ptr->k_idx];
static int old_sym = '\0';
static IDX old_i = 0;
-
- /* Save the screen */
screen_save();
/* Get a character, or abort */
/* Save this monster ID */
monster_race_track(r_idx);
-
- /* Hack -- Handle stuff */
handle_stuff();
/* know every thing mode */
bool paid = FALSE;
int amt;
- /* Flush messages */
msg_flag = FALSE;
- msg_print(NULL);
+ msg_erase();
if (is_owner(bldg))
bcost = bldg->member_costs[i];
}
}
- if (validcmd)
- bldg_process_command(bldg, i);
-
- /* Notice stuff */
- notice_stuff();
+ if(validcmd) bldg_process_command(bldg, i);
- /* Handle stuff */
handle_stuff();
}
select_floor_music();
- /* Flush messages */
msg_flag = FALSE;
- msg_print(NULL);
+ msg_erase();
/* Reinit wilderness to activate quests ... */
if (reinit_wilderness)
/* Hack -- Decrease "icky" depth */
character_icky--;
- /* Clear the screen */
Term_clear();
- /* Update the visuals */
p_ptr->update |= (PU_VIEW | PU_MONSTERS | PU_BONUS | PU_LITE | PU_MON_LITE);
-
- /* Redraw entire screen */
p_ptr->redraw |= (PR_BASIC | PR_EXTRA | PR_EQUIPPY | PR_MAP);
-
p_ptr->window |= (PW_OVERHEAD | PW_DUNGEON);
}
*/
void quest_discovery(QUEST_IDX q_idx)
{
- quest_type *q_ptr = &quest[q_idx];
- monster_race *r_ptr = &r_info[q_ptr->r_idx];
- int q_num = q_ptr->max_num;
- char name[80];
+ quest_type *q_ptr = &quest[q_idx];
+ monster_race *r_ptr = &r_info[q_ptr->r_idx];
+ MONSTER_NUMBER q_num = q_ptr->max_num;
+ GAME_TEXT name[MAX_NLEN];
/* No quest index */
if (!q_idx) return;