OSDN Git Service

Merge pull request #1673 from habu1010/feature/adjust-clang-format-rule
[hengbandforosx/hengbandosx.git] / src / grid / trap.h
1 #pragma once
2
3 #include "system/angband.h"
4 #include "util/flag-group.h"
5
6 // clang-format off
7 /*!
8  * 箱のトラップ定義 Chest trap flags
9  */
10 enum class ChestTrapType : ushort {
11     LOSE_STR = 0,       /*!< 箱のトラップ: 腕力減少の毒針 */
12     LOSE_CON = 1,       /*!< 箱のトラップ: 器用さ減少の毒針 */
13     POISON = 2,         /*!< 箱のトラップ: 毒針 */
14     PARALYZE = 3,       /*!< 箱のトラップ: 麻痺ガス */
15     EXPLODE = 4,        /*!< 箱のトラップ: 爆発 */
16     SUMMON = 5,         /*!< 箱のトラップ: 召喚のルーン(モンスター) */
17     SCATTER = 6,        /*!< 箱のトラップ: アイテム散乱 */
18     E_SUMMON = 7,       /*!< 箱のトラップ: 召喚のルーン(エレメンタル) */
19     BIRD_STORM = 8,     /*!< 箱のトラップ: 召喚のルーン(鳥) */
20     H_SUMMON = 9,      /*!< 箱のトラップ: 召喚のルーン(強敵) */
21     RUNES_OF_EVIL = 10, /*!< 箱のトラップ: 邪悪なルーン */
22     ALARM = 11,         /*!< 箱のトラップ: 警報装置 */
23     MAX,
24 };
25 // clang-format on
26
27 /* Types of normal traps */
28 enum trap_type {
29     NOT_TRAP = -1,
30     TRAP_TRAPDOOR = 0,
31     TRAP_PIT = 1,
32     TRAP_SPIKED_PIT = 2,
33     TRAP_POISON_PIT = 3,
34     TRAP_TY_CURSE = 4,
35     TRAP_TELEPORT = 5,
36     TRAP_FIRE = 6,
37     TRAP_ACID = 7,
38     TRAP_SLOW = 8,
39
40     TRAP_LOSE_STR = 9,
41     TRAP_LOSE_DEX = 10,
42     TRAP_LOSE_CON = 11,
43     TRAP_BLIND = 12,
44     TRAP_CONFUSE = 13,
45     TRAP_POISON = 14,
46     TRAP_SLEEP = 15,
47     TRAP_TRAPS = 16,
48     TRAP_ALARM = 17,
49
50     /* Types of special traps */
51     TRAP_OPEN = 18,
52     TRAP_ARMAGEDDON = 19,
53     TRAP_PIRANHA = 20,
54
55 };
56 const int MAX_NORMAL_TRAPS = TRAP_ALARM + 1;
57
58 extern const std::vector<EnumClassFlagGroup<ChestTrapType>> chest_traps;
59
60 struct player_type;
61 void init_normal_traps(void);
62 FEAT_IDX choose_random_trap(player_type *player_ptr);
63 void disclose_grid(player_type *player_ptr, POSITION y, POSITION x);
64 void place_trap(player_type *player_ptr, POSITION y, POSITION x);
65 void hit_trap(player_type *player_ptr, bool break_trap);