OSDN Git Service
(root)
/
hengband
/
hengband.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[Refactor] #40256 get_mon_num()に 新しく optionを追加し GMN_ARENA を追加. / Add option argument...
[hengband/hengband.git]
/
src
/
rooms-special.c
diff --git
a/src/rooms-special.c
b/src/rooms-special.c
index
790f7d5
..
77966f2
100644
(file)
--- a/
src/rooms-special.c
+++ b/
src/rooms-special.c
@@
-1,18
+1,23
@@
#include "angband.h"
#include "angband.h"
+#include "util.h"
+
#include "grid.h"
#include "grid.h"
-#include "generate.h"
+#include "
floor-
generate.h"
#include "rooms.h"
#include "monster.h"
#include "monsterrace-hook.h"
#include "objectkind-hook.h"
#include "feature.h"
#include "rooms.h"
#include "monster.h"
#include "monsterrace-hook.h"
#include "objectkind-hook.h"
#include "feature.h"
+#include "floor.h"
+#include "dungeon.h"
/*!
* @brief タイプ15の部屋…ガラス部屋の生成 / Type 15 -- glass rooms
/*!
* @brief タイプ15の部屋…ガラス部屋の生成 / Type 15 -- glass rooms
+* @param player_ptr プレーヤーへの参照ポインタ
* @return なし
*/
* @return なし
*/
-bool build_type15(
void
)
+bool build_type15(
player_type *player_ptr
)
{
POSITION y, x, y2, x2, yval, xval;
POSITION y1, x1, xsize, ysize;
{
POSITION y, x, y2, x2, yval, xval;
POSITION y1, x1, xsize, ysize;
@@
-25,10
+30,11
@@
bool build_type15(void)
ysize = rand_range(9, 13);
/* Find and reserve some space in the dungeon. Get center of room. */
ysize = rand_range(9, 13);
/* Find and reserve some space in the dungeon. Get center of room. */
- if (!find_space(&yval, &xval, ysize + 2, xsize + 2)) return FALSE;
+ floor_type *floor_ptr = player_ptr->current_floor_ptr;
+ if (!find_space(player_ptr, &yval, &xval, ysize + 2, xsize + 2)) return FALSE;
/* Choose lite or dark */
/* Choose lite or dark */
- light = ((
dun_level <= randint1(25)) && !(d_info[p
_ptr->dungeon_idx].flags1 & DF1_DARKNESS));
+ light = ((
floor_ptr->dun_level <= randint1(25)) && !(d_info[floor
_ptr->dungeon_idx].flags1 & DF1_DARKNESS));
/* Get corner values */
y1 = yval - ysize / 2;
/* Get corner values */
y1 = yval - ysize / 2;
@@
-41,8
+47,8
@@
bool build_type15(void)
{
for (x = x1 - 1; x <= x2 + 1; x++)
{
{
for (x = x1 - 1; x <= x2 + 1; x++)
{
- g_ptr = &
current_
floor_ptr->grid_array[y][x];
- place_
floor_grid(g_pt
r);
+ g_ptr = &floor_ptr->grid_array[y][x];
+ place_
grid(player_ptr, g_ptr, gb_floo
r);
g_ptr->feat = feat_glass_floor;
g_ptr->info |= (CAVE_ROOM);
if (light) g_ptr->info |= (CAVE_GLOW);
g_ptr->feat = feat_glass_floor;
g_ptr->info |= (CAVE_ROOM);
if (light) g_ptr->info |= (CAVE_GLOW);
@@
-52,20
+58,21
@@
bool build_type15(void)
/* Walls around the room */
for (y = y1 - 1; y <= y2 + 1; y++)
{
/* Walls around the room */
for (y = y1 - 1; y <= y2 + 1; y++)
{
- g_ptr = &
current_
floor_ptr->grid_array[y][x1 - 1];
- place_
outer_grid(g_pt
r);
+ g_ptr = &floor_ptr->grid_array[y][x1 - 1];
+ place_
grid(player_ptr, g_ptr, gb_oute
r);
g_ptr->feat = feat_glass_wall;
g_ptr->feat = feat_glass_wall;
- g_ptr = &
current_
floor_ptr->grid_array[y][x2 + 1];
- place_
outer_grid(g_pt
r);
+ g_ptr = &floor_ptr->grid_array[y][x2 + 1];
+ place_
grid(player_ptr, g_ptr, gb_oute
r);
g_ptr->feat = feat_glass_wall;
}
g_ptr->feat = feat_glass_wall;
}
+
for (x = x1 - 1; x <= x2 + 1; x++)
{
for (x = x1 - 1; x <= x2 + 1; x++)
{
- g_ptr = &
current_
floor_ptr->grid_array[y1 - 1][x];
- place_
outer_grid(g_pt
r);
+ g_ptr = &floor_ptr->grid_array[y1 - 1][x];
+ place_
grid(player_ptr, g_ptr, gb_oute
r);
g_ptr->feat = feat_glass_wall;
g_ptr->feat = feat_glass_wall;
- g_ptr = &
current_
floor_ptr->grid_array[y2 + 1][x];
- place_
outer_grid(g_pt
r);
+ g_ptr = &floor_ptr->grid_array[y2 + 1][x];
+ place_
grid(player_ptr, g_ptr, gb_oute
r);
g_ptr->feat = feat_glass_wall;
}
g_ptr->feat = feat_glass_wall;
}
@@
-74,22
+81,22
@@
bool build_type15(void)
case 1: /* 4 lite breathers + potion */
{
DIRECTION dir1, dir2;
case 1: /* 4 lite breathers + potion */
{
DIRECTION dir1, dir2;
- get_mon_num_prep(vault_aux_lite, NULL);
+ get_mon_num_prep(
player_ptr,
vault_aux_lite, NULL);
/* Place fixed lite berathers */
for (dir1 = 4; dir1 < 8; dir1++)
{
/* Place fixed lite berathers */
for (dir1 = 4; dir1 < 8; dir1++)
{
- MONRACE_IDX r_idx = get_mon_num(
dun_level
);
+ MONRACE_IDX r_idx = get_mon_num(
player_ptr, floor_ptr->dun_level, 0
);
y = yval + 2 * ddy_ddd[dir1];
x = xval + 2 * ddx_ddd[dir1];
y = yval + 2 * ddy_ddd[dir1];
x = xval + 2 * ddx_ddd[dir1];
- if (r_idx) place_monster_aux(0, y, x, r_idx, PM_ALLOW_SLEEP);
+ if (r_idx) place_monster_aux(
player_ptr,
0, y, x, r_idx, PM_ALLOW_SLEEP);
/* Walls around the breather */
for (dir2 = 0; dir2 < 8; dir2++)
{
/* Walls around the breather */
for (dir2 = 0; dir2 < 8; dir2++)
{
- g_ptr = &
current_
floor_ptr->grid_array[y + ddy_ddd[dir2]][x + ddx_ddd[dir2]];
- place_
inner_grid(g_pt
r);
+ g_ptr = &floor_ptr->grid_array[y + ddy_ddd[dir2]][x + ddx_ddd[dir2]];
+ place_
grid(player_ptr, g_ptr, gb_inne
r);
g_ptr->feat = feat_glass_wall;
}
}
g_ptr->feat = feat_glass_wall;
}
}
@@
-99,24
+106,24
@@
bool build_type15(void)
{
y = yval + 2 * ddy_ddd[dir1];
x = xval + 2 * ddx_ddd[dir1];
{
y = yval + 2 * ddy_ddd[dir1];
x = xval + 2 * ddx_ddd[dir1];
- g_ptr = &
current_
floor_ptr->grid_array[y][x];
- place_
inner_perm_grid(g_ptr
);
+ g_ptr = &floor_ptr->grid_array[y][x];
+ place_
grid(player_ptr, g_ptr, gb_inner_perm
);
g_ptr->feat = feat_permanent_glass_wall;
g_ptr->feat = feat_permanent_glass_wall;
-
current_
floor_ptr->grid_array[yval + ddy_ddd[dir1]][xval + ddx_ddd[dir1]].info |= (CAVE_ICKY);
+ floor_ptr->grid_array[yval + ddy_ddd[dir1]][xval + ddx_ddd[dir1]].info |= (CAVE_ICKY);
}
/* Glass door */
dir1 = randint0(4);
y = yval + 2 * ddy_ddd[dir1];
x = xval + 2 * ddx_ddd[dir1];
}
/* Glass door */
dir1 = randint0(4);
y = yval + 2 * ddy_ddd[dir1];
x = xval + 2 * ddx_ddd[dir1];
- place_secret_door(y, x, DOOR_GLASS_DOOR);
- g_ptr = &
current_
floor_ptr->grid_array[y][x];
- if (is_closed_door(g_ptr->feat)) g_ptr->mimic = feat_glass_wall;
+ place_secret_door(
player_ptr,
y, x, DOOR_GLASS_DOOR);
+ g_ptr = &floor_ptr->grid_array[y][x];
+ if (is_closed_door(
player_ptr,
g_ptr->feat)) g_ptr->mimic = feat_glass_wall;
/* Place a potion */
get_obj_num_hook = kind_is_potion;
/* Place a potion */
get_obj_num_hook = kind_is_potion;
- place_object(yval, xval, AM_NO_FIXED_ART);
-
current_
floor_ptr->grid_array[yval][xval].info |= (CAVE_ICKY);
+ place_object(
player_ptr,
yval, xval, AM_NO_FIXED_ART);
+ floor_ptr->grid_array[yval][xval].info |= (CAVE_ICKY);
}
break;
}
break;
@@
-126,49
+133,50
@@
bool build_type15(void)
DIRECTION dir1;
/* Pillars */
DIRECTION dir1;
/* Pillars */
- g_ptr = &
current_
floor_ptr->grid_array[y1 + 1][x1 + 1];
- place_
inner_grid(g_pt
r);
+ g_ptr = &floor_ptr->grid_array[y1 + 1][x1 + 1];
+ place_
grid(player_ptr, g_ptr, gb_inne
r);
g_ptr->feat = feat_glass_wall;
g_ptr->feat = feat_glass_wall;
- g_ptr = &
current_
floor_ptr->grid_array[y1 + 1][x2 - 1];
- place_
inner_grid(g_pt
r);
+ g_ptr = &floor_ptr->grid_array[y1 + 1][x2 - 1];
+ place_
grid(player_ptr, g_ptr, gb_inne
r);
g_ptr->feat = feat_glass_wall;
g_ptr->feat = feat_glass_wall;
- g_ptr = &
current_
floor_ptr->grid_array[y2 - 1][x1 + 1];
- place_
inner_grid(g_pt
r);
+ g_ptr = &floor_ptr->grid_array[y2 - 1][x1 + 1];
+ place_
grid(player_ptr, g_ptr, gb_inne
r);
g_ptr->feat = feat_glass_wall;
g_ptr->feat = feat_glass_wall;
- g_ptr = &
current_
floor_ptr->grid_array[y2 - 1][x2 - 1];
- place_
inner_grid(g_pt
r);
+ g_ptr = &floor_ptr->grid_array[y2 - 1][x2 - 1];
+ place_
grid(player_ptr, g_ptr, gb_inne
r);
g_ptr->feat = feat_glass_wall;
g_ptr->feat = feat_glass_wall;
- get_mon_num_prep(vault_aux_lite, NULL);
+ get_mon_num_prep(
player_ptr,
vault_aux_lite, NULL);
- r_idx = get_mon_num(
dun_level
);
- if (r_idx) place_monster_aux(0, yval, xval, r_idx, 0L);
+ r_idx = get_mon_num(
player_ptr, floor_ptr->dun_level, 0
);
+ if (r_idx) place_monster_aux(
player_ptr,
0, yval, xval, r_idx, 0L);
/* Walls around the breather */
for (dir1 = 0; dir1 < 8; dir1++)
{
/* Walls around the breather */
for (dir1 = 0; dir1 < 8; dir1++)
{
- g_ptr = &
current_
floor_ptr->grid_array[yval + ddy_ddd[dir1]][xval + ddx_ddd[dir1]];
- place_
inner_grid(g_pt
r);
+ g_ptr = &floor_ptr->grid_array[yval + ddy_ddd[dir1]][xval + ddx_ddd[dir1]];
+ place_
grid(player_ptr, g_ptr, gb_inne
r);
g_ptr->feat = feat_glass_wall;
}
/* Curtains around the breather */
for (y = yval - 1; y <= yval + 1; y++)
{
g_ptr->feat = feat_glass_wall;
}
/* Curtains around the breather */
for (y = yval - 1; y <= yval + 1; y++)
{
- place_
closed_door(
y, xval - 2, DOOR_CURTAIN);
- place_
closed_door(
y, xval + 2, DOOR_CURTAIN);
+ place_
secret_door(player_ptr,
y, xval - 2, DOOR_CURTAIN);
+ place_
secret_door(player_ptr,
y, xval + 2, DOOR_CURTAIN);
}
}
+
for (x = xval - 1; x <= xval + 1; x++)
{
for (x = xval - 1; x <= xval + 1; x++)
{
- place_
closed_door(
yval - 2, x, DOOR_CURTAIN);
- place_
closed_door(
yval + 2, x, DOOR_CURTAIN);
+ place_
secret_door(player_ptr,
yval - 2, x, DOOR_CURTAIN);
+ place_
secret_door(player_ptr,
yval + 2, x, DOOR_CURTAIN);
}
/* Place an object */
}
/* Place an object */
- place_object(yval, xval, AM_NO_FIXED_ART);
-
current_
floor_ptr->grid_array[yval][xval].info |= (CAVE_ICKY);
+ place_object(
player_ptr,
yval, xval, AM_NO_FIXED_ART);
+ floor_ptr->grid_array[yval][xval].info |= (CAVE_ICKY);
}
break;
}
break;
@@
-179,59
+187,62
@@
bool build_type15(void)
/* Walls around the potion */
for (y = yval - 2; y <= yval + 2; y++)
{
/* Walls around the potion */
for (y = yval - 2; y <= yval + 2; y++)
{
- g_ptr = &
current_
floor_ptr->grid_array[y][xval - 3];
- place_
inner_grid(g_pt
r);
+ g_ptr = &floor_ptr->grid_array[y][xval - 3];
+ place_
grid(player_ptr, g_ptr, gb_inne
r);
g_ptr->feat = feat_glass_wall;
g_ptr->feat = feat_glass_wall;
- g_ptr = &
current_
floor_ptr->grid_array[y][xval + 3];
- place_
inner_grid(g_pt
r);
+ g_ptr = &floor_ptr->grid_array[y][xval + 3];
+ place_
grid(player_ptr, g_ptr, gb_inne
r);
g_ptr->feat = feat_glass_wall;
}
g_ptr->feat = feat_glass_wall;
}
+
for (x = xval - 2; x <= xval + 2; x++)
{
for (x = xval - 2; x <= xval + 2; x++)
{
- g_ptr = &
current_
floor_ptr->grid_array[yval - 3][x];
- place_
inner_grid(g_pt
r);
+ g_ptr = &floor_ptr->grid_array[yval - 3][x];
+ place_
grid(player_ptr, g_ptr, gb_inne
r);
g_ptr->feat = feat_glass_wall;
g_ptr->feat = feat_glass_wall;
- g_ptr = &
current_
floor_ptr->grid_array[yval + 3][x];
- place_
inner_grid(g_pt
r);
+ g_ptr = &floor_ptr->grid_array[yval + 3][x];
+ place_
grid(player_ptr, g_ptr, gb_inne
r);
g_ptr->feat = feat_glass_wall;
}
g_ptr->feat = feat_glass_wall;
}
+
for (dir1 = 4; dir1 < 8; dir1++)
{
for (dir1 = 4; dir1 < 8; dir1++)
{
- g_ptr = &
current_
floor_ptr->grid_array[yval + 2 * ddy_ddd[dir1]][xval + 2 * ddx_ddd[dir1]];
- place_
inner_grid(g_pt
r);
+ g_ptr = &floor_ptr->grid_array[yval + 2 * ddy_ddd[dir1]][xval + 2 * ddx_ddd[dir1]];
+ place_
grid(player_ptr, g_ptr, gb_inne
r);
g_ptr->feat = feat_glass_wall;
}
g_ptr->feat = feat_glass_wall;
}
- get_mon_num_prep(vault_aux_shards, NULL);
+
+ get_mon_num_prep(player_ptr, vault_aux_shards, NULL);
/* Place shard berathers */
for (dir1 = 4; dir1 < 8; dir1++)
{
/* Place shard berathers */
for (dir1 = 4; dir1 < 8; dir1++)
{
- MONRACE_IDX r_idx = get_mon_num(
dun_level
);
+ MONRACE_IDX r_idx = get_mon_num(
player_ptr, floor_ptr->dun_level, 0
);
y = yval + ddy_ddd[dir1];
x = xval + ddx_ddd[dir1];
y = yval + ddy_ddd[dir1];
x = xval + ddx_ddd[dir1];
- if (r_idx) place_monster_aux(0, y, x, r_idx, 0L);
+ if (r_idx) place_monster_aux(
player_ptr,
0, y, x, r_idx, 0L);
}
/* Place two potions */
if (one_in_(2))
{
get_obj_num_hook = kind_is_potion;
}
/* Place two potions */
if (one_in_(2))
{
get_obj_num_hook = kind_is_potion;
- place_object(yval, xval - 1, AM_NO_FIXED_ART);
+ place_object(
player_ptr,
yval, xval - 1, AM_NO_FIXED_ART);
get_obj_num_hook = kind_is_potion;
get_obj_num_hook = kind_is_potion;
- place_object(yval, xval + 1, AM_NO_FIXED_ART);
+ place_object(
player_ptr,
yval, xval + 1, AM_NO_FIXED_ART);
}
else
{
get_obj_num_hook = kind_is_potion;
}
else
{
get_obj_num_hook = kind_is_potion;
- place_object(yval - 1, xval, AM_NO_FIXED_ART);
+ place_object(
player_ptr,
yval - 1, xval, AM_NO_FIXED_ART);
get_obj_num_hook = kind_is_potion;
get_obj_num_hook = kind_is_potion;
- place_object(yval + 1, xval, AM_NO_FIXED_ART);
+ place_object(
player_ptr,
yval + 1, xval, AM_NO_FIXED_ART);
}
for (y = yval - 2; y <= yval + 2; y++)
for (x = xval - 2; x <= xval + 2; x++)
}
for (y = yval - 2; y <= yval + 2; y++)
for (x = xval - 2; x <= xval + 2; x++)
-
current_
floor_ptr->grid_array[y][x].info |= (CAVE_ICKY);
+ floor_ptr->grid_array[y][x].info |= (CAVE_ICKY);
}
break;
}
break;