OSDN Git Service

[Refactor] #40634 Separated activate_crimson() from activation-switcher.c to death...
authorHourier <hourier@users.sourceforge.jp>
Wed, 19 Aug 2020 05:04:06 +0000 (14:04 +0900)
committerHourier <hourier@users.sourceforge.jp>
Wed, 19 Aug 2020 05:04:06 +0000 (14:04 +0900)
src/object-activation/activation-switcher.c
src/specific-object/death-crimson.c
src/specific-object/death-crimson.h

index e32af3a..99f12ed 100644 (file)
@@ -681,11 +681,7 @@ bool switch_activation(player_type *user_ptr, object_type *o_ptr, const activati
     case ACT_BLOODY_MOON:
         return activate_bloody_moon(user_ptr, o_ptr);
     case ACT_CRIMSON:
-        if (o_ptr->name1 != ART_CRIMSON)
-            return FALSE;
-
-        msg_print(_("せっかくだから『クリムゾン』をぶっぱなすぜ!", "I'll fire CRIMSON! SEKKAKUDAKARA!"));
-        return fire_crimson(user_ptr);
+        return activate_crimson(user_ptr, o_ptr);
     default:
         msg_format(_("Unknown activation effect: %d.", "Unknown activation effect: %d."), act_ptr->index);
         return FALSE;
index 9b92955..7be2c41 100644 (file)
@@ -1,10 +1,13 @@
 #include "specific-object/death-crimson.h"
+#include "art-definition/art-bow-types.h"
 #include "effect/effect-characteristics.h"
 #include "floor/geometry.h"
 #include "spell/process-effect.h"
 #include "spell/spell-types.h"
+#include "system/object-type-definition.h"
 #include "target/target-checker.h"
 #include "target/target-getter.h"
+#include "view/display-messages.h"
 
 /*!
  * @brief クリムゾンを発射する / Fire Crimson, evoluting gun.
@@ -14,7 +17,7 @@
  * Need to analyze size of the window.
  * Need more color coding.
  */
-bool fire_crimson(player_type *shooter_ptr)
+static bool fire_crimson(player_type *shooter_ptr)
 {
     DIRECTION dir;
     if (!get_aim_dir(shooter_ptr, &dir))
@@ -31,15 +34,26 @@ bool fire_crimson(player_type *shooter_ptr)
     if (shooter_ptr->pclass == CLASS_ARCHER) {
         if (shooter_ptr->lev >= 10)
             num++;
+
         if (shooter_ptr->lev >= 30)
             num++;
+
         if (shooter_ptr->lev >= 45)
             num++;
     }
 
     BIT_FLAGS flg = PROJECT_STOP | PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL;
     for (int i = 0; i < num; i++)
-        project(shooter_ptr, 0, shooter_ptr->lev / 20 + 1, ty, tx, shooter_ptr->lev * shooter_ptr->lev * 6 / 50, GF_ROCKET, flg, -1);
+        (void)project(shooter_ptr, 0, shooter_ptr->lev / 20 + 1, ty, tx, shooter_ptr->lev * shooter_ptr->lev * 6 / 50, GF_ROCKET, flg, -1);
 
     return TRUE;
 }
+
+bool activate_crimson(player_type *user_ptr, object_type *o_ptr)
+{
+    if (o_ptr->name1 != ART_CRIMSON)
+        return FALSE;
+
+    msg_print(_("せっかくだから『クリムゾン』をぶっぱなすぜ!", "I'll fire CRIMSON! SEKKAKUDAKARA!"));
+    return fire_crimson(user_ptr);
+}
index 051af27..ab5d35d 100644 (file)
@@ -2,4 +2,4 @@
 
 #include "system/angband.h"
 
-bool fire_crimson(player_type *shooter_ptr);
+bool activate_crimson(player_type *user_ptr, object_type *o_ptr);