1 #include "status/temporary-resistance.h"
2 #include "core/disturbance.h"
3 #include "core/stuff-handler.h"
4 #include "game-option/disturbance-options.h"
5 #include "system/player-type-definition.h"
6 #include "system/redrawing-flags-updater.h"
7 #include "view/display-messages.h"
10 * @brief 一時的浮遊の継続時間をセットする / Set "tim_levitation", notice observable changes
12 * @param do_dec 現在の継続時間より長い値のみ上書きする
13 * @return ステータスに影響を及ぼす変化があった場合TRUEを返す。
15 bool set_tim_levitation(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
18 v = (v > 10000) ? 10000 : (v < 0) ? 0
21 if (player_ptr->is_dead) {
26 if (player_ptr->tim_levitation && !do_dec) {
27 if (player_ptr->tim_levitation > v) {
30 } else if (!player_ptr->tim_levitation) {
31 msg_print(_("体が宙に浮き始めた。", "You begin to fly!"));
35 if (player_ptr->tim_levitation) {
36 msg_print(_("もう宙に浮かべなくなった。", "You stop flying."));
41 player_ptr->tim_levitation = v;
42 auto &rfu = RedrawingFlagsUpdater::get_instance();
43 rfu.set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
49 disturb(player_ptr, false, false);
52 rfu.set_flag(StatusRedrawingFlag::BONUS);
53 handle_stuff(player_ptr);
57 bool set_ultimate_res(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
60 v = (v > 10000) ? 10000 : (v < 0) ? 0
63 if (player_ptr->is_dead) {
68 if (player_ptr->ult_res && !do_dec) {
69 if (player_ptr->ult_res > v) {
72 } else if (!player_ptr->ult_res) {
73 msg_print(_("あらゆることに対して耐性がついた気がする!", "You feel resistant!"));
77 if (player_ptr->ult_res) {
78 msg_print(_("あらゆることに対する耐性が薄れた気がする。", "You feel less resistant"));
83 player_ptr->ult_res = v;
84 auto &rfu = RedrawingFlagsUpdater::get_instance();
85 rfu.set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
91 disturb(player_ptr, false, false);
94 rfu.set_flag(StatusRedrawingFlag::BONUS);
95 handle_stuff(player_ptr);
99 bool set_tim_res_nether(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
102 v = (v > 10000) ? 10000 : (v < 0) ? 0
105 if (player_ptr->is_dead) {
110 if (player_ptr->tim_res_nether && !do_dec) {
111 if (player_ptr->tim_res_nether > v) {
114 } else if (!player_ptr->tim_res_nether) {
115 msg_print(_("地獄の力に対して耐性がついた気がする!", "You feel nether-resistant!"));
121 if (player_ptr->tim_res_nether) {
122 msg_print(_("地獄の力に対する耐性が薄れた気がする。", "You feel less nether-resistant"));
127 player_ptr->tim_res_nether = v;
128 auto &rfu = RedrawingFlagsUpdater::get_instance();
129 rfu.set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
135 disturb(player_ptr, false, false);
138 rfu.set_flag(StatusRedrawingFlag::BONUS);
139 handle_stuff(player_ptr);
143 bool set_tim_res_time(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
146 v = (v > 10000) ? 10000 : (v < 0) ? 0
148 if (player_ptr->is_dead) {
153 if (player_ptr->tim_res_time && !do_dec) {
154 if (player_ptr->tim_res_time > v) {
157 } else if (!player_ptr->tim_res_time) {
158 msg_print(_("時間逆転の力に対して耐性がついた気がする!", "You feel time-resistant!"));
162 if (player_ptr->tim_res_time) {
163 msg_print(_("時間逆転の力に対する耐性が薄れた気がする。", "You feel less time-resistant"));
168 player_ptr->tim_res_time = v;
169 auto &rfu = RedrawingFlagsUpdater::get_instance();
170 rfu.set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
176 disturb(player_ptr, false, false);
179 rfu.set_flag(StatusRedrawingFlag::BONUS);
180 handle_stuff(player_ptr);