2 * @brief monster-processのための構造体群初期化処理と共通性の極めて高い処理
6 * 概ね、PlayerType 構造体が引数でない場合はここへ移動させることを検討しても良い
7 * 引数に入っていたらここには移動させないこと
10 #include "monster/monster-processor-util.h"
11 #include "monster-race/monster-race.h"
12 #include "monster/monster-status.h"
13 #include "system/monster-entity.h"
14 #include "system/monster-race-info.h"
17 * @brief ターン経過フラグ構造体の初期化
18 * @param riding_idx 乗馬中のモンスターID
19 * @param m_idx モンスターID
20 * @return 初期化済のターン経過フラグ
22 turn_flags *init_turn_flags(MONSTER_IDX riding_idx, MONSTER_IDX m_idx, turn_flags *turn_flags_ptr)
24 turn_flags_ptr->is_riding_mon = (m_idx == riding_idx);
25 turn_flags_ptr->do_turn = false;
26 turn_flags_ptr->do_move = false;
27 turn_flags_ptr->do_view = false;
28 turn_flags_ptr->must_alter_to_move = false;
29 turn_flags_ptr->did_open_door = false;
30 turn_flags_ptr->did_bash_door = false;
31 turn_flags_ptr->did_take_item = false;
32 turn_flags_ptr->did_kill_item = false;
33 turn_flags_ptr->did_move_body = false;
34 turn_flags_ptr->did_pass_wall = false;
35 turn_flags_ptr->did_kill_wall = false;
36 return turn_flags_ptr;
39 * @brief coordinate_candidate の初期化
43 coordinate_candidate init_coordinate_candidate(void)
45 coordinate_candidate candidate;
53 * @brief モンスターの移動方向を保存する
58 void store_enemy_approch_direction(int *mm, POSITION y, POSITION x)
60 /* North, South, East, West, North-West, North-East, South-West, South-East */
61 if ((y < 0) && (x == 0)) {
65 } else if ((y > 0) && (x == 0)) {
69 } else if ((x > 0) && (y == 0)) {
73 } else if ((x < 0) && (y == 0)) {
77 } else if ((y < 0) && (x < 0)) {
81 } else if ((y < 0) && (x > 0)) {
85 } else if ((y > 0) && (x < 0)) {
89 } else if ((y > 0) && (x > 0)) {
97 * @brief get_movable_grid() における移動の方向を保存する
102 void store_moves_val(int *mm, int y, int x)
104 POSITION ax = std::abs(x);
105 POSITION ay = std::abs(y);
115 if (ay > (ax << 1)) {
117 } else if (ax > (ay << 1)) {
258 * @brief 古いモンスター情報の保存
259 * @param monrace_id モンスター種族ID
261 old_race_flags::old_race_flags(MonsterRaceId monrace_id)
263 if (!MonsterRace(monrace_id).is_valid()) {
267 const auto &monrace = monraces_info[monrace_id];
269 this->old_r_flags1 = monrace.r_flags1;
270 this->old_r_flags2 = monrace.r_flags2;
271 this->old_r_flags3 = monrace.r_flags3;
272 this->old_r_ability_flags = monrace.r_ability_flags;
273 this->old_r_behavior_flags = monrace.r_behavior_flags;
274 this->old_r_kind_flags = monrace.r_kind_flags;
275 this->old_r_resistance_flags = monrace.r_resistance_flags;
276 this->old_r_drop_flags = monrace.r_drop_flags;
277 this->old_r_feature_flags = monrace.r_feature_flags;
279 this->old_r_blows0 = monrace.r_blows[0];
280 this->old_r_blows1 = monrace.r_blows[1];
281 this->old_r_blows2 = monrace.r_blows[2];
282 this->old_r_blows3 = monrace.r_blows[3];
284 this->old_r_cast_spell = monrace.r_cast_spell;