if (player_ptr->inventory_list[INVEN_SUB_HAND].name1 == ART_STORMBRINGER)
stormbringer = true;
- feature_type *f_ptr = &f_info[g_ptr->feat];
+ auto *f_ptr = &f_info[g_ptr->feat];
bool p_can_kill_walls = has_kill_wall(player_ptr) && f_ptr->flags.has(FloorFeatureType::HURT_DISI) && (!p_can_enter || f_ptr->flags.has_not(FloorFeatureType::LOS)) && f_ptr->flags.has_not(FloorFeatureType::PERMANENT);
GAME_TEXT m_name[MAX_NLEN];
bool can_move = true;
bool exe_open(PlayerType *player_ptr, POSITION y, POSITION x)
{
auto *g_ptr = &player_ptr->current_floor_ptr->grid_array[y][x];
- feature_type *f_ptr = &f_info[g_ptr->feat];
+ auto *f_ptr = &f_info[g_ptr->feat];
PlayerEnergy(player_ptr).set_player_turn_energy(100);
if (f_ptr->flags.has_not(FloorFeatureType::OPEN)) {
msg_format(_("%sはがっちりと閉じられているようだ。", "The %s appears to be stuck."), f_info[g_ptr->get_feat_mimic()].name.c_str());
{
int i, j;
auto *g_ptr = &player_ptr->current_floor_ptr->grid_array[y][x];
- feature_type *f_ptr = &f_info[g_ptr->feat];
+ auto *f_ptr = &f_info[g_ptr->feat];
if (!is_closed_door(player_ptr, g_ptr->feat))
return false;
bool exe_disarm(PlayerType *player_ptr, POSITION y, POSITION x, DIRECTION dir)
{
auto *g_ptr = &player_ptr->current_floor_ptr->grid_array[y][x];
- feature_type *f_ptr = &f_info[g_ptr->feat];
+ auto *f_ptr = &f_info[g_ptr->feat];
concptr name = f_ptr->name.c_str();
int power = f_ptr->power;
bool more = false;
bool exe_bash(PlayerType *player_ptr, POSITION y, POSITION x, DIRECTION dir)
{
auto *g_ptr = &player_ptr->current_floor_ptr->grid_array[y][x];
- feature_type *f_ptr = &f_info[g_ptr->feat];
+ auto *f_ptr = &f_info[g_ptr->feat];
int bash = adj_str_blow[player_ptr->stat_index[A_STR]];
int temp = f_ptr->power;
bool more = false;
return false;
int16_t feat = g_ptr->get_feat_mimic();
- feature_type *f_ptr = &f_info[feat];
+ auto *f_ptr = &f_info[feat];
if (!player_can_enter(player_ptr, feat, 0))
return f_ptr->flags.has_not(FloorFeatureType::DOOR);
{
bool go_up = false;
auto *g_ptr = &player_ptr->current_floor_ptr->grid_array[player_ptr->y][player_ptr->x];
- feature_type *f_ptr = &f_info[g_ptr->feat];
+ auto *f_ptr = &f_info[g_ptr->feat];
int up_num = 0;
PlayerClass(player_ptr).break_samurai_stance({ SamuraiStanceType::MUSOU });
PlayerClass(player_ptr).break_samurai_stance({ SamuraiStanceType::MUSOU });
auto *g_ptr = &player_ptr->current_floor_ptr->grid_array[player_ptr->y][player_ptr->x];
- feature_type *f_ptr = &f_info[g_ptr->feat];
+ auto *f_ptr = &f_info[g_ptr->feat];
if (f_ptr->flags.has_not(FloorFeatureType::MORE)) {
msg_print(_("ここには下り階段が見当たらない。", "I see no down staircase here."));
return;
if (!can_player_ride_pet(player_ptr, g_ptr, true)) {
/* Feature code (applying "mimic" field) */
- feature_type *f_ptr = &f_info[g_ptr->get_feat_mimic()];
+ auto *f_ptr = &f_info[g_ptr->get_feat_mimic()];
#ifdef JP
msg_format("そのモンスターは%sの%sにいる。", f_ptr->name.c_str(),
(f_ptr->flags.has_none_of({ FloorFeatureType::MOVE, FloorFeatureType::CAN_FLY }) || f_ptr->flags.has_none_of({ FloorFeatureType::LOS, FloorFeatureType::TREE })) ? "中" : "上");
{
int cost = 1;
auto *g_ptr = &player_ptr->current_floor_ptr->grid_array[y][x];
- feature_type *f_ptr = &f_info[g_ptr->feat];
+ auto *f_ptr = &f_info[g_ptr->feat];
if (f_ptr->flags.has(FloorFeatureType::AVOID_RUN))
cost += 1;
{
auto *floor_ptr = player_ptr->current_floor_ptr;
auto *g_ptr = &floor_ptr->grid_array[y][x];
- feature_type *f_ptr = &f_info[g_ptr->feat];
+ auto *f_ptr = &f_info[g_ptr->feat];
if (!in_bounds(floor_ptr, y, x))
return;
{
flow_head = flow_tail = 0;
bool wall = false;
- feature_type *f_ptr = &f_info[player_ptr->current_floor_ptr->grid_array[player_ptr->y][player_ptr->x].feat];
+ auto *f_ptr = &f_info[player_ptr->current_floor_ptr->grid_array[player_ptr->y][player_ptr->x].feat];
if (f_ptr->flags.has_not(FloorFeatureType::MOVE))
wall = true;
static IDX lighting_level = F_LIT_STANDARD;
prt(format(_("コマンド: %s", "Command: %s"), choice_msg), 15, 0);
while (true) {
- feature_type *f_ptr = &f_info[f];
+ auto *f_ptr = &f_info[f];
int c;
IDX t;
{
auto *floor_ptr = player_ptr->current_floor_ptr;
auto *g_ptr = &floor_ptr->grid_array[y][x];
- feature_type *f_ptr = &f_info[g_ptr->feat];
+ auto *f_ptr = &f_info[g_ptr->feat];
bool obvious = false;
bool known = player_has_los_bold(player_ptr, y, x);
for (POSITION y = 0; y < floor_ptr->height; y++) {
for (POSITION x = 0; x < floor_ptr->width; x++) {
auto *g_ptr = &floor_ptr->grid_array[y][x];
- feature_type *f_ptr = &f_info[g_ptr->get_feat_mimic()];
+ auto *f_ptr = &f_info[g_ptr->get_feat_mimic()];
if (g_ptr->is_mirror() || f_ptr->flags.has(FloorFeatureType::QUEST_ENTER) || f_ptr->flags.has(FloorFeatureType::ENTRANCE))
continue;
for (POSITION y = 0; y < floor_ptr->height; y++) {
for (POSITION x = 0; x < floor_ptr->width; x++) {
auto *g_ptr = &floor_ptr->grid_array[y][x];
- feature_type *f_ptr = &f_info[g_ptr->feat];
+ auto *f_ptr = &f_info[g_ptr->feat];
bool ok = false;
if (floor_mode & CFM_UP) {
if (f_ptr->flags.has_all_of({ FloorFeatureType::LESS, FloorFeatureType::STAIRS }) && f_ptr->flags.has_not(FloorFeatureType::SPECIAL)) {
return;
*g_ptr = &player_ptr->current_floor_ptr->grid_array[player_ptr->y][player_ptr->x];
- feature_type *f_ptr = &f_info[(*g_ptr)->feat];
+ auto *f_ptr = &f_info[(*g_ptr)->feat];
if ((*g_ptr)->special && f_ptr->flags.has_not(FloorFeatureType::SPECIAL) && get_sf_ptr((*g_ptr)->special))
new_floor_id = (*g_ptr)->special;
}
if (feat1) {
- feature_type *f_ptr = &f_info[feat1];
+ auto *f_ptr = &f_info[feat1];
/* Only add river if matches lake type or if have no lake at all */
if (!(((dd_ptr->laketype == LAKE_T_LAVA) && f_ptr->flags.has(FloorFeatureType::LAVA)) || ((dd_ptr->laketype == LAKE_T_WATER) && f_ptr->flags.has(FloorFeatureType::WATER))
bool alloc_stairs(PlayerType *player_ptr, FEAT_IDX feat, int num, int walls)
{
int shaft_num = 0;
- feature_type *f_ptr = &f_info[feat];
+ auto *f_ptr = &f_info[feat];
auto *floor_ptr = player_ptr->current_floor_ptr;
if (f_ptr->flags.has(FloorFeatureType::LESS)) {
if (ironman_downward || !floor_ptr->dun_level)
{
/* 関数ポインタの都合 */
(void)player_ptr;
- feature_type *f_ptr = &f_info[feat];
+ auto *f_ptr = &f_info[feat];
return (f_ptr->flags.has(FloorFeatureType::OPEN) || f_ptr->flags.has(FloorFeatureType::BASH)) &&
f_ptr->flags.has_not(FloorFeatureType::MOVE);
FEAT_IDX conv_dungeon_feat(floor_type *floor_ptr, FEAT_IDX newfeat)
{
- feature_type *f_ptr = &f_info[newfeat];
+ auto *f_ptr = &f_info[newfeat];
if (f_ptr->flags.has_not(FloorFeatureType::CONVERT))
return newfeat;
/* Hack -- memorize grids */
if (!g_ptr->is_mark()) {
/* Feature code (applying "mimic" field) */
- feature_type *f_ptr = &f_info[g_ptr->get_feat_mimic()];
+ auto *f_ptr = &f_info[g_ptr->get_feat_mimic()];
/* Memorize some "boring" grids */
if (f_ptr->flags.has_not(FloorFeatureType::REMEMBER)) {
*/
FEAT_IDX feat_state(floor_type *floor_ptr, FEAT_IDX feat, FloorFeatureType action)
{
- feature_type *f_ptr = &f_info[feat];
+ auto *f_ptr = &f_info[feat];
int i;
/* Get the new feature */
if (!(feature_action_flags[enum2i(action)] & FAF_NO_DROP)) {
feature_type *old_f_ptr = &f_info[oldfeat];
- feature_type *f_ptr = &f_info[newfeat];
+ auto *f_ptr = &f_info[newfeat];
bool found = false;
/* Handle gold */
{
auto *m_ptr = &player_ptr->current_floor_ptr->m_list[m_idx];
auto *g_ptr = &player_ptr->current_floor_ptr->grid_array[y][x];
- feature_type *f_ptr = &f_info[g_ptr->feat];
+ auto *f_ptr = &f_info[g_ptr->feat];
/* Require "teleportable" space */
if (f_ptr->flags.has_not(FloorFeatureType::TELEPORTABLE))
bool cave_player_teleportable_bold(PlayerType *player_ptr, POSITION y, POSITION x, teleport_flags mode)
{
auto *g_ptr = &player_ptr->current_floor_ptr->grid_array[y][x];
- feature_type *f_ptr = &f_info[g_ptr->feat];
+ auto *f_ptr = &f_info[g_ptr->feat];
/* Require "teleportable" space */
if (f_ptr->flags.has_not(FloorFeatureType::TELEPORTABLE))
*/
bool player_can_enter(PlayerType *player_ptr, FEAT_IDX feature, BIT_FLAGS16 mode)
{
- feature_type *f_ptr = &f_info[feature];
+ auto *f_ptr = &f_info[feature];
if (player_ptr->riding)
return monster_can_cross_terrain(
break;
}
case GB_OUTER_NOPERM: {
- feature_type *f_ptr = &f_info[feat_wall_outer];
+ auto *f_ptr = &f_info[feat_wall_outer];
if (permanent_wall(f_ptr)) {
g_ptr->feat = (int16_t)feat_state(player_ptr->current_floor_ptr, feat_wall_outer, FloorFeatureType::UNPERM);
} else {
break;
}
case GB_SOLID_NOPERM: {
- feature_type *f_ptr = &f_info[feat_wall_solid];
+ auto *f_ptr = &f_info[feat_wall_solid];
if ((g_ptr->info & CAVE_VAULT) && permanent_wall(f_ptr))
g_ptr->feat = (int16_t)feat_state(player_ptr->current_floor_ptr, feat_wall_solid, FloorFeatureType::UNPERM);
else
int i, num, dam;
POSITION x = player_ptr->x, y = player_ptr->y;
auto *g_ptr = &player_ptr->current_floor_ptr->grid_array[y][x];
- feature_type *f_ptr = &f_info[g_ptr->feat];
+ auto *f_ptr = &f_info[g_ptr->feat];
TrapType trap_feat_type = f_ptr->flags.has(FloorFeatureType::TRAP) ? i2enum<TrapType>(f_ptr->subtype) : TrapType::NOT_TRAP;
concptr name = _("トラップ", "a trap");
static bool deal_damege_by_feat(PlayerType *player_ptr, grid_type *g_ptr, concptr msg_levitation, concptr msg_normal,
std::function<PERCENTAGE(PlayerType *)> damage_rate, std::function<void(PlayerType *, int)> additional_effect)
{
- feature_type *f_ptr = &f_info[g_ptr->feat];
+ auto *f_ptr = &f_info[g_ptr->feat];
int damage = 0;
if (f_ptr->flags.has(FloorFeatureType::DEEP)) {
void process_player_hp_mp(PlayerType *player_ptr)
{
auto *g_ptr = &player_ptr->current_floor_ptr->grid_array[player_ptr->y][player_ptr->x];
- feature_type *f_ptr = &f_info[g_ptr->feat];
+ auto *f_ptr = &f_info[g_ptr->feat];
bool cave_no_regen = false;
int upkeep_factor = 0;
int regen_amount = PY_REGEN_NORMAL;
void retouch_f_info(angband_header *head)
{
for (int i = 0; i < head->info_num; i++) {
- feature_type *f_ptr = &f_info[i];
+ auto *f_ptr = &f_info[i];
FEAT_IDX k = search_real_feat(f_ptr->mimic_tag);
f_ptr->mimic = k < 0 ? f_ptr->mimic : k;
k = search_real_feat(f_ptr->destroyed_tag);
for (i = 0; i < per_page && (feat_idx[feat_top + i] >= 0); i++) {
TERM_COLOR attr;
FEAT_IDX f_idx = feat_idx[feat_top + i];
- feature_type *f_ptr = &f_info[f_idx];
+ auto *f_ptr = &f_info[f_idx];
int row_i = row + i;
attr = ((i + feat_top == feat_cur) ? TERM_L_BLUE : TERM_WHITE);
c_prt(attr, f_ptr->name.c_str(), row_i, col);
feat_cnt = 0;
} else {
- feature_type *f_ptr = &f_info[direct_f_idx];
+ auto *f_ptr = &f_info[direct_f_idx];
feat_idx[0] = direct_f_idx;
feat_cnt = 1;
}
auto *g_ptr = &player_ptr->current_floor_ptr->grid_array[player_ptr->y][player_ptr->x];
- feature_type *f_ptr = &f_info[g_ptr->feat];
+ auto *f_ptr = &f_info[g_ptr->feat];
if (f_ptr->flags.has_not(FloorFeatureType::PROJECT) || (!player_ptr->levitation && f_ptr->flags.has(FloorFeatureType::DEEP))) {
msg_print(_("ここでは素早く動けない。", "You cannot run in here."));
*/
bool monster_can_cross_terrain(PlayerType *player_ptr, FEAT_IDX feat, monster_race *r_ptr, BIT_FLAGS16 mode)
{
- feature_type *f_ptr = &f_info[feat];
+ auto *f_ptr = &f_info[feat];
if (f_ptr->flags.has(FloorFeatureType::PATTERN)) {
if (!(mode & CEM_RIDING)) {
*/
monsterrace_hook_type get_monster_hook2(PlayerType *player_ptr, POSITION y, POSITION x)
{
- feature_type *f_ptr = &f_info[player_ptr->current_floor_ptr->grid_array[y][x].feat];
+ auto *f_ptr = &f_info[player_ptr->current_floor_ptr->grid_array[y][x].feat];
if (f_ptr->flags.has(FloorFeatureType::WATER))
return f_ptr->flags.has(FloorFeatureType::DEEP) ? (monsterrace_hook_type)mon_hook_deep_water : (monsterrace_hook_type)mon_hook_shallow_water;
msa_ptr->y_br_lite = msa_ptr->y;
msa_ptr->x_br_lite = msa_ptr->x;
if (los(player_ptr, msa_ptr->m_ptr->fy, msa_ptr->m_ptr->fx, msa_ptr->y_br_lite, msa_ptr->x_br_lite)) {
- feature_type *f_ptr = &f_info[player_ptr->current_floor_ptr->grid_array[msa_ptr->y_br_lite][msa_ptr->x_br_lite].feat];
+ auto *f_ptr = &f_info[player_ptr->current_floor_ptr->grid_array[msa_ptr->y_br_lite][msa_ptr->x_br_lite].feat];
if (f_ptr->flags.has_not(FloorFeatureType::LOS) && f_ptr->flags.has(FloorFeatureType::PROJECT) && one_in_(2))
msa_ptr->ability_flags.reset(MonsterAbilityType::BR_LITE);
} else if (!adjacent_grid_check(player_ptr, msa_ptr->m_ptr, &msa_ptr->y_br_lite, &msa_ptr->x_br_lite, FloorFeatureType::LOS, los))
static void feature_projection(floor_type *floor_ptr, msa_type *msa_ptr)
{
- feature_type *f_ptr = &f_info[floor_ptr->grid_array[msa_ptr->y][msa_ptr->x].feat];
+ auto *f_ptr = &f_info[floor_ptr->grid_array[msa_ptr->y][msa_ptr->x].feat];
if (f_ptr->flags.has(FloorFeatureType::PROJECT))
return;
if (PlayerRace(this->player_ptr).equals(PlayerRaceType::MERFOLK)) {
auto *floor_ptr = this->player_ptr->current_floor_ptr;
- feature_type *f_ptr = &f_info[floor_ptr->grid_array[this->player_ptr->y][this->player_ptr->x].feat];
+ auto *f_ptr = &f_info[floor_ptr->grid_array[this->player_ptr->y][this->player_ptr->x].feat];
if (f_ptr->flags.has(FloorFeatureType::WATER)) {
result += (2 + this->player_ptr->lev / 10);
} else if (!this->player_ptr->levitation) {
auto *floor_ptr = player_ptr->current_floor_ptr;
auto *g_ptr = &floor_ptr->grid_array[ny][nx];
grid_type *oc_ptr = &floor_ptr->grid_array[oy][ox];
- feature_type *f_ptr = &f_info[g_ptr->feat];
+ auto *f_ptr = &f_info[g_ptr->feat];
feature_type *of_ptr = &f_info[oc_ptr->feat];
if (!(mpe_mode & MPE_STAYING)) {
*/
bool trap_can_be_ignored(PlayerType *player_ptr, FEAT_IDX feat)
{
- feature_type *f_ptr = &f_info[feat];
+ auto *f_ptr = &f_info[feat];
if (f_ptr->flags.has_not(FloorFeatureType::TRAP))
return true;
auto *floor_ptr = player_ptr->current_floor_ptr;
auto *g_ptr = &floor_ptr->grid_array[y][x];
FEAT_IDX feat = g_ptr->get_feat_mimic();
- feature_type *f_ptr = &f_info[feat];
+ auto *f_ptr = &f_info[feat];
TERM_COLOR a;
SYMBOL_CODE c;
if (f_ptr->flags.has_not(FloorFeatureType::REMEMBER)) {
TERM_COLOR a;
SYMBOL_CODE c;
if (!in_bounds2(player_ptr->current_floor_ptr, y, x)) {
- feature_type *f_ptr = &f_info[feat_none];
+ auto *f_ptr = &f_info[feat_none];
a = f_ptr->x_attr[F_LIT_STANDARD];
c = f_ptr->x_char[F_LIT_STANDARD];
term_queue_char(x - player_ptr->x + Term->wid / 2 - 1, y - player_ptr->y + Term->hgt / 2 - 1, a, c, ta, tc);