#include "angband.h"\r
+#include "floor.h"\r
#include "trap.h"\r
+#include "player-damage.h"\r
+#include "projection.h"\r
+#include "spells-summon.h"\r
+#include "quest.h"\r
+#include "artifact.h"\r
\r
static s16b normal_traps[MAX_NORMAL_TRAPS];\r
\r
* Get random trap\r
* @return 選択したトラップのID\r
* @details\r
-* XXX XXX XXX This routine should be redone to reflect trap "level".\n\r
+* This routine should be redone to reflect trap "level".\n\r
* That is, it does not make sense to have spiked pits at 50 feet.\n\r
* Actually, it is not this routine, but the "trap instantiation"\n\r
* code, which should also check for "trap doors" on quest levels.\n\r
*/\r
-s16b choose_random_trap(void)\r
+FEAT_IDX choose_random_trap(void)\r
{\r
FEAT_IDX feat;\r
\r
/* No longer hidden */\r
c_ptr->mimic = 0;\r
\r
- /* Notice */\r
note_spot(y, x);\r
-\r
- /* Redraw */\r
lite_spot(y, x);\r
}\r
}\r
*/\r
static int check_hit(int power)\r
{\r
- int k, ac;\r
+ int k;\r
+ ARMOUR_CLASS ac;\r
\r
/* Percentile dice */\r
k = randint0(100);\r
static void hit_trap_pit(int trap_feat_type)\r
{\r
HIT_POINT dam;\r
- cptr trap_name = "";\r
- cptr spike_name = "";\r
+ concptr trap_name = "";\r
+ concptr spike_name = "";\r
\r
switch (trap_feat_type)\r
{\r
}\r
}\r
\r
- /* Take the damage */\r
take_hit(DAMAGE_NOESCAPE, dam, trap_name, -1);\r
}\r
\r
* @param turn 状態異常の追加ターン量\r
* @return なし\r
*/\r
-static void hit_trap_set_abnormal_status(cptr trap_message, bool resist, bool(*set_status)(IDX), IDX turn_aux)\r
+static void hit_trap_set_abnormal_status(concptr trap_message, bool resist, bool(*set_status)(IDX), IDX turn_aux)\r
{\r
msg_print(trap_message);\r
if (!resist)\r
cave_type *c_ptr = &cave[y][x];\r
feature_type *f_ptr = &f_info[c_ptr->feat];\r
int trap_feat_type = have_flag(f_ptr->flags, FF_TRAP) ? f_ptr->subtype : NOT_TRAP;\r
- cptr name = _("トラップ", "a trap");\r
+ concptr name = _("トラップ", "a trap");\r
\r
- /* Disturb the player */\r
- disturb(0, 1);\r
+ disturb(FALSE, TRUE);\r
\r
cave_alter_feat(y, x, FF_HIT_TRAP);\r
\r
- /* Analyze XXX XXX XXX */\r
+ /* Analyze */\r
switch (trap_feat_type)\r
{\r
case TRAP_TRAPDOOR:\r
msg_print(_("落とし戸に落ちた!", "You have fallen through a trap door!"));\r
if ((p_ptr->pseikaku == SEIKAKU_COMBAT) || (inventory[INVEN_BOW].name1 == ART_CRIMSON))\r
msg_print(_("くっそ~!", ""));\r
+ else if((p_ptr->pseikaku == SEIKAKU_CHARGEMAN))\r
+ msg_print(_("ジュラル星人の仕業に違いない!", ""));\r
+\r
\r
sound(SOUND_FALL);\r
dam = damroll(2, 8);\r
num = 2 + randint1(3);\r
for (i = 0; i < num; i++)\r
{\r
- (void)summon_specific(0, y, x, dun_level, 0, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET));\r
+ (void)summon_specific(0, y, x, dun_level, 0, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET), '\0');\r
}\r
\r
if (dun_level > randint1(100)) /* No nasty effect for low levels */\r
/* Require line of projection */\r
if (!projectable(p_ptr->y, p_ptr->x, y1, x1)) continue;\r
\r
- if (summon_specific(0, y1, x1, lev, SUMMON_ARMAGE_EVIL, (PM_NO_PET)))\r
+ if (summon_specific(0, y1, x1, lev, SUMMON_ARMAGE_EVIL, (PM_NO_PET), '\0'))\r
evil_idx = hack_m_idx_ii;\r
\r
- if (summon_specific(0, y1, x1, lev, SUMMON_ARMAGE_GOOD, (PM_NO_PET)))\r
+ if (summon_specific(0, y1, x1, lev, SUMMON_ARMAGE_GOOD, (PM_NO_PET), '\0'))\r
{\r
good_idx = hack_m_idx_ii;\r
}\r
num = 1 + dun_level / 20;\r
for (i = 0; i < num; i++)\r
{\r
- (void)summon_specific(0, y, x, dun_level, SUMMON_PIRANHAS, (PM_ALLOW_GROUP | PM_NO_PET));\r
+ (void)summon_specific(0, y, x, dun_level, SUMMON_PIRANHAS, (PM_ALLOW_GROUP | PM_NO_PET), '\0');\r
}\r
break;\r
}\r