#include "angband.h"
#include "cmd-pet.h"
#include "monsterrace-hook.h"
+#include "melee.h"
+#include "projection.h"
+#include "spells-summon.h"
+#include "quest.h"
+#include "avatar.h"
/*!
monster_type *m_ptr = &m_list[m_idx];
monster_race *r_ptr = &r_info[m_ptr->r_idx];
-
monster_type *t_ptr;
if (riding_t_m_idx && player_bold(m_ptr->fy, m_ptr->fx))
* @param who 打撃を行ったモンスターの参照ID
* @return なし
*/
-void mon_take_hit_mon(MONSTER_IDX m_idx, HIT_POINT dam, bool *dead, bool *fear, cptr note, IDX who)
+void mon_take_hit_mon(MONSTER_IDX m_idx, HIT_POINT dam, bool *dead, bool *fear, concptr note, IDX who)
{
monster_type *m_ptr = &m_list[m_idx];
monster_race *r_ptr = &r_info[m_ptr->r_idx];
- char m_name[160];
+ GAME_TEXT m_name[160];
bool seen = is_seen(m_ptr);
/* Can the player be aware of this attack? */
*/
-static sint d_off_y_0[] = { 0 };
-static sint d_off_x_0[] = { 0 };
+static POSITION d_off_y_0[] = { 0 };
+static POSITION d_off_x_0[] = { 0 };
-static sint d_off_y_1[] = { -1, -1, -1, 0, 0, 1, 1, 1, 0 };
-static sint d_off_x_1[] = { -1, 0, 1, -1, 1, -1, 0, 1, 0 };
+static POSITION d_off_y_1[] = { -1, -1, -1, 0, 0, 1, 1, 1, 0 };
+static POSITION d_off_x_1[] = { -1, 0, 1, -1, 1, -1, 0, 1, 0 };
-static sint d_off_y_2[] = { -1, -1, -2, -2, -2, 0, 0, 1, 1, 2, 2, 2, 0 };
-static sint d_off_x_2[] = { -2, 2, -1, 0, 1, -2, 2, -2, 2, -1, 0, 1, 0 };
+static POSITION d_off_y_2[] = { -1, -1, -2, -2, -2, 0, 0, 1, 1, 2, 2, 2, 0 };
+static POSITION d_off_x_2[] = { -2, 2, -1, 0, 1, -2, 2, -2, 2, -1, 0, 1, 0 };
-static sint d_off_y_3[] = { -1, -1, -2, -2, -3, -3, -3, 0, 0, 1, 1, 2, 2, 3, 3, 3, 0 };
-static sint d_off_x_3[] = { -3, 3, -2, 2, -1, 0, 1, -3, 3, -3, 3, -2, 2, -1, 0, 1, 0 };
+static POSITION d_off_y_3[] = { -1, -1, -2, -2, -3, -3, -3, 0, 0, 1, 1, 2, 2, 3, 3, 3, 0 };
+static POSITION d_off_x_3[] = { -3, 3, -2, 2, -1, 0, 1, -3, 3, -3, 3, -2, 2, -1, 0, 1, 0 };
-static sint d_off_y_4[] = { -1, -1, -2, -2, -3, -3, -3, -3, -4, -4, -4, 0, 0, 1, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 0 };
-static sint d_off_x_4[] = { -4, 4, -3, 3, -2, -3, 2, 3, -1, 0, 1, -4, 4, -4, 4, -3, 3, -2, -3, 2, 3, -1, 0, 1, 0 };
+static POSITION d_off_y_4[] = { -1, -1, -2, -2, -3, -3, -3, -3, -4, -4, -4, 0, 0, 1, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 0 };
+static POSITION d_off_x_4[] = { -4, 4, -3, 3, -2, -3, 2, 3, -1, 0, 1, -4, 4, -4, 4, -3, 3, -2, -3, 2, 3, -1, 0, 1, 0 };
-static sint d_off_y_5[] =
+static POSITION d_off_y_5[] =
{ -1, -1, -2, -2, -3, -3, -4, -4, -4, -4, -5, -5,
-5, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 4, 4, 5, 5,
5, 0 };
-static sint d_off_x_5[] =
+static POSITION d_off_x_5[] =
{ -5, 5, -4, 4, -4, 4, -2, -3, 2, 3, -1, 0, 1,
-5, 5, -5, 5, -4, 4, -4, 4, -2, -3, 2, 3, -1,
0, 1, 0 };
-static sint d_off_y_6[] =
+static POSITION d_off_y_6[] =
{ -1, -1, -2, -2, -3, -3, -4, -4, -5, -5, -5, -5,
-6, -6, -6, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5,
5, 5, 6, 6, 6, 0 };
-static sint d_off_x_6[] =
+static POSITION d_off_x_6[] =
{ -6, 6, -5, 5, -5, 5, -4, 4, -2, -3, 2, 3, -1,
0, 1, -6, 6, -6, 6, -5, 5, -5, 5, -4, 4, -2,
-3, 2, 3, -1, 0, 1, 0 };
-static sint d_off_y_7[] =
+static POSITION d_off_y_7[] =
{ -1, -1, -2, -2, -3, -3, -4, -4, -5, -5, -5, -5,
-6, -6, -6, -6, -7, -7, -7, 0, 0, 1, 1, 2, 2, 3,
3, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 0 };
-static sint d_off_x_7[] =
+static POSITION d_off_x_7[] =
{ -7, 7, -6, 6, -6, 6, -5, 5, -4, -5, 4, 5, -2,
-3, 2, 3, -1, 0, 1, -7, 7, -7, 7, -6, 6, -6,
6, -5, 5, -4, -5, 4, 5, -2, -3, 2, 3, -1, 0,
1, 0 };
-static sint d_off_y_8[] =
+static POSITION d_off_y_8[] =
{ -1, -1, -2, -2, -3, -3, -4, -4, -5, -5, -6, -6,
-6, -6, -7, -7, -7, -7, -8, -8, -8, 0, 0, 1, 1,
2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,
8, 8, 8, 0 };
-static sint d_off_x_8[] =
+static POSITION d_off_x_8[] =
{ -8, 8, -7, 7, -7, 7, -6, 6, -6, 6, -4, -5, 4,
5, -2, -3, 2, 3, -1, 0, 1, -8, 8, -8, 8, -7,
7, -7, 7, -6, 6, -6, 6, -4, -5, 4, 5, -2, -3,
2, 3, -1, 0, 1, 0 };
-static sint d_off_y_9[] =
+static POSITION d_off_y_9[] =
{ -1, -1, -2, -2, -3, -3, -4, -4, -5, -5, -6, -6,
-7, -7, -7, -7, -8, -8, -8, -8, -9, -9, -9, 0,
0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 7,
7, 8, 8, 8, 8, 9, 9, 9, 0 };
-static sint d_off_x_9[] =
+static POSITION d_off_x_9[] =
{ -9, 9, -8, 8, -8, 8, -7, 7, -7, 7, -6, 6, -4,
-5, 4, 5, -2, -3, 2, 3, -1, 0, 1, -9, 9, -9,
9, -8, 8, -8, 8, -7, 7, -7, 7, -6, 6, -4, -5,
4, 5, -2, -3, 2, 3, -1, 0, 1, 0 };
-static sint *dist_offsets_y[10] =
+static POSITION *dist_offsets_y[10] =
{
d_off_y_0, d_off_y_1, d_off_y_2, d_off_y_3, d_off_y_4,
d_off_y_5, d_off_y_6, d_off_y_7, d_off_y_8, d_off_y_9
};
-static sint *dist_offsets_x[10] =
+static POSITION *dist_offsets_x[10] =
{
d_off_x_0, d_off_x_1, d_off_x_2, d_off_x_3, d_off_x_4,
d_off_x_5, d_off_x_6, d_off_x_7, d_off_x_8, d_off_x_9
POSITION y, x, dy, dx, d, dis, i;
POSITION gy = 0, gx = 0, gdis = 0;
- sint *y_offsets;
- sint *x_offsets;
+ POSITION *y_offsets;
+ POSITION *x_offsets;
cave_type *c_ptr;
POSITION y, x, dy, dx, d, dis, i;
POSITION gy = 0, gx = 0, gdis = 999;
- sint *y_offsets, *x_offsets;
+ POSITION *y_offsets, *x_offsets;
/* Start with adjacent locations, spread further */
for (d = 1; d < 10; d++)
ARMOUR_CLASS ac;
DEPTH rlev;
int pt;
- char m_name[80], t_name[80];
+ GAME_TEXT m_name[MAX_NLEN], t_name[MAX_NLEN];
char temp[MAX_NLEN];
bool blinked;
bool explode = FALSE, touched = FALSE, fear = FALSE, dead = FALSE;
- int y_saver = t_ptr->fy;
- int x_saver = t_ptr->fx;
+ POSITION y_saver = t_ptr->fy;
+ POSITION x_saver = t_ptr->fx;
int effect_type;
bool see_m = is_seen(m_ptr);
HIT_POINT power = 0;
HIT_POINT damage = 0;
- cptr act = NULL;
+ concptr act = NULL;
/* Extract the attack infomation */
int effect = r_ptr->blow[ap_cnt].effect;
static bool check_hp_for_feat_destruction(feature_type *f_ptr, monster_type *m_ptr)
{
return !have_flag(f_ptr->flags, FF_GLASS) ||
- (r_info[m_ptr->r_idx].flags2 & RF2_STUPID) ||
- (m_ptr->hp >= MAX(m_ptr->maxhp / 3, 200));
+ (r_info[m_ptr->r_idx].flags2 & RF2_STUPID) ||
+ (m_ptr->hp >= MAX(m_ptr->maxhp / 3, 200));
}
bool aware = TRUE;
bool fear, dead;
-
- bool is_riding_mon = (m_idx == p_ptr->riding);
-
- bool see_m = is_seen(m_ptr);
+ bool is_riding_mon = (m_idx == p_ptr->riding);
+ bool see_m = is_seen(m_ptr);
if (is_riding_mon && !(r_ptr->flags7 & RF7_RIDING))
{
#ifdef JP
msg_print("地面に落とされた。");
#else
- char m_name[80];
+ GAME_TEXT m_name[MAX_NLEN];
monster_desc(m_name, &m_list[p_ptr->riding], 0);
msg_format("You have fallen from %s.", m_name);
#endif
int tmp = p_ptr->lev*6+(p_ptr->skill_stl+10)*4;
if (p_ptr->monlite) tmp /= 3;
if (p_ptr->cursed & TRC_AGGRAVATE) tmp /= 2;
- if (r_ptr->level > (p_ptr->lev*p_ptr->lev/20+10)) tmp /= 3;
+ if (r_ptr->level > (p_ptr->lev * p_ptr->lev / 20 + 10)) tmp /= 3;
/* Low-level monsters will find it difficult to locate the player. */
if (randint0(tmp) > (r_ptr->level+20)) aware = FALSE;
}
if (see_m)
{
- char m_name[80];
+ GAME_TEXT m_name[MAX_NLEN];
monster_desc(m_name, m_ptr, 0);
msg_format(_("%sは消え去った!", "%^s disappears!"), m_name);
}
if (record_named_pet && is_pet(m_ptr) && m_ptr->nickname)
{
- char m_name[80];
-
+ GAME_TEXT m_name[MAX_NLEN];
monster_desc(m_name, m_ptr, MD_INDEF_VISIBLE);
do_cmd_write_nikki(NIKKI_NAMED_PET, RECORD_NAMED_PET_LOSE_PARENT, m_name);
}
-
delete_monster_idx(m_idx);
return;
if (see_m)
{
- char m_name[80];
+ GAME_TEXT m_name[MAX_NLEN];
monster_desc(m_name, m_ptr, 0);
msg_format(_("%sは消え去った!", "%^s disappears!"), m_name);
/* Generate treasure, etc */
monster_death(m_idx, FALSE);
-
delete_monster_idx(m_idx);
if (sad)
{
if (m_ptr->r_idx == MON_SHURYUUDAN)
{
mon_take_hit_mon(m_idx, 1, &dead, &fear, _("は爆発して粉々になった。", " explodes into tiny shreds."), m_idx);
+ if(dead) return;
}
if ((is_pet(m_ptr) || is_friendly(m_ptr)) && ((r_ptr->flags1 & RF1_UNIQUE) || (r_ptr->flags7 & RF7_NAZGUL)) && !p_ptr->inside_battle)
if (m_ptr->hp < m_ptr->maxhp/3)
{
- char m_name[80];
+ GAME_TEXT m_name[MAX_NLEN];
monster_desc(m_name, m_ptr, 0);
if (is_riding_mon && riding_pinch < 2)
/* Handle non-aggravation - Still sleeping */
if (!(p_ptr->cursed & TRC_AGGRAVATE)) return;
- /* Handle aggravation */
-
/* Reset sleep counter */
(void)set_monster_csleep(m_idx, 0);
/* Notice the "waking up" */
if (m_ptr->ml)
{
- char m_name[80];
+ GAME_TEXT m_name[MAX_NLEN];
monster_desc(m_name, m_ptr, 0);
msg_format(_("%^sが目を覚ました。", "%^s wakes up."), m_name);
}
gets_angry = TRUE;
/* Paranoia... no pet uniques outside wizard mode -- TY */
- if (is_pet(m_ptr) &&
- ((((r_ptr->flags1 & RF1_UNIQUE) || (r_ptr->flags7 & RF7_NAZGUL)) &&
+ if (is_pet(m_ptr) && ((((r_ptr->flags1 & RF1_UNIQUE) || (r_ptr->flags7 & RF7_NAZGUL)) &&
monster_has_hostile_align(NULL, 10, -10, r_ptr))
|| (r_ptr->flagsr & RFR_RES_ALL)))
{
{
if (is_pet(m_ptr) || see_m)
{
- char m_name[80];
+ GAME_TEXT m_name[MAX_NLEN];
monster_desc(m_name, m_ptr, is_pet(m_ptr) ? MD_ASSUME_VISIBLE : 0);
msg_format(_("%^sは突然敵にまわった!", "%^s suddenly becomes hostile!"), m_name);
}
oy = m_ptr->fy;
ox = m_ptr->fx;
-
/* Attempt to "multiply" if able and allowed */
if ((r_ptr->flags2 & RF2_MULTIPLY) && (num_repro < MAX_REPRO))
{
- int k, y, x;
+ int k;
+ POSITION y, x;
/* Count the adjacent monsters */
for (k = 0, y = oy - 1; y <= oy + 1; y++)
{
/* Ignore locations off of edge */
if (!in_bounds2(y, x)) continue;
-
if (cave[y][x].m_idx) k++;
}
}
}
}
-
if (r_ptr->a_ability_flags2 & RF6_SPECIAL)
{
/* Hack -- Ohmu scatters molds! */
DEPTH rlev = ((r_ptr->level >= 1) ? r_ptr->level : 1);
BIT_FLAGS p_mode = is_pet(m_ptr) ? PM_FORCE_PET : 0L;
- for (k = 0; k < 6; k++)
+ for (k = 0; k < A_MAX; k++)
{
- if (summon_specific(m_idx, m_ptr->fy, m_ptr->fx, rlev, SUMMON_MOLD, (PM_ALLOW_GROUP | p_mode)))
+ if (summon_specific(m_idx, m_ptr->fy, m_ptr->fx, rlev, SUMMON_MOLD, (PM_ALLOW_GROUP | p_mode), '\0'))
{
if (m_list[hack_m_idx_ii].ml) count++;
}
}
}
-
if (!p_ptr->inside_battle)
{
/* Hack! "Cyber" monster makes noise... */
player_has_los_bold(oy, ox) &&
projectable(oy, ox, p_ptr->y, p_ptr->x))
{
- char m_name[80];
+ GAME_TEXT m_name[MAX_NLEN];
char monmessage[1024];
- cptr filename;
+ concptr filename;
/* Acquire the monster name/poss */
if (m_ptr->ml)
else if (is_pet(m_ptr))
{
/* Are we trying to avoid the player? */
- bool avoid = ((p_ptr->pet_follow_distance < 0) &&
- (m_ptr->cdis <= (0 - p_ptr->pet_follow_distance)));
+ bool avoid = ((p_ptr->pet_follow_distance < 0) && (m_ptr->cdis <= (0 - p_ptr->pet_follow_distance)));
/* Do we want to find the player? */
bool lonely = (!avoid && (m_ptr->cdis > p_ptr->pet_follow_distance));
did_pass_wall = FALSE;
did_kill_wall = FALSE;
-
/* Take a zero-terminated array of "directions" */
for (i = 0; mm[i]; i++)
{
m_ptr->fx = nx;
update_monster(m_idx, TRUE);
- /* Redraw the old grid */
lite_spot(oy, ox);
-
- /* Redraw the new grid */
lite_spot(ny, nx);
}
else
for (this_o_idx = c_ptr->o_idx; this_o_idx; this_o_idx = next_o_idx)
{
BIT_FLAGS flgs[TR_FLAG_SIZE], flg2 = 0L, flg3 = 0L, flgr = 0L;
- char m_name[80], o_name[MAX_NLEN];
+ GAME_TEXT m_name[MAX_NLEN], o_name[MAX_NLEN];
object_type *o_ptr = &o_list[this_o_idx];
/* Acquire next object */
/* Only give a message for "take_item" */
if (do_take && (r_ptr->flags2 & RF2_STUPID))
{
- /* Take note */
did_take_item = TRUE;
/* Describe observable situations */
/* Pick up the item */
else if (do_take)
{
- /* Take note */
did_take_item = TRUE;
/* Describe observable situations */
/* Destroy the item if not a pet */
else if (!is_pet(m_ptr))
{
- /* Take note */
did_kill_item = TRUE;
/* Describe observable situations */
/* Message if seen */
if (see_m)
{
- char m_name[80];
+ GAME_TEXT m_name[MAX_NLEN];
monster_desc(m_name, m_ptr, 0);
msg_format(_("%^sは戦いを決意した!", "%^s turns to fight!"), m_name);
}