Hengband  2.2.1
データ構造 | マクロ定義 | 関数 | 変数
floor.h ファイル
#include "feature.h"
#include "grid.h"
#include "object.h"
#include "monster.h"
floor.h の依存先関係図:

[ソースコード]

データ構造

struct  floor_type
 

マクロ定義

#define MAX_DEPTH   128
 ダンジョンの最深層 / Maximum dungeon level. [詳解]
 
#define BLOCK_HGT   11
 generate.cで用いられる基本的なブロック数単位(垂直方向) Number of grids in each block (vertically) Probably hard-coded to 11, see "generate.c" [詳解]
 
#define BLOCK_WID   11
 generate.cで用いられる基本的なブロック数単位(水平方向) Number of grids in each block (horizontally) Probably hard-coded to 11, see "generate.c" [詳解]
 
#define SCREEN_HGT   22
 表示上の基本的なブロック単位(垂直方向、PANEL_HGTの倍数で設定すること) Number of grids used to display the dungeon (vertically). [詳解]
 
#define SCREEN_WID   66
 表示上の基本的なブロック単位(水平方向、PANEL_WIDの倍数で設定すること) Number of grids used to display the dungeon (horizontally). [詳解]
 
#define MAX_HGT   66
 表示上のダンジョンの最大垂直サイズ(SCREEN_HGTの3倍が望ましい) Maximum dungeon height in grids, must be a multiple of SCREEN_HGT, probably hard-coded to SCREEN_HGT * 3. [詳解]
 
#define MAX_WID   198
 表示上のダンジョンの最大水平サイズ(SCREEN_WIDの3倍が望ましい) Maximum dungeon width in grids, must be a multiple of SCREEN_WID, probably hard-coded to SCREEN_WID * 3. [詳解]
 
#define LITE_MAX   600
 プレイヤー用光源処理配列サイズ / Maximum size of the "lite" array (see "grid.c") [詳解]
 
#define MON_LITE_MAX   1536
 モンスター用光源処理配列サイズ / Maximum size of the "mon_lite" array (see ">grid.c") [詳解]
 
#define VIEW_MAX   1536
 視界処理配列サイズ / Maximum size of the "view" array (see "p_ptr->current_floor_ptr->grid_array.c") [詳解]
 
#define REDRAW_MAX   2298
 再描画処理用配列サイズ / Maximum size of the "redraw" array (see "p_ptr->current_floor_ptr->grid_array.c") [詳解]
 
#define DUNGEON_MODE_NONE   0
 
#define DUNGEON_MODE_AND   1
 
#define DUNGEON_MODE_NAND   2
 
#define DUNGEON_MODE_OR   3
 
#define DUNGEON_MODE_NOR   4
 
#define DF1_WINNER   0x00000001L
 
#define DF1_MAZE   0x00000002L
 
#define DF1_SMALLEST   0x00000004L
 
#define DF1_BEGINNER   0x00000008L
 
#define DF1_BIG   0x00000010L
 
#define DF1_NO_DOORS   0x00000020L
 
#define DF1_WATER_RIVER   0x00000040L
 
#define DF1_LAVA_RIVER   0x00000080L
 
#define DF1_CURTAIN   0x00000100L
 
#define DF1_GLASS_DOOR   0x00000200L
 
#define DF1_CAVE   0x00000400L
 
#define DF1_CAVERN   0x00000800L
 
#define DF1_ARCADE   0x00001000L
 
#define DF1_LAKE_ACID   0x00002000L
 
#define DF1_LAKE_POISONOUS   0x00004000L
 
#define DF1_XXX15   0x00008000L
 
#define DF1_FORGET   0x00010000L
 
#define DF1_LAKE_WATER   0x00020000L
 
#define DF1_LAKE_LAVA   0x00040000L
 
#define DF1_LAKE_RUBBLE   0x00080000L
 
#define DF1_LAKE_TREE   0x00100000L
 
#define DF1_NO_VAULT   0x00200000L
 
#define DF1_ARENA   0x00400000L
 
#define DF1_DESTROY   0x00800000L
 
#define DF1_GLASS_ROOM   0x01000000L
 
#define DF1_NO_CAVE   0x02000000L
 
#define DF1_NO_MAGIC   0x04000000L
 
#define DF1_NO_MELEE   0x08000000L
 
#define DF1_CHAMELEON   0x10000000L
 
#define DF1_DARKNESS   0x20000000L
 
#define DF1_ACID_RIVER   0x40000000L
 
#define DF1_POISONOUS_RIVER   0x80000000L
 
#define DF1_LAKE_MASK   (DF1_LAKE_WATER | DF1_LAKE_LAVA | DF1_LAKE_RUBBLE | DF1_LAKE_TREE | DF1_LAKE_POISONOUS | DF1_LAKE_ACID)
 
#define in_bounds(F, Y, X)   (((Y) > 0) && ((X) > 0) && ((Y) < (F)->height-1) && ((X) < (F)->width-1))
 
#define in_bounds2(F, Y, X)   (((Y) >= 0) && ((X) >= 0) && ((Y) < (F)->height) && ((X) < (F)->width))
 
#define in_bounds2u(F, Y, X)   (((Y) < (F)->height) && ((X) < (F)->width))
 
#define player_bold(C, Y, X)   (((Y) == (C)->y) && ((X) == (C)->x))
 
#define player_grid(C, G)   ((G) == &(C)->current_floor_ptr->grid_array[p_ptr->y][p_ptr->x])
 
#define cave_have_flag_bold(Y, X, INDEX)   (have_flag(f_info[p_ptr->current_floor_ptr->grid_array[(Y)][(X)].feat].flags, (INDEX)))
 
#define cave_have_flag_grid(C, INDEX)   (have_flag(f_info[(C)->feat].flags, (INDEX)))
 
#define feat_supports_los(F)   (have_flag(f_info[(F)].flags, FF_LOS))
 
#define cave_los_bold(F, Y, X)   (feat_supports_los((F)->grid_array[(Y)][(X)].feat))
 
#define cave_los_grid(C)   (feat_supports_los((C)->feat))
 
#define cave_clean_bold(F, Y, X)
 
#define cave_drop_bold(F, Y, X)
 
#define cave_empty_bold(F, Y, X)
 
#define cave_empty_bold2(F, Y, X)
 
#define cave_naked_bold(C, F, Y, X)
 
#define cave_perma_bold(Y, X)   (cave_have_flag_bold((Y), (X), FF_PERMANENT))
 
#define cave_empty_grid(C)
 
#define cave_perma_grid(C)   (cave_have_flag_grid((C), FF_PERMANENT))
 
#define pattern_tile(Y, X)   (cave_have_flag_bold((Y), (X), FF_PATTERN))
 
#define cave_stop_disintegration(Y, X)
 
#define player_has_los_grid(C)   (((C)->info & (CAVE_VIEW)) != 0)
 
#define player_has_los_bold(C, Y, X)   ((((C)->current_floor_ptr->grid_array[Y][X].info & (CAVE_VIEW)) != 0) || (C)->phase_out)
 
#define permanent_wall(F)
 
#define GRID(Y, X)   (256 * (Y) + (X))
 
#define GRID_Y(G)   ((int)((G) / 256U))
 
#define GRID_X(G)   ((int)((G) % 256U))
 

関数

void update_smell (floor_type *floor_ptr, player_type *subject_ptr)
 
void add_door (floor_type *floor_ptr, POSITION x, POSITION y)
 
void place_secret_door (floor_type *floor_ptr, POSITION y, POSITION x, int type)
 隠しドアを配置する [詳解]
 
void place_locked_door (floor_type *floor_ptr, POSITION y, POSITION x)
 鍵のかかったドアを配置する [詳解]
 
void forget_flow (floor_type *floor_ptr)
 
void place_random_stairs (floor_type *floor_ptr, POSITION y, POSITION x)
 所定の位置に上り階段か下り階段を配置する / Place an up/down staircase at given location [詳解]
 
bool los (floor_type *floor_ptr, POSITION y1, POSITION x1, POSITION y2, POSITION x2)
 LOS(Line Of Sight / 視線が通っているか)の判定を行う。 [詳解]
 
bool projectable (floor_type *floor_ptr, POSITION y1, POSITION x1, POSITION y2, POSITION x2)
 
void vault_monsters (floor_type *floor_ptr, POSITION y1, POSITION x1, int num)
 特殊な部屋地形向けにモンスターを配置する / Hack – Place some sleeping monsters near the given location [詳解]
 
bool cave_valid_bold (floor_type *floor_ptr, POSITION y, POSITION x)
 指定された座標が地震や階段生成の対象となるマスかを返す。 / Determine if a given location may be "destroyed" [詳解]
 

変数

floor_type floor_info
 
saved_floor_type saved_floors [MAX_SAVED_FLOORS]
 
int project_length
 投射の射程距離 [詳解]
 

マクロ定義詳解

◆ BLOCK_HGT

#define BLOCK_HGT   11

generate.cで用いられる基本的なブロック数単位(垂直方向) Number of grids in each block (vertically) Probably hard-coded to 11, see "generate.c"

◆ BLOCK_WID

#define BLOCK_WID   11

generate.cで用いられる基本的なブロック数単位(水平方向) Number of grids in each block (horizontally) Probably hard-coded to 11, see "generate.c"

◆ cave_clean_bold

#define cave_clean_bold (   F,
  Y,
 
)
値:
(cave_have_flag_bold((Y), (X), FF_FLOOR) && \
!((F)->grid_array[Y][X].info & CAVE_OBJECT) && \
((F)->grid_array[Y][X].o_idx == 0))
#define cave_have_flag_bold(Y, X, INDEX)
Definition: floor.h:206
#define CAVE_OBJECT
Definition: grid.h:348
#define FF_FLOOR
床のある地形である
Definition: feature.h:38

◆ cave_drop_bold

#define cave_drop_bold (   F,
  Y,
 
)
値:
(cave_have_flag_bold((Y), (X), FF_DROP) && \
!((F)->grid_array[Y][X].info & CAVE_OBJECT))
#define cave_have_flag_bold(Y, X, INDEX)
Definition: floor.h:206
#define CAVE_OBJECT
Definition: grid.h:348
#define FF_DROP
アイテムを落としてよい地形である
Definition: feature.h:17

◆ cave_empty_bold

#define cave_empty_bold (   F,
  Y,
 
)
値:
(cave_have_flag_bold((Y), (X), FF_PLACE) && \
!((F)->grid_array[Y][X].m_idx) && \
#define cave_have_flag_bold(Y, X, INDEX)
Definition: floor.h:206
#define FF_PLACE
モンスター配置をしても良い地形である(cave_empty_bold/cave_empty_gridで利用)
Definition: feature.h:16
#define player_bold(C, Y, X)
Definition: floor.h:196
player_type * p_ptr
Definition: player-status.c:1288

◆ cave_empty_bold2

#define cave_empty_bold2 (   F,
  Y,
 
)
値:
(cave_empty_bold(F,Y,X) && \
#define cave_have_flag_bold(Y, X, INDEX)
Definition: floor.h:206
#define cave_empty_bold(F, Y, X)
Definition: floor.h:264
bool character_dungeon
Definition: world.h:49
world_type * current_world_ptr
Definition: world.c:5
#define FF_TREE
木の生えた地形である
Definition: feature.h:96

◆ cave_empty_grid

#define cave_empty_grid (   C)
値:
!((C)->m_idx) && !player_grid(p_ptr, C))
#define player_grid(C, G)
Definition: floor.h:202
#define FF_PLACE
モンスター配置をしても良い地形である(cave_empty_bold/cave_empty_gridで利用)
Definition: feature.h:16
#define cave_have_flag_grid(C, INDEX)
Definition: floor.h:210
player_type * p_ptr
Definition: player-status.c:1288

◆ cave_have_flag_bold

#define cave_have_flag_bold (   Y,
  X,
  INDEX 
)    (have_flag(f_info[p_ptr->current_floor_ptr->grid_array[(Y)][(X)].feat].flags, (INDEX)))

◆ cave_have_flag_grid

#define cave_have_flag_grid (   C,
  INDEX 
)    (have_flag(f_info[(C)->feat].flags, (INDEX)))

◆ cave_los_bold

#define cave_los_bold (   F,
  Y,
 
)    (feat_supports_los((F)->grid_array[(Y)][(X)].feat))

◆ cave_los_grid

#define cave_los_grid (   C)    (feat_supports_los((C)->feat))

◆ cave_naked_bold

#define cave_naked_bold (   C,
  F,
  Y,
 
)
値:
(cave_clean_bold(F,Y,X) && \
!((F)->grid_array[Y][X].m_idx) && \
!player_bold(C,Y,X))
#define cave_clean_bold(F, Y, X)
Definition: floor.h:239
#define player_bold(C, Y, X)
Definition: floor.h:196

◆ cave_perma_bold

#define cave_perma_bold (   Y,
 
)    (cave_have_flag_bold((Y), (X), FF_PERMANENT))

◆ cave_perma_grid

#define cave_perma_grid (   C)    (cave_have_flag_grid((C), FF_PERMANENT))

◆ cave_stop_disintegration

#define cave_stop_disintegration (   Y,
 
)
値:
cave_have_flag_bold((Y), (X), FF_PERMANENT)))
#define cave_have_flag_bold(Y, X, INDEX)
Definition: floor.h:206
#define FF_HURT_DISI
分解属性の対象となる地形である
Definition: feature.h:110
#define FF_PROJECT
飛び道具が通過できる地形である
Definition: feature.h:14
#define FF_PERMANENT
絶対に破壊できない永久地形である
Definition: feature.h:40

◆ DF1_ACID_RIVER

#define DF1_ACID_RIVER   0x40000000L

◆ DF1_ARCADE

#define DF1_ARCADE   0x00001000L

◆ DF1_ARENA

#define DF1_ARENA   0x00400000L

◆ DF1_BEGINNER

#define DF1_BEGINNER   0x00000008L

◆ DF1_BIG

#define DF1_BIG   0x00000010L

◆ DF1_CAVE

#define DF1_CAVE   0x00000400L

◆ DF1_CAVERN

#define DF1_CAVERN   0x00000800L

◆ DF1_CHAMELEON

#define DF1_CHAMELEON   0x10000000L

◆ DF1_CURTAIN

#define DF1_CURTAIN   0x00000100L

◆ DF1_DARKNESS

#define DF1_DARKNESS   0x20000000L

◆ DF1_DESTROY

#define DF1_DESTROY   0x00800000L

◆ DF1_FORGET

#define DF1_FORGET   0x00010000L

◆ DF1_GLASS_DOOR

#define DF1_GLASS_DOOR   0x00000200L

◆ DF1_GLASS_ROOM

#define DF1_GLASS_ROOM   0x01000000L

◆ DF1_LAKE_ACID

#define DF1_LAKE_ACID   0x00002000L

◆ DF1_LAKE_LAVA

#define DF1_LAKE_LAVA   0x00040000L

◆ DF1_LAKE_MASK

◆ DF1_LAKE_POISONOUS

#define DF1_LAKE_POISONOUS   0x00004000L

◆ DF1_LAKE_RUBBLE

#define DF1_LAKE_RUBBLE   0x00080000L

◆ DF1_LAKE_TREE

#define DF1_LAKE_TREE   0x00100000L

◆ DF1_LAKE_WATER

#define DF1_LAKE_WATER   0x00020000L

◆ DF1_LAVA_RIVER

#define DF1_LAVA_RIVER   0x00000080L

◆ DF1_MAZE

#define DF1_MAZE   0x00000002L

◆ DF1_NO_CAVE

#define DF1_NO_CAVE   0x02000000L

◆ DF1_NO_DOORS

#define DF1_NO_DOORS   0x00000020L

◆ DF1_NO_MAGIC

#define DF1_NO_MAGIC   0x04000000L

◆ DF1_NO_MELEE

#define DF1_NO_MELEE   0x08000000L

◆ DF1_NO_VAULT

#define DF1_NO_VAULT   0x00200000L

◆ DF1_POISONOUS_RIVER

#define DF1_POISONOUS_RIVER   0x80000000L

◆ DF1_SMALLEST

#define DF1_SMALLEST   0x00000004L

◆ DF1_WATER_RIVER

#define DF1_WATER_RIVER   0x00000040L

◆ DF1_WINNER

#define DF1_WINNER   0x00000001L

◆ DF1_XXX15

#define DF1_XXX15   0x00008000L

◆ DUNGEON_MODE_AND

#define DUNGEON_MODE_AND   1

◆ DUNGEON_MODE_NAND

#define DUNGEON_MODE_NAND   2

◆ DUNGEON_MODE_NONE

#define DUNGEON_MODE_NONE   0

◆ DUNGEON_MODE_NOR

#define DUNGEON_MODE_NOR   4

◆ DUNGEON_MODE_OR

#define DUNGEON_MODE_OR   3

◆ feat_supports_los

#define feat_supports_los (   F)    (have_flag(f_info[(F)].flags, FF_LOS))

◆ GRID

#define GRID (   Y,
 
)    (256 * (Y) + (X))

◆ GRID_X

#define GRID_X (   G)    ((int)((G) % 256U))

◆ GRID_Y

#define GRID_Y (   G)    ((int)((G) / 256U))

◆ in_bounds

#define in_bounds (   F,
  Y,
 
)    (((Y) > 0) && ((X) > 0) && ((Y) < (F)->height-1) && ((X) < (F)->width-1))

◆ in_bounds2

#define in_bounds2 (   F,
  Y,
 
)    (((Y) >= 0) && ((X) >= 0) && ((Y) < (F)->height) && ((X) < (F)->width))

◆ in_bounds2u

#define in_bounds2u (   F,
  Y,
 
)    (((Y) < (F)->height) && ((X) < (F)->width))

◆ LITE_MAX

#define LITE_MAX   600

プレイヤー用光源処理配列サイズ / Maximum size of the "lite" array (see "grid.c")

Note that the "lite radius" will NEVER exceed 14, and we would never require more than 581 entries in the array for circular "lite".

◆ MAX_DEPTH

#define MAX_DEPTH   128

ダンジョンの最深層 / Maximum dungeon level.

The player can never reach this level in the dungeon, and this value is used for various calculations involving object and monster creation. It must be at least 100. Setting it below 128 may prevent the creation of some objects.

◆ MAX_HGT

#define MAX_HGT   66

表示上のダンジョンの最大垂直サイズ(SCREEN_HGTの3倍が望ましい) Maximum dungeon height in grids, must be a multiple of SCREEN_HGT, probably hard-coded to SCREEN_HGT * 3.

◆ MAX_WID

#define MAX_WID   198

表示上のダンジョンの最大水平サイズ(SCREEN_WIDの3倍が望ましい) Maximum dungeon width in grids, must be a multiple of SCREEN_WID, probably hard-coded to SCREEN_WID * 3.

◆ MON_LITE_MAX

#define MON_LITE_MAX   1536

モンスター用光源処理配列サイズ / Maximum size of the "mon_lite" array (see ">grid.c")

Note that the "view radius" will NEVER exceed 20, monster illumination flags are dependent on CAVE_VIEW, and even if the "view" was octagonal, we would never require more than 1520 entries in the array.

◆ pattern_tile

#define pattern_tile (   Y,
 
)    (cave_have_flag_bold((Y), (X), FF_PATTERN))

◆ permanent_wall

#define permanent_wall (   F)
値:
(have_flag((F)->flags, FF_WALL) && \
have_flag((F)->flags, FF_PERMANENT))
#define FF_PERMANENT
絶対に破壊できない永久地形である
Definition: feature.h:40
#define FF_WALL
壁のある地形である
Definition: feature.h:39
#define have_flag(ARRAY, INDEX)
Definition: util.h:73

◆ player_bold

#define player_bold (   C,
  Y,
 
)    (((Y) == (C)->y) && ((X) == (C)->x))

◆ player_grid

#define player_grid (   C,
 
)    ((G) == &(C)->current_floor_ptr->grid_array[p_ptr->y][p_ptr->x])

◆ player_has_los_bold

#define player_has_los_bold (   C,
  Y,
 
)    ((((C)->current_floor_ptr->grid_array[Y][X].info & (CAVE_VIEW)) != 0) || (C)->phase_out)

◆ player_has_los_grid

#define player_has_los_grid (   C)    (((C)->info & (CAVE_VIEW)) != 0)

◆ REDRAW_MAX

#define REDRAW_MAX   2298

再描画処理用配列サイズ / Maximum size of the "redraw" array (see "p_ptr->current_floor_ptr->grid_array.c")

We must be large for proper functioning of delayed redrawing. We must also be as large as two times of the largest view area. Note that maximum view grids are 1149 entries.

◆ SCREEN_HGT

#define SCREEN_HGT   22

表示上の基本的なブロック単位(垂直方向、PANEL_HGTの倍数で設定すること) Number of grids used to display the dungeon (vertically).

Must be a multiple of 11, probably hard-coded to 22.

◆ SCREEN_WID

#define SCREEN_WID   66

表示上の基本的なブロック単位(水平方向、PANEL_WIDの倍数で設定すること) Number of grids used to display the dungeon (horizontally).

Must be a multiple of 33, probably hard-coded to 66.

◆ VIEW_MAX

#define VIEW_MAX   1536

視界処理配列サイズ / Maximum size of the "view" array (see "p_ptr->current_floor_ptr->grid_array.c")

Note that the "view radius" will NEVER exceed 20, and even if the "view" was octagonal, we would never require more than 1520 entries in the array.

関数詳解

◆ add_door()

void add_door ( floor_type floor_ptr,
POSITION  x,
POSITION  y 
)
呼び出し関係図:

◆ cave_valid_bold()

bool cave_valid_bold ( floor_type floor_ptr,
POSITION  y,
POSITION  x 
)

指定された座標が地震や階段生成の対象となるマスかを返す。 / Determine if a given location may be "destroyed"

引数
yy座標
xx座標
戻り値
各種の変更が可能ならTRUEを返す。

条件は永久地形でなく、なおかつ該当のマスにアーティファクトが存在しないか、である。英語の旧コメントに反して*破壊*の抑止判定には現在使われていない。

呼び出し関係図:

◆ forget_flow()

void forget_flow ( floor_type floor_ptr)

◆ los()

bool los ( floor_type floor_ptr,
POSITION  y1,
POSITION  x1,
POSITION  y2,
POSITION  x2 
)

LOS(Line Of Sight / 視線が通っているか)の判定を行う。

引数
y1始点のy座標
x1始点のx座標
y2終点のy座標
x2終点のx座標
戻り値
LOSが通っているならTRUEを返す。

A simple, fast, integer-based line-of-sight algorithm. By Joseph Hall,
4116 Brewster Drive, Raleigh NC 27606. Email to jnh@e.nosp@m.cemw.nosp@m.l.ncs.nosp@m.u.ed.nosp@m.u.

Returns TRUE if a line of sight can be traced from (x1,y1) to (x2,y2).

The LOS begins at the center of the tile (x1,y1) and ends at the center of
the tile (x2,y2). If los() is to return TRUE, all of the tiles this line
passes through must be floor tiles, except for (x1,y1) and (x2,y2).

We assume that the "mathematical corner" of a non-floor tile does not
block line of sight.

Because this function uses (short) ints for all calculations, overflow may
occur if dx and dy exceed 90.

Once all the degenerate cases are eliminated, the values "qx", "qy", and
"m" are multiplied by a scale factor "f1 = abs(dx * dy * 2)", so that
we can use integer arithmetic.

We travel from start to finish along the longer axis, starting at the border
between the first and second tiles, where the y offset = .5 * slope, taking
into account the scale factor. See below.

Also note that this function and the "move towards target" code do NOT
share the same properties. Thus, you can see someone, target them, and
then fire a bolt at them, but the bolt may hit a wall, not them. However
, by clever choice of target locations, you can sometimes throw a "curve".

Note that "line of sight" is not "reflexive" in all cases.

Use the "projectable()" routine to test "spell/missile line of sight".

Use the "update_view()" function to determine player line-of-sight.

◆ place_locked_door()

void place_locked_door ( floor_type floor_ptr,
POSITION  y,
POSITION  x 
)

鍵のかかったドアを配置する

引数
y配置したいフロアのY座標
x配置したいフロアのX座標
戻り値
なし
呼び出し関係図:

◆ place_random_stairs()

void place_random_stairs ( floor_type floor_ptr,
POSITION  y,
POSITION  x 
)

所定の位置に上り階段か下り階段を配置する / Place an up/down staircase at given location

引数
y配置を試みたいマスのY座標
x配置を試みたいマスのX座標
戻り値
なし
呼び出し関係図:

◆ place_secret_door()

void place_secret_door ( floor_type floor_ptr,
POSITION  y,
POSITION  x,
int  type 
)

隠しドアを配置する

引数
y配置したいフロアのY座標
x配置したいフロアのX座標
typeDOOR_DEFAULT / DOOR_DOOR / DOOR_GLASS_DOOR / DOOR_CURTAIN のいずれか
戻り値
なし
呼び出し関係図:

◆ projectable()

bool projectable ( floor_type floor_ptr,
POSITION  y1,
POSITION  x1,
POSITION  y2,
POSITION  x2 
)
呼び出し関係図:

◆ update_smell()

void update_smell ( floor_type floor_ptr,
player_type subject_ptr 
)
呼び出し関係図:

◆ vault_monsters()

void vault_monsters ( floor_type floor_ptr,
POSITION  y1,
POSITION  x1,
int  num 
)

特殊な部屋地形向けにモンスターを配置する / Hack – Place some sleeping monsters near the given location

引数
y1モンスターを配置したいマスの中心Y座標
x1モンスターを配置したいマスの中心X座標
num配置したいモンスターの数
戻り値
なし

Only really called by some of the "vault" routines.

呼び出し関係図:

変数詳解

◆ floor_info

floor_type floor_info

◆ project_length

int project_length

投射の射程距離

◆ saved_floors