From 234473e690be97c9ace6d67a92bbe2993cb37e91 Mon Sep 17 00:00:00 2001 From: nothere Date: Sat, 31 May 2003 21:02:11 +0000 Subject: [PATCH] =?utf8?q?=E3=83=A2=E3=83=B3=E3=82=B9=E3=82=BF=E3=83=BC?= =?utf8?q?=E3=82=B7=E3=83=B3=E3=83=9C=E3=83=AB=E3=81=AE=E7=94=BB=E9=9D=A2?= =?utf8?q?=E5=87=BA=E5=8A=9B=E9=83=A8=E5=88=86=E3=81=AE=E3=82=B3=E3=83=BC?= =?utf8?q?=E3=83=89,=20=E3=82=B7=E3=83=B3=E3=83=9C=E3=83=AB=E3=83=95?= =?utf8?q?=E3=83=A9=E3=82=B0=E9=96=93=E3=81=AE=E4=BE=9D=E5=AD=98=E9=96=A2?= =?utf8?q?=E4=BF=82=20=E3=82=92=E6=95=B4=E7=90=86=E3=81=97,=20=E3=81=8B?= =?utf8?q?=E3=81=A4=E3=83=A2=E3=83=B3=E3=82=B9=E3=82=BF=E3=83=BC=E3=81=AE?= =?utf8?q?=E8=A1=A8=E7=8F=BE=E3=81=AE=E5=B9=85=E3=82=92=E5=A2=97=E3=82=84?= =?utf8?q?=E3=81=99=E3=82=88=E3=81=86=E3=81=AB=E5=A4=89=E6=9B=B4.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit シンボルフラグ間の依存関係や優先順位は旧仕様では次の通りであった. * SHAPECHANGER, ATTR_ANYの使用にはATTR_MULTIが必要. * ATTR_ANYがある場合はATTR_MULTIではなくATTR_ANYの配色になる. * ATTR_MULTIがあるとATTR_CLEARとCHAR_CLEARが無視される. 整理後は依存関係と優先順位はATTR_ANYとATTR_MULTIのものだけが残る. この変更で, 次のようなモンスターを扱えるようになった. * 地形やアイテムの文字は変わらないが, 文字の色だけが変わる. * 単一の色のSHAPECHANGER. * 床の色に染まるSHAPECHANGER. 現行モンスターに対する影響は次の通り. * "異次元の色彩" にはもともとCHAR_CLEARがこの目的で与えられていると考 えられ, 説明テキストにあるように色だけが動く表現に変わる. * "巨大サイバーワイアーム天使悪魔リッチ" にはここで挙げたフラグが全て 与えられているため, 完全に見えなくなるので, そのままだと理不尽死の 原因になってしまう. 見る手段のあるプレイヤーが知覚できるような組み 合わせにしなければならない. なお, タイルモード時は今まで通りの仕様を維持できている. --- src/cave.c | 172 ++++++++++++++++++++++--------------------------------------- 1 file changed, 63 insertions(+), 109 deletions(-) diff --git a/src/cave.c b/src/cave.c index 3843dc93f..f9efe86ce 100644 --- a/src/cave.c +++ b/src/cave.c @@ -1404,131 +1404,85 @@ void map_info(int y, int x, byte *ap, char *cp) /* Visible monster */ if (m_ptr->ml) { - monster_race *r_ptr; - r_ptr = &r_info[m_ptr->ap_r_idx]; - - /* Desired attr */ - a = r_ptr->x_attr; - - /* Desired char */ - c = r_ptr->x_char; - feat_priority = 30; - /* Mimics' colors vary */ - if (strchr("\"!=", c) && !(r_ptr->flags1 & RF1_UNIQUE)) + /* Hack -- hallucination */ + if (p_ptr->image) { - /* Use char */ - (*cp) = c; - - /* Use semi-random attr */ - (*ap) = c_ptr->m_idx % 15 + 1; + /* Hallucinatory monster */ + image_monster(ap, cp); } - - /* Special attr/char codes */ - else if ((a & 0x80) && (c & 0x80)) + else { - /* Use char */ - (*cp) = c; + monster_race *r_ptr = &r_info[m_ptr->ap_r_idx]; - /* Use attr */ - (*ap) = a; - } + /* Monster attr/char */ + a = r_ptr->x_attr; + c = r_ptr->x_char; - /* Multi-hued monster */ - else if (r_ptr->flags1 & (RF1_ATTR_MULTI)) - { - /* Is it a shapechanger? */ - if (r_ptr->flags2 & (RF2_SHAPECHANGER)) + /* Normal (non-clear attr) monster or bizarre grid under monster */ + if (!(r_ptr->flags1 & RF1_ATTR_CLEAR) || (*ap & 0x80)) { - if (use_graphics) - { - (*cp) = r_info[randint1(max_r_idx-1)].x_char; - (*ap) = r_info[randint1(max_r_idx-1)].x_attr; - } - else + /* Desired monster attr */ + *ap = a; + + /* Not special monster attr codes */ + if (!(a & 0x80)) { - (*cp) = (one_in_(25) ? - image_object_hack[randint0(strlen(image_object_hack))] : - image_monster_hack[randint0(strlen(image_monster_hack))]); - } - } - else - (*cp) = c; + /* Multi-hued monster */ + if (r_ptr->flags1 & RF1_ATTR_MULTI) + { + /* Multi-hued attr */ + if (r_ptr->flags2 & RF2_ATTR_ANY) *ap = randint1(15); + else switch (randint1(7)) + { + case 1: *ap = TERM_RED; break; + case 2: *ap = TERM_L_RED; break; + case 3: *ap = TERM_WHITE; break; + case 4: *ap = TERM_L_GREEN; break; + case 5: *ap = TERM_BLUE; break; + case 6: *ap = TERM_L_DARK; break; + case 7: *ap = TERM_GREEN; break; + } + } - /* Multi-hued attr */ - if (r_ptr->flags2 & RF2_ATTR_ANY) - (*ap) = randint1(15); - else switch (randint1(7)) - { - case 1: - (*ap) = TERM_RED; - break; - case 2: - (*ap) = TERM_L_RED; - break; - case 3: - (*ap) = TERM_WHITE; - break; - case 4: - (*ap) = TERM_L_GREEN; - break; - case 5: - (*ap) = TERM_BLUE; - break; - case 6: - (*ap) = TERM_L_DARK; - break; - case 7: - (*ap) = TERM_GREEN; - break; + /* Mimics' colors vary */ + else if (((c == '\"') || (c == '!') || (c == '=')) + && !(r_ptr->flags1 & RF1_UNIQUE)) + { + /* Use semi-random attr */ + *ap = c_ptr->m_idx % 15 + 1; + } + } } - } - /* Normal monster (not "clear" in any way) */ - else if (!(r_ptr->flags1 & (RF1_ATTR_CLEAR | RF1_CHAR_CLEAR))) - { - /* Use char */ - (*cp) = c; - - /* Use attr */ - (*ap) = a; - } - - /* Hack -- Bizarre grid under monster */ - else if ((*ap & 0x80) || (*cp & 0x80)) - { - /* Use char */ - (*cp) = c; - - /* Use attr */ - (*ap) = a; - } - - /* Normal */ - else - { - /* Normal (non-clear char) monster */ - if (!(r_ptr->flags1 & (RF1_CHAR_CLEAR))) + /* Normal (non-clear char) monster or bizarre grid under monster */ + if (!(r_ptr->flags1 & RF1_CHAR_CLEAR) || (*cp & 0x80)) { - /* Normal char */ - (*cp) = c; - } + /* Desired monster char */ + *cp = c; - /* Normal (non-clear attr) monster */ - else if (!(r_ptr->flags1 & (RF1_ATTR_CLEAR))) - { - /* Normal attr */ - (*ap) = a; + /* Not special monster char codes */ + if (!(c & 0x80)) + { + /* Is it a shapechanger? */ + if (r_ptr->flags2 & RF2_SHAPECHANGER) + { + if (use_graphics) + { + *cp = r_info[randint1(max_r_idx - 1)].x_char; + *ap = r_info[randint1(max_r_idx - 1)].x_attr; + } + else + { + *cp = (one_in_(25) ? + image_object_hack[randint0(strlen(image_object_hack))] : + image_monster_hack[randint0(strlen(image_monster_hack))]); + } + } + } } } - - /* Hack -- hallucination */ - if (p_ptr->image) - { - /* Hallucinatory monster */ - image_monster(ap, cp); - } } } -- 2.11.0