From 91f8dc6cd60228fcfb78863880c56000a8ea5272 Mon Sep 17 00:00:00 2001 From: deskull Date: Fri, 6 Dec 2019 16:20:10 +0900 Subject: [PATCH] =?utf8?q?[Refactor]=20#38997=20vault=5Fmonsters()=20?= =?utf8?q?=E3=81=AB=20player=5Ftype=20*=20=E5=BC=95=E6=95=B0=E3=82=92?= =?utf8?q?=E8=BF=BD=E5=8A=A0=EF=BC=8E=20/=20Add=20player=5Ftype=20*=20argu?= =?utf8?q?ment=20to=20vault=5Fmonsters().?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- src/floor.c | 38 ++++++++++++++++++++++++++++++++++++++ src/floor.h | 2 ++ src/grid.c | 38 -------------------------------------- src/grid.h | 1 - src/rooms-normal.c | 24 ++++++++++++------------ 5 files changed, 52 insertions(+), 51 deletions(-) diff --git a/src/floor.c b/src/floor.c index b504bb638..7c9ec63ba 100644 --- a/src/floor.c +++ b/src/floor.c @@ -570,3 +570,41 @@ bool projectable(floor_type *floor_ptr, POSITION y1, POSITION x1, POSITION y2, P return (TRUE); } + +/*! + * @brief 特殊な部屋地形向けにモンスターを配置する / Hack -- Place some sleeping monsters near the given location + * @param y1 モンスターを配置したいマスの中心Y座標 + * @param x1 モンスターを配置したいマスの中心X座標 + * @param num 配置したいモンスターの数 + * @return なし + * @details + * Only really called by some of the "vault" routines. + */ +void vault_monsters(floor_type *floor_ptr, POSITION y1, POSITION x1, int num) +{ + int k, i; + POSITION y, x; + grid_type *g_ptr; + + /* Try to summon "num" monsters "near" the given location */ + for (k = 0; k < num; k++) + { + /* Try nine locations */ + for (i = 0; i < 9; i++) + { + int d = 1; + + /* Pick a nearby location */ + scatter(&y, &x, y1, x1, d, 0); + + /* Require "empty" floor grids */ + g_ptr = &floor_ptr->grid_array[y][x]; + if (!cave_empty_grid(g_ptr)) continue; + + /* Place the monster (allow groups) */ + floor_ptr->monster_level = floor_ptr->base_level + 2; + (void)place_monster(y, x, (PM_ALLOW_SLEEP | PM_ALLOW_GROUP)); + floor_ptr->monster_level = floor_ptr->base_level; + } + } +} diff --git a/src/floor.h b/src/floor.h index 2809bbadf..0b468c96c 100644 --- a/src/floor.h +++ b/src/floor.h @@ -383,3 +383,5 @@ extern void place_random_stairs(floor_type *floor_ptr, POSITION y, POSITION x); extern bool los(floor_type* floor_ptr, POSITION y1, POSITION x1, POSITION y2, POSITION x2); extern bool projectable(floor_type *floor_ptr, POSITION y1, POSITION x1, POSITION y2, POSITION x2); extern int project_length; + +extern void vault_monsters(floor_type *floor_ptr, POSITION y1, POSITION x1, int num); diff --git a/src/grid.c b/src/grid.c index 7a14619ff..cd25b2930 100644 --- a/src/grid.c +++ b/src/grid.c @@ -655,44 +655,6 @@ void vault_traps(POSITION y, POSITION x, POSITION yd, POSITION xd, int num) } /*! - * @brief 特殊な部屋地形向けにモンスターを配置する / Hack -- Place some sleeping monsters near the given location - * @param y1 モンスターを配置したいマスの中心Y座標 - * @param x1 モンスターを配置したいマスの中心X座標 - * @param num 配置したいモンスターの数 - * @return なし - * @details - * Only really called by some of the "vault" routines. - */ -void vault_monsters(POSITION y1, POSITION x1, int num) -{ - int k, i; - POSITION y, x; - grid_type *g_ptr; - - /* Try to summon "num" monsters "near" the given location */ - for (k = 0; k < num; k++) - { - /* Try nine locations */ - for (i = 0; i < 9; i++) - { - int d = 1; - - /* Pick a nearby location */ - scatter(&y, &x, y1, x1, d, 0); - - /* Require "empty" floor grids */ - g_ptr = &p_ptr->current_floor_ptr->grid_array[y][x]; - if (!cave_empty_grid(g_ptr)) continue; - - /* Place the monster (allow groups) */ - p_ptr->current_floor_ptr->monster_level = p_ptr->current_floor_ptr->base_level + 2; - (void)place_monster(y, x, (PM_ALLOW_SLEEP | PM_ALLOW_GROUP)); - p_ptr->current_floor_ptr->monster_level = p_ptr->current_floor_ptr->base_level; - } - } -} - -/*! * @brief 指定のマスが床系地形であるかを返す / Function that sees if a square is a floor. (Includes range checking.) * @param x チェックするマスのX座標 * @param y チェックするマスのY座標 diff --git a/src/grid.h b/src/grid.h index 2877ae62f..9dc88c118 100644 --- a/src/grid.h +++ b/src/grid.h @@ -377,7 +377,6 @@ extern void place_closed_door(POSITION y, POSITION x, int type); extern void try_door(POSITION y, POSITION x); extern void place_floor(POSITION x1, POSITION x2, POSITION y1, POSITION y2, bool light); extern void place_room(POSITION x1, POSITION x2, POSITION y1, POSITION y2, bool light); -extern void vault_monsters(POSITION y1, POSITION x1, int num); extern void vault_objects(POSITION y, POSITION x, int num); extern void vault_trap_aux(POSITION y, POSITION x, POSITION yd, POSITION xd); extern void vault_traps(POSITION y, POSITION x, POSITION yd, POSITION xd, int num); diff --git a/src/rooms-normal.c b/src/rooms-normal.c index da2af3adb..52bf00929 100644 --- a/src/rooms-normal.c +++ b/src/rooms-normal.c @@ -497,7 +497,7 @@ bool build_type3(floor_type *floor_ptr) place_object(yval, xval, 0L); /* Let's guard the treasure well */ - vault_monsters(yval, xval, randint0(2) + 3); + vault_monsters(floor_ptr, yval, xval, randint0(2) + 3); /* Traps naturally */ vault_traps(yval, xval, 4, 4, randint0(3) + 2); @@ -673,7 +673,7 @@ bool build_type4(floor_type *floor_ptr) } /* Place a monster in the room */ - vault_monsters(yval, xval, 1); + vault_monsters(floor_ptr, yval, xval, 1); break; } @@ -711,7 +711,7 @@ bool build_type4(floor_type *floor_ptr) } /* Monsters to guard the "treasure" */ - vault_monsters(yval, xval, randint1(3) + 2); + vault_monsters(floor_ptr, yval, xval, randint1(3) + 2); /* Object (80%) */ if (randint0(100) < 80) @@ -799,8 +799,8 @@ bool build_type4(floor_type *floor_ptr) place_secret_door(floor_ptr, yval - 3 + (randint1(2) * 2), xval + 3, door_type); /* Monsters */ - vault_monsters(yval, xval - 2, randint1(2)); - vault_monsters(yval, xval + 2, randint1(2)); + vault_monsters(floor_ptr, yval, xval - 2, randint1(2)); + vault_monsters(floor_ptr, yval, xval + 2, randint1(2)); /* Objects */ if (one_in_(3)) place_object(yval, xval - 2, 0L); @@ -836,8 +836,8 @@ bool build_type4(floor_type *floor_ptr) } /* Monsters just love mazes. */ - vault_monsters(yval, xval - 5, randint1(3)); - vault_monsters(yval, xval + 5, randint1(3)); + vault_monsters(floor_ptr, yval, xval - 5, randint1(3)); + vault_monsters(floor_ptr, yval, xval + 5, randint1(3)); /* Traps make them entertaining. */ vault_traps(yval, xval - 3, 2, 8, randint1(3)); @@ -890,10 +890,10 @@ bool build_type4(floor_type *floor_ptr) vault_objects(yval, xval, 2 + randint1(2)); /* Gotta have some monsters. */ - vault_monsters(yval + 1, xval - 4, randint1(4)); - vault_monsters(yval + 1, xval + 4, randint1(4)); - vault_monsters(yval - 1, xval - 4, randint1(4)); - vault_monsters(yval - 1, xval + 4, randint1(4)); + vault_monsters(floor_ptr, yval + 1, xval - 4, randint1(4)); + vault_monsters(floor_ptr, yval + 1, xval + 4, randint1(4)); + vault_monsters(floor_ptr, yval - 1, xval - 4, randint1(4)); + vault_monsters(floor_ptr, yval - 1, xval + 4, randint1(4)); break; } @@ -1038,7 +1038,7 @@ bool build_type12(floor_type *floor_ptr) place_object(y0, x0, 0L); /* Let's guard the treasure well */ - vault_monsters(y0, x0, randint0(2) + 3); + vault_monsters(floor_ptr, y0, x0, randint0(2) + 3); /* Traps naturally */ vault_traps(y0, x0, 4, 4, randint0(3) + 2); -- 2.11.0