Hengband  2.2.1
feature.h
[詳解]
1 #pragma once
2 
3 /*
4  * Number of feats we change to (Excluding default). Used in f_info.txt.
5  */
6 #define MAX_FEAT_STATES 8
7 
8  /*
9  * Feature flags - should be used instead of feature indexes unless generating.
10  * Originally from UnAngband, and modified into TR-like style in Hengband
11  */
12 
13 #define FF_LOS 0 /*!< 視界が通る地形である */
14 #define FF_PROJECT 1 /*!< 飛び道具が通過できる地形である */
15 #define FF_MOVE 2 /*!< 移動可能な地形である */
16 #define FF_PLACE 3 /*!< モンスター配置をしても良い地形である(cave_empty_bold/cave_empty_gridで利用) */
17 #define FF_DROP 4 /*!< アイテムを落としてよい地形である */
18 #define FF_SECRET 5 /*!< 隠し扉やトラップが潜んでいる地形である */
19 #define FF_NOTICE 6 /*!< 何か興味を引くものがある地形である(シフトキー+方向で走行中の時に止まる基準) */
20 #define FF_REMEMBER 7 /*!< 常に記憶対象となる地形である(記憶喪失時に忘れたりしなくなる) */
21 #define FF_OPEN 8 /*!< 開けるコマンドの対象となる地形である */
22 #define FF_CLOSE 9 /*!< 閉じるコマンドの対象となる地形である */
23 #define FF_BASH 10 /*!< 体当たりコマンドの対象となる地形である */
24 #define FF_SPIKE 11 /*!< くさびを打つコマンドの対象となる地形である */
25 #define FF_DISARM 12 /*!< 解除コマンドの対象となる地形である */
26 #define FF_STORE 13 /*!< 店舗の入口となる地形である */
27 #define FF_TUNNEL 14 /*!< 魔王変化などで掘り進められる地形である */
28 #define FF_MAY_HAVE_GOLD 15 /*!< 何か財宝を隠した可能性のある地形である?(f_infoに使用している地形なし) */
29 #define FF_HAS_GOLD 16 /*!< 財宝を含んだ地形である */
30 #define FF_HAS_ITEM 17 /*!< アイテムを含んだ地形である */
31 #define FF_DOOR 18 /*!< ドアのある地形である */
32 #define FF_TRAP 19 /*!< トラップのある地形である */
33 #define FF_STAIRS 20 /*!< 階段のある地形である */
34 #define FF_GLYPH 21 /*!< 守りのルーンが張られた地形である */
35 #define FF_LESS 22 /*!< 階上に通じる地形である */
36 #define FF_MORE 23 /*!< 階下に通じる地形である */
37 #define FF_AVOID_RUN 24 /*!< 自動移動機能時に障害として迂回すべき地形である */
38 #define FF_FLOOR 25 /*!< 床のある地形である */
39 #define FF_WALL 26 /*!< 壁のある地形である */
40 #define FF_PERMANENT 27 /*!< 絶対に破壊できない永久地形である */
41  /* #define FF_XXX00 28 未定義 */
42  /* #define FF_XXX01 29 未定義 */
43  /* #define FF_XXX02 30 未定義 */
44 #define FF_HIT_TRAP 31 /*!< トラップのある地形である(TRAPと常に重複している?) */
45 /* #define FF_BRIDGE 32 未使用 */
46 /* #define FF_RIVER 33 未使用 */
47 /* #define FF_LAKE 34 未使用 */
48 /* #define FF_BRIDGED 35 未使用 */
49 /* #define FF_COVERED 36 未使用 */
50 #define FF_GLOW 37 /*!< 常に光っている地形である */
51 #define FF_ENSECRET 38 /*!< 不明(f_info.txt上で利用している地形がない) */
52 #define FF_WATER 39 /*!< 水のある地形である */
53 #define FF_LAVA 40 /*!< 溶岩のある地形である */
54 #define FF_SHALLOW 41 /*!< 浅い地形である */
55 #define FF_DEEP 42 /*!< 深い地形である */
56 #define FF_POISON_PUDDLE 43 /*!< 毒溜まりがある */
57 #define FF_HURT_ROCK 44 /*!< 岩石溶解の対象となる地形である */
58 /* #define FF_HURT_FIRE 45 */ /*!< 未使用 */
59 /* #define FF_HURT_COLD 46 */ /*!< 未使用 */
60 /* #define FF_HURT_ACID 47 */ /*!< 未使用 */
61 #define FF_COLD_PUDDLE 48 /*!< 冷気溜まりがある */
62 #define FF_ACID_PUDDLE 49 /*!< 酸溜まりがある */
63 /* #define FF_OIL 50 */ /*!< 未使用 */
64 #define FF_ELEC_PUDDLE 51 /*!< 接地部が帯電している */
65 /* #define FF_CAN_CLIMB 52 */ /*!< 未使用 */
66 #define FF_CAN_FLY 53 /*!< 飛行可能な地形である */
67 #define FF_CAN_SWIM 54 /*!< 泳ぐことが可能な地形である */
68 #define FF_CAN_PASS 55 /*!< 通過可能な地形である */
69 /* #define FF_CAN_OOZE 56 */ /*!< 未使用 */
70 #define FF_CAN_DIG 57 /*!< 掘削コマンドの対象となる地形である */
71 /* #define FF_HIDE_ITEM 58 未使用 */
72 /* #define FF_HIDE_SNEAK 59 未使用 */
73 /* #define FF_HIDE_SWIM 60 未使用 */
74 /* #define FF_HIDE_DIG 61 未使用 */
75 /* #define FF_KILL_HUGE 62 未使用 */
76 /* #define FF_KILL_MOVE 63 未使用 */
77 /* #define FF_PICK_TRAP 64 未使用 */
78 /* #define FF_PICK_DOOR 65 未使用 */
79 /* #define FF_ALLOC 66 未使用 */
80 /* #define FF_CHEST 67 未使用 */
81 /* #define FF_DROP_1D2 68 未使用 */
82 /* #define FF_DROP_2D2 69 未使用 */
83 /* #define FF_DROP_GOOD 70 未使用 */
84 /* #define FF_DROP_GREAT 71 未使用 */
85 /* #define FF_HURT_POIS 72 未使用 */
86 /* #define FF_HURT_ELEC 73 未使用 */
87 /* #define FF_HURT_WATER 74 未使用 */
88 /* #define FF_HURT_BWATER 75 未使用 */
89 /* #define FF_USE_FEAT 76 未使用 */
90 /* #define FF_GET_FEAT 77 未使用 */
91 /* #define FF_GROUND 78 未使用 */
92 /* #define FF_OUTSIDE 79 未使用 */
93 /* #define FF_EASY_HIDE 80 未使用 */
94 /* #define FF_EASY_CLIMB 81 未使用 */
95 /* #define FF_MUST_CLIMB 82 未使用 */
96 #define FF_TREE 83 /*!< 木の生えた地形である */
97 /* #define FF_NEED_TREE 84 未使用 */
98 /* #define FF_BLOOD 85 未使用 */
99 /* #define FF_DUST 86 未使用 */
100 /* #define FF_SLIME 87 未使用 */
101 #define FF_PLANT 88 /*!< 植物の生えた地形である */
102 /* #define FF_XXX2 89 未定義 */
103 /* #define FF_INSTANT 90 未使用 */
104 /* #define FF_EXPLODE 91 未使用 */
105 /* #define FF_TIMED 92 未使用 */
106 /* #define FF_ERUPT 93 未使用 */
107 /* #define FF_STRIKE 94 未使用 */
108 /* #define FF_SPREAD 95 未使用 */
109 #define FF_SPECIAL 96 /*!< クエストやダンジョンに関わる特別な地形である */
110 #define FF_HURT_DISI 97 /*!< 分解属性の対象となる地形である */
111 #define FF_QUEST_ENTER 98 /*!< クエストの入り口である */
112 #define FF_QUEST_EXIT 99 /*!< クエストの出口である */
113 #define FF_QUEST 100 /*!< クエストに関する地形である */
114 #define FF_SHAFT 101 /*!< 坑道である。(2階層移動する階段である) */
115 #define FF_MOUNTAIN 102 /*!< ダンジョンの山地形である */
116 #define FF_BLDG 103 /*!< 施設の入り口である */
117 #define FF_MINOR_GLYPH 104 /*!< 爆発のルーンのある地形である */
118 #define FF_PATTERN 105 /*!< パターンのある地形である */
119 #define FF_TOWN 106 /*!< 広域マップ用の街がある地形である */
120 #define FF_ENTRANCE 107 /*!< 広域マップ用のダンジョンがある地形である */
121 #define FF_MIRROR 108 /*!< 鏡使いの鏡が張られた地形である */
122 #define FF_UNPERM 109 /*!< 破壊不能な地形である(K:フラグ向け?) */
123 #define FF_TELEPORTABLE 110 /*!< テレポート先の対象となる地形である */
124 #define FF_CONVERT 111 /*!< 地形生成処理中の疑似フラグ */
125 #define FF_GLASS 112 /*!< ガラス製の地形である */
126 
127 #define FF_FLAG_MAX 113
128 #define FF_FLAG_SIZE (1 + ((FF_FLAG_MAX - 1) / 32))
129 
130 
131 /* Lighting levels of features' attr and char */
132 
133 #define F_LIT_STANDARD 0 /* Standard */
134 #define F_LIT_LITE 1 /* Brightly lit */
135 #define F_LIT_DARK 2 /* Darkened */
136 
137 #define F_LIT_NS_BEGIN 1 /* Nonstandard */
138 #define F_LIT_MAX 3
139 
140 
141 /*!
142  * @struct feature_state
143  * @brief 地形状態変化指定構造体 / Feature state structure
144  */
146 
148 {
149  FF_FLAGS_IDX action; /*!< 変化条件をFF_*のIDで指定 / Action (FF_*) */
150  STR_OFFSET result_tag; /*!< 変化先ID / Result (f_info ID) */
151  FEAT_IDX result; /*!< 変化先ID / Result (f_info ID) */
152 };
153 
154 typedef struct
155 {
156  FEAT_IDX feat; /* Feature tile */
157  PERCENTAGE percent; /* Chance of type */
158 }
159 feat_prob;
160 
161 /*!
162  * @struct feature_type
163  * @brief 地形情報の構造体 / Information about terrain "features"
164  */
165 
166 typedef struct feature_type feature_type;
167 
169 {
170  STR_OFFSET name; /*!< 地形名参照のためのネームバッファオフセット値 / Name (offset) */
171  STR_OFFSET text; /*!< 地形説明参照のためのネームバッファオフセット値 / Text (offset) */
172  STR_OFFSET tag; /*!< 地形特性タグ参照のためのネームバッファオフセット値 / Tag (offset) */
173 
176 
177  FEAT_IDX mimic; /*!< 未確定時の外形地形ID / Feature to mimic */
178  FEAT_IDX destroyed; /*!< *破壊*に巻き込まれた時の地形移行先(未実装?) / Default destroyed state */
179 
180  BIT_FLAGS flags[FF_FLAG_SIZE]; /*!< 地形の基本特性ビット配列 / Flags */
181 
182  FEAT_PRIORITY priority; /*!< 縮小表示で省略する際の表示優先度 / Map priority */
183 
184  feature_state state[MAX_FEAT_STATES]; /*!< feature_state テーブル */
185 
186  FEAT_SUBTYPE subtype; /*!< 副特性値 */
187  FEAT_POWER power; /*!< 地形強度 */
188 
189  TERM_COLOR d_attr[F_LIT_MAX]; /*!< デフォルトの地形シンボルカラー / Default feature attribute */
190  SYMBOL_CODE d_char[F_LIT_MAX]; /*!< デフォルトの地形シンボルアルファベット / Default feature character */
191 
192  TERM_COLOR x_attr[F_LIT_MAX]; /*!< 設定変更後の地形シンボルカラー / Desired feature attribute */
193  SYMBOL_CODE x_char[F_LIT_MAX]; /*!< 設定変更後の地形シンボルアルファベット / Desired feature character */
194 };
195 
196 extern FEAT_IDX max_f_idx;
197 extern feature_type *f_info;
198 extern char *f_name;
199 extern char *f_tag;
200 
201 extern bool is_closed_door(FEAT_IDX feat);
202 extern bool is_trap(FEAT_IDX feat);
203 
204 /*** Terrain feature variables ***/
205 extern FEAT_IDX feat_none;
206 extern FEAT_IDX feat_floor;
207 extern FEAT_IDX feat_glyph;
209 extern FEAT_IDX feat_mirror;
210 extern FEAT_IDX feat_up_stair;
212 extern FEAT_IDX feat_entrance;
213 extern FEAT_IDX feat_trap_open;
216 extern FEAT_IDX feat_rubble;
219 extern FEAT_IDX feat_granite;
220 extern FEAT_IDX feat_permanent;
225 extern FEAT_IDX feat_pattern_1;
226 extern FEAT_IDX feat_pattern_2;
227 extern FEAT_IDX feat_pattern_3;
228 extern FEAT_IDX feat_pattern_4;
234 extern FEAT_IDX feat_town;
237 extern FEAT_IDX feat_deep_lava;
240 extern FEAT_IDX feat_cold_zone;
247 extern FEAT_IDX feat_dirt;
248 extern FEAT_IDX feat_grass;
249 extern FEAT_IDX feat_flower;
250 extern FEAT_IDX feat_brake;
251 extern FEAT_IDX feat_tree;
252 extern FEAT_IDX feat_mountain;
253 extern FEAT_IDX feat_swamp;
255 
259 extern FEAT_IDX feat_ground_type[100], feat_wall_type[100];
FEAT_IDX feat_pattern_1
Definition: feature.c:54
feature_type * f_info
Definition: feature.c:9
FEAT_IDX feat_flower
Definition: feature.c:82
FEAT_IDX feat_glass_floor
Definition: feature.c:46
STR_OFFSET destroyed_tag
Definition: feature.h:175
STR_OFFSET tag
地形特性タグ参照のためのネームバッファオフセット値 / Tag (offset)
Definition: feature.h:172
STR_OFFSET name
地形名参照のためのネームバッファオフセット値 / Name (offset)
Definition: feature.h:170
FEAT_IDX feat_trap_open
Definition: feature.c:30
FEAT_IDX feat_deep_acid_puddle
Definition: feature.c:76
STR_OFFSET text
地形説明参照のためのネームバッファオフセット値 / Text (offset)
Definition: feature.h:171
FEAT_IDX feat_tree
Definition: feature.c:84
FEAT_IDX feat_pattern_corrupted
Definition: feature.c:61
FEAT_IDX feat_deep_poisonous_puddle
Definition: feature.c:78
FEAT_IDX feat_pattern_start
Definition: feature.c:53
FEAT_POWER power
地形強度
Definition: feature.h:187
FEAT_IDX feat_none
Definition: feature.c:14
FEAT_IDX feat_mountain
Definition: feature.c:85
FEAT_IDX feat_pattern_4
Definition: feature.c:57
FEAT_IDX feat_down_stair
Definition: feature.c:26
FEAT_IDX feat_permanent_glass_wall
Definition: feature.c:50
BIT_FLAGS flags[FF_FLAG_SIZE]
地形の基本特性ビット配列 / Flags
Definition: feature.h:180
FEAT_IDX feat_swamp
Definition: feature.c:86
FEAT_IDX feat_glyph
Definition: feature.c:20
FEAT_IDX feat_pattern_exit
Definition: feature.c:60
FEAT_IDX feat_entrance
Definition: feature.c:27
#define FF_FLAG_SIZE
Definition: feature.h:128
FEAT_IDX feat_trap_armageddon
Definition: feature.c:31
#define MAX_FEAT_STATES
Definition: feature.h:6
s16b FEAT_PRIORITY
地形の縮小表示優先順位
Definition: h-type.h:262
FEAT_IDX feat_town
Definition: feature.c:65
FEAT_IDX max_f_idx
Definition: feature.c:99
FEAT_IDX feat_wall_solid
Definition: feature.c:93
TERM_COLOR x_attr[F_LIT_MAX]
設定変更後の地形シンボルカラー / Desired feature attribute
Definition: feature.h:192
PERCENTAGE percent
Definition: feature.h:157
FEAT_IDX feat_explosive_rune
Definition: feature.c:21
FEAT_IDX feat_wall_type[100]
Definition: feature.c:94
地形情報の構造体 / Information about terrain "features"
Definition: feature.h:168
FEAT_PRIORITY priority
縮小表示で省略する際の表示優先度 / Map priority
Definition: feature.h:182
FEAT_IDX feat_floor
Definition: feature.c:17
FEAT_IDX destroyed
*破壊*に巻き込まれた時の地形移行先(未実装?) / Default destroyed state
Definition: feature.h:178
char * f_tag
Definition: feature.c:11
FEAT_IDX feat_heavy_electrical_zone
Definition: feature.c:74
FEAT_IDX feat_cold_zone
Definition: feature.c:73
FEAT_IDX feat_shallow_poisonous_puddle
Definition: feature.c:79
u32b BIT_FLAGS
32ビットのフラグ配列の型定義
Definition: h-type.h:225
FEAT_IDX feat_dirt
Definition: feature.c:80
FEAT_IDX mimic
未確定時の外形地形ID / Feature to mimic
Definition: feature.h:177
byte FEAT_SUBTYPE
地形情報の副値 (トラップ種別/パターン種別/店舗種別)
Definition: h-type.h:150
feature_state state[MAX_FEAT_STATES]
feature_state テーブル
Definition: feature.h:184
FEAT_IDX feat_electrical_zone
Definition: feature.c:75
FEAT_IDX feat_pattern_end
Definition: feature.c:58
FEAT_IDX feat_deep_water
Definition: feature.c:68
char SYMBOL_CODE
キャラの文字の型定義
Definition: h-type.h:238
Definition: feature.h:154
FEAT_IDX feat_grass
Definition: feature.c:81
TERM_COLOR d_attr[F_LIT_MAX]
デフォルトの地形シンボルカラー / Default feature attribute
Definition: feature.h:189
u32b STR_OFFSET
テキストオフセットの型定義
Definition: h-type.h:212
s32b PERCENTAGE
ゲーム中のパーセント表記の型定義(/100倍)
Definition: h-type.h:222
FEAT_IDX feat_trap_piranha
Definition: feature.c:32
byte TERM_COLOR
テキスト表示色の型定義
Definition: h-type.h:237
FEAT_IDX feat_shallow_lava
Definition: feature.c:71
byte FF_FLAGS_IDX
地形特性ID
Definition: h-type.h:260
SYMBOL_CODE d_char[F_LIT_MAX]
デフォルトの地形シンボルアルファベット / Default feature character
Definition: feature.h:190
FEAT_IDX feat_heavy_cold_zone
Definition: feature.c:72
FEAT_IDX feat_deep_lava
Definition: feature.c:70
FEAT_IDX feat_black_market
Definition: feature.c:64
FEAT_IDX feat_shallow_water
Definition: feature.c:69
FEAT_IDX feat_glass_wall
Definition: feature.c:49
地形状態変化指定構造体 / Feature state structure
Definition: feature.h:147
FEAT_IDX feat_permanent
Definition: feature.c:43
FEAT_IDX feat_pattern_3
Definition: feature.c:56
FEAT_IDX feat_granite
Definition: feature.c:42
FEAT_IDX result
変化先ID / Result (f_info ID)
Definition: feature.h:151
FF_FLAGS_IDX action
変化条件をFF_*のIDで指定 / Action (FF_*)
Definition: feature.h:149
FEAT_IDX feat_wall_outer
Definition: feature.c:91
bool is_closed_door(FEAT_IDX feat)
地形が閉じたドアであるかの判定を行う。 / Return TRUE if the given grid is a closed door
Definition: feature.c:116
STR_OFFSET mimic_tag
Definition: feature.h:174
FEAT_SUBTYPE subtype
副特性値
Definition: feature.h:186
FEAT_IDX feat_mirror
Definition: feature.c:22
FEAT_IDX feat_magma_vein
Definition: feature.c:38
FEAT_IDX feat_ground_type[100]
Definition: feature.c:94
FEAT_IDX feat_brake
Definition: feature.c:83
FEAT_IDX feat_quartz_vein
Definition: feature.c:39
FEAT_IDX feat
Definition: feature.h:156
FEAT_IDX feat_wall_inner
Definition: feature.c:92
FEAT_IDX feat_shallow_acid_puddle
Definition: feature.c:77
char * f_name
Definition: feature.c:10
FEAT_IDX feat_pattern_old
Definition: feature.c:59
STR_OFFSET result_tag
変化先ID / Result (f_info ID)
Definition: feature.h:150
FEAT_IDX feat_up_stair
Definition: feature.c:25
FEAT_IDX feat_undetected
Definition: feature.c:89
byte FEAT_POWER
地形強度の型定義
Definition: h-type.h:245
#define F_LIT_MAX
Definition: feature.h:138
bool is_trap(FEAT_IDX feat)
地形が罠持ちであるかの判定を行う。 / Return TRUE if the given feature is a trap
Definition: feature.c:106
FEAT_IDX feat_rubble
Definition: feature.c:35
SYMBOL_CODE x_char[F_LIT_MAX]
設定変更後の地形シンボルアルファベット / Desired feature character
Definition: feature.h:193
FEAT_IDX feat_pattern_2
Definition: feature.c:55
s16b FEAT_IDX
ゲーム中の地形ID型を定義
Definition: h-type.h:115