1 #include "status/temporary-resistance.h"
2 #include "core/disturbance.h"
3 #include "core/player-redraw-types.h"
4 #include "core/stuff-handler.h"
5 #include "game-option/disturbance-options.h"
6 #include "system/player-type-definition.h"
7 #include "system/redrawing-flags-updater.h"
8 #include "view/display-messages.h"
11 * @brief 一時的浮遊の継続時間をセットする / Set "tim_levitation", notice observable changes
13 * @param do_dec 現在の継続時間より長い値のみ上書きする
14 * @return ステータスに影響を及ぼす変化があった場合TRUEを返す。
16 bool set_tim_levitation(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
19 v = (v > 10000) ? 10000 : (v < 0) ? 0
22 if (player_ptr->is_dead) {
27 if (player_ptr->tim_levitation && !do_dec) {
28 if (player_ptr->tim_levitation > v) {
31 } else if (!player_ptr->tim_levitation) {
32 msg_print(_("体が宙に浮き始めた。", "You begin to fly!"));
36 if (player_ptr->tim_levitation) {
37 msg_print(_("もう宙に浮かべなくなった。", "You stop flying."));
42 player_ptr->tim_levitation = v;
43 auto &rfu = RedrawingFlagsUpdater::get_instance();
44 rfu.set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
50 disturb(player_ptr, false, false);
53 rfu.set_flag(StatusRedrawingFlag::BONUS);
54 handle_stuff(player_ptr);
58 bool set_ultimate_res(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
61 v = (v > 10000) ? 10000 : (v < 0) ? 0
64 if (player_ptr->is_dead) {
69 if (player_ptr->ult_res && !do_dec) {
70 if (player_ptr->ult_res > v) {
73 } else if (!player_ptr->ult_res) {
74 msg_print(_("あらゆることに対して耐性がついた気がする!", "You feel resistant!"));
78 if (player_ptr->ult_res) {
79 msg_print(_("あらゆることに対する耐性が薄れた気がする。", "You feel less resistant"));
84 player_ptr->ult_res = v;
85 auto &rfu = RedrawingFlagsUpdater::get_instance();
86 rfu.set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
92 disturb(player_ptr, false, false);
95 rfu.set_flag(StatusRedrawingFlag::BONUS);
96 handle_stuff(player_ptr);
100 bool set_tim_res_nether(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
103 v = (v > 10000) ? 10000 : (v < 0) ? 0
106 if (player_ptr->is_dead) {
111 if (player_ptr->tim_res_nether && !do_dec) {
112 if (player_ptr->tim_res_nether > v) {
115 } else if (!player_ptr->tim_res_nether) {
116 msg_print(_("地獄の力に対して耐性がついた気がする!", "You feel nether-resistant!"));
122 if (player_ptr->tim_res_nether) {
123 msg_print(_("地獄の力に対する耐性が薄れた気がする。", "You feel less nether-resistant"));
128 player_ptr->tim_res_nether = v;
129 auto &rfu = RedrawingFlagsUpdater::get_instance();
130 rfu.set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
136 disturb(player_ptr, false, false);
139 rfu.set_flag(StatusRedrawingFlag::BONUS);
140 handle_stuff(player_ptr);
144 bool set_tim_res_time(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
147 v = (v > 10000) ? 10000 : (v < 0) ? 0
149 if (player_ptr->is_dead) {
154 if (player_ptr->tim_res_time && !do_dec) {
155 if (player_ptr->tim_res_time > v) {
158 } else if (!player_ptr->tim_res_time) {
159 msg_print(_("時間逆転の力に対して耐性がついた気がする!", "You feel time-resistant!"));
163 if (player_ptr->tim_res_time) {
164 msg_print(_("時間逆転の力に対する耐性が薄れた気がする。", "You feel less time-resistant"));
169 player_ptr->tim_res_time = v;
170 auto &rfu = RedrawingFlagsUpdater::get_instance();
171 rfu.set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
177 disturb(player_ptr, false, false);
180 rfu.set_flag(StatusRedrawingFlag::BONUS);
181 handle_stuff(player_ptr);