OSDN Git Service

[Fix] #41185 耐盲目があるのに盲目になる場合がある
authorHabu <habu@users.sourceforge.jp>
Sun, 17 Jan 2021 01:02:56 +0000 (10:02 +0900)
committerHabu <habu@users.sourceforge.jp>
Sun, 17 Jan 2021 01:02:56 +0000 (10:02 +0900)
盲目のガス・トラップの処理で、hit_trap_set_abnormal_status_p()へ
has_resist_blind()で得られた耐性フラグを渡す際、bool型にキャストしているが、
耐性フラグが第8ビットより上位にしかなかった場合にキャストの結果が0になり、
耐性が無いことになってしまっているのが原因。
引数として渡す時に0と等しくないかどうかの判定をしてから渡すようにする。
下のTRAP_CONFUSEではすでにそのようになっているので、修正し忘れと思われる。

src/grid/trap.c

index 2931e74..ce82e0f 100644 (file)
@@ -1,4 +1,4 @@
-#include "grid/trap.h"
+#include "grid/trap.h"
 #include "cmd-io/cmd-dump.h"
 #include "cmd-io/cmd-save.h"
 #include "core/disturbance.h"
@@ -512,8 +512,8 @@ void hit_trap(player_type *trapped_ptr, bool break_trap)
     }
 
     case TRAP_BLIND: {
-        hit_trap_set_abnormal_status_p(trapped_ptr, _("黒いガスに包み込まれた!", "A black gas surrounds you!"), (bool)has_resist_blind(trapped_ptr), set_blind,
-            trapped_ptr->blind + (TIME_EFFECT)randint0(50) + 25);
+        hit_trap_set_abnormal_status_p(trapped_ptr, _("黒いガスに包み込まれた!", "A black gas surrounds you!"), (has_resist_blind(trapped_ptr) != 0),
+            set_blind, trapped_ptr->blind + (TIME_EFFECT)randint0(50) + 25);
         break;
     }