OSDN Git Service

18b522725a68fdaa7898d8ce3fb422d098f345b7
[hengbandforosx/hengbandosx.git] / src / monster / monster-damage.h
1 #pragma once
2
3 #include "monster-race/race-indice-types.h"
4 #include "system/angband.h"
5 #include <tuple>
6 #include <vector>
7
8 struct monster_race;
9 struct monster_type;
10 struct player_type;
11 typedef std::vector<std::tuple<monster_race_type, monster_race_type, monster_race_type>> combined_uniques;
12 class MonsterDamageProcessor {
13 public:
14     MonsterDamageProcessor(player_type *player_ptr, MONSTER_IDX m_idx, HIT_POINT dam, bool *fear);
15     virtual ~MonsterDamageProcessor() = default;
16     bool mon_take_hit(concptr note);
17
18 private:
19     player_type *player_ptr;
20     MONSTER_IDX m_idx;
21     HIT_POINT dam;
22     bool *fear;
23     void get_exp_from_mon(monster_type *m_ptr, HIT_POINT exp_dam);
24     bool genocide_chaos_patron();
25     bool process_dead_exp_virtue(concptr note, monster_type *exp_mon);
26     void death_special_flag_monster();
27     void death_unique_monster(monster_race_type r_idx);
28     bool check_combined_unique(const monster_race_type r_idx, std::vector<monster_race_type> *combined_uniques);
29     void death_combined_uniques(const monster_race_type r_idx, combined_uniques *combined_uniques);
30     void increase_kill_numbers();
31     void death_amberites(GAME_TEXT *m_name);
32     void dying_scream(GAME_TEXT *m_name);
33     void show_kill_message(concptr note, GAME_TEXT *m_name);
34     void show_bounty_message(GAME_TEXT *m_name);
35     void set_redraw();
36     void summon_special_unique();
37     void add_monster_fear();
38 };