}\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
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);
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;
+}
+
/*!