OSDN Git Service

地形変化などに使える特殊タグを追加. これらのタグを追加することで,
authornothere <nothere@0568b783-4c39-0410-ac80-bf13821ea2a2>
Thu, 27 Nov 2003 03:47:26 +0000 (03:47 +0000)
committernothere <nothere@0568b783-4c39-0410-ac80-bf13821ea2a2>
Thu, 27 Nov 2003 03:47:26 +0000 (03:47 +0000)
FEAT_FLOORを内部でfloor_type[randint0(100)]に変換するhackを破棄.
普通にFEAT_FLOORを使えるようになる. 以下の特殊タグが使える.
*FLOOR*:   floor_type[randint0(100)]
*WALL*:    fill_type[randint0(100)]
*INNER*:   feat_wall_inner
*OUTER*:   feat_wall_outer
*SOLID*:   feat_wall_solid (現在はfeat_wall_outerと同じ)
*STREAM1*: d_info[dungeon_type].stream1
*STREAM2*: d_info[dungeon_type].stream2

なお, feat_wall_*がset_floor_and_wall()でも初期化されないので修正.

lib/edit/f_info.txt
src/cave.c
src/defines.h
src/externs.h
src/generate.c
src/init1.c
src/wild.c

index adc18b3..1dbb245 100644 (file)
@@ -66,7 +66,7 @@ E:invisible trap
 G:.:w:LIT
 M:FLOOR
 W:2
-K:DESTROYED:FLOOR
+K:DESTROYED:*FLOOR*
 K:SECRET:INVIS
 F:LOS | PROJECT | MOVE | PLACE | SECRET | TRAP | HIT_TRAP | CAN_FLY | HURT_DISI
 
@@ -77,7 +77,7 @@ J:
 E:glyph of warding
 G:;:y:LIT
 W:16
-K:DESTROYED:FLOOR
+K:DESTROYED:*FLOOR*
 F:LOS | PROJECT | MOVE | PLACE | NOTICE | REMEMBER | GLYPH | CAN_FLY |
 F:HURT_DISI
 
@@ -88,7 +88,7 @@ J:
 E:open door
 G:':U
 W:10
-K:DESTROYED:FLOOR
+K:DESTROYED:*FLOOR*
 K:CLOSE:CLOSED_DOOR
 F:LOS | PROJECT | MOVE | PLACE | NOTICE | REMEMBER | CLOSE | DOOR | CAN_FLY |
 F:HURT_DISI | TELEPORTABLE
@@ -100,7 +100,7 @@ J:
 E:broken door
 G:':u
 W:10
-K:DESTROYED:FLOOR
+K:DESTROYED:*FLOOR*
 K:CLOSE:BROKEN_DOOR
 F:LOS | PROJECT | MOVE | PLACE | DROP | NOTICE | REMEMBER | CLOSE | DOOR |
 F:CAN_FLY | HURT_DISI | TELEPORTABLE
@@ -194,7 +194,7 @@ J:
 E:trap door
 G:^:w:LIT
 W:2
-K:DESTROYED:FLOOR
+K:DESTROYED:*FLOOR*
 K:HIT_TRAP:TRAP_TRAPDOOR
 F:POWER_5 | LOS | PROJECT | MOVE | PLACE | NOTICE | REMEMBER | DISARM | TRAP |
 F:MORE | HIT_TRAP | CAN_FLY | HURT_DISI
@@ -206,7 +206,7 @@ J:
 E:pit
 G:^:s:LIT
 W:2
-K:DESTROYED:FLOOR
+K:DESTROYED:*FLOOR*
 K:HIT_TRAP:TRAP_PIT
 F:POWER_5 | LOS | PROJECT | MOVE | PLACE | NOTICE | REMEMBER | DISARM | TRAP |
 F:HIT_TRAP | CAN_FLY | HURT_DISI
@@ -219,7 +219,7 @@ E:pit
 G:^:s:LIT
 M:TRAP_PIT
 W:2
-K:DESTROYED:FLOOR
+K:DESTROYED:*FLOOR*
 K:HIT_TRAP:TRAP_SPIKED_PIT
 F:POWER_5 | LOS | PROJECT | MOVE | PLACE | NOTICE | REMEMBER | DISARM | TRAP |
 F:HIT_TRAP | CAN_FLY | HURT_DISI
@@ -232,7 +232,7 @@ E:pit
 G:^:s:LIT
 M:TRAP_PIT
 W:2
-K:DESTROYED:FLOOR
+K:DESTROYED:*FLOOR*
 K:HIT_TRAP:TRAP_POISON_PIT
 F:POWER_5 | LOS | PROJECT | MOVE | PLACE | NOTICE | REMEMBER | DISARM | TRAP |
 F:HIT_TRAP | CAN_FLY | HURT_DISI
@@ -244,8 +244,8 @@ J:
 E:evil rune
 G:^:G:LIT
 W:2
-K:DESTROYED:FLOOR
-K:HIT_TRAP:FLOOR
+K:DESTROYED:*FLOOR*
+K:HIT_TRAP:*FLOOR*
 F:POWER_5 | LOS | PROJECT | MOVE | PLACE | NOTICE | REMEMBER | DISARM | TRAP |
 F:HIT_TRAP | CAN_FLY | HURT_DISI
 
@@ -256,7 +256,7 @@ J:
 E:strange rune
 G:^:o:LIT
 W:2
-K:DESTROYED:FLOOR
+K:DESTROYED:*FLOOR*
 K:HIT_TRAP:TRAP_TELEPORT
 F:POWER_5 | LOS | PROJECT | MOVE | PLACE | NOTICE | REMEMBER | DISARM | TRAP |
 F:HIT_TRAP | CAN_FLY | HURT_DISI
@@ -268,7 +268,7 @@ J:
 E:discolored spot
 G:^:u:LIT
 W:2
-K:DESTROYED:FLOOR
+K:DESTROYED:*FLOOR*
 K:HIT_TRAP:TRAP_FIRE
 F:POWER_5 | LOS | PROJECT | MOVE | PLACE | NOTICE | REMEMBER | DISARM | TRAP |
 F:HIT_TRAP | CAN_FLY | HURT_DISI
@@ -281,7 +281,7 @@ E:discolored spot
 G:^:u:LIT
 M:TRAP_FIRE
 W:2
-K:DESTROYED:FLOOR
+K:DESTROYED:*FLOOR*
 K:HIT_TRAP:TRAP_ACID
 F:POWER_5 | LOS | PROJECT | MOVE | PLACE | NOTICE | REMEMBER | DISARM | TRAP |
 F:HIT_TRAP | CAN_FLY | HURT_DISI
@@ -293,7 +293,7 @@ J:
 E:dart trap
 G:^:r:LIT
 W:2
-K:DESTROYED:FLOOR
+K:DESTROYED:*FLOOR*
 K:HIT_TRAP:TRAP_SLOW
 F:POWER_5 | LOS | PROJECT | MOVE | PLACE | NOTICE | REMEMBER | DISARM | TRAP |
 F:HIT_TRAP | CAN_FLY | HURT_DISI
@@ -306,7 +306,7 @@ E:dart trap
 G:^:r:LIT
 M:TRAP_SLOW
 W:2
-K:DESTROYED:FLOOR
+K:DESTROYED:*FLOOR*
 K:HIT_TRAP:TRAP_LOSE_STR
 F:POWER_5 | LOS | PROJECT | MOVE | PLACE | NOTICE | REMEMBER | DISARM | TRAP |
 F:HIT_TRAP | CAN_FLY | HURT_DISI
@@ -319,7 +319,7 @@ E:dart trap
 G:^:r:LIT
 M:TRAP_SLOW
 W:2
-K:DESTROYED:FLOOR
+K:DESTROYED:*FLOOR*
 K:HIT_TRAP:TRAP_LOSE_DEX
 F:POWER_5 | LOS | PROJECT | MOVE | PLACE | NOTICE | REMEMBER | DISARM | TRAP |
 F:HIT_TRAP | CAN_FLY | HURT_DISI
@@ -332,7 +332,7 @@ E:dart trap
 G:^:r:LIT
 M:TRAP_SLOW
 W:2
-K:DESTROYED:FLOOR
+K:DESTROYED:*FLOOR*
 K:HIT_TRAP:TRAP_LOSE_CON
 F:POWER_5 | LOS | PROJECT | MOVE | PLACE | NOTICE | REMEMBER | DISARM | TRAP |
 F:HIT_TRAP | CAN_FLY | HURT_DISI
@@ -344,7 +344,7 @@ J:
 E:gas trap
 G:^:g:LIT
 W:2
-K:DESTROYED:FLOOR
+K:DESTROYED:*FLOOR*
 K:HIT_TRAP:TRAP_BLIND
 F:POWER_5 | LOS | PROJECT | MOVE | PLACE | NOTICE | REMEMBER | DISARM | TRAP |
 F:HIT_TRAP | CAN_FLY | HURT_DISI
@@ -357,7 +357,7 @@ E:gas trap
 G:^:g:LIT
 M:TRAP_BLIND
 W:2
-K:DESTROYED:FLOOR
+K:DESTROYED:*FLOOR*
 K:HIT_TRAP:TRAP_CONFUSE
 F:POWER_5 | LOS | PROJECT | MOVE | PLACE | NOTICE | REMEMBER | DISARM | TRAP |
 F:HIT_TRAP | CAN_FLY | HURT_DISI
@@ -370,7 +370,7 @@ E:gas trap
 G:^:g:LIT
 M:TRAP_BLIND
 W:2
-K:DESTROYED:FLOOR
+K:DESTROYED:*FLOOR*
 K:HIT_TRAP:TRAP_POISON
 F:POWER_5 | LOS | PROJECT | MOVE | PLACE | NOTICE | REMEMBER | DISARM | TRAP |
 F:HIT_TRAP | CAN_FLY | HURT_DISI
@@ -383,7 +383,7 @@ E:gas trap
 G:^:g:LIT
 M:TRAP_BLIND
 W:2
-K:DESTROYED:FLOOR
+K:DESTROYED:*FLOOR*
 K:HIT_TRAP:TRAP_SLEEP
 F:POWER_5 | LOS | PROJECT | MOVE | PLACE | NOTICE | REMEMBER | DISARM | TRAP |
 F:HIT_TRAP | CAN_FLY | HURT_DISI
@@ -395,7 +395,7 @@ J:
 E:door
 G:+:U
 W:10
-K:DESTROYED:FLOOR
+K:DESTROYED:*FLOOR*
 K:OPEN:OPEN_DOOR
 K:BASH:BROKEN_DOOR
 K:SPIKE:JAMMED_DOOR_1
@@ -410,7 +410,7 @@ E:locked door
 G:+:U
 M:CLOSED_DOOR
 W:10
-K:DESTROYED:FLOOR
+K:DESTROYED:*FLOOR*
 K:OPEN:OPEN_DOOR
 K:BASH:BROKEN_DOOR
 K:SPIKE:JAMMED_DOOR_2
@@ -426,7 +426,7 @@ E:locked door
 G:+:U
 M:CLOSED_DOOR
 W:10
-K:DESTROYED:FLOOR
+K:DESTROYED:*FLOOR*
 K:OPEN:OPEN_DOOR
 K:BASH:BROKEN_DOOR
 K:SPIKE:JAMMED_DOOR_3
@@ -442,7 +442,7 @@ E:locked door
 G:+:U
 M:CLOSED_DOOR
 W:10
-K:DESTROYED:FLOOR
+K:DESTROYED:*FLOOR*
 K:OPEN:OPEN_DOOR
 K:BASH:BROKEN_DOOR
 K:SPIKE:JAMMED_DOOR_4
@@ -458,7 +458,7 @@ E:locked door
 G:+:U
 M:CLOSED_DOOR
 W:10
-K:DESTROYED:FLOOR
+K:DESTROYED:*FLOOR*
 K:OPEN:OPEN_DOOR
 K:BASH:BROKEN_DOOR
 K:SPIKE:JAMMED_DOOR_5
@@ -474,7 +474,7 @@ E:locked door
 G:+:U
 M:CLOSED_DOOR
 W:10
-K:DESTROYED:FLOOR
+K:DESTROYED:*FLOOR*
 K:OPEN:OPEN_DOOR
 K:BASH:BROKEN_DOOR
 K:SPIKE:JAMMED_DOOR_6
@@ -490,7 +490,7 @@ E:locked door
 G:+:U
 M:CLOSED_DOOR
 W:10
-K:DESTROYED:FLOOR
+K:DESTROYED:*FLOOR*
 K:OPEN:OPEN_DOOR
 K:BASH:BROKEN_DOOR
 K:SPIKE:JAMMED_DOOR_7
@@ -506,7 +506,7 @@ E:locked door
 G:+:U
 M:CLOSED_DOOR
 W:10
-K:DESTROYED:FLOOR
+K:DESTROYED:*FLOOR*
 K:OPEN:OPEN_DOOR
 K:BASH:BROKEN_DOOR
 K:SPIKE:JAMMED_DOOR_7
@@ -522,7 +522,7 @@ E:jammed door
 G:+:U
 M:CLOSED_DOOR
 W:10
-K:DESTROYED:FLOOR
+K:DESTROYED:*FLOOR*
 K:OPEN:OPEN_DOOR
 K:BASH:BROKEN_DOOR
 K:SPIKE:JAMMED_DOOR_1
@@ -537,7 +537,7 @@ E:jammed door
 G:+:U
 M:CLOSED_DOOR
 W:10
-K:DESTROYED:FLOOR
+K:DESTROYED:*FLOOR*
 K:OPEN:OPEN_DOOR
 K:BASH:BROKEN_DOOR
 K:SPIKE:JAMMED_DOOR_2
@@ -552,7 +552,7 @@ E:jammed door
 G:+:U
 M:CLOSED_DOOR
 W:10
-K:DESTROYED:FLOOR
+K:DESTROYED:*FLOOR*
 K:OPEN:OPEN_DOOR
 K:BASH:BROKEN_DOOR
 K:SPIKE:JAMMED_DOOR_3
@@ -567,7 +567,7 @@ E:jammed door
 G:+:U
 M:CLOSED_DOOR
 W:10
-K:DESTROYED:FLOOR
+K:DESTROYED:*FLOOR*
 K:OPEN:OPEN_DOOR
 K:BASH:BROKEN_DOOR
 K:SPIKE:JAMMED_DOOR_4
@@ -582,7 +582,7 @@ E:jammed door
 G:+:U
 M:CLOSED_DOOR
 W:10
-K:DESTROYED:FLOOR
+K:DESTROYED:*FLOOR*
 K:OPEN:OPEN_DOOR
 K:BASH:BROKEN_DOOR
 K:SPIKE:JAMMED_DOOR_5
@@ -597,7 +597,7 @@ E:jammed door
 G:+:U
 M:CLOSED_DOOR
 W:10
-K:DESTROYED:FLOOR
+K:DESTROYED:*FLOOR*
 K:OPEN:OPEN_DOOR
 K:BASH:BROKEN_DOOR
 K:SPIKE:JAMMED_DOOR_6
@@ -612,7 +612,7 @@ E:jammed door
 G:+:U
 M:CLOSED_DOOR
 W:10
-K:DESTROYED:FLOOR
+K:DESTROYED:*FLOOR*
 K:OPEN:OPEN_DOOR
 K:BASH:BROKEN_DOOR
 K:SPIKE:JAMMED_DOOR_7
@@ -627,7 +627,7 @@ E:jammed door
 G:+:U
 M:CLOSED_DOOR
 W:10
-K:DESTROYED:FLOOR
+K:DESTROYED:*FLOOR*
 K:OPEN:OPEN_DOOR
 K:BASH:BROKEN_DOOR
 K:SPIKE:JAMMED_DOOR_7
@@ -642,7 +642,7 @@ E:secret door
 G:#:w
 M:GRANITE
 W:10
-K:DESTROYED:FLOOR
+K:DESTROYED:*FLOOR*
 K:SECRET:CLOSED_DOOR
 K:OPEN:OPEN_DOOR
 K:BASH:BROKEN_DOOR
@@ -656,7 +656,7 @@ J:
 E:pile of rubble
 G:::w:LIT
 W:2
-K:DESTROYED:FLOOR
+K:DESTROYED:*FLOOR*
 F:POWER_10 | REMEMBER | TUNNEL | HAS_ITEM | HURT_ROCK | CAN_PASS | CAN_DIG |
 F:HURT_DISI
 
@@ -667,7 +667,7 @@ J:
 E:magma vein
 G:%:s:LIT
 W:2
-K:DESTROYED:FLOOR
+K:DESTROYED:*FLOOR*
 K:MAY_HAVE_GOLD:MAGMA_TREASURE
 F:POWER_10 | REMEMBER | TUNNEL | MAY_HAVE_GOLD | WALL | HURT_ROCK | CAN_PASS |
 F:HURT_DISI
@@ -679,7 +679,7 @@ J:
 E:quartz vein
 G:%:w:LIT
 W:2
-K:DESTROYED:FLOOR
+K:DESTROYED:*FLOOR*
 K:MAY_HAVE_GOLD:QUARTZ_TREASURE
 F:POWER_20 | REMEMBER | TUNNEL | MAY_HAVE_GOLD | WALL | HURT_ROCK | CAN_PASS |
 F:HURT_DISI
@@ -692,7 +692,7 @@ E:magma vein with hidden treasure
 G:%:s:LIT
 M:MAGMA_VEIN
 W:2
-K:DESTROYED:FLOOR
+K:DESTROYED:*FLOOR*
 K:SECRET:MAGMA_TREASURE
 F:POWER_10 | SECRET | REMEMBER | TUNNEL | HAS_GOLD | WALL | HURT_ROCK |
 F:CAN_PASS | HURT_DISI
@@ -705,7 +705,7 @@ E:quartz vein hidden treasure
 G:%:w:LIT
 M:QUARTZ_VEIN
 W:2
-K:DESTROYED:FLOOR
+K:DESTROYED:*FLOOR*
 K:SECRET:QUARTZ_TREASURE
 F:POWER_20 | SECRET | REMEMBER | TUNNEL | HAS_GOLD | WALL | HURT_ROCK |
 F:CAN_PASS | HURT_DISI
@@ -717,7 +717,7 @@ J:
 E:magma vein with treasure
 G:*:o:LIT
 W:2
-K:DESTROYED:FLOOR
+K:DESTROYED:*FLOOR*
 K:ENSECRET:MAGMA_HIDDEN
 F:POWER_20 | REMEMBER | TUNNEL | HAS_GOLD | WALL | HURT_ROCK | CAN_PASS |
 F:HURT_DISI
@@ -729,7 +729,7 @@ J:
 E:quartz vein with treasure
 G:*:o:LIT
 W:2
-K:DESTROYED:FLOOR
+K:DESTROYED:*FLOOR*
 K:ENSECRET:QUARTZ_HIDDEN
 F:POWER_20 | REMEMBER | TUNNEL | HAS_GOLD | WALL | HURT_ROCK | CAN_PASS |
 F:HURT_DISI
@@ -741,7 +741,7 @@ J:
 E:granite wall
 G:#:w:LIT
 W:2
-K:DESTROYED:FLOOR
+K:DESTROYED:*FLOOR*
 F:POWER_40 | REMEMBER | TUNNEL | WALL | HURT_ROCK | CAN_PASS | HURT_DISI
 
 # 0x39 --> granite wall -- inner
@@ -752,7 +752,7 @@ E:granite wall
 G:#:w:LIT
 M:GRANITE
 W:2
-K:DESTROYED:FLOOR
+K:DESTROYED:*FLOOR*
 F:POWER_40 | REMEMBER | TUNNEL | WALL | HURT_ROCK | CAN_PASS |
 F:HURT_DISI
 
@@ -764,7 +764,7 @@ E:granite wall
 G:#:w:LIT
 M:GRANITE
 W:2
-K:DESTROYED:FLOOR
+K:DESTROYED:*FLOOR*
 F:POWER_40 | REMEMBER | TUNNEL | WALL | HURT_ROCK | CAN_PASS |
 F:HURT_DISI
 
@@ -776,7 +776,7 @@ E:granite wall
 G:#:w:LIT
 M:GRANITE
 W:2
-K:DESTROYED:FLOOR
+K:DESTROYED:*FLOOR*
 F:POWER_40 | REMEMBER | TUNNEL | WALL | HURT_ROCK | CAN_PASS |
 F:HURT_DISI
 
@@ -828,7 +828,7 @@ J:
 E:explosive rune
 G:;:R:LIT
 W:16
-K:DESTROYED:FLOOR
+K:DESTROYED:*FLOOR*
 F:LOS | PROJECT | MOVE | PLACE | NOTICE | REMEMBER | CAN_FLY | MINOR_GLYPH |
 F:HURT_DISI
 
@@ -1054,8 +1054,8 @@ J:
 E:compact rune
 G:^:D:LIT
 W:2
-K:DESTROYED:FLOOR
-K:HIT_TRAP:FLOOR
+K:DESTROYED:*FLOOR*
+K:HIT_TRAP:*FLOOR*
 F:POWER_5 | LOS | PROJECT | MOVE | PLACE | NOTICE | REMEMBER | DISARM | TRAP |
 F:HIT_TRAP | CAN_FLY | HURT_DISI
 
@@ -1064,7 +1064,7 @@ J:
 E:alarm
 G:^:R:LIT
 W:2
-K:DESTROYED:FLOOR
+K:DESTROYED:*FLOOR*
 K:HIT_TRAP:TRAP_ALARM
 F:POWER_5 | LOS | PROJECT | MOVE | PLACE | NOTICE | REMEMBER | DISARM | TRAP |
 F:HIT_TRAP | CAN_FLY | HURT_DISI
@@ -1074,7 +1074,7 @@ J:
 E:wall opeing trap
 G:^:w:LIT
 W:10
-K:DESTROYED:FLOOR
+K:DESTROYED:*FLOOR*
 K:HIT_TRAP:TRAP_OPEN
 F:POWER_100 | LOS | PROJECT | MOVE | PLACE | NOTICE | REMEMBER | DISARM |
 F:TRAP | HIT_TRAP | CAN_FLY | HURT_DISI
@@ -1119,7 +1119,7 @@ J:
 E:mountain chain
 G:^:o:LIT
 W:5
-K:UNPERM:GRANITE
+K:UNPERM:*INNER*
 F:REMEMBER | TUNNEL | WALL | PERMANENT | MOUNTAIN | TELEPORTABLE |
 F:PLACE | CAN_FLY | AVOID_RUN
 
@@ -1129,7 +1129,7 @@ E:mountain chain
 G:^:o:LIT
 M:MOUNTAIN
 W:5
-K:UNPERM:GRANITE
+K:UNPERM:*INNER*
 F:REMEMBER | TUNNEL | WALL | PERMANENT
 
 N:128:BUILDING_0
@@ -1432,8 +1432,8 @@ J:
 E:Armageddon trap
 G:^:v:LIT
 W:10
-K:DESTROYED:FLOOR
-K:HIT_TRAP:FLOOR
+K:DESTROYED:*FLOOR*
+K:HIT_TRAP:*FLOOR*
 F:POWER_100 | LOS | PROJECT | MOVE | PLACE | NOTICE | REMEMBER | DISARM |
 F:TRAP | HIT_TRAP | CAN_FLY | HURT_DISI
 
@@ -1442,7 +1442,7 @@ J:
 E:Piranha trap
 G:^:b:LIT
 W:10
-K:DESTROYED:FLOOR
-K:HIT_TRAP:FLOOR
+K:DESTROYED:*FLOOR*
+K:HIT_TRAP:*FLOOR*
 F:POWER_100 | LOS | PROJECT | MOVE | PLACE | NOTICE | REMEMBER | DISARM |
 F:TRAP | HIT_TRAP | CAN_FLY | HURT_DISI
index a76e54b..8a60a53 100644 (file)
@@ -4464,6 +4464,30 @@ void cave_set_feat(int y, int x, int feat)
 }
 
 
+int conv_dungeon_feat(int newfeat)
+{
+       switch (newfeat)
+       {
+       case FEAT_DUNGEON_FLOOR:
+               return floor_type[randint0(100)];
+       case FEAT_DUNGEON_WALL:
+               return fill_type[randint0(100)];
+       case FEAT_DUNGEON_INNER:
+               return feat_wall_inner;
+       case FEAT_DUNGEON_OUTER:
+               return feat_wall_outer;
+       case FEAT_DUNGEON_SOLID:
+               return feat_wall_solid;
+       case FEAT_DUNGEON_STREAM1:
+               return d_info[dungeon_type].stream1;
+       case FEAT_DUNGEON_STREAM2:
+               return d_info[dungeon_type].stream2;
+       default:
+               return newfeat;
+       }
+}
+
+
 /*
  * Take a feature, determine what that feature becomes
  * through applying the given action.
@@ -4471,26 +4495,17 @@ void cave_set_feat(int y, int x, int feat)
 int feat_state(int feat, int action)
 {
        feature_type *f_ptr = &f_info[feat];
-       int newfeat, i;
+       int i;
 
        /* Get the new feature */
        for (i = 0; i < MAX_FEAT_STATES; i++)
        {
-               if (f_ptr->state[i].action == action)
-               {
-                       newfeat = f_ptr->state[i].result;
-                       return (newfeat == FEAT_FLOOR) ? floor_type[randint0(100)] : newfeat;
-               }
+               if (f_ptr->state[i].action == action) return conv_dungeon_feat(f_ptr->state[i].result);
        }
 
        if (have_flag(f_ptr->flags, FF_PERMANENT)) return feat;
 
-       if (feature_action_flags[action] & FAF_DESTROY)
-       {
-               newfeat = f_ptr->destroyed;
-               return (newfeat == FEAT_FLOOR) ? floor_type[randint0(100)] : newfeat;
-       }
-       else return feat;
+       return (feature_action_flags[action] & FAF_DESTROY) ? conv_dungeon_feat(f_ptr->destroyed) : feat;
 }
 
 /*
index a4812d9..90b53c4 100644 (file)
 #define FEAT_TRAP_ARMAGEDDON    0xc5
 #define FEAT_TRAP_PIRANHA       0xc6
 
+/* Hack -- Special fake terrain for f_info */
+#define FEAT_DUNGEON_FLOOR      -1
+#define FEAT_DUNGEON_WALL       -2
+#define FEAT_DUNGEON_INNER      -3
+#define FEAT_DUNGEON_OUTER      -4
+#define FEAT_DUNGEON_SOLID      -5
+#define FEAT_DUNGEON_STREAM1    -6
+#define FEAT_DUNGEON_STREAM2    -7
+
 /*
  * Wilderness terrains
  */
index 1d2f270..ab01dfa 100644 (file)
@@ -630,6 +630,7 @@ extern void map_area(int range);
 extern void wiz_lite(bool ninja);
 extern void wiz_dark(void);
 extern void cave_set_feat(int y, int x, int feat);
+extern int conv_dungeon_feat(int newfeat);
 extern int feat_state(int feat, int action);
 extern void cave_alter_feat(int y, int x, int action);
 extern void remove_mirror(int y, int x);
index 302d329..50af27e 100644 (file)
@@ -619,14 +619,9 @@ static bool cave_gen(void)
        /* Fill the arrays of floors and walls in the good proportions */
        set_floor_and_wall(dungeon_type);
 
-
        /* Prepare allocation table */
        get_mon_num_prep(get_monster_hook(), NULL);
 
-       feat_wall_outer = d_info[dungeon_type].outer_wall;
-       feat_wall_inner = d_info[dungeon_type].inner_wall;
-       feat_wall_solid = d_info[dungeon_type].outer_wall;
-
        /* Randomize the dungeon creation values */
        dun_tun_rnd = rand_range(DUN_TUN_RND_MIN, DUN_TUN_RND_MAX);
        dun_tun_chg = rand_range(DUN_TUN_CHG_MIN, DUN_TUN_CHG_MAX);
index ab8caf7..f063877 100644 (file)
@@ -250,6 +250,22 @@ static cptr f_info_flags[] =
 
 
 /*
+ * Special feature info tags
+ */
+static cptr f_info_special_tags[] =
+{
+       "*FLOOR*",
+       "*WALL*",
+       "*INNER*",
+       "*OUTER*",
+       "*SOLID*",
+       "*STREAM1*",
+       "*STREAM2*",
+       NULL,
+};
+
+
+/*
  * Monster race flags
  */
 static cptr r_info_flags1[] =
@@ -1718,6 +1734,16 @@ s16b f_tag_to_index(cptr str)
                }
        }
 
+       /* Search for special index corresponding to this fake tag */
+       for (i = 0; f_info_special_tags[i]; i++)
+       {
+               if (streq(f_info_special_tags[i], str))
+               {
+                       /* Return the special index */
+                       return (s16b)(FEAT_DUNGEON_FLOOR - i);
+               }
+       }
+
        /* Not found */
        return 0;
 }
@@ -1744,6 +1770,17 @@ static void search_real_feat(s16b *feat)
                }
        }
 
+       /* Search for special index corresponding to this fake tag */
+       for (i = 0; f_info_special_tags[i]; i++)
+       {
+               if (streq(f_info_special_tags[i], f_tag + (-(*feat))))
+               {
+                       /* Record special index */
+                       *feat = (s16b)(FEAT_DUNGEON_FLOOR - i);
+                       return;
+               }
+       }
+
        /* Undefined tag */
 #ifdef JP
        msg_format("̤ÄêµÁ¤Î¥¿¥° '%s'¡£", f_tag + (-(*feat)));
index a97918f..8f9abcd 100644 (file)
@@ -47,6 +47,10 @@ void set_floor_and_wall(byte type)
 
        set_floor_and_wall_aux(floor_type, d_ptr->floor);
        set_floor_and_wall_aux(fill_type, d_ptr->fill);
+
+       feat_wall_outer = d_ptr->outer_wall;
+       feat_wall_inner = d_ptr->inner_wall;
+       feat_wall_solid = d_ptr->outer_wall;
 }