From 2095df741d803545b613b8210d791a419416f11c Mon Sep 17 00:00:00 2001 From: nothere Date: Thu, 27 Nov 2003 16:58:02 +0000 Subject: [PATCH] =?utf8?q?*FLOOR*=E7=AD=89=E3=81=AE=E7=89=B9=E6=AE=8A?= =?utf8?q?=E3=82=BF=E3=82=B0=E3=81=AE=E5=8F=82=E7=85=A7=E3=81=ABFEAT?= =?utf8?q?=E3=81=99=E3=82=89=E4=BD=BF=E3=82=8F=E3=81=AA=E3=81=8F=E3=81=A6?= =?utf8?q?=E3=81=84=E3=81=84=E3=82=88=E3=81=86=E3=81=AB,=20=E5=A4=89?= =?utf8?q?=E6=8F=9B=E3=81=8C=E5=BF=85=E8=A6=81=E3=81=AA=20=E3=83=95?= =?utf8?q?=E3=83=A9=E3=82=B0CONVERT=E3=81=A8power=E5=80=A4=E3=82=92?= =?utf8?q?=E4=B8=8E=E3=81=88=E3=81=9F.=20f=5Finfo=E4=B8=AD=E3=81=AE?= =?utf8?q?=E7=95=AA=E5=8F=B7=E3=81=8C=E3=81=9A=E3=82=8C=E3=81=A6=E3=82=82,?= =?utf8?q?=20=E5=87=A6=E7=90=86=E5=86=85=E5=AE=B9=E3=81=AF=20power?= =?utf8?q?=E3=81=A7=E5=88=86=E5=B2=90=E3=81=99=E3=82=8B.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- lib/edit/f_info.txt | 7 +++++++ src/cave.c | 40 +++++++++++++++++++++++----------------- src/defines.h | 13 ++++++++++++- src/init1.c | 1 + 4 files changed, 43 insertions(+), 18 deletions(-) diff --git a/lib/edit/f_info.txt b/lib/edit/f_info.txt index b5dfbf9ce..3e3c449e3 100644 --- a/lib/edit/f_info.txt +++ b/lib/edit/f_info.txt @@ -1392,24 +1392,31 @@ F:GLOW | BLDG N:160:*FLOOR* M:FLOOR +F:POWER_0 | CONVERT N:161:*WALL* M:GRANITE +F:POWER_1 | CONVERT N:162:*INNER* M:GRANITE +F:POWER_2 | CONVERT N:163:*OUTER* M:GRANITE +F:POWER_3 | CONVERT N:164:*SOLID* M:GRANITE +F:POWER_4 | CONVERT N:165:*STREAM1* M:MAGMA_VEIN +F:POWER_5 | CONVERT N:166:*STREAM2* M:QUARTZ_VEIN +F:POWER_6 | CONVERT N:192:TOWN J:³¹ diff --git a/src/cave.c b/src/cave.c index 640752ce8..bef0f8a4b 100644 --- a/src/cave.c +++ b/src/cave.c @@ -4466,25 +4466,31 @@ void cave_set_feat(int y, int x, int feat) int conv_dungeon_feat(int newfeat) { - switch (newfeat) + feature_type *f_ptr = &f_info[newfeat]; + + if (have_flag(f_ptr->flags, FF_CONVERT)) { - case FEAT_CONVERT_FLOOR: - return floor_type[randint0(100)]; - case FEAT_CONVERT_WALL: - return fill_type[randint0(100)]; - case FEAT_CONVERT_INNER: - return feat_wall_inner; - case FEAT_CONVERT_OUTER: - return feat_wall_outer; - case FEAT_CONVERT_SOLID: - return feat_wall_solid; - case FEAT_CONVERT_STREAM1: - return d_info[dungeon_type].stream1; - case FEAT_CONVERT_STREAM2: - return d_info[dungeon_type].stream2; - default: - return newfeat; + switch (f_ptr->power) + { + case CONVERT_TYPE_FLOOR: + return floor_type[randint0(100)]; + case CONVERT_TYPE_WALL: + return fill_type[randint0(100)]; + case CONVERT_TYPE_INNER: + return feat_wall_inner; + case CONVERT_TYPE_OUTER: + return feat_wall_outer; + case CONVERT_TYPE_SOLID: + return feat_wall_solid; + case CONVERT_TYPE_STREAM1: + return d_info[dungeon_type].stream1; + case CONVERT_TYPE_STREAM2: + return d_info[dungeon_type].stream2; + default: + return newfeat; + } } + else return newfeat; } diff --git a/src/defines.h b/src/defines.h index 61ccc5924..2ddac84dd 100644 --- a/src/defines.h +++ b/src/defines.h @@ -1277,8 +1277,9 @@ #define FF_MIRROR 108 #define FF_UNPERM 109 #define FF_TELEPORTABLE 110 +#define FF_CONVERT 111 -#define FF_FLAG_MAX 111 +#define FF_FLAG_MAX 112 #define FF_FLAG_SIZE (1 + ((FF_FLAG_MAX - 1) / 32)) /* Which features are dynamic */ @@ -1312,6 +1313,16 @@ #define PATTERN_TILE_WRECKED 8 +/* Type of conversions */ +#define CONVERT_TYPE_FLOOR 0 +#define CONVERT_TYPE_WALL 1 +#define CONVERT_TYPE_INNER 2 +#define CONVERT_TYPE_OUTER 3 +#define CONVERT_TYPE_SOLID 4 +#define CONVERT_TYPE_STREAM1 5 +#define CONVERT_TYPE_STREAM2 6 + + /* * Bit flags for the *_can_enter() and monster_can_cross_terrain() */ diff --git a/src/init1.c b/src/init1.c index bb3113950..e0540b8c4 100644 --- a/src/init1.c +++ b/src/init1.c @@ -246,6 +246,7 @@ static cptr f_info_flags[] = "MIRROR", "UNPERM", "TELEPORTABLE", + "CONVERT", }; -- 2.11.0