armour = r_ptr->ac;
if (p_ptr->concent)
{
- armour *= (10 - p_ptr->concent);
- armour /= 10;
+ armour *= (8 - p_ptr->concent);
+ armour /= 8;
}
/* Did we hit it (penalize range) */
{
/* Apply special damage XXX XXX XXX */
tdam = tot_dam_aux_shot(q_ptr, tdam, m_ptr);
- tdam = critical_shot(q_ptr->weight, q_ptr->to_h, tdam);
+ tdam = critical_shot(q_ptr->weight, q_ptr->to_h, j_ptr->to_h, tdam);
/* No negative damage */
if (tdam < 0) tdam = 0;
else
{
/* STICK TO */
- if (object_is_fixed_artifact(q_ptr))
+ if (object_is_fixed_artifact(q_ptr) &&
+ (p_ptr->pclass != CLASS_SNIPER || p_ptr->concent == 0))
{
char m_name[80];
int i, j, y, x, ty, tx, prev_y, prev_x;
int ny[19], nx[19];
int chance, tdam, tdis;
- int mul, div;
+ int mul, div, dd, ds;
int cur_dis, visible;
object_type forge;
/* Extract the thrown object's flags. */
object_flags(q_ptr, flgs);
+ torch_flags(q_ptr, flgs);
/* Distribute the charges of rods/wands between the stacks */
distribute_charges(o_ptr, q_ptr, 1);
}
/* Hack -- Base damage from thrown object */
- tdam = damroll(q_ptr->dd, q_ptr->ds);
+ dd = q_ptr->dd;
+ ds = q_ptr->ds;
+ torch_dice(q_ptr, &dd, &ds); /* throwing a torch */
+ tdam = damroll(dd, ds);
/* Apply special damage XXX XXX XXX */
tdam = tot_dam_aux(q_ptr, tdam, m_ptr, 0, TRUE);
- tdam = critical_shot(q_ptr->weight, q_ptr->to_h, tdam);
+ tdam = critical_shot(q_ptr->weight, q_ptr->to_h, 0, tdam);
if (q_ptr->to_d > 0)
tdam += q_ptr->to_d;
else
}
}
+ /* decrease toach's fuel */
+ if (hit_body) torch_lost_fuel(q_ptr);
+
/* Chance of breakage (during attacks) */
j = (hit_body ? breakage_chance(q_ptr) : 0);
{
/* Forget the old data */
travel.cost[y][x] = MAX_SHORT;
- }
+ }
}
+
+ travel.y = travel.x = 0;
}
static int travel_flow_cost(int y, int x)
int dx, dy, sx, sy;
feature_type *f_ptr;
- if (!tgt_pt(&x, &y)) return;
+ if (travel.x != 0 && travel.y != 0 &&
+ get_check(_("¥È¥é¥Ù¥ë¤ò·Ñ³¤·¤Þ¤¹¤«¡©", "Do you continue to travel?")))
+ {
+ y = travel.y;
+ x = travel.x;
+ }
+ else if (!tgt_pt(&x, &y)) return;
if ((x == px) && (y == py))
{
return;
}
- travel.x = x;
- travel.y = y;
-
forget_travel_flow();
travel_flow(y, x);
+ travel.x = x;
+ travel.y = y;
+
/* Travel till 255 steps */
travel.run = 255;