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;
#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.
* 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))
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);
+}