From 7b2bbca769920e3f61544238b23f9d9fa813c2a1 Mon Sep 17 00:00:00 2001 From: nothere Date: Sat, 7 Aug 2004 03:03:58 +0000 Subject: [PATCH] =?utf8?q?=E9=9A=8E=E3=81=AE=E9=9B=B0=E5=9B=B2=E6=B0=97?= =?utf8?q?=E8=A8=88=E7=AE=97=E3=81=A7,=20=E5=88=A4=E6=98=8E=E3=81=97?= =?utf8?q?=E3=81=9F=E8=96=AC=E3=82=84=E4=B8=8A=E4=BD=8D=E9=AD=94=E6=B3=95?= =?utf8?q?=E6=9B=B8=E3=81=AA=E3=81=A9=E3=81=8C=E9=9B=B0=E5=9B=B2=E6=B0=97?= =?utf8?q?=E3=81=AB=E5=8F=8D=E6=98=A0=E3=81=95=E3=82=8C=E3=81=AA=E3=81=84?= =?utf8?q?=E3=81=A8=20=E3=81=84=E3=81=86=E5=95=8F=E9=A1=8C=E3=81=8C?= =?utf8?q?=E3=81=82=E3=81=A3=E3=81=9F=E3=81=9F=E3=82=81,=20=E3=82=A2?= =?utf8?q?=E3=82=A4=E3=83=86=E3=83=A0=E3=81=AB=20"=E3=83=97=E3=83=AC?= =?utf8?q?=E3=82=A4=E3=83=A4=E3=83=BC=E3=81=8C=E8=A7=A6=E3=81=A3=E3=81=9F"?= =?utf8?q?=20=E3=81=A8=E3=81=84=E3=81=86=E6=84=8F=E5=91=B3=E3=81=AE?= =?utf8?q?=E3=83=95=20=E3=83=A9=E3=82=B0OM=5FTOUCHED=E3=82=92=E6=8C=81?= =?utf8?q?=E3=81=9F=E3=81=9B,=20=E3=81=93=E3=82=8C=E3=82=92=E3=83=81?= =?utf8?q?=E3=82=A7=E3=83=83=E3=82=AF=E3=81=99=E3=82=8B=E3=81=93=E3=81=A8?= =?utf8?q?=E3=81=A7=E4=B8=8A=E8=A8=98=E3=81=AE=E5=95=8F=E9=A1=8C=E3=82=92?= =?utf8?q?=E4=BF=AE=E6=AD=A3.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit フラグOM_FOUNDは以下のいずれかの時にそのアイテムに立てられる. * プレイヤーがザックに入れた, または装備した. * プレイヤーが鑑定した. これを用い, ダンジョンのアイテムが鑑定されていても, OM_FOUNDがないア イテムは計算するように修正. 武器等で鑑定されていないアイテムは1度プレ イヤーがザックに入れてから床に置いても再び計算対象となる. セーブデータをロードした直後のダンジョンでは鑑定済みのエゴアイテム等 で雰囲気が高く評価される場合があるが, そのダンジョンだけなので特に セーブデータ変換は行わない. --- src/cmd1.c | 2 +- src/cmd2.c | 2 +- src/cmd3.c | 3 +++ src/defines.h | 1 + src/dungeon.c | 9 ++++++++- src/load.c | 6 ++++++ src/melee1.c | 2 +- src/melee2.c | 2 +- src/object2.c | 4 ++-- src/spells3.c | 3 +++ 10 files changed, 27 insertions(+), 7 deletions(-) diff --git a/src/cmd1.c b/src/cmd1.c index 16a64d70b..0c43bcc36 100644 --- a/src/cmd1.c +++ b/src/cmd1.c @@ -2876,7 +2876,7 @@ static void py_attack_aux(int y, int x, bool *fear, bool *mdeath, s16b hand, int 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 diff --git a/src/cmd2.c b/src/cmd2.c index c04707d62..e7ae13b5a 100644 --- a/src/cmd2.c +++ b/src/cmd2.c @@ -3746,7 +3746,7 @@ void do_cmd_fire_aux(int item, object_type *j_ptr) 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; diff --git a/src/cmd3.c b/src/cmd3.c index 42e7e3a2a..631799322 100644 --- a/src/cmd3.c +++ b/src/cmd3.c @@ -530,6 +530,9 @@ msg_print(" /* 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; diff --git a/src/defines.h b/src/defines.h index b04bffa61..0aff7a927 100644 --- a/src/defines.h +++ b/src/defines.h @@ -3163,6 +3163,7 @@ #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 */ /* diff --git a/src/dungeon.c b/src/dungeon.c index ab694c8a0..46a54c553 100644 --- a/src/dungeon.c +++ b/src/dungeon.c @@ -1277,6 +1277,9 @@ msg_format("%s /* "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); @@ -3524,7 +3527,11 @@ static byte get_dungeon_feeling(void) 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; diff --git a/src/load.c b/src/load.c index 5618e1357..b33d085ba 100644 --- a/src/load.c +++ b/src/load.c @@ -2181,6 +2181,9 @@ static errr rd_inventory(void) /* Wield equipment */ if (n >= INVEN_RARM) { + /* Player touches it */ + q_ptr->marked |= OM_TOUCHED; + /* Copy object */ object_copy(&inventory[n], q_ptr); @@ -2212,6 +2215,9 @@ note(" /* Get a slot */ n = slot++; + /* Player touches it */ + q_ptr->marked |= OM_TOUCHED; + /* Copy object */ object_copy(&inventory[n], q_ptr); diff --git a/src/melee1.c b/src/melee1.c index 87f0eb17a..7f5feef1a 100644 --- a/src/melee1.c +++ b/src/melee1.c @@ -1032,7 +1032,7 @@ bool make_attack_normal(int m_idx) } /* Forget mark */ - j_ptr->marked = 0; + j_ptr->marked = OM_TOUCHED; /* Memorize monster */ j_ptr->held_m_idx = m_idx; diff --git a/src/melee2.c b/src/melee2.c index 8a0cb6392..6dfbc19be 100644 --- a/src/melee2.c +++ b/src/melee2.c @@ -3440,7 +3440,7 @@ msg_format("%^s%s", m_name, monmessage); 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; diff --git a/src/object2.c b/src/object2.c index bb5d51dcf..2a4f121e4 100644 --- a/src/object2.c +++ b/src/object2.c @@ -5892,8 +5892,8 @@ s16b inven_carry(object_type *o_ptr) /* 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); diff --git a/src/spells3.c b/src/spells3.c index 68264b969..c918dd302 100644 --- a/src/spells3.c +++ b/src/spells3.c @@ -2782,6 +2782,9 @@ bool identify_item(object_type *o_ptr) object_aware(o_ptr); object_known(o_ptr); + /* Player touches it */ + o_ptr->marked |= OM_TOUCHED; + /* Recalculate bonuses */ p_ptr->update |= (PU_BONUS); -- 2.11.0