OSDN Git Service

Merge pull request #1929 from habu1010/feature/fix-smith-object-stack
[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 class TrapType {
29     NOT_TRAP = -1,
30     TRAPDOOR = 0,
31     PIT = 1,
32     SPIKED_PIT = 2,
33     POISON_PIT = 3,
34     TY_CURSE = 4,
35     TELEPORT = 5,
36     FIRE = 6,
37     ACID = 7,
38     SLOW = 8,
39
40     LOSE_STR = 9,
41     LOSE_DEX = 10,
42     LOSE_CON = 11,
43     BLIND = 12,
44     CONFUSE = 13,
45     POISON = 14,
46     SLEEP = 15,
47     TRAPS = 16,
48     ALARM = 17,
49
50     /* Types of special traps */
51     OPEN = 18,
52     ARMAGEDDON = 19,
53     PIRANHA = 20,
54 };
55
56 extern const std::vector<EnumClassFlagGroup<ChestTrapType>> chest_traps;
57
58 class PlayerType;
59 void init_normal_traps(void);
60 FEAT_IDX choose_random_trap(PlayerType *player_ptr);
61 void disclose_grid(PlayerType *player_ptr, POSITION y, POSITION x);
62 void place_trap(PlayerType *player_ptr, POSITION y, POSITION x);
63 void hit_trap(PlayerType *player_ptr, bool break_trap);