OSDN Git Service

[Refactor] #37353 スターライトの杖の効果を starlight() に分離。 / Separate implementation of 'staff...
authorDeskull <deskull@users.sourceforge.jp>
Sat, 19 Jan 2019 10:33:03 +0000 (19:33 +0900)
committerDeskull <deskull@users.sourceforge.jp>
Sat, 19 Jan 2019 10:33:03 +0000 (19:33 +0900)
src/cmd-usestaff.c
src/externs.h
src/spells2.c

index 37777ea..dd3a333 100644 (file)
@@ -88,32 +88,8 @@ int staff_effect(OBJECT_SUBTYPE_VALUE sval, bool *use_charge, bool powerful, boo
                }\r
 \r
                case SV_STAFF_STARLITE:\r
-               {\r
-                       HIT_POINT num = damroll(5, 3);\r
-                       POSITION y = 0, x = 0;\r
-                       int attempts;\r
-\r
-                       if (!p_ptr->blind && !magic)\r
-                       {\r
-                               msg_print(_("杖の先が明るく輝いた...", "The end of the staff glows brightly..."));\r
-                       }\r
-                       for (k = 0; k < num; k++)\r
-                       {\r
-                               attempts = 1000;\r
-\r
-                               while (attempts--)\r
-                               {\r
-                                       scatter(&y, &x, p_ptr->y, p_ptr->x, 4, PROJECT_LOS);\r
-                                       if (!cave_have_flag_bold(y, x, FF_PROJECT)) continue;\r
-                                       if (!player_bold(y, x)) break;\r
-                               }\r
-\r
-                               project(0, 0, y, x, damroll(6 + lev / 8, 10), GF_LITE_WEAK,\r
-                                       (PROJECT_BEAM | PROJECT_THRU | PROJECT_GRID | PROJECT_KILL | PROJECT_LOS), -1);\r
-                       }\r
-                       ident = TRUE;\r
+                       ident = starlight(magic);\r
                        break;\r
-               }\r
 \r
                case SV_STAFF_LITE:\r
                {\r
index 437e033..ab07772 100644 (file)
@@ -916,6 +916,7 @@ extern bool destroy_area(POSITION y1, POSITION x1, POSITION r, bool in_generate)
 extern bool earthquake_aux(POSITION cy, POSITION cx, POSITION r, MONSTER_IDX m_idx);
 extern bool earthquake(POSITION cy, POSITION cx, POSITION r);
 extern void lite_room(POSITION y1, POSITION x1);
+extern bool starlight(bool magic);
 extern void unlite_room(POSITION y1, POSITION x1);
 extern bool lite_area(HIT_POINT dam, POSITION rad);
 extern bool unlite_area(HIT_POINT dam, POSITION rad);
index 1ec518c..ffcef99 100644 (file)
@@ -2593,6 +2593,34 @@ void unlite_room(POSITION y1, POSITION x1)
        cave_temp_room_unlite();
 }
 
+bool starlight(bool magic)
+{
+       HIT_POINT num = damroll(5, 3);
+       POSITION y = 0, x = 0;
+       int k;
+       int attempts;
+
+       if (!p_ptr->blind && !magic)
+       {
+               msg_print(_("杖の先が明るく輝いた...", "The end of the staff glows brightly..."));
+       }
+       for (k = 0; k < num; k++)
+       {
+               attempts = 1000;
+
+               while (attempts--)
+               {
+                       scatter(&y, &x, p_ptr->y, p_ptr->x, 4, PROJECT_LOS);
+                       if (!cave_have_flag_bold(y, x, FF_PROJECT)) continue;
+                       if (!player_bold(y, x)) break;
+               }
+
+               project(0, 0, p_ptr->y, p_ptr->x, damroll(6 + p_ptr->lev / 8, 10), GF_LITE_WEAK,
+                       (PROJECT_BEAM | PROJECT_THRU | PROJECT_GRID | PROJECT_KILL | PROJECT_LOS), -1);
+       }
+       return TRUE;
+}
+
 
 
 /*!