OSDN Git Service

b12bfe897a7b0a94c238e0a6d08677267a01b6bc
[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 class MonsterDamageProcessor {
12 public:
13     MonsterDamageProcessor(player_type *target_ptr, MONSTER_IDX m_idx, HIT_POINT dam, bool *fear);
14     MonsterDamageProcessor() = delete;
15     virtual ~MonsterDamageProcessor() = default;
16     bool mon_take_hit(concptr note);
17
18 private:
19     player_type *target_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     void death_special_flag_monster();
26     void death_unique_monster(monster_race_type r_idx);
27     bool check_combined_unique(const monster_race_type r_idx, std::vector<monster_race_type> *combined_uniques);
28     void death_combined_uniques(const monster_race_type r_idx, std::vector<std::tuple<monster_race_type, monster_race_type, monster_race_type>> *combined_uniques);
29     void increase_kill_numbers();
30     void death_amberites(GAME_TEXT *m_name);
31     void dying_scream(GAME_TEXT *m_name);
32     void change_virtue_non_beginner();
33     void change_virtue_unique();
34     void change_virtue_good_evil();
35     void change_virtue_revenge();
36     void change_virtue_wild_thief();
37     void set_redraw();
38     void summon_special_unique();
39 };