From 15307de1142f66857a6f2c1625f211467a3bc5f0 Mon Sep 17 00:00:00 2001 From: mogami Date: Sat, 6 Dec 2003 13:30:36 +0000 Subject: [PATCH] =?utf8?q?init1.c=E3=81=AE=20Revision=201.79=20=E3=81=A7?= =?utf8?q?=E3=80=81=E3=81=AA=E3=81=9C=E3=81=8Biks=E3=81=95=E3=82=93?= =?utf8?q?=E3=81=AEWin=E5=AE=9F=E8=A1=8C=E3=83=95=E3=82=A1=E3=82=A4?= =?utf8?q?=E3=83=AB=E3=81=A7=E3=80=81=20=E5=BA=83=E5=9F=9F=E3=83=9E?= =?utf8?q?=E3=83=83=E3=83=97=E3=81=8B=E3=82=89>=E3=81=A7=E9=99=8D=E3=82=8A?= =?utf8?q?=E3=81=9F=E6=99=82=E3=81=AB=E3=80=81=E8=B6=B3=E5=85=83=E3=81=AB?= =?utf8?q?=E5=B1=B1=E8=84=88=E3=81=8C=E3=81=82=E3=82=8B=E3=81=A8=E5=A4=89?= =?utf8?q?=E6=84=9A=E3=81=8C=E3=82=AF=E3=83=A9=E3=83=83=E3=82=B7=E3=83=A5?= =?utf8?q?=E3=81=99=E3=82=8B=20=E3=81=A8=E3=81=84=E3=81=86=E8=AC=8E?= =?utf8?q?=E3=82=81=E3=81=84=E3=81=9F=E3=83=90=E3=82=B0=E3=81=8C=E5=B0=8E?= =?utf8?q?=E5=85=A5=E3=81=95=E3=82=8C=E3=81=9F=E3=81=AE=E3=81=A7=E3=80=81?= =?utf8?q?=E3=81=A8=E3=82=8A=E3=81=82=E3=81=88=E3=81=9A=E3=80=811.78?= =?utf8?q?=E3=81=AE=E7=8A=B6=E6=85=8B=E3=81=AB=E6=88=BB=E3=81=99=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Revision 1.79は、 「クエストファイルでmimic操作ができる仕様はtrapを使えば十分なので削除.」 という変更なので、mimic操作自体は後でちゃんと削除し直さないといけないが、 何がエンバグだったか調べてからにする。 --- src/init1.c | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/src/init1.c b/src/init1.c index 46cda7d12..72ebb6e59 100644 --- a/src/init1.c +++ b/src/init1.c @@ -3234,6 +3234,7 @@ static int i = 0; #define RANDOM_EGO 0x00000008 #define RANDOM_ARTIFACT 0x00000010 #define RANDOM_TRAP 0x00000020 +#define RANDOM_FEAT_MIMIC 0x00000040 typedef struct dungeon_grid dungeon_grid; @@ -3248,6 +3249,7 @@ struct dungeon_grid int trap; /* Trap */ int cave_info; /* Flags for CAVE_MARK, CAVE_GLOW, CAVE_ICKY, CAVE_ROOM */ int special; /* Reserved for special terrain info */ + int feat_mimic; /* Reserved for terrain mimic info */ int random; /* Number of the random effect */ }; @@ -3261,13 +3263,13 @@ static dungeon_grid letter[255]; static errr parse_line_feature(char *buf) { int num; - char *zz[9]; + char *zz[10]; if (init_flags & INIT_ONLY_BUILDINGS) return (0); /* Tokenize the line */ - if ((num = tokenize(buf+2, 9, zz, 0)) > 1) + if ((num = tokenize(buf+2, 10, zz, 0)) > 1) { /* Letter to assign */ int index = zz[0][0]; @@ -3281,10 +3283,23 @@ static errr parse_line_feature(char *buf) letter[index].trap = FEAT_NONE; letter[index].cave_info = 0; letter[index].special = 0; + letter[index].feat_mimic = FEAT_NONE; letter[index].random = RANDOM_NONE; switch (num) { + /* Feature mimic */ + case 10: + if ((zz[9][0] == '*') && !zz[9][1]) + { + letter[index].random |= RANDOM_FEAT_MIMIC; + } + else + { + letter[index].feat_mimic = f_tag_to_index(zz[9]); + if (letter[index].feat_mimic < 0) return PARSE_ERROR_UNDEFINED_TERRAIN_TAG; + } + /* Fall through */ /* Special */ case 9: letter[index].special = atoi(zz[8]); @@ -3628,6 +3643,7 @@ static errr process_dungeon_file_aux(char *buf, int ymin, int xmin, int ymax, in /* Lay down a floor */ c_ptr->feat = conv_dungeon_feat(letter[idx].feature); + c_ptr->mimic = conv_dungeon_feat(letter[idx].feat_mimic); /* Only the features */ if (init_flags & INIT_ONLY_FEATURES) continue; @@ -3702,6 +3718,7 @@ static errr process_dungeon_file_aux(char *buf, int ymin, int xmin, int ymax, in } else { + if (c_ptr->mimic) c_ptr->feat = c_ptr->mimic; place_trap(*y, *x); } @@ -3724,12 +3741,13 @@ static errr process_dungeon_file_aux(char *buf, int ymin, int xmin, int ymax, in /* Random trap */ else if (random & RANDOM_TRAP) { + if (c_ptr->mimic) c_ptr->feat = c_ptr->mimic; place_trap(*y, *x); } /* Hidden trap (or door) */ else if (letter[idx].trap) { - c_ptr->mimic = c_ptr->feat; + if (!c_ptr->mimic) c_ptr->mimic = c_ptr->feat; c_ptr->feat = conv_dungeon_feat(letter[idx].trap); } else if (object_index) -- 2.11.0