/*!
* @brief 賞金首の引き換え処理 / Get prize
+ * @param player_ptr プレーヤーへの参照ポインタ
* @return 各種賞金首のいずれかでも換金が行われたか否か。
*/
static bool kankin(player_type *player_ptr)
msg_format(_("賞金 %ld$を手に入れた。", "You get %ldgp."), (long int)(1000000L * o_ptr->number));
player_ptr->au += 1000000L * o_ptr->number;
player_ptr->redraw |= (PR_GOLD);
- vary_item(i, -o_ptr->number);
+ vary_item(player_ptr, i, -o_ptr->number);
}
change = TRUE;
}
msg_format(_("賞金 %ld$を手に入れた。", "You get %ldgp."), (long int)(200000L * o_ptr->number));
player_ptr->au += 200000L * o_ptr->number;
player_ptr->redraw |= (PR_GOLD);
- vary_item(i, -o_ptr->number);
+ vary_item(player_ptr, i, -o_ptr->number);
}
change = TRUE;
}
msg_format(_("賞金 %ld$を手に入れた。", "You get %ldgp."), (long int)(100000L * o_ptr->number));
player_ptr->au += 100000L * o_ptr->number;
player_ptr->redraw |= (PR_GOLD);
- vary_item(i, -o_ptr->number);
+ vary_item(player_ptr, i, -o_ptr->number);
}
change = TRUE;
}
msg_format(_("賞金 %ld$を手に入れた。", "You get %ldgp."), (long int)((r_info[today_mon].level * 50 + 100) * o_ptr->number));
player_ptr->au += (r_info[today_mon].level * 50 + 100) * o_ptr->number;
player_ptr->redraw |= (PR_GOLD);
- vary_item(i, -o_ptr->number);
+ vary_item(player_ptr, i, -o_ptr->number);
}
change = TRUE;
}
msg_format(_("賞金 %ld$を手に入れた。", "You get %ldgp."), (long int)((r_info[today_mon].level * 30 + 60) * o_ptr->number));
player_ptr->au += (r_info[today_mon].level * 30 + 60) * o_ptr->number;
player_ptr->redraw |= (PR_GOLD);
- vary_item(i, -o_ptr->number);
+ vary_item(player_ptr, i, -o_ptr->number);
}
change = TRUE;
}
#endif /* Obsoleted */
/* Hand it first */
- vary_item(i, -o_ptr->number);
+ vary_item(player_ptr, i, -o_ptr->number);
chg_virtue(player_ptr, V_JUSTICE, 5);
current_world_ptr->bounty_r_idx[j] += 10000;
msg_format(_("%sにくさびを打ち込んだ。", "You jam the %s with a spike."), f_name + f_info[feat].name);
cave_alter_feat(creature_ptr, y, x, FF_SPIKE);
- vary_item(item, -1);
+ vary_item(creature_ptr, item, -1);
}
}
-
/*!
* @brief 「歩く」動作コマンドのメインルーチン /
* Support code for the "Walk" and "Jump" commands
{
inven_item_increase(item, -1);
if (!return_when_thrown)
- inven_item_describe(item);
+ inven_item_describe(creature_ptr, item);
inven_item_optimize(item);
}
else
floor_item_increase(0 - item, -1);
floor_item_optimize(0 - item);
}
+
if (item >= INVEN_RARM)
{
equiped_item = TRUE;
(void)set_food(creature_ptr, creature_ptr->food + o_ptr->pval);
}
- vary_item(item, -1);
+ vary_item(creature_ptr, item, -1);
}
/* Reduce the charges of rods/wands */
reduce_charges(o_ptr, amt);
- vary_item(item, -amt);
+ vary_item(creature_ptr, item, -amt);
if (item_tester_high_level_book(q_ptr))
{
msg_print(_("ランプの油は一杯だ。", "Your lamp is full."));
}
- vary_item(item, -1);
+ vary_item(user_ptr, item, -1);
user_ptr->update |= (PU_TORCH);
}
msg_print(_("松明はいっそう明るく輝いた。", "Your torch glows more brightly."));
}
- vary_item(item, -1);
+ vary_item(creature_ptr, item, -1);
creature_ptr->update |= (PU_TORCH);
}
/* Single object */
q_ptr->number = 1;
- vary_item(item, -1);
+ vary_item(creature_ptr, item, -1);
sound(SOUND_QUAFF);
}
sound(SOUND_SCROLL);
- vary_item(item, -1);
+ vary_item(creature_ptr, item, -1);
}
+
/*!
* @brief 読むコマンドのメインルーチン /
* Eat some food (from the pack or floor)
/* Single object */
q_ptr->number = 1;
- vary_item(item, -1);
+ vary_item(shooter_ptr, item, -1);
sound(SOUND_SHOOT);
handle_stuff();
*/
static void pack_overflow(player_type *owner_ptr)
{
- if (owner_ptr->inventory_list[INVEN_PACK].k_idx)
- {
- GAME_TEXT o_name[MAX_NLEN];
- object_type *o_ptr;
+ if (owner_ptr->inventory_list[INVEN_PACK].k_idx == 0) return;
+
+ GAME_TEXT o_name[MAX_NLEN];
+ object_type *o_ptr;
- /* Is auto-destroy done? */
- update_creature(owner_ptr);
- if (!owner_ptr->inventory_list[INVEN_PACK].k_idx) return;
+ /* Is auto-destroy done? */
+ update_creature(owner_ptr);
+ if (!owner_ptr->inventory_list[INVEN_PACK].k_idx) return;
- /* Access the slot to be dropped */
- o_ptr = &owner_ptr->inventory_list[INVEN_PACK];
+ /* Access the slot to be dropped */
+ o_ptr = &owner_ptr->inventory_list[INVEN_PACK];
- disturb(owner_ptr, FALSE, TRUE);
+ disturb(owner_ptr, FALSE, TRUE);
- /* Warning */
- msg_print(_("ザックからアイテムがあふれた!", "Your pack overflows!"));
- object_desc(o_name, o_ptr, 0);
+ /* Warning */
+ msg_print(_("ザックからアイテムがあふれた!", "Your pack overflows!"));
+ object_desc(o_name, o_ptr, 0);
- msg_format(_("%s(%c)を落とした。", "You drop %s (%c)."), o_name, index_to_label(INVEN_PACK));
+ msg_format(_("%s(%c)を落とした。", "You drop %s (%c)."), o_name, index_to_label(INVEN_PACK));
- /* Drop it (carefully) near the player */
- (void)drop_near(owner_ptr, o_ptr, 0, owner_ptr->y, owner_ptr->x);
+ /* Drop it (carefully) near the player */
+ (void)drop_near(owner_ptr, o_ptr, 0, owner_ptr->y, owner_ptr->x);
- vary_item(INVEN_PACK, -255);
- handle_stuff();
- }
+ vary_item(owner_ptr, INVEN_PACK, -255);
+ handle_stuff();
}
/*!
extern bool make_object(player_type *owner_ptr, object_type *j_ptr, BIT_FLAGS mode);
extern bool make_gold(floor_type *floor_ptr, object_type *j_ptr);
extern OBJECT_IDX drop_near(player_type *owner_type, object_type *o_ptr, PERCENTAGE chance, POSITION y, POSITION x);
-extern void vary_item(INVENTORY_IDX item, ITEM_NUMBER num);
+extern void vary_item(player_type *owner_ptr, INVENTORY_IDX item, ITEM_NUMBER num);
extern void inven_item_charges(player_type *owner_ptr, INVENTORY_IDX item);
-extern void inven_item_describe(INVENTORY_IDX item);
+extern void inven_item_describe(player_type *owner_ptr, INVENTORY_IDX item);
extern void inven_item_increase(INVENTORY_IDX item, ITEM_NUMBER num);
extern void inven_item_optimize(INVENTORY_IDX item);
extern void floor_item_charges(INVENTORY_IDX item);
* @param item 残量を表示したいプレイヤーのアイテム所持スロット
* @return なし
*/
-void inven_item_describe(INVENTORY_IDX item)
+void inven_item_describe(player_type *owner_ptr, INVENTORY_IDX item)
{
- object_type *o_ptr = &p_ptr->inventory_list[item];
+ object_type *o_ptr = &owner_ptr->inventory_list[item];
GAME_TEXT o_name[MAX_NLEN];
object_desc(o_name, o_ptr, 0);
}
-void vary_item(INVENTORY_IDX item, ITEM_NUMBER num)
+void vary_item(player_type *owner_ptr, INVENTORY_IDX item, ITEM_NUMBER num)
{
if (item >= 0)
{
inven_item_increase(item, num);
- inven_item_describe(item);
+ inven_item_describe(owner_ptr, item);
inven_item_optimize(item);
}
else
/* Drop it near the player */
(void)drop_near(owner_ptr, q_ptr, 0, owner_ptr->y, owner_ptr->x);
- vary_item(item, -amt);
+ vary_item(owner_ptr, item, -amt);
}
object_type forge;
object_type *q_ptr;
q_ptr = &forge;
+
/**********Create shots*********/
if (ext == 1)
{
msg_print(_("そこには岩石がない。", "You need pile of rubble."));
return FALSE;
}
- else if (!cave_have_flag_grid(g_ptr, FF_CAN_DIG) || !cave_have_flag_grid(g_ptr, FF_HURT_ROCK))
+
+ if (!cave_have_flag_grid(g_ptr, FF_CAN_DIG) || !cave_have_flag_grid(g_ptr, FF_HURT_ROCK))
{
msg_print(_("硬すぎて崩せなかった。", "You failed to make ammo."));
+ return TRUE;
}
- else
- {
- s16b slot;
- q_ptr = &forge;
+
+ s16b slot;
+ q_ptr = &forge;
- /* Hack -- Give the player some small firestones */
- object_prep(q_ptr, lookup_kind(TV_SHOT, (OBJECT_SUBTYPE_VALUE)m_bonus(1, creature_ptr->lev) + 1));
- q_ptr->number = (byte)rand_range(15, 30);
- object_aware(creature_ptr, q_ptr);
- object_known(q_ptr);
- apply_magic(creature_ptr, q_ptr, creature_ptr->lev, AM_NO_FIXED_ART);
- q_ptr->discount = 99;
+ /* Hack -- Give the player some small firestones */
+ object_prep(q_ptr, lookup_kind(TV_SHOT, (OBJECT_SUBTYPE_VALUE)m_bonus(1, creature_ptr->lev) + 1));
+ q_ptr->number = (byte)rand_range(15, 30);
+ object_aware(creature_ptr, q_ptr);
+ object_known(q_ptr);
+ apply_magic(creature_ptr, q_ptr, creature_ptr->lev, AM_NO_FIXED_ART);
+ q_ptr->discount = 99;
- slot = inven_carry(creature_ptr, q_ptr);
+ slot = inven_carry(creature_ptr, q_ptr);
- object_desc(o_name, q_ptr, 0);
- msg_format(_("%sを作った。", "You make some ammo."), o_name);
+ object_desc(o_name, q_ptr, 0);
+ msg_format(_("%sを作った。", "You make some ammo."), o_name);
- /* Auto-inscription */
- if (slot >= 0) autopick_alter_item(slot, FALSE);
+ /* Auto-inscription */
+ if (slot >= 0) autopick_alter_item(slot, FALSE);
- /* Destroy the wall */
- cave_alter_feat(creature_ptr, y, x, FF_HURT_ROCK);
+ /* Destroy the wall */
+ cave_alter_feat(creature_ptr, y, x, FF_HURT_ROCK);
- creature_ptr->update |= (PU_FLOW);
- }
+ creature_ptr->update |= (PU_FLOW);
+ return TRUE;
}
+
/**********Create arrows*********/
- else if (ext == 2)
+ if (ext == 2)
{
OBJECT_IDX item;
concptr q, s;
object_desc(o_name, q_ptr, 0);
msg_format(_("%sを作った。", "You make some ammo."), o_name);
- vary_item(item, -1);
+ vary_item(creature_ptr, item, -1);
slot = inven_carry(creature_ptr, q_ptr);
/* Auto-inscription */
if (slot >= 0) autopick_alter_item(slot, FALSE);
+ return TRUE;
}
+
/**********Create bolts*********/
- else if (ext == 3)
+ if (ext == 3)
{
OBJECT_IDX item;
concptr q, s;
object_desc(o_name, q_ptr, 0);
msg_format(_("%sを作った。", "You make some ammo."), o_name);
- vary_item(item, -1);
+ vary_item(creature_ptr, item, -1);
slot = inven_carry(creature_ptr, q_ptr);
object_desc(o_name, o_ptr, 0);
msg_format(_("%sの魔力を取り込んだ。", "You absorb magic of %s."), o_name);
- vary_item(item, -999);
+ vary_item(user_ptr, item, -999);
take_turn(user_ptr, 100);
return TRUE;
}
{
msg_print(_("硫黄の悪臭が充満した。", "The area fills with a stench of sulphur and brimstone."));
msg_print(_("「ご用でございますか、ご主人様」", "'What is thy bidding... Master?'"));
- vary_item(item, -1);
+ vary_item(caster_ptr, item, -1);
}
else
{
if (price <= 0)
{
msg_format(_("%sをニセの金に変えた。", "You current_world_ptr->game_turn %s to fool's gold."), o_name);
- vary_item(item, -amt);
+ vary_item(caster_ptr, item, -amt);
return TRUE;
}
caster_ptr->au += price;
caster_ptr->redraw |= PR_GOLD;
caster_ptr->window |= PW_PLAYER;
- vary_item(item, -amt);
+ vary_item(caster_ptr, item, -amt);
return TRUE;
}
if (o_ptr->tval == TV_ROD) o_ptr->timeout = (o_ptr->number - 1) * k_ptr->pval;
if (o_ptr->tval == TV_WAND) o_ptr->pval = 0;
- vary_item(item, -1);
+ vary_item(caster_ptr, item, -1);
}
if (fail_type == 3)
else
msg_format(_("乱暴な魔法のために%sが壊れた!", "Wild magic consumes your %s!"), o_name);
- vary_item(item, -999);
+ vary_item(caster_ptr, item, -999);
}
return update_player(caster_ptr);
msg_format(_("乱暴な魔法のために%sが何本か壊れた!", "Wild magic consumes your %s!"), o_name);
}
- vary_item(item, -1);
+ vary_item(caster_ptr, item, -1);
}
/* Destroy all members of a stack of objects. */
else
msg_format(_("乱暴な魔法のために%sが壊れた!", "Wild magic consumes your %s!"), o_name);
- vary_item(item, -999);
+ vary_item(caster_ptr, item, -999);
}
return redraw_player(caster_ptr);
/*!
* @brief 店からの売却処理のメインルーチン /
* Sell an item to the store (or home)
+ * @param owner_ptr プレーヤーへの参照ポインタ
* @return なし
*/
-static void store_sell(void)
+static void store_sell(player_type *owner_ptr)
{
int choice;
OBJECT_IDX item;
s = _("欲しい物がないですねえ。", "You have nothing that I want.");
}
- o_ptr = choose_object(p_ptr, &item, q, s, (USE_EQUIP | USE_INVEN | USE_FLOOR | IGNORE_BOTHHAND_SLOT), 0);
+ o_ptr = choose_object(owner_ptr, &item, q, s, (USE_EQUIP | USE_INVEN | USE_FLOOR | IGNORE_BOTHHAND_SLOT), 0);
if (!o_ptr) return;
/* Hack -- Cannot remove cursed items */
return;
}
-
/* Real store */
if ((cur_store_num != STORE_HOME) && (cur_store_num != STORE_MUSEUM))
{
/* Be happy */
if (cur_store_num == STORE_BLACK) /* The black market is illegal! */
- chg_virtue(p_ptr, V_JUSTICE, -1);
+ chg_virtue(owner_ptr, V_JUSTICE, -1);
if((o_ptr->tval == TV_BOTTLE) && (cur_store_num != STORE_HOME))
- chg_virtue(p_ptr, V_NATURE, 1);
+ chg_virtue(owner_ptr, V_NATURE, 1);
decrease_insults();
/* Get some money */
- p_ptr->au += price;
+ owner_ptr->au += price;
/* Update the display */
store_prt_gold();
/* Get the "apparent" value */
dummy = object_value(q_ptr) * q_ptr->number;
- identify_item(p_ptr, o_ptr);
+ identify_item(owner_ptr, o_ptr);
q_ptr = &forge;
/* Get a copy of the object */
/* Describe the result (in message buffer) */
msg_format(_("%sを $%ldで売却しました。", "You sold %s for %ld gold."), o_name, (long)price);
- if (record_sell) exe_write_diary(p_ptr, NIKKI_SELL, 0, o_name);
+ if (record_sell) exe_write_diary(owner_ptr, NIKKI_SELL, 0, o_name);
if (!((o_ptr->tval == TV_FIGURINE) && (value > 0)))
{
/* Take the item from the player, describe the result */
inven_item_increase(item, -amt);
- inven_item_describe(item);
+ inven_item_describe(owner_ptr, item);
/* If items remain, auto-inscribe before optimizing */
if (o_ptr->number > 0)
if (!get_check(format(_("本当に%sを寄贈しますか?", "Really give %s to the Museum? "), o2_name))) return;
- identify_item(p_ptr, q_ptr);
+ identify_item(owner_ptr, q_ptr);
q_ptr->ident |= IDENT_MENTAL;
/* Distribute charges of wands/rods */
msg_format(_("%sを置いた。(%c)", "You drop %s (%c)."), o_name, index_to_label(item));
choice = 0;
- vary_item(item, -amt);
+ vary_item(owner_ptr, item, -amt);
handle_stuff();
/* Let the home carry it */
choice = 0;
- vary_item(item, -amt);
+ vary_item(owner_ptr, item, -amt);
handle_stuff();
/* Let the home carry it */
if ((choice == 0) && (item >= INVEN_RARM))
{
- calc_android_exp(p_ptr);
- verify_equip_slot(p_ptr, item);
+ calc_android_exp(owner_ptr);
+ verify_equip_slot(owner_ptr, item);
}
}
/* Drop (Sell) */
case 'd':
{
- store_sell();
+ store_sell(client_ptr);
break;
}
msg_format(_("%sが落ちた。(%c)", "You drop %s (%c)."), o_name, index_to_label(item));
- vary_item(item, -255);
+ vary_item(player_ptr, item, -255);
handle_stuff();
/* Let the home carry it */