X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=src%2Fspells1.c;h=4c83e3917d803824a9bcdbaeb6f5415d773f78bb;hb=7358da8a134c7f9911e69e1ec6162e51aed82ed0;hp=8ee066ac6ea088ccbf7456b457e8ec6b58d00fd1;hpb=bd4f6c815020e42dd825f9c57c29b6c026e984ec;p=hengband%2Fhengband.git diff --git a/src/spells1.c b/src/spells1.c index 8ee066ac6..4c83e3917 100644 --- a/src/spells1.c +++ b/src/spells1.c @@ -208,7 +208,7 @@ static byte spell_color(int type) * If the distance is not "one", we (may) return "*". * */ -u16b bolt_pict(int y, int x, int ny, int nx, int typ) +u16b bolt_pict(POSITION y, POSITION x, POSITION ny, POSITION nx, int typ) { int base; @@ -298,7 +298,7 @@ u16b bolt_pict(int y, int x, int ny, int nx, int typ) * by "update_view_los()", and very different from the one used by "los()". * */ -sint project_path(u16b *gp, int range, int y1, int x1, int y2, int x2, int flg) +sint project_path(u16b *gp, POSITION range, POSITION y1, POSITION x1, POSITION y2, POSITION x2, int flg) { int y, x; @@ -596,11 +596,11 @@ sint project_path(u16b *gp, int range, int y1, int x1, int y2, int x2, int flg) * Mega-Hack -- track "affected" monsters (see "project()" comments) */ static int project_m_n; /*!< 魔法効果範囲内にいるモンスターの数 */ -static int project_m_x; /*!< 処理中のモンスターX座標 */ -static int project_m_y; /*!< 処理中のモンスターY座標 */ +static POSITION project_m_x; /*!< 処理中のモンスターX座標 */ +static POSITION project_m_y; /*!< 処理中のモンスターY座標 */ /* Mega-Hack -- monsters target */ -static s16b monster_target_x; /*!< モンスターの攻撃目標X座標 */ -static s16b monster_target_y; /*!< モンスターの攻撃目標Y座標 */ +static POSITION monster_target_x; /*!< モンスターの攻撃目標X座標 */ +static POSITION monster_target_y; /*!< モンスターの攻撃目標Y座標 */ /*! @@ -1198,11 +1198,11 @@ static bool project_f(int who, int r, int y, int x, int dam, int typ) * We return "TRUE" if the effect of the projection is "obvious". * */ -static bool project_o(int who, int r, int y, int x, int dam, int typ) +static bool project_o(MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_POINT dam, int typ) { cave_type *c_ptr = &cave[y][x]; - s16b this_o_idx, next_o_idx = 0; + OBJECT_IDX this_o_idx, next_o_idx = 0; bool obvious = FALSE; bool known = player_has_los_bold(y, x); @@ -1585,7 +1585,7 @@ static bool project_o(int who, int r, int y, int x, int dam, int typ) * "flg" was added. * */ -static bool project_m(int who, int r, int y, int x, int dam, int typ, int flg, bool see_s_msg) +static bool project_m(MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_POINT dam, int typ, int flg, bool see_s_msg) { int tmp; @@ -1643,7 +1643,7 @@ static bool project_m(int who, int r, int y, int x, int dam, int typ, int flg, b char m_name[80]; char m_poss[10]; - int photo = 0; + PARAMETER_VALUE photo = 0; /* Assume no note */ cptr note = NULL; @@ -3053,7 +3053,7 @@ static bool project_m(int who, int r, int y, int x, int dam, int typ, int flg, b if (r_ptr->flagsr & RFR_RES_ALL) { - note = _("には効果がなかった!", " is immune."); + note = _("には効果がなかった!", " is immune."); dam = 0; if (is_original_ap_and_seen(m_ptr)) r_ptr->r_flagsr |= (RFR_RES_ALL); break; @@ -4073,7 +4073,7 @@ static bool project_m(int who, int r, int y, int x, int dam, int typ, int flg, b break; } - if ((r_ptr->flags4 & ~(RF4_NOMAGIC_MASK)) || (r_ptr->flags5 & ~(RF5_NOMAGIC_MASK)) || (r_ptr->flags6 & ~(RF6_NOMAGIC_MASK))) + if ((r_ptr->flags4 & ~(RF4_NOMAGIC_MASK)) || (r_ptr->a_ability_flags1 & ~(RF5_NOMAGIC_MASK)) || (r_ptr->a_ability_flags2 & ~(RF6_NOMAGIC_MASK))) { if (who > 0) { @@ -5173,7 +5173,7 @@ static bool project_m(int who, int r, int y, int x, int dam, int typ, int flg, b * We return "TRUE" if any "obvious" effects were observed. XXX XXX Actually, * we just assume that the effects were obvious, for historical reasons. */ -static bool project_p(int who, cptr who_name, int r, int y, int x, int dam, int typ, int flg, int monspell) +static bool project_p(int who, cptr who_name, int r, POSITION y, POSITION x, HIT_POINT dam, int typ, int flg, int monspell) { int k = 0; int rlev = 0; @@ -5216,15 +5216,15 @@ static bool project_p(int who, cptr who_name, int r, int y, int x, int dam, int if ((p_ptr->reflect || ((p_ptr->special_defense & KATA_FUUJIN) && !p_ptr->blind)) && (flg & PROJECT_REFLECTABLE) && !one_in_(10)) { - byte t_y, t_x; + POSITION t_y, t_x; int max_attempts = 10; - if (blind) - msg_print(_("何かが跳ね返った!", "Something bounces!")); + if (blind) + msg_print(_("何かが跳ね返った!", "Something bounces!")); else if (p_ptr->special_defense & KATA_FUUJIN) - msg_print(_("風の如く武器を振るって弾き返した!", "The attack bounces!")); + msg_print(_("風の如く武器を振るって弾き返した!", "The attack bounces!")); else - msg_print(_("攻撃が跳ね返った!", "The attack bounces!")); + msg_print(_("攻撃が跳ね返った!", "The attack bounces!")); /* Choose 'new' target */ @@ -5465,7 +5465,9 @@ static bool project_p(int who, cptr who_name, int r, int y, int x, int dam, int if (p_ptr->resist_neth) { if (!prace_is_(RACE_SPECTRE)) + { dam *= 6; dam /= (randint1(4) + 7); + } } else if (!CHECK_MULTISHADOW()) drain_exp(200 + (p_ptr->exp / 100), 200 + (p_ptr->exp / 1000), 75); @@ -6316,28 +6318,28 @@ int dist_to_line(int y, int x, int y1, int x1, int y2, int x2) * Modified version of los() for calculation of disintegration balls. * Disintegration effects are stopped by permanent walls. */ -bool in_disintegration_range(int y1, int x1, int y2, int x2) +bool in_disintegration_range(POSITION y1, POSITION x1, POSITION y2, POSITION x2) { /* Delta */ - int dx, dy; + POSITION dx, dy; /* Absolute */ - int ax, ay; + POSITION ax, ay; /* Signs */ - int sx, sy; + POSITION sx, sy; /* Fractions */ - int qx, qy; + POSITION qx, qy; /* Scanners */ - int tx, ty; + POSITION tx, ty; /* Scale factors */ - int f1, f2; + POSITION f1, f2; /* Slope, or 1/Slope, of LOS */ - int m; + POSITION m; /* Extract the offset */ @@ -6542,10 +6544,10 @@ bool in_disintegration_range(int y1, int x1, int y2, int x2) /* * breath shape */ -void breath_shape(u16b *path_g, int dist, int *pgrids, byte *gx, byte *gy, byte *gm, int *pgm_rad, int rad, int y1, int x1, int y2, int x2, int typ) +void breath_shape(u16b *path_g, int dist, int *pgrids, POSITION *gx, POSITION *gy, POSITION *gm, int *pgm_rad, POSITION rad, POSITION y1, POSITION x1, POSITION y2, POSITION x2, int typ) { - int by = y1; - int bx = x1; + POSITION by = y1; + POSITION bx = x1; int brad = 0; int brev = rad * rad / dist; int bdis = 0; @@ -6771,17 +6773,17 @@ void breath_shape(u16b *path_g, int dist, int *pgrids, byte *gx, byte *gy, byte * and "update_view()" and "update_monsters()" need to be called. * */ -bool project(int who, int rad, int y, int x, int dam, int typ, int flg, int monspell) +bool project(MONSTER_IDX who, POSITION rad, POSITION y, POSITION x, HIT_POINT dam, int typ, int flg, int monspell) { int i, t, dist; - int y1, x1; - int y2, x2; - int by, bx; + POSITION y1, x1; + POSITION y2, x2; + POSITION by, bx; int dist_hack = 0; - int y_saver, x_saver; /* For reflecting monsters */ + POSITION y_saver, x_saver; /* For reflecting monsters */ int msec = delay_factor * delay_factor * delay_factor; @@ -6812,13 +6814,13 @@ bool project(int who, int rad, int y, int x, int dam, int typ, int flg, int mons int grids = 0; /* Coordinates of the affected grids */ - byte gx[1024], gy[1024]; + POSITION gx[1024], gy[1024]; /* Encoded "radius" info (see above) */ - byte gm[32]; + POSITION gm[32]; /* Actual radius encoded in gm[] */ - int gm_rad = rad; + POSITION gm_rad = rad; bool jump = FALSE; @@ -7030,7 +7032,7 @@ bool project(int who, int rad, int y, int x, int dam, int typ, int flg, int mons { 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(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]; @@ -7584,7 +7586,7 @@ bool project(int who, int rad, int y, int x, int dam, int typ, int flg, int mons ((cave[y][x].m_idx != p_ptr->riding) || !(flg & PROJECT_PLAYER)) && (!who || dist_hack > 1) && !one_in_(10)) { - byte t_y, t_x; + POSITION t_y, t_x; int max_attempts = 10; /* Choose 'new' target */