1 #include "specific-object/death-crimson.h"
2 #include "artifact/fixed-art-types.h"
3 #include "effect/effect-characteristics.h"
4 #include "effect/effect-processor.h"
5 #include "floor/geometry.h"
6 #include "effect/attribute-types.h"
7 #include "system/object-type-definition.h"
8 #include "system/player-type-definition.h"
9 #include "target/target-checker.h"
10 #include "target/target-getter.h"
11 #include "view/display-messages.h"
14 * @brief クリムゾンを発射する / Fire Crimson, evoluting gun.
15 @ @param player_ptr プレイヤーへの参照ポインタ
16 * @return キャンセルした場合 false.
18 * Need to analyze size of the window.
19 * Need more color coding.
21 static bool fire_crimson(player_type *player_ptr)
24 if (!get_aim_dir(player_ptr, &dir))
27 POSITION tx = player_ptr->x + 99 * ddx[dir];
28 POSITION ty = player_ptr->y + 99 * ddy[dir];
29 if ((dir == 5) && target_okay(player_ptr)) {
35 if (player_ptr->pclass == PlayerClassType::ARCHER) {
36 if (player_ptr->lev >= 10)
39 if (player_ptr->lev >= 30)
42 if (player_ptr->lev >= 45)
46 BIT_FLAGS flg = PROJECT_STOP | PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL;
47 for (int i = 0; i < num; i++)
48 (void)project(player_ptr, 0, player_ptr->lev / 20 + 1, ty, tx, player_ptr->lev * player_ptr->lev * 6 / 50, AttributeType::ROCKET, flg);
53 bool activate_crimson(player_type *player_ptr, object_type *o_ptr)
55 if (o_ptr->name1 != ART_CRIMSON)
58 msg_print(_("せっかくだから『クリムゾン』をぶっぱなすぜ!", "I'll fire CRIMSON! SEKKAKUDAKARA!"));
59 return fire_crimson(player_ptr);