1 #include "status/sight-setter.h"
2 #include "core/disturbance.h"
3 #include "core/stuff-handler.h"
4 #include "game-option/disturbance-options.h"
5 #include "player/player-status.h"
6 #include "realm/realm-song-numbers.h"
7 #include "spell-realm/spells-song.h"
8 #include "system/player-type-definition.h"
9 #include "system/redrawing-flags-updater.h"
10 #include "view/display-messages.h"
12 static bool update_sight(PlayerType *player_ptr, const bool notice)
14 auto &rfu = RedrawingFlagsUpdater::get_instance();
15 rfu.set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
21 disturb(player_ptr, false, false);
25 StatusRedrawingFlag::BONUS,
26 StatusRedrawingFlag::MONSTER_STATUSES,
29 handle_stuff(player_ptr);
34 * @brief 時限ESPの継続時間をセットする / Set "tim_esp", notice observable changes
36 * @param do_dec 現在の継続時間より長い値のみ上書きする
37 * @return ステータスに影響を及ぼす変化があった場合TRUEを返す。
39 bool set_tim_esp(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
42 v = (v > 10000) ? 10000 : (v < 0) ? 0
45 if (player_ptr->is_dead) {
50 if (player_ptr->tim_esp && !do_dec) {
51 if (player_ptr->tim_esp > v) {
54 } else if (!is_time_limit_esp(player_ptr)) {
55 msg_print(_("意識が広がった気がする!", "You feel your consciousness expand!"));
59 if (player_ptr->tim_esp && !music_singing(player_ptr, MUSIC_MIND)) {
60 msg_print(_("意識は元に戻った。", "Your consciousness contracts again."));
65 player_ptr->tim_esp = v;
66 return update_sight(player_ptr, notice);
70 * @brief 時限透明視の継続時間をセットする / Set "tim_invis", notice observable changes
72 * @param do_dec 現在の継続時間より長い値のみ上書きする
73 * @return ステータスに影響を及ぼす変化があった場合TRUEを返す。
75 bool set_tim_invis(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
78 v = (v > 10000) ? 10000 : (v < 0) ? 0
81 if (player_ptr->is_dead) {
86 if (player_ptr->tim_invis && !do_dec) {
87 if (player_ptr->tim_invis > v) {
90 } else if (!player_ptr->tim_invis) {
91 msg_print(_("目が非常に敏感になった気がする!", "Your eyes feel very sensitive!"));
95 if (player_ptr->tim_invis) {
96 msg_print(_("目の敏感さがなくなったようだ。", "Your eyes feel less sensitive."));
101 player_ptr->tim_invis = v;
102 return update_sight(player_ptr, notice);
106 * @brief 時限赤外線視力の継続時間をセットする / Set "tim_infra", notice observable changes
108 * @param do_dec 現在の継続時間より長い値のみ上書きする
109 * @return ステータスに影響を及ぼす変化があった場合TRUEを返す。
111 bool set_tim_infra(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
114 v = (v > 10000) ? 10000 : (v < 0) ? 0
117 if (player_ptr->is_dead) {
122 if (player_ptr->tim_infra && !do_dec) {
123 if (player_ptr->tim_infra > v) {
126 } else if (!player_ptr->tim_infra) {
127 msg_print(_("目がランランと輝き始めた!", "Your eyes begin to tingle!"));
131 if (player_ptr->tim_infra) {
132 msg_print(_("目の輝きがなくなった。", "Your eyes stop tingling."));
137 player_ptr->tim_infra = v;
138 return update_sight(player_ptr, notice);