#include "spells-diceroll.h"
#include "spells-summon.h"
#include "monsterrace-hook.h"
#include "spells-diceroll.h"
#include "spells-summon.h"
#include "monsterrace-hook.h"
*/
static bool project_f(MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_POINT dam, EFFECT_ID typ)
{
*/
static bool project_f(MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_POINT dam, EFFECT_ID typ)
{
sound(SOUND_GLASS);
remove_mirror(y, x);
project(0, 2, y, x, p_ptr->lev / 2 + 5, GF_SHARDS, (PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL | PROJECT_JUMP | PROJECT_NO_HANGEKI), -1);
sound(SOUND_GLASS);
remove_mirror(y, x);
project(0, 2, y, x, p_ptr->lev / 2 + 5, GF_SHARDS, (PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL | PROJECT_JUMP | PROJECT_NO_HANGEKI), -1);
sound(SOUND_GLASS);
remove_mirror(y, x);
project(0, 2, y, x, p_ptr->lev / 2 + 5, GF_SHARDS, (PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL | PROJECT_JUMP | PROJECT_NO_HANGEKI), -1);
sound(SOUND_GLASS);
remove_mirror(y, x);
project(0, 2, y, x, p_ptr->lev / 2 + 5, GF_SHARDS, (PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL | PROJECT_JUMP | PROJECT_NO_HANGEKI), -1);
*/
static bool project_o(MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_POINT dam, EFFECT_ID typ)
{
*/
static bool project_o(MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_POINT dam, EFFECT_ID typ)
{
/* Scan all objects in the grid */
for (this_o_idx = g_ptr->o_idx; this_o_idx; this_o_idx = next_o_idx)
{
/* Scan all objects in the grid */
for (this_o_idx = g_ptr->o_idx; this_o_idx; this_o_idx = next_o_idx)
{
next_o_idx = o_ptr->next_o_idx;
object_flags(o_ptr, flgs);
next_o_idx = o_ptr->next_o_idx;
object_flags(o_ptr, flgs);
- monster_type *m_ptr = &m_list[g_ptr->m_idx];
- monster_type *caster_ptr = (who > 0) ? &m_list[who] : NULL;
+ monster_type *m_ptr = ¤t_floor_ptr->m_list[g_ptr->m_idx];
+ monster_type *caster_ptr = (who > 0) ? ¤t_floor_ptr->m_list[who] : NULL;
take_hit(DAMAGE_ATTACK, dam, killer, -1); /* has already been /3 */
if (one_in_(4) && !CHECK_MULTISHADOW())
{
take_hit(DAMAGE_ATTACK, dam, killer, -1); /* has already been /3 */
if (one_in_(4) && !CHECK_MULTISHADOW())
{
if (!CHECK_MULTISHADOW())
{
msg_print(_("超能力パワーを吸いとられた!", "Your psychic energy is drained!"));
if (!CHECK_MULTISHADOW())
{
msg_print(_("超能力パワーを吸いとられた!", "Your psychic energy is drained!"));
- if (seen_msg) msg_format(_("%^sは勇気を取り戻した。", "%^s recovers %s courage."), m_name);
+ if (seen_msg) msg_format(_("%^sは勇気を取り戻した。", "%^s recovers %s courage."), m_name, m_poss);
if (seen) obvious = TRUE;
if (genocide_aux(g_ptr->m_idx, dam, !who, (r_ptr->level + 1) / 2, _("モンスター消滅", "Genocide One")))
{
if (seen) obvious = TRUE;
if (genocide_aux(g_ptr->m_idx, dam, !who, (r_ptr->level + 1) / 2, _("モンスター消滅", "Genocide One")))
{
- t_y = m_list[who].fy - 1 + randint1(3);
- t_x = m_list[who].fx - 1 + randint1(3);
+ t_y = current_floor_ptr->m_list[who].fy - 1 + randint1(3);
+ t_x = current_floor_ptr->m_list[who].fx - 1 + randint1(3);
max_attempts--;
}
while (max_attempts && in_bounds2u(t_y, t_x) && !projectable(p_ptr->y, p_ptr->x, t_y, t_x));
if (max_attempts < 1)
{
max_attempts--;
}
while (max_attempts && in_bounds2u(t_y, t_x) && !projectable(p_ptr->y, p_ptr->x, t_y, t_x));
if (max_attempts < 1)
{
rlev = (((&r_info[m_ptr->r_idx])->level >= 1) ? (&r_info[m_ptr->r_idx])->level : 1);
monster_desc(m_name, m_ptr, 0);
rlev = (((&r_info[m_ptr->r_idx])->level >= 1) ? (&r_info[m_ptr->r_idx])->level : 1);
monster_desc(m_name, m_ptr, 0);
get_damage = take_hit(DAMAGE_ATTACK, dam, m_name, monspell);
get_damage = take_hit(DAMAGE_ATTACK, dam, m_name, monspell);
- x1 = m_list[who].fx;
- y1 = m_list[who].fy;
- monster_desc(who_name, &m_list[who], MD_IGNORE_HALLU | MD_ASSUME_VISIBLE | MD_INDEF_VISIBLE);
+ x1 = current_floor_ptr->m_list[who].fx;
+ y1 = current_floor_ptr->m_list[who].fy;
+ monster_desc(who_name, ¤t_floor_ptr->m_list[who], MD_WRONGDOER_NAME);
}
}
if (project_o(0, 0, y, x, dam, GF_SEEKER))notice = TRUE;
}
}
if (project_o(0, 0, y, x, dam, GF_SEEKER))notice = TRUE;
x = GRID_X(path_g[j]);
if (project_m(0, 0, y, x, dam, GF_SEEKER, flg, TRUE)) notice = TRUE;
if (!who && (project_m_n == 1) && !jump) {
x = GRID_X(path_g[j]);
if (project_m(0, 0, y, x, dam, GF_SEEKER, flg, TRUE)) notice = TRUE;
if (!who && (project_m_n == 1) && !jump) {
- if (current_floor->grid_array[project_m_y][project_m_x].m_idx > 0) {
- monster_type *m_ptr = &m_list[current_floor->grid_array[project_m_y][project_m_x].m_idx];
+ if (current_floor_ptr->grid_array[project_m_y][project_m_x].m_idx > 0) {
+ monster_type *m_ptr = ¤t_floor_ptr->m_list[current_floor_ptr->grid_array[project_m_y][project_m_x].m_idx];
if (project_m(0, 0, py, px, dam, GF_SEEKER, flg, TRUE))
notice = TRUE;
if (!who && (project_m_n == 1) && !jump) {
if (project_m(0, 0, py, px, dam, GF_SEEKER, flg, TRUE))
notice = TRUE;
if (!who && (project_m_n == 1) && !jump) {
px = GRID_X(path_g[i]);
(void)project_m(0, 0, py, px, dam, GF_SUPER_RAY, flg, TRUE);
if(!who && (project_m_n == 1) && !jump){
px = GRID_X(path_g[i]);
(void)project_m(0, 0, py, px, dam, GF_SUPER_RAY, flg, TRUE);
if(!who && (project_m_n == 1) && !jump){
- if(current_floor->grid_array[project_m_y][project_m_x].m_idx >0 ){
- monster_type *m_ptr = &m_list[current_floor->grid_array[project_m_y][project_m_x].m_idx];
+ if(current_floor_ptr->grid_array[project_m_y][project_m_x].m_idx >0 ){
+ monster_type *m_ptr = ¤t_floor_ptr->m_list[current_floor_ptr->grid_array[project_m_y][project_m_x].m_idx];
(!who ? TRUE : (player_can_see_bold(y1, x1) && projectable(p_ptr->y, p_ptr->x, y1, x1)));
}
(!who ? TRUE : (player_can_see_bold(y1, x1) && projectable(p_ptr->y, p_ptr->x, y1, x1)));
}
- if ((flg & PROJECT_REFLECTABLE) && current_floor->grid_array[y][x].m_idx && (ref_ptr->flags2 & RF2_REFLECTING) &&
- ((current_floor->grid_array[y][x].m_idx != p_ptr->riding) || !(flg & PROJECT_PLAYER)) &&
+ if ((flg & PROJECT_REFLECTABLE) && current_floor_ptr->grid_array[y][x].m_idx && (ref_ptr->flags2 & RF2_REFLECTING) &&
+ ((current_floor_ptr->grid_array[y][x].m_idx != p_ptr->riding) || !(flg & PROJECT_PLAYER)) &&
- project(current_floor->grid_array[y][x].m_idx, 0, t_y, t_x, dam, typ, flg, monspell);
+ project(current_floor_ptr->grid_array[y][x].m_idx, 0, t_y, t_x, dam, typ, flg, monspell);
distance(p_ptr->y, p_ptr->x, y, x) <= MAX_RANGE &&
distance(p_ptr->y, p_ptr->x, y, x) != 0 &&
player_has_los_bold(y, x) &&
distance(p_ptr->y, p_ptr->x, y, x) <= MAX_RANGE &&
distance(p_ptr->y, p_ptr->x, y, x) != 0 &&
player_has_los_bold(y, x) &&
{
if (project_m(0, 0, y, x, dam, GF_GENOCIDE,
(PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL | PROJECT_JUMP), TRUE))
{
{
if (project_m(0, 0, y, x, dam, GF_GENOCIDE,
(PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL | PROJECT_JUMP), TRUE))
{