From 5fd0642bba99c0813e7bdb9119eb04f9feea6590 Mon Sep 17 00:00:00 2001 From: deskull Date: Sat, 23 Feb 2019 20:10:54 +0900 Subject: [PATCH] =?utf8?q?[Refactor]=20#37353=20=E3=82=AF=E3=83=AA?= =?utf8?q?=E3=83=A0=E3=82=BE=E3=83=B3=E3=81=AE=E5=87=A6=E7=90=86=E3=82=92?= =?utf8?q?=20fire=5Fcrimson()=20=E3=81=AB=E5=88=86=E9=9B=A2=E3=80=82=20/?= =?utf8?q?=20Separate=20activation=20of=20Crimson=20to=20fire=5Fcrimson().?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- src/cmd-activate.c | 35 +---------------------------------- src/externs.h | 1 + src/spells3.c | 43 ++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 44 insertions(+), 35 deletions(-) diff --git a/src/cmd-activate.c b/src/cmd-activate.c index f4d2eee85..938682f60 100644 --- a/src/cmd-activate.c +++ b/src/cmd-activate.c @@ -1958,43 +1958,10 @@ bool activate_artifact(object_type *o_ptr) case ACT_CRIMSON: { - int num = 1; - int i; - BIT_FLAGS flg = PROJECT_STOP | PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL; - int tx, ty; - /* Only for Crimson */ if (o_ptr->name1 != ART_CRIMSON) return FALSE; - msg_print(_("せっかくだから『クリムゾン』をぶっぱなすぜ!", "I'll fire CRIMSON! SEKKAKUDAKARA!")); - - if (!get_aim_dir(&dir)) return FALSE; - - /* Use the given direction */ - tx = p_ptr->x + 99 * ddx[dir]; - ty = p_ptr->y + 99 * ddy[dir]; - - /* Hack -- Use an actual "target" */ - if ((dir == 5) && target_okay()) - { - tx = target_col; - ty = target_row; - } - - if (p_ptr->pclass == CLASS_ARCHER) - { - /* Extra shot at level 10 */ - if (p_ptr->lev >= 10) num++; - - /* Extra shot at level 30 */ - if (p_ptr->lev >= 30) num++; - - /* Extra shot at level 45 */ - if (p_ptr->lev >= 45) num++; - } - - for (i = 0; i < num; i++) - project(0, p_ptr->lev / 20 + 1, ty, tx, p_ptr->lev*p_ptr->lev * 6 / 50, GF_ROCKET, flg, -1); + if(!fire_crimson()) return FALSE; break; } diff --git a/src/externs.h b/src/externs.h index e41e31d0c..0a06fe224 100644 --- a/src/externs.h +++ b/src/externs.h @@ -1036,6 +1036,7 @@ extern bool shock_power(void); extern bool booze(player_type *creature_ptr); extern bool detonation(player_type *creature_ptr); extern void blood_curse_to_enemy(MONSTER_IDX m_idx); +extern bool fire_crimson(void); /* bldg.c */ diff --git a/src/spells3.c b/src/spells3.c index 6a6c7771d..6ff4f4f85 100644 --- a/src/spells3.c +++ b/src/spells3.c @@ -4623,4 +4623,45 @@ void blood_curse_to_enemy(MONSTER_IDX m_idx) } } } while (one_in_(5)); -} \ No newline at end of file +} + + +bool fire_crimson(void) +{ + int num = 1; + int i; + BIT_FLAGS flg = PROJECT_STOP | PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL; + POSITION tx, ty; + DIRECTION dir; + + if (!get_aim_dir(&dir)) return FALSE; + + /* Use the given direction */ + tx = p_ptr->x + 99 * ddx[dir]; + ty = p_ptr->y + 99 * ddy[dir]; + + /* Hack -- Use an actual "target" */ + if ((dir == 5) && target_okay()) + { + tx = target_col; + ty = target_row; + } + + if (p_ptr->pclass == CLASS_ARCHER) + { + /* Extra shot at level 10 */ + if (p_ptr->lev >= 10) num++; + + /* Extra shot at level 30 */ + if (p_ptr->lev >= 30) num++; + + /* Extra shot at level 45 */ + if (p_ptr->lev >= 45) num++; + } + + for (i = 0; i < num; i++) + project(0, p_ptr->lev / 20 + 1, ty, tx, p_ptr->lev*p_ptr->lev * 6 / 50, GF_ROCKET, flg, -1); + + return TRUE; +} + -- 2.11.0