OSDN Git Service

[Refactor] #1511 「プレーヤー」表記を全て「プレイヤー」に変更した (日本語版のみ、ほぼDoxygenコメント)
[hengbandforosx/hengbandosx.git] / src / mind / mind-warrior.cpp
1 #include "mind/mind-warrior.h"
2 #include "cmd-action/cmd-attack.h"
3 #include "floor/geometry.h"
4 #include "spell-kind/spells-teleport.h"
5 #include "system/floor-type-definition.h"
6 #include "system/grid-type-definition.h"
7 #include "system/player-type-definition.h"
8 #include "target/target-getter.h"
9 #include "view/display-messages.h"
10
11 /*!
12  * 戦士と盗賊における、ヒット&アウェイのレイシャルパワー/突然変異
13  * @param player_ptr プレイヤーへの参照ポインタ
14  * @return コマンドの入力先にモンスターがいたらTRUE
15  */
16 bool hit_and_away(player_type *player_ptr)
17 {
18     DIRECTION dir;
19     if (!get_direction(player_ptr, &dir, false, false))
20         return false;
21     POSITION y = player_ptr->y + ddy[dir];
22     POSITION x = player_ptr->x + ddx[dir];
23     if (player_ptr->current_floor_ptr->grid_array[y][x].m_idx) {
24         do_cmd_attack(player_ptr, y, x, HISSATSU_NONE);
25         if (randint0(player_ptr->skill_dis) < 7)
26             msg_print(_("うまく逃げられなかった。", "You failed to run away."));
27         else
28             teleport_player(player_ptr, 30, TELEPORT_SPONTANEOUS);
29         return true;
30     }
31
32     msg_print(_("その方向にはモンスターはいません。", "You don't see any monster in this direction"));
33     msg_print(nullptr);
34     return false;
35 }
36
37 /*!
38  * 剣の舞い
39  * @param player_ptr プレイヤーへの参照ポインタ
40  * @return 常にTRUE
41  */
42 bool sword_dancing(player_type *player_ptr)
43 {
44     DIRECTION dir;
45     POSITION y = 0, x = 0;
46     grid_type *g_ptr;
47     for (int i = 0; i < 6; i++) {
48         dir = randint0(8);
49         y = player_ptr->y + ddy_ddd[dir];
50         x = player_ptr->x + ddx_ddd[dir];
51         g_ptr = &player_ptr->current_floor_ptr->grid_array[y][x];
52
53         /* Hack -- attack monsters */
54         if (g_ptr->m_idx)
55             do_cmd_attack(player_ptr, y, x, HISSATSU_NONE);
56         else {
57             msg_print(_("攻撃が空をきった。", "You attack the empty air."));
58         }
59     }
60
61     return true;
62 }