OSDN Git Service

Merge pull request #3569 from sikabane-works/release/3.0.0.88-alpha
[hengbandforosx/hengbandosx.git] / src / status / bad-status-setter.h
1 #pragma once
2
3 #include "system/angband.h"
4 #include <memory>
5
6 /*!
7  * @details 仮引数がtmpなのは、全て範囲外の値を範囲内に収める処理が含まれるため
8  * @todo TIME_EFFECT型の引数はPlayerTypeの時限ステータスをTimedEffectsクラスへ入れる時にshortへ差し替えること.
9  */
10 enum class PlayerCutRank;
11 enum class PlayerStunRank;
12 class PlayerConfusion;
13 class PlayerType;
14 class BadStatusSetter {
15 public:
16     BadStatusSetter(PlayerType *player_ptr);
17     virtual ~BadStatusSetter() = default;
18
19     bool set_blindness(const TIME_EFFECT tmp_v);
20     bool mod_blindness(const TIME_EFFECT tmp_v);
21     bool set_confusion(const TIME_EFFECT tmp_v);
22     bool mod_confusion(const TIME_EFFECT tmp_v);
23     bool set_poison(const TIME_EFFECT tmp_v);
24     bool mod_poison(const TIME_EFFECT tmp_v);
25     bool set_fear(const TIME_EFFECT tmp_v);
26     bool mod_fear(const TIME_EFFECT tmp_v);
27     bool set_paralysis(const TIME_EFFECT tmp_v);
28     bool mod_paralysis(const TIME_EFFECT tmp_v);
29     bool hallucination(const TIME_EFFECT tmp_v);
30     bool mod_hallucination(const TIME_EFFECT tmp_v);
31     bool set_deceleration(const TIME_EFFECT tmp_v, bool do_dec);
32     bool mod_deceleration(const TIME_EFFECT tmp_v, bool do_dec);
33     bool set_stun(const TIME_EFFECT tmp_v);
34     bool mod_stun(const TIME_EFFECT tmp_v);
35     bool set_cut(const TIME_EFFECT tmp_v);
36     bool mod_cut(const TIME_EFFECT tmp_v);
37
38 private:
39     PlayerType *player_ptr;
40     std::shared_ptr<PlayerConfusion> player_confusion;
41
42     bool process_stun_effect(const short v);
43     void process_stun_status(const PlayerStunRank new_rank, const short v);
44     void clear_head();
45     void decrease_int_wis(const short v);
46     bool process_cut_effect(const short v);
47     void decrease_charisma(const PlayerCutRank new_rank, const short v);
48     void stop_blooding(const PlayerCutRank new_rank);
49 };