OSDN Git Service

359781a583096b20de3426be4e1826f6322796dc
[hengband/hengband.git] / src / combat / melee.h
1 
2 typedef int COMBAT_OPTION_IDX; // py_attack()用コンバットオプション型定義
3
4
5 #ifdef JP
6 #define MAX_SILLY_ATTACK 41 /*!< 幻覚時のジョークメッセージ最大数 */
7 #else
8 #define MAX_SILLY_ATTACK 29 /*!< Hallucination stuff */
9 #endif
10
11
12 /*** Monster blow constants ***/
13
14 /*!
15  * @note モンスターの打撃方法 / New monster blow methods
16  * 打撃の種別に応じて傷と朦朧が発生するかがコメントの通りに決まる
17  */
18 #define RBM_HIT          1 /*!< モンスターの攻撃種別:殴る(傷/朦朧が半々) */
19 #define RBM_TOUCH        2 /*!< モンスターの攻撃種別:触る */
20 #define RBM_PUNCH        3 /*!< モンスターの攻撃種別:パンチする(朦朧) */
21 #define RBM_KICK         4 /*!< モンスターの攻撃種別:蹴る(朦朧) */
22 #define RBM_CLAW         5 /*!< モンスターの攻撃種別:ひっかく(傷) */
23 #define RBM_BITE         6 /*!< モンスターの攻撃種別:噛む(傷) */
24 #define RBM_STING        7 /*!< モンスターの攻撃種別:刺す */
25 #define RBM_SLASH        8 /*!< モンスターの攻撃種別:斬る(傷) */
26 #define RBM_BUTT         9 /*!< モンスターの攻撃種別:角で突く(朦朧) */
27 #define RBM_CRUSH       10 /*!< モンスターの攻撃種別:体当たりする(朦朧) */
28 #define RBM_ENGULF      11 /*!< モンスターの攻撃種別:飲み込む */
29 #define RBM_CHARGE      12 /*!< モンスターの攻撃種別:請求書を寄越す */
30 #define RBM_CRAWL       13 /*!< モンスターの攻撃種別:体の上を這い回る */
31 #define RBM_DROOL       14 /*!< モンスターの攻撃種別:よだれをたらす */
32 #define RBM_SPIT        15 /*!< モンスターの攻撃種別:つばを吐く */
33 #define RBM_EXPLODE     16 /*!< モンスターの攻撃種別:爆発する */
34 #define RBM_GAZE        17 /*!< モンスターの攻撃種別:にらむ */
35 #define RBM_WAIL        18 /*!< モンスターの攻撃種別:泣き叫ぶ */
36 #define RBM_SPORE       19 /*!< モンスターの攻撃種別:胞子を飛ばす */
37 #define RBM_XXX4        20 /*!< モンスターの攻撃種別:未定義 */
38 #define RBM_BEG         21 /*!< モンスターの攻撃種別:金をせがむ */
39 #define RBM_INSULT      22 /*!< モンスターの攻撃種別:侮辱する */
40 #define RBM_MOAN        23 /*!< モンスターの攻撃種別:うめく */
41 #define RBM_SHOW        24 /*!< モンスターの攻撃種別:歌う */
42 #define RBM_SHOOT       25 /*!< モンスターの攻撃種別:射撃(非打撃) */
43
44
45  /*!
46   * @note モンスターの攻撃効果 / New monster blow effects
47   */
48 #define RBE_HURT         1 /*!< モンスターの攻撃効果: 攻撃する*/
49 #define RBE_POISON       2 /*!< モンスターの攻撃効果: 毒をくらわす*/
50 #define RBE_UN_BONUS     3 /*!< モンスターの攻撃効果: 劣化させる*/
51 #define RBE_UN_POWER     4 /*!< モンスターの攻撃効果: 充填魔力を吸収する*/
52 #define RBE_EAT_GOLD     5 /*!< モンスターの攻撃効果: 金を盗む*/
53 #define RBE_EAT_ITEM     6 /*!< モンスターの攻撃効果: アイテムを盗む*/
54 #define RBE_EAT_FOOD     7 /*!< モンスターの攻撃効果: あなたの食糧を食べる*/
55 #define RBE_EAT_LITE     8 /*!< モンスターの攻撃効果: 明かりを吸収する*/
56 #define RBE_ACID         9 /*!< モンスターの攻撃効果: 酸を飛ばす*/
57 #define RBE_ELEC        10 /*!< モンスターの攻撃効果: 感電させる*/
58 #define RBE_FIRE        11 /*!< モンスターの攻撃効果: 燃やす*/
59 #define RBE_COLD        12 /*!< モンスターの攻撃効果: 凍らせる*/
60 #define RBE_BLIND       13 /*!< モンスターの攻撃効果: 盲目にする*/
61 #define RBE_CONFUSE     14 /*!< モンスターの攻撃効果: 混乱させる*/
62 #define RBE_TERRIFY     15 /*!< モンスターの攻撃効果: 恐怖させる*/
63 #define RBE_PARALYZE    16 /*!< モンスターの攻撃効果: 麻痺させる*/
64 #define RBE_LOSE_STR    17 /*!< モンスターの攻撃効果: 腕力を減少させる*/
65 #define RBE_LOSE_INT    18 /*!< モンスターの攻撃効果: 知能を減少させる*/
66 #define RBE_LOSE_WIS    19 /*!< モンスターの攻撃効果: 賢さを減少させる*/
67 #define RBE_LOSE_DEX    20 /*!< モンスターの攻撃効果: 器用さを減少させる*/
68 #define RBE_LOSE_CON    21 /*!< モンスターの攻撃効果: 耐久力を減少させる*/
69 #define RBE_LOSE_CHR    22 /*!< モンスターの攻撃効果: 魅力を減少させる*/
70 #define RBE_LOSE_ALL    23 /*!< モンスターの攻撃効果: 全ステータスを減少させる*/
71 #define RBE_SHATTER     24 /*!< モンスターの攻撃効果: 粉砕する*/
72 #define RBE_EXP_10      25 /*!< モンスターの攻撃効果: 経験値を減少(10d6+)させる*/
73 #define RBE_EXP_20      26 /*!< モンスターの攻撃効果: 経験値を減少(20d6+)させる*/
74 #define RBE_EXP_40      27 /*!< モンスターの攻撃効果: 経験値を減少(40d6+)させる*/
75 #define RBE_EXP_80      28 /*!< モンスターの攻撃効果: 経験値を減少(80d6+)させる*/
76 #define RBE_DISEASE     29 /*!< モンスターの攻撃効果: 病気にする*/
77 #define RBE_TIME        30 /*!< モンスターの攻撃効果: 時間を逆戻りさせる*/
78 #define RBE_DR_LIFE     31 /*!< モンスターの攻撃効果: 生命力を吸収する*/
79 #define RBE_DR_MANA     32 /*!< モンスターの攻撃効果: 魔力を奪う*/
80 #define RBE_SUPERHURT   33 /*!< モンスターの攻撃効果: 強力に攻撃する*/
81 #define RBE_INERTIA     34 /*!< モンスターの攻撃効果: 減速させる*/
82 #define RBE_STUN        35 /*!< モンスターの攻撃効果: 朦朧とさせる*/
83
84 #define MAX_MA 17 /*!< 修行僧マーシャルアーツの技数 / Monk martial arts... */
85 #define MA_KNEE 1 /*!< 金的効果ID */
86 #define MA_SLOW 2 /*!< 膝蹴り効果ID */
87
88 #define HISSATSU_NONE   0
89 #define HISSATSU_2      1
90 #define HISSATSU_3WAY   2
91 #define HISSATSU_SUTEMI 3
92 #define HISSATSU_FIRE   4
93 #define HISSATSU_COLD   5
94 #define HISSATSU_POISON 6
95 #define HISSATSU_ELEC   7
96 #define HISSATSU_NYUSIN 8
97 #define HISSATSU_FUKI   9
98 #define HISSATSU_MAJIN  10
99 #define HISSATSU_BOOMER 11
100 #define HISSATSU_DRAIN  12
101 #define HISSATSU_SEKIRYUKA 13
102 #define HISSATSU_OTAKEBI 14
103 #define HISSATSU_SHOUGE 15
104 #define HISSATSU_CONF   16
105 #define HISSATSU_ISSEN  17
106 #define HISSATSU_KYUSHO 18
107 #define HISSATSU_KONSIN 19
108 #define HISSATSU_HYAKU  20
109 #define HISSATSU_MINEUCHI 21
110 #define HISSATSU_MEKIKI 22
111 #define HISSATSU_ZANMA  23
112 #define HISSATSU_UNDEAD 24
113 #define HISSATSU_HAGAN  25
114 #define HISSATSU_QUAKE  26
115 #define HISSATSU_COUNTER 27
116 #define HISSATSU_HARAI  28
117 #define HISSATSU_3DAN   29
118 #define HISSATSU_100NIN 30
119 #define HISSATSU_IAI    100
120
121 extern const concptr silly_attacks[MAX_SILLY_ATTACK];
122 #ifdef JP
123 extern const concptr silly_attacks2[MAX_SILLY_ATTACK];
124 #endif
125
126 extern const byte adj_str_blow[];
127 extern const byte adj_dex_blow[];
128 extern const byte blows_table[12][12];
129
130 /* For Monk martial arts */
131 typedef struct martial_arts martial_arts;
132 struct martial_arts
133 {
134         concptr desc;       /* A verbose attack description */
135         PLAYER_LEVEL min_level;  /* Minimum level to use */
136         int chance;     /* Chance of 'success' */
137         int dd;         /* Damage dice */
138         int ds;         /* Damage sides */
139         int effect;     /* Special effects */
140 };
141
142 typedef struct mbe_info_type mbe_info_type;
143
144 struct mbe_info_type
145 {
146         int power;        /* The attack "power" */
147         int explode_type; /* Explosion effect */
148 };
149
150 extern const martial_arts ma_blows[MAX_MA];
151 extern const int monk_ave_damage[PY_MAX_LEVEL + 1][3];
152
153 extern bool test_hit_norm(HIT_RELIABILITY chance, ARMOUR_CLASS ac, bool visible);
154 extern PERCENTAGE hit_chance(HIT_RELIABILITY chance, ARMOUR_CLASS ac);
155 extern HIT_POINT tot_dam_aux(player_type *attacker_ptr, object_type *o_ptr, HIT_POINT tdam, monster_type *m_ptr, BIT_FLAGS mode, bool thrown);
156 extern HIT_POINT critical_norm(WEIGHT weight, int plus, HIT_POINT dam, s16b meichuu, BIT_FLAGS mode);
157 extern bool py_attack(POSITION y, POSITION x, COMBAT_OPTION_IDX mode);
158 extern bool make_attack_normal(MONSTER_IDX m_idx);
159 extern void mon_take_hit_mon(MONSTER_IDX m_idx, HIT_POINT dam, bool *dead, bool *fear, concptr note, MONSTER_IDX who);
160 extern bool monst_attack_monst(MONSTER_IDX m_idx, MONSTER_IDX t_idx);
161
162 extern const mbe_info_type mbe_info[];