object_desc(o_name, q_ptr, OD_NAME_ONLY);
q_ptr->held_m_idx = 0;
- q_ptr->marked = 0;
+ q_ptr->marked = OM_TOUCHED;
m_ptr->hold_o_idx = q_ptr->next_o_idx;
q_ptr->next_o_idx = 0;
#ifdef JP
object_copy(o_ptr, q_ptr);
/* Forget mark */
- o_ptr->marked = 0;
+ o_ptr->marked &= OM_TOUCHED;
/* Forget location */
o_ptr->iy = o_ptr->ix = 0;
/* Wear the new stuff */
object_copy(o_ptr, q_ptr);
+ /* Player touches it */
+ o_ptr->marked |= OM_TOUCHED;
+
/* Increase the weight */
p_ptr->total_weight += q_ptr->weight;
#define OM_NOMSG 0x02 /* temporary flag to suppress messages */
#define OM_NO_QUERY 0x04 /* Query for auto-pick was already answered as 'No' */
#define OM_AUTODESTROY 0x08 /* Destroy later to avoid illegal inventry shift */
+#define OM_TOUCHED 0x10 /* Object was touched by player */
/*
/* "Inscribe" it */
o_ptr->feeling = feel;
+ /* Player touches it */
+ o_ptr->marked |= OM_TOUCHED;
+
/* Combine / Reorder the pack (later) */
p_ptr->notice |= (PN_COMBINE | PN_REORDER);
if (!o_ptr->k_idx) continue;
/* Skip known objects */
- if (object_is_known(o_ptr)) continue;
+ if (object_is_known(o_ptr))
+ {
+ /* Touched? */
+ if (o_ptr->marked & OM_TOUCHED) continue;
+ }
/* Skip pseudo-known objects */
if (o_ptr->ident & IDENT_SENSE) continue;
/* Wield equipment */
if (n >= INVEN_RARM)
{
+ /* Player touches it */
+ q_ptr->marked |= OM_TOUCHED;
+
/* Copy object */
object_copy(&inventory[n], q_ptr);
/* Get a slot */
n = slot++;
+ /* Player touches it */
+ q_ptr->marked |= OM_TOUCHED;
+
/* Copy object */
object_copy(&inventory[n], q_ptr);
}
/* Forget mark */
- j_ptr->marked = 0;
+ j_ptr->marked = OM_TOUCHED;
/* Memorize monster */
j_ptr->held_m_idx = m_idx;
excise_object_idx(this_o_idx);
/* Forget mark */
- o_ptr->marked = 0;
+ o_ptr->marked &= OM_TOUCHED;
/* Forget location */
o_ptr->iy = o_ptr->ix = 0;
/* Forget location */
j_ptr->iy = j_ptr->ix = 0;
- /* No longer marked */
- j_ptr->marked = 0;
+ /* Player touches it, and no longer marked */
+ j_ptr->marked = OM_TOUCHED;
/* Increase the weight */
p_ptr->total_weight += (j_ptr->number * j_ptr->weight);
object_aware(o_ptr);
object_known(o_ptr);
+ /* Player touches it */
+ o_ptr->marked |= OM_TOUCHED;
+
/* Recalculate bonuses */
p_ptr->update |= (PU_BONUS);