X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=src%2Fspells1.c;h=3a5e7fe557b8158f8970b590b620cb495f1eca6f;hb=e70ba712cf4b753e7d3876f60980c87cfeec09e3;hp=e71736ddd8beac880513992c49f235f5ce51d98f;hpb=c00affd4efadc69d5b779247b68425774b2b3ebe;p=hengband%2Fhengband.git diff --git a/src/spells1.c b/src/spells1.c index e71736ddd..3a5e7fe55 100644 --- a/src/spells1.c +++ b/src/spells1.c @@ -16,6 +16,9 @@ #include "trap.h" #include "object-curse.h" #include "player-damage.h" +#include "monsterrace-hook.h" +#include "melee.h" +#include "world.h" static int rakubadam_m; /*!< 振り落とされた際のダメージ量 */ @@ -144,7 +147,7 @@ static void next_mirror(int* next_y, int* next_x, int cury, int curx) * @param max 色IDの最大値 * @return 選択した色ID */ -static byte mh_attr(int max) +static TERM_COLOR mh_attr(int max) { switch (randint1(max)) { @@ -175,7 +178,7 @@ static byte mh_attr(int max) * @param type 魔法属性 * @return 対応する色ID */ -static byte spell_color(int type) +static TERM_COLOR spell_color(int type) { /* Check if A.B.'s new graphics should be used (rr9) */ if (streq(ANGBAND_GRAF, "new") || streq(ANGBAND_GRAF, "ne2")) @@ -243,8 +246,8 @@ static byte spell_color(int type) /* Normal tiles or ASCII */ else { - byte a; - char c; + TERM_COLOR a; + SYMBOL_CODE c; /* Lookup the default colors for this type */ cptr s = quark_str(gf_color[type]); @@ -292,7 +295,7 @@ u16b bolt_pict(POSITION y, POSITION x, POSITION ny, POSITION nx, EFFECT_ID typ) byte k; TERM_COLOR a; - char c; + SYMBOL_CODE c; /* No motion (*) */ if ((ny == y) && (nx == x)) base = 0x30; @@ -853,10 +856,7 @@ static bool project_f(MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_P if (!p_ptr->blind && player_has_los_bold(y, x)) { c_ptr->info &= ~(CAVE_UNSAFE); - - /* Redraw */ lite_spot(y, x); - obvious = TRUE; } @@ -884,10 +884,7 @@ static bool project_f(MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_P if (!p_ptr->blind && player_has_los_bold(y, x)) { c_ptr->info &= ~(CAVE_UNSAFE); - - /* Redraw */ lite_spot(y, x); - obvious = TRUE; } @@ -902,12 +899,9 @@ static bool project_f(MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_P feature_type *mimic_f_ptr = &f_info[get_feat_mimic(c_ptr)]; cave_alter_feat(y, x, FF_SPIKE); - c_ptr->mimic = old_mimic; note_spot(y, x); - - /* Redraw */ lite_spot(y, x); /* Check line of sight */ @@ -998,7 +992,6 @@ static bool project_f(MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_P note_spot(y, x); - /* Redraw */ lite_spot(y, x); break; @@ -1073,12 +1066,8 @@ static bool project_f(MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_P if (!(d_info[dungeon_type].flags1 & DF1_DARKNESS)) { c_ptr->info |= (CAVE_GLOW); - note_spot(y, x); - - /* Redraw */ lite_spot(y, x); - update_local_illumination(y, x); /* Observe */ @@ -1140,7 +1129,6 @@ static bool project_f(MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_P note_spot(y, x); } - /* Redraw */ lite_spot(y, x); update_local_illumination(y, x); @@ -1275,7 +1263,7 @@ static bool project_o(MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_P BIT_FLAGS flgs[TR_FLAG_SIZE]; - char o_name[MAX_NLEN]; + GAME_TEXT o_name[MAX_NLEN]; KIND_OBJECT_IDX k_idx = 0; bool is_potion = FALSE; @@ -1290,7 +1278,6 @@ static bool project_o(MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_P /* Scan all objects in the grid */ for (this_o_idx = c_ptr->o_idx; this_o_idx; this_o_idx = next_o_idx) { - /* Acquire object */ object_type *o_ptr = &o_list[this_o_idx]; bool is_art = FALSE; @@ -1567,7 +1554,6 @@ static bool project_o(MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_P (void)potion_smash_effect(who, y, x, k_idx); } - /* Redraw */ lite_spot(y, x); } } @@ -1701,7 +1687,7 @@ static bool project_m(MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_P bool heal_leper = FALSE; /* Hold the monster name */ - char m_name[80]; + GAME_TEXT m_name[MAX_NLEN]; char m_poss[10]; PARAMETER_VALUE photo = 0; @@ -1710,12 +1696,12 @@ static bool project_m(MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_P cptr note = NULL; /* Assume a default death */ - cptr note_dies = extract_note_dies(real_r_ptr(m_ptr)); + cptr note_dies = extract_note_dies(real_r_idx(m_ptr)); - int ty = m_ptr->fy; - int tx = m_ptr->fx; + POSITION ty = m_ptr->fy; + POSITION tx = m_ptr->fx; - int caster_lev = (who > 0) ? r_info[caster_ptr->r_idx].level : (p_ptr->lev * 2); + DEPTH caster_lev = (who > 0) ? r_info[caster_ptr->r_idx].level : (p_ptr->lev * 2); /* Nobody here */ if (!c_ptr->m_idx) return (FALSE); @@ -2802,7 +2788,7 @@ static bool project_m(MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_P if (is_original_ap_and_seen(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL); break; } - if (!monster_living(r_ptr)) + if (!monster_living(m_ptr->r_idx)) { if (is_original_ap_and_seen(m_ptr)) { @@ -2831,7 +2817,7 @@ static bool project_m(MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_P if (is_original_ap_and_seen(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL); break; } - if (!monster_living(r_ptr)) + if (!monster_living(m_ptr->r_idx)) { if (is_original_ap_and_seen(m_ptr)) { @@ -3374,7 +3360,7 @@ static bool project_m(MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_P /* Attempt a saving throw */ if (common_saving_throw_charm(p_ptr, dam, m_ptr) || - !monster_living(r_ptr)) + !monster_living(m_ptr->r_idx)) { /* Resist */ /* No obvious effect */ @@ -3946,7 +3932,7 @@ static bool project_m(MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_P break; } /* Only affect non-undead */ - if (monster_living(r_ptr)) + if (monster_living(m_ptr->r_idx)) { if (seen) obvious = TRUE; @@ -4048,7 +4034,6 @@ static bool project_m(MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_P /* Special message */ if (see_s_msg) { - /* Get the monster name */ monster_desc(killer, caster_ptr, 0); msg_format(_("%^sは気分が良さそうだ。", "%^s appears healthier."), killer); } @@ -4320,7 +4305,7 @@ static bool project_m(MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_P } if (is_pet(m_ptr)) nokori_hp = m_ptr->maxhp * 4L; - else if ((p_ptr->pclass == CLASS_BEASTMASTER) && monster_living(r_ptr)) + else if ((p_ptr->pclass == CLASS_BEASTMASTER) && monster_living(m_ptr->r_idx)) nokori_hp = m_ptr->maxhp * 3 / 10; else nokori_hp = m_ptr->maxhp * 3 / 20; @@ -4876,7 +4861,7 @@ static bool project_m(MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_P if (record_named_pet && is_pet(m_ptr) && m_ptr->nickname) { - char m2_name[80]; + char m2_name[MAX_NLEN]; monster_desc(m2_name, m_ptr, MD_INDEF_VISIBLE); do_cmd_write_nikki(NIKKI_NAMED_PET, RECORD_NAMED_PET_HEAL_LEPER, m2_name); @@ -4916,11 +4901,9 @@ static bool project_m(MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_P if (((dam > 0) || get_angry) && !do_sleep) anger_monster(m_ptr); - /* Take note */ if ((fear || do_fear) && seen) { sound(SOUND_FLEE); - msg_format(_("%^sは恐怖して逃げ出した!", "%^s flees in terror!"), m_name); } @@ -4980,7 +4963,7 @@ static bool project_m(MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_P if (pet) mode |= PM_FORCE_PET; else mode |= (PM_NO_PET | PM_FORCE_FRIENDLY); - count += summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, (pet ? p_ptr->lev*2/3+randint1(p_ptr->lev/2) : dun_level), 0, mode); + count += summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, (pet ? p_ptr->lev*2/3+randint1(p_ptr->lev/2) : dun_level), 0, mode, '\0'); if (!one_in_(6)) break; } case 23: case 24: case 25: @@ -4995,7 +4978,7 @@ static bool project_m(MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_P int i = 0; if (one_in_(13)) { - while (i < 6) + while (i < A_MAX) { do { @@ -5021,7 +5004,7 @@ static bool project_m(MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_P { p_ptr->health_who = c_ptr->m_idx; p_ptr->redraw |= (PR_HEALTH); - redraw_stuff(); + handle_stuff(); } /* Verify this code */ @@ -5063,8 +5046,6 @@ static bool project_m(MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_P { object_type *q_ptr; object_type forge; - - /* Get local object */ q_ptr = &forge; /* Prepare to make a Blade of Chaos */ @@ -5074,8 +5055,6 @@ static bool project_m(MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_P /* Mark the item as fully known */ q_ptr->ident |= (IDENT_MENTAL); - - /* Drop it in the dungeon */ (void)drop_near(q_ptr, -1, p_ptr->y, p_ptr->x); } @@ -5115,7 +5094,7 @@ static bool project_m(MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_P static bool project_p(MONSTER_IDX who, cptr who_name, int r, POSITION y, POSITION x, HIT_POINT dam, EFFECT_ID typ, BIT_FLAGS flg, int monspell) { int k = 0; - int rlev = 0; + DEPTH rlev = 0; /* Hack -- assume obvious */ bool obvious = TRUE; @@ -5130,7 +5109,7 @@ static bool project_p(MONSTER_IDX who, cptr who_name, int r, POSITION y, POSITIO monster_type *m_ptr = NULL; /* Monster name (for attacks) */ - char m_name[80]; + GAME_TEXT m_name[MAX_NLEN]; /* Monster name (for damage) */ char killer[80]; @@ -5209,12 +5188,8 @@ static bool project_p(MONSTER_IDX who, cptr who_name, int r, POSITION y, POSITIO if (who > 0) { - /* Get the source monster */ m_ptr = &m_list[who]; - /* Extract the monster level */ rlev = (((&r_info[m_ptr->r_idx])->level >= 1) ? (&r_info[m_ptr->r_idx])->level : 1); - - /* Get the monster name */ monster_desc(m_name, m_ptr, 0); /* Get the monster's real name (gotten before polymorph!) */ @@ -5285,8 +5260,7 @@ static bool project_p(MONSTER_IDX who, cptr who_name, int r, POSITION y, POSITIO if (p_ptr->resist_pois) dam = (dam + 2) / 3; if (double_resist) dam = (dam + 2) / 3; - if ((!(double_resist || p_ptr->resist_pois)) && - one_in_(HURT_CHANCE) && !CHECK_MULTISHADOW()) + if ((!(double_resist || p_ptr->resist_pois)) && one_in_(HURT_CHANCE) && !CHECK_MULTISHADOW()) { do_dec_stat(A_CON); } @@ -5387,9 +5361,7 @@ static bool project_p(MONSTER_IDX who, cptr who_name, int r, POSITION y, POSITIO (void)set_stun(p_ptr->stun + plus_stun); } - if (!(p_ptr->resist_fire || - IS_OPPOSE_FIRE() || - p_ptr->immune_fire)) + if (!(p_ptr->resist_fire || IS_OPPOSE_FIRE() || p_ptr->immune_fire)) { inven_damage(set_acid_destroy, 3); } @@ -5663,14 +5635,9 @@ static bool project_p(MONSTER_IDX who, cptr who_name, int r, POSITION y, POSITIO msg_print(_("閃光のため非物質的な影の存在でいられなくなった。", "The light forces you out of your incorporeal shadow form.")); - p_ptr->redraw |= PR_MAP; - /* Update monsters */ + p_ptr->redraw |= (PR_MAP | PR_STATUS); p_ptr->update |= (PU_MONSTERS); p_ptr->window |= (PW_OVERHEAD | PW_DUNGEON); - - /* Redraw status bar */ - p_ptr->redraw |= (PR_STATUS); - } break; @@ -5742,7 +5709,7 @@ static bool project_p(MONSTER_IDX who, cptr who_name, int r, POSITION y, POSITIO msg_print(_("あなたは以前ほど力強くなくなってしまった...。", "You're not as powerful as you used to be...")); - for (k = 0; k < 6; k++) + for (k = 0; k < A_MAX; k++) { p_ptr->stat_cur[k] = (p_ptr->stat_cur[k] * 7) / 8; if (p_ptr->stat_cur[k] < 3) p_ptr->stat_cur[k] = 3; @@ -5964,12 +5931,8 @@ static bool project_p(MONSTER_IDX who, cptr who_name, int r, POSITION y, POSITIO } learn_spell(monspell); - - /* Redraw mana */ p_ptr->redraw |= (PR_MANA); - - p_ptr->window |= (PW_PLAYER); - p_ptr->window |= (PW_SPELL); + p_ptr->window |= (PW_PLAYER | PW_SPELL); if (who > 0) { @@ -6192,7 +6155,7 @@ static bool project_p(MONSTER_IDX who, cptr who_name, int r, POSITION y, POSITIO if ((p_ptr->tim_eyeeye || hex_spelling(HEX_EYE_FOR_EYE)) && (get_damage > 0) && !p_ptr->is_dead && (who > 0)) { - char m_name_self[80]; + GAME_TEXT m_name_self[80]; /* hisself */ monster_desc(m_name_self, m_ptr, MD_PRON_VISIBLE | MD_POSSESSIVE | MD_OBJECTIVE); @@ -6256,27 +6219,13 @@ POSITION dist_to_line(POSITION y, POSITION x, POSITION y1, POSITION x1, POSITION */ bool in_disintegration_range(POSITION y1, POSITION x1, POSITION y2, POSITION x2) { - /* Delta */ - POSITION dx, dy; - - /* Absolute */ - POSITION ax, ay; - - /* Signs */ - POSITION sx, sy; - - /* Fractions */ - POSITION qx, qy; - - /* Scanners */ - POSITION tx, ty; - - /* Scale factors */ - POSITION f1, f2; - - /* Slope, or 1/Slope, of LOS */ - POSITION m; - + POSITION dx, dy; /* Delta */ + POSITION ax, ay; /* Absolute */ + POSITION sx, sy; /* Signs */ + POSITION qx, qy; /* Fractions */ + POSITION tx, ty; /* Scanners */ + POSITION f1, f2; /* Scale factors */ + POSITION m; /* Slope, or 1/Slope, of LOS */ /* Extract the offset */ dy = y2 - y1; @@ -6286,15 +6235,12 @@ bool in_disintegration_range(POSITION y1, POSITION x1, POSITION y2, POSITION x2) ay = ABS(dy); ax = ABS(dx); - /* Handle adjacent (or identical) grids */ if ((ax < 2) && (ay < 2)) return (TRUE); - /* Paranoia -- require "safe" origin */ /* if (!in_bounds(y1, x1)) return (FALSE); */ - /* Directly South/North */ if (!dx) { @@ -6345,12 +6291,10 @@ bool in_disintegration_range(POSITION y1, POSITION x1, POSITION y2, POSITION x2) return (TRUE); } - /* Extract some signs */ sx = (dx < 0) ? -1 : 1; sy = (dy < 0) ? -1 : 1; - /* Vertical "knights" */ if (ax == 1) { @@ -6369,7 +6313,6 @@ bool in_disintegration_range(POSITION y1, POSITION x1, POSITION y2, POSITION x2) } } - /* Calculate scale factor div 2 */ f2 = (ax * ay); @@ -6761,7 +6704,7 @@ bool project(MONSTER_IDX who, POSITION rad, POSITION y, POSITION x, HIT_POINT da bool jump = FALSE; /* Attacker's name (prepared before polymorph)*/ - char who_name[80]; + GAME_TEXT who_name[MAX_NLEN]; /* Can the player see the source of this effect? */ bool see_s_msg = TRUE; @@ -6868,8 +6811,6 @@ bool project(MONSTER_IDX who, POSITION rad, POSITION y, POSITION x, HIT_POINT da /* Calculate the projection path */ path_n = project_path(path_g, (project_length ? project_length : MAX_RANGE), y1, x1, y2, x2, flg); - - /* Hack -- Handle stuff */ handle_stuff(); /* Giga-Hack SEEKER & SUPER_RAY */ @@ -6909,8 +6850,8 @@ bool project(MONSTER_IDX who, POSITION rad, POSITION y, POSITION x, HIT_POINT da { u16b p; - byte a; - char c; + TERM_COLOR a; + SYMBOL_CODE c; /* Obtain the bolt pict */ p = bolt_pict(oy, ox, y, x, typ); @@ -6952,50 +6893,50 @@ bool project(MONSTER_IDX who, POSITION rad, POSITION y, POSITION x, HIT_POINT da Term_xtra(TERM_XTRA_DELAY, msec); } } - if(project_o(0,0,y,x,dam,GF_SEEKER))notice=TRUE; - if( is_mirror_grid(&cave[y][x])) + if (project_o(0, 0, y, x, dam, GF_SEEKER))notice = TRUE; + if (is_mirror_grid(&cave[y][x])) { - /* The target of monsterspell becomes tha mirror(broken) */ - monster_target_y=(s16b)y; - monster_target_x=(s16b)x; + /* The target of monsterspell becomes tha mirror(broken) */ + monster_target_y = y; + monster_target_x = x; remove_mirror(y, x); next_mirror(&oy, &ox, y, x); - path_n = i+project_path(&(path_g[i+1]), (project_length ? project_length : MAX_RANGE), y, x, oy, ox, flg); - for(j = last_i; j <= i; j++) + path_n = i + project_path(&(path_g[i + 1]), (project_length ? project_length : MAX_RANGE), y, x, oy, ox, flg); + for (j = last_i; j <= i; j++) { y = GRID_Y(path_g[j]); 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(cave[project_m_y][project_m_x].m_idx >0 ){ - monster_type *m_ptr = &m_list[cave[project_m_y][project_m_x].m_idx]; + if (project_m(0, 0, y, x, dam, GF_SEEKER, flg, TRUE)) notice = TRUE; + if (!who && (project_m_n == 1) && !jump) { + if (cave[project_m_y][project_m_x].m_idx > 0) { + monster_type *m_ptr = &m_list[cave[project_m_y][project_m_x].m_idx]; - if (m_ptr->ml) - { - /* Hack -- auto-recall */ - if (!p_ptr->image) monster_race_track(m_ptr->ap_r_idx); + if (m_ptr->ml) + { + /* Hack -- auto-recall */ + if (!p_ptr->image) monster_race_track(m_ptr->ap_r_idx); - /* Hack - auto-track */ - health_track(cave[project_m_y][project_m_x].m_idx); + /* Hack - auto-track */ + health_track(cave[project_m_y][project_m_x].m_idx); + } } - } } - (void)project_f(0,0,y,x,dam,GF_SEEKER); + (void)project_f(0, 0, y, x, dam, GF_SEEKER); } last_i = i; } } for(i = last_i ; i < path_n ; i++) { - int py, px; + POSITION py, px; py = GRID_Y(path_g[i]); px = GRID_X(path_g[i]); - if(project_m(0, 0, py, px, dam, GF_SEEKER, flg, TRUE)) + if (project_m(0, 0, py, px, dam, GF_SEEKER, flg, TRUE)) notice = TRUE; - if(!who && (project_m_n==1) && !jump ){ - if(cave[project_m_y][project_m_x].m_idx > 0) + if (!who && (project_m_n == 1) && !jump) { + if (cave[project_m_y][project_m_x].m_idx > 0) { monster_type *m_ptr = &m_list[cave[project_m_y][project_m_x].m_idx]; @@ -7024,11 +6965,11 @@ bool project(MONSTER_IDX who, POSITION rad, POSITION y, POSITION x, HIT_POINT da for (i = 0; i < path_n; ++i) { - int oy = y; - int ox = x; + POSITION oy = y; + POSITION ox = x; - int ny = GRID_Y(path_g[i]); - int nx = GRID_X(path_g[i]); + POSITION ny = GRID_Y(path_g[i]); + POSITION nx = GRID_X(path_g[i]); /* Advance */ y = ny; @@ -7047,8 +6988,8 @@ bool project(MONSTER_IDX who, POSITION rad, POSITION y, POSITION x, HIT_POINT da { u16b p; - byte a; - char c; + TERM_COLOR a; + SYMBOL_CODE c; /* Obtain the bolt pict */ p = bolt_pict(oy, ox, y, x, typ); @@ -7123,7 +7064,7 @@ bool project(MONSTER_IDX who, POSITION rad, POSITION y, POSITION x, HIT_POINT da } for( i = 0; i < path_n ; i++ ) { - int py, px; + POSITION py, px; py = GRID_Y(path_g[i]); px = GRID_X(path_g[i]); (void)project_m(0, 0, py, px, dam, GF_SUPER_RAY, flg, TRUE); @@ -7149,11 +7090,11 @@ bool project(MONSTER_IDX who, POSITION rad, POSITION y, POSITION x, HIT_POINT da /* Project along the path */ for (i = 0; i < path_n; ++i) { - int oy = y; - int ox = x; + POSITION oy = y; + POSITION ox = x; - int ny = GRID_Y(path_g[i]); - int nx = GRID_X(path_g[i]); + POSITION ny = GRID_Y(path_g[i]); + POSITION nx = GRID_X(path_g[i]); if (flg & PROJECT_DISI) { @@ -7191,8 +7132,8 @@ bool project(MONSTER_IDX who, POSITION rad, POSITION y, POSITION x, HIT_POINT da { u16b p; - byte a; - char c; + TERM_COLOR a; + SYMBOL_CODE c; /* Obtain the bolt pict */ p = bolt_pict(oy, ox, y, x, typ); @@ -7353,8 +7294,8 @@ bool project(MONSTER_IDX who, POSITION rad, POSITION y, POSITION x, HIT_POINT da { u16b p; - byte a; - char c; + TERM_COLOR a; + SYMBOL_CODE c; drawn = TRUE; @@ -7408,10 +7349,7 @@ bool project(MONSTER_IDX who, POSITION rad, POSITION y, POSITION x, HIT_POINT da } } - - /* Update stuff if needed */ - if (p_ptr->update) update_stuff(); - + update_creature(p_ptr); if (flg & PROJECT_KILL) { @@ -7452,8 +7390,7 @@ bool project(MONSTER_IDX who, POSITION rad, POSITION y, POSITION x, HIT_POINT da } } - /* Update stuff if needed */ - if (p_ptr->update) update_stuff(); + update_creature(p_ptr); /* Check objects */ if (flg & (PROJECT_ITEM)) @@ -7752,7 +7689,7 @@ bool project(MONSTER_IDX who, POSITION rad, POSITION y, POSITION x, HIT_POINT da if (p_ptr->riding) { - char m_name[80]; + GAME_TEXT m_name[MAX_NLEN]; monster_desc(m_name, &m_list[p_ptr->riding], 0);