From 448152534a1a34c7be48acb874584543bd5c44a1 Mon Sep 17 00:00:00 2001 From: Hourier Date: Wed, 19 Aug 2020 14:04:06 +0900 Subject: [PATCH] [Refactor] #40634 Separated activate_crimson() from activation-switcher.c to death-crimson.c/h --- src/object-activation/activation-switcher.c | 6 +----- src/specific-object/death-crimson.c | 18 ++++++++++++++++-- src/specific-object/death-crimson.h | 2 +- 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/object-activation/activation-switcher.c b/src/object-activation/activation-switcher.c index e32af3a5f..99f12ed9d 100644 --- a/src/object-activation/activation-switcher.c +++ b/src/object-activation/activation-switcher.c @@ -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; diff --git a/src/specific-object/death-crimson.c b/src/specific-object/death-crimson.c index 9b9295518..7be2c4179 100644 --- a/src/specific-object/death-crimson.c +++ b/src/specific-object/death-crimson.c @@ -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); +} diff --git a/src/specific-object/death-crimson.h b/src/specific-object/death-crimson.h index 051af2751..ab5d35d1f 100644 --- a/src/specific-object/death-crimson.h +++ b/src/specific-object/death-crimson.h @@ -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); -- 2.11.0