* A function for Auto-picker/destroyer
* Examine whether the object matches to the entry
*/
-static bool is_autopick_aux(object_type *o_ptr, autopick_type *entry, concptr o_name)
+static bool is_autopick_aux(player_type *player_ptr, object_type *o_ptr, autopick_type *entry, concptr o_name)
{
int j;
concptr ptr = entry->name;
/*** First realm spellbooks ***/
if (IS_FLG(FLG_REALM1) &&
(REALM1_BOOK != o_ptr->tval ||
- p_ptr->pclass == CLASS_SORCERER ||
- p_ptr->pclass == CLASS_RED_MAGE))
+ player_ptr->pclass == CLASS_SORCERER ||
+ player_ptr->pclass == CLASS_RED_MAGE))
return FALSE;
/*** Second realm spellbooks ***/
if (IS_FLG(FLG_REALM2) &&
(REALM2_BOOK != o_ptr->tval ||
- p_ptr->pclass == CLASS_SORCERER ||
- p_ptr->pclass == CLASS_RED_MAGE))
+ player_ptr->pclass == CLASS_SORCERER ||
+ player_ptr->pclass == CLASS_RED_MAGE))
return FALSE;
/*** First rank spellbooks ***/
* into an inventory slot.
* But an item can not be absorbed into itself!
*/
- if ((&p_ptr->inventory_list[j] != o_ptr) &&
- object_similar(&p_ptr->inventory_list[j], o_ptr))
+ if ((&player_ptr->inventory_list[j] != o_ptr) &&
+ object_similar(&player_ptr->inventory_list[j], o_ptr))
return TRUE;
}
* A function for Auto-picker/destroyer
* Examine whether the object matches to the list of keywords or not.
*/
-int is_autopick(object_type *o_ptr)
+int is_autopick(player_type *player_ptr, object_type *o_ptr)
{
int i;
GAME_TEXT o_name[MAX_NLEN];
{
autopick_type *entry = &autopick_list[i];
- if (is_autopick_aux(o_ptr, entry, o_name)) return i;
+ if (is_autopick_aux(player_ptr, o_ptr, entry, o_name)) return i;
}
/* No matching entry */
* Auto-destroyer works only on inventory or on floor stack only when
* requested.
*/
-void autopick_alter_item(INVENTORY_IDX item, bool destroy)
+void autopick_alter_item(player_type *player_ptr, INVENTORY_IDX item, bool destroy)
{
object_type *o_ptr;
int idx;
- o_ptr = REF_ITEM(p_ptr, p_ptr->current_floor_ptr, item);
+ o_ptr = REF_ITEM(player_ptr, player_ptr->current_floor_ptr, item);
/* Get the index in the auto-pick/destroy list */
- idx = is_autopick(o_ptr);
+ idx = is_autopick(player_ptr, o_ptr);
/* Do auto-inscription */
auto_inscribe_item(o_ptr, idx);
/*
* Automatically pickup/destroy items in this grid.
*/
-void autopick_pickup_items(grid_type *g_ptr)
+void autopick_pickup_items(player_type* player_ptr, grid_type *g_ptr)
{
OBJECT_IDX this_o_idx, next_o_idx = 0;
object_type *o_ptr = &p_ptr->current_floor_ptr->o_list[this_o_idx];
next_o_idx = o_ptr->next_o_idx;
- idx = is_autopick(o_ptr);
+ idx = is_autopick(player_ptr, o_ptr);
/* Item index for floor -1,-2,-3,... */
auto_inscribe_item(o_ptr, idx);
FILE *pref_fff;
autopick_type an_entry, *entry = &an_entry;
- int match_autopick = is_autopick(o_ptr);
+ int match_autopick = is_autopick(player_ptr, o_ptr);
/* Already registered */
if (match_autopick != -1)
/*
* Search next line matches for o_ptr
*/
-static void search_for_object(text_body_type *tb, object_type *o_ptr, bool forward)
+static void search_for_object(player_type *player_ptr, text_body_type *tb, object_type *o_ptr, bool forward)
{
autopick_type an_entry, *entry = &an_entry;
GAME_TEXT o_name[MAX_NLEN];
if (!autopick_new_entry(entry, tb->lines_list[i], FALSE)) continue;
/* Does this line match to the object? */
- match = is_autopick_aux(o_ptr, entry, o_name);
+ match = is_autopick_aux(player_ptr, o_ptr, entry, o_name);
autopick_free_entry(entry);
if (!match) continue;
case EC_SEARCH_FORW:
if (tb->search_o_ptr)
{
- search_for_object(tb, tb->search_o_ptr, TRUE);
+ search_for_object(player_ptr, tb, tb->search_o_ptr, TRUE);
}
else if (tb->search_str && tb->search_str[0])
{
case EC_SEARCH_BACK:
if (tb->search_o_ptr)
{
- search_for_object(tb, tb->search_o_ptr, FALSE);
+ search_for_object(player_ptr, tb, tb->search_o_ptr, FALSE);
}
else if (tb->search_str && tb->search_str[0])
{
extern void autopick_load_pref(player_type *player_ptr, bool disp_mes);
extern errr process_autopick_file_command(char *buf);
extern concptr autopick_line_from_entry(autopick_type *entry);
-extern int is_autopick(object_type *o_ptr);
-extern void autopick_alter_item(INVENTORY_IDX item, bool destroy);
+extern int is_autopick(player_type *player_ptr, object_type *o_ptr);
+extern void autopick_alter_item(player_type *player_ptr, INVENTORY_IDX item, bool destroy);
extern void autopick_delayed_alter(player_type *player_ptr);
-extern void autopick_pickup_items(grid_type *g_ptr);
+extern void autopick_pickup_items(player_type *player_ptr, grid_type *g_ptr);
extern bool autopick_autoregister(player_type *player_ptr, object_type *o_ptr);
extern void do_cmd_edit_autopick(player_type *player_ptr);
slot = inven_carry(creature_ptr, o_ptr);
/* Auto-inscription */
- autopick_alter_item(slot, FALSE);
+ autopick_alter_item(creature_ptr, slot, FALSE);
/* Now try wielding everything */
wield_all(creature_ptr);
msg_format(_("%s(%c)を貰った。", "You get %s (%c). "), o_name, index_to_label(item_new));
/* Auto-inscription */
- autopick_alter_item(item_new, FALSE);
+ autopick_alter_item(player_ptr, item_new, FALSE);
handle_stuff(player_ptr);
change = TRUE;
* The cost for rods depends on the level of the rod. The prices\n
* for recharging wands and staves are dependent on the cost of\n
* the base-item.\n
+ * @param player_ptr プレーヤーへの参照ポインタ
* @return なし
*/
-static void building_recharge(void)
+static void building_recharge(player_type *player_ptr)
{
OBJECT_IDX item;
DEPTH lev;
msg_format(_("%s です。", "You have: %s."), tmp_str);
/* Auto-inscription */
- autopick_alter_item(item, FALSE);
+ autopick_alter_item(player_ptr, item, FALSE);
/* Update the gold display */
building_prt_gold();
* The cost for rods depends on the level of the rod. The prices\n
* for recharging wands and staves are dependent on the cost of\n
* the base-item.\n
+ * @param player_ptr プレーヤーへの参照ポインタ
* @return なし
*/
-static void building_recharge_all(void)
+static void building_recharge_all(player_type *player_ptr)
{
INVENTORY_IDX i;
DEPTH lev;
PRICE price = 0;
PRICE total_cost = 0;
-
/* Display some info */
msg_flag = FALSE;
clear_bldg(4, 18);
identify_item(p_ptr, o_ptr);
/* Auto-inscription */
- autopick_alter_item(i, FALSE);
+ autopick_alter_item(player_ptr, i, FALSE);
}
/* Recharge */
enchant_item(player_ptr, bcost, 0, 0, 1);
break;
case BACT_RECHARGE:
- building_recharge();
+ building_recharge(player_ptr);
break;
case BACT_RECHARGE_ALL:
- building_recharge_all();
+ building_recharge_all(player_ptr);
break;
case BACT_IDENTS: /* needs work */
if (!get_check(_("持ち物を全て鑑定してよろしいですか?", "Do you pay for identify all your possession? "))) break;
/*!
* @brief 装備するコマンドのメインルーチン / Wield or wear a single item from the pack or floor
+ * @param creature_ptr プレーヤーへの参照ポインタ
* @return なし
*/
void do_cmd_wield(player_type *creature_ptr)
identify_item(creature_ptr, o_ptr);
/* Auto-inscription */
- autopick_alter_item(item, FALSE);
+ autopick_alter_item(creature_ptr, item, FALSE);
}
take_turn(creature_ptr, 100);
/*!
* @brief アイテムを破壊するコマンドのメインルーチン / Destroy an item
+ * @param creature_ptr プレーヤーへの参照ポインタ
* @return なし
*/
void do_cmd_destroy(player_type *creature_ptr)
if (autopick_autoregister(creature_ptr, o_ptr))
{
/* Auto-destroy it */
- autopick_alter_item(item, TRUE);
+ autopick_alter_item(creature_ptr, item, TRUE);
}
/* The object is already destroyed. */
/*!
* @brief エッセンスの抽出処理
+ * @param creature_ptr プレーヤーへの参照ポインタ
* @return なし
*/
static void drain_essence(player_type *creature_ptr)
}
/* Apply autodestroy/inscription to the drained item */
- autopick_alter_item(item, TRUE);
+ autopick_alter_item(creature_ptr, item, TRUE);
creature_ptr->update |= (PU_COMBINE | PU_REORDER);
creature_ptr->window |= (PW_INVEN);
}
/*!
* @brief 擬似鑑定を実際に行い判定を反映する
* @param slot 擬似鑑定を行うプレイヤーの所持リストID
+ * @param creature_ptr プレーヤーへの参照ポインタ
* @param heavy 重度の擬似鑑定を行うならばTRUE
* @return なし
*/
-static void sense_inventory_aux(INVENTORY_IDX slot, bool heavy)
+static void sense_inventory_aux(player_type *creature_ptr, INVENTORY_IDX slot, bool heavy)
{
byte feel;
object_type *o_ptr = &p_ptr->inventory_list[slot];
o_ptr->feeling = feel;
/* Auto-inscription/destroy */
- autopick_alter_item(slot, destroy_feeling);
+ autopick_alter_item(creature_ptr, slot, destroy_feeling);
p_ptr->update |= (PU_COMBINE | PU_REORDER);
p_ptr->window |= (PW_INVEN | PW_EQUIP);
heavy = TRUE;
}
- sense_inventory_aux(i, heavy);
+ sense_inventory_aux(creature_ptr, i, heavy);
}
}
/* Occasional failure on creature_ptr->inventory_list items */
if ((i < INVEN_RARM) && (0 != randint0(5))) continue;
- sense_inventory_aux(i, TRUE);
+ sense_inventory_aux(creature_ptr, i, TRUE);
}
}
bool old_known = identify_item(owner_ptr, o_ptr);
/* Auto-inscription/destroy */
- autopick_alter_item(slot, (bool)(destroy_identify && !old_known));
+ autopick_alter_item(owner_ptr, slot, (bool)(destroy_identify && !old_known));
/* If it is destroyed, don't pick it up */
if (o_ptr->marked & OM_AUTODESTROY) return;
handle_stuff(creature_ptr);
/* Automatically pickup/destroy/inscribe items */
- autopick_pickup_items(g_ptr);
+ autopick_pickup_items(creature_ptr, g_ptr);
if (easy_floor)
{
msg_format(_("%sを作った。", "You make some ammo."), o_name);
/* Auto-inscription */
- if (slot >= 0) autopick_alter_item(slot, FALSE);
+ if (slot >= 0) autopick_alter_item(creature_ptr, slot, FALSE);
/* Destroy the wall */
cave_alter_feat(creature_ptr, y, x, FF_HURT_ROCK);
slot = inven_carry(creature_ptr, q_ptr);
/* Auto-inscription */
- if (slot >= 0) autopick_alter_item(slot, FALSE);
+ if (slot >= 0) autopick_alter_item(creature_ptr, slot, FALSE);
return TRUE;
}
slot = inven_carry(creature_ptr, q_ptr);
/* Auto-inscription */
- if (slot >= 0) autopick_alter_item(slot, FALSE);
+ if (slot >= 0) autopick_alter_item(creature_ptr, slot, FALSE);
}
return TRUE;
identify_item(caster_ptr, o_ptr);
/* Auto-inscription */
- autopick_alter_item((-this_o_idx), FALSE);
+ autopick_alter_item(caster_ptr, (-this_o_idx), FALSE);
break;
}
}
/* Auto-inscription/destroy */
- autopick_alter_item(item, (bool)(okay && destroy_feeling));
+ autopick_alter_item(caster_ptr, item, (bool)(okay && destroy_feeling));
return TRUE;
}
identify_item(target_ptr, o_ptr);
/* Auto-inscription */
- autopick_alter_item(i, FALSE);
+ autopick_alter_item(target_ptr, i, FALSE);
}
}
msg_format(_("床上: %s。", "On the ground: %s."), o_name);
}
- autopick_alter_item(item, (bool)(destroy_identify && !old_known));
+ autopick_alter_item(caster_ptr, item, (bool)(destroy_identify && !old_known));
return TRUE;
}
}
(void)screen_object(o_ptr, 0L);
- autopick_alter_item(item, (bool)(destroy_identify && !old_known));
+ autopick_alter_item(caster_ptr, item, (bool)(destroy_identify && !old_known));
return TRUE;
}
msg_format(_("%s(%c)を手に入れた。", "You have %s (%c)."), o_name, index_to_label(item_new));
/* Auto-inscription */
- autopick_alter_item(item_new, FALSE);
+ autopick_alter_item(player_ptr, item_new, FALSE);
/* Now, reduce the original stack's pval. */
if ((o_ptr->tval == TV_ROD) || (o_ptr->tval == TV_WAND))
/* If items remain, auto-inscribe before optimizing */
if (o_ptr->number > 0)
- autopick_alter_item(item, FALSE);
+ autopick_alter_item(owner_ptr, item, FALSE);
inven_item_optimize(owner_ptr, item);
handle_stuff(owner_ptr);
{
byte act;
- match_autopick = is_autopick(o_ptr);
+ match_autopick = is_autopick(p_ptr, o_ptr);
if (match_autopick == -1)
continue;