{
if (!get_aim_dir(&dir)) return NULL;
- fire_bolt_or_beam(beam_chance() - 10, GF_ELEC, dir, damroll(dice, sides));
+ fire_bolt_or_beam(beam_chance(caster_ptr) - 10, GF_ELEC, dir, damroll(dice, sides));
}
}
break;
{
if (!get_aim_dir(&dir)) return NULL;
- fire_bolt_or_beam(beam_chance() - 10, GF_MISSILE, dir, damroll(dice, sides));
+ fire_bolt_or_beam(beam_chance(caster_ptr) - 10, GF_MISSILE, dir, damroll(dice, sides));
}
}
break;
{
if (!get_aim_dir(&dir)) return NULL;
- fire_bolt_or_beam(beam_chance(), GF_FIRE, dir, damroll(dice, sides));
+ fire_bolt_or_beam(beam_chance(caster_ptr), GF_FIRE, dir, damroll(dice, sides));
}
}
break;
{
if (!get_aim_dir(&dir)) return NULL;
- fire_bolt_or_beam(beam_chance(), GF_CHAOS, dir, damroll(dice, sides));
+ fire_bolt_or_beam(beam_chance(caster_ptr), GF_CHAOS, dir, damroll(dice, sides));
}
}
break;
if (cast)
{
if (!get_aim_dir(&dir)) return NULL;
- fire_bolt_or_beam(beam_chance() - 10, GF_ELEC, dir, damroll(dice, sides));
+ fire_bolt_or_beam(beam_chance(caster_ptr) - 10, GF_ELEC, dir, damroll(dice, sides));
}
}
break;
{
if (!get_aim_dir(&dir)) return NULL;
- fire_bolt_or_beam(beam_chance() - 10, GF_MISSILE, dir, damroll(dice, sides));
+ fire_bolt_or_beam(beam_chance(caster_ptr) - 10, GF_MISSILE, dir, damroll(dice, sides));
}
}
break;
{
if (!get_aim_dir(&dir)) return NULL;
- fire_bolt_or_beam(beam_chance(), GF_NETHER, dir, damroll(dice, sides));
+ fire_bolt_or_beam(beam_chance(caster_ptr), GF_NETHER, dir, damroll(dice, sides));
}
}
break;
{
if (!get_aim_dir(&dir)) return NULL;
- fire_bolt_or_beam(beam_chance(), GF_PLASMA, dir, damroll(dice, sides));
+ fire_bolt_or_beam(beam_chance(caster_ptr), GF_PLASMA, dir, damroll(dice, sides));
}
}
break;
{
if (!get_aim_dir(&dir)) return NULL;
- fire_bolt_or_beam(beam_chance(), GF_NETHER, dir, damroll(dice, sides));
+ fire_bolt_or_beam(beam_chance(caster_ptr), GF_NETHER, dir, damroll(dice, sides));
}
}
break;
{
if (!get_aim_dir(&dir)) return NULL;
- fire_bolt_or_beam(beam_chance(), GF_DARK, dir, damroll(dice, sides));
+ fire_bolt_or_beam(beam_chance(caster_ptr), GF_DARK, dir, damroll(dice, sides));
}
}
break;
if (cast)
{
if (!get_aim_dir(&dir)) return NULL;
- fire_bolt_or_beam(beam_chance() - 10, GF_COLD, dir, damroll(dice, sides));
+ fire_bolt_or_beam(beam_chance(caster_ptr) - 10, GF_COLD, dir, damroll(dice, sides));
}
}
break;
if (cast)
{
if (!get_aim_dir(&dir)) return NULL;
- fire_bolt_or_beam(beam_chance() - 10, GF_FIRE, dir, damroll(dice, sides));
+ fire_bolt_or_beam(beam_chance(caster_ptr) - 10, GF_FIRE, dir, damroll(dice, sides));
}
}
break;
* ハードコーティングによる実装が行われている。
* メイジは(レベル)%、ハイメイジ、スペルマスターは(レベル)%、それ以外の職業は(レベル/2)%
*/
-PERCENTAGE beam_chance(void)
+PERCENTAGE beam_chance(player_type *caster_ptr)
{
- if (p_ptr->pclass == CLASS_MAGE)
- return (PERCENTAGE)(p_ptr->lev);
- if (p_ptr->pclass == CLASS_HIGH_MAGE || p_ptr->pclass == CLASS_SORCERER)
- return (PERCENTAGE)(p_ptr->lev + 10);
+ if (caster_ptr->pclass == CLASS_MAGE)
+ return (PERCENTAGE)(caster_ptr->lev);
+ if (caster_ptr->pclass == CLASS_HIGH_MAGE || caster_ptr->pclass == CLASS_SORCERER)
+ return (PERCENTAGE)(caster_ptr->lev + 10);
- return (PERCENTAGE)(p_ptr->lev / 2);
+ return (PERCENTAGE)(caster_ptr->lev / 2);
}
extern const magic_type technic_info[NUM_TECHNIC][32];
/* spells1.c */
-extern PERCENTAGE beam_chance(void);
+extern PERCENTAGE beam_chance(player_type *caster_ptr);
extern bool in_disintegration_range(POSITION y1, POSITION x1, POSITION y2, POSITION x2);
extern void breath_shape(floor_type *floor_ptr, u16b *path_g, int dist, int *pgrids, POSITION *gx, POSITION *gy, POSITION *gm, POSITION *pgm_rad, POSITION rad, POSITION y1, POSITION x1, POSITION y2, POSITION x2, EFFECT_ID typ);
extern POSITION dist_to_line(POSITION y, POSITION x, POSITION y1, POSITION x1, POSITION y2, POSITION x2);
else if (die < 26) heal_monster(dir, damroll(4, 6));
else if (die < 31) poly_monster(dir, plev);
else if (die < 36)
- fire_bolt_or_beam(beam_chance() - 10, GF_MISSILE, dir,
+ fire_bolt_or_beam(beam_chance(caster_ptr) - 10, GF_MISSILE, dir,
damroll(3 + ((plev - 1) / 5), 4));
else if (die < 41) confuse_monster(dir, plev);
else if (die < 46) fire_ball(caster_ptr, GF_POIS, dir, 20 + (plev / 2), 3);
else if (die < 51) (void)lite_line(dir, damroll(6, 8));
else if (die < 56)
- fire_bolt_or_beam(beam_chance() - 10, GF_ELEC, dir,
+ fire_bolt_or_beam(beam_chance(caster_ptr) - 10, GF_ELEC, dir,
damroll(3 + ((plev - 5) / 4), 8));
else if (die < 61)
- fire_bolt_or_beam(beam_chance() - 10, GF_COLD, dir,
+ fire_bolt_or_beam(beam_chance(caster_ptr) - 10, GF_COLD, dir,
damroll(5 + ((plev - 5) / 4), 8));
else if (die < 66)
- fire_bolt_or_beam(beam_chance(), GF_ACID, dir,
+ fire_bolt_or_beam(beam_chance(caster_ptr), GF_ACID, dir,
damroll(6 + ((plev - 5) / 4), 8));
else if (die < 71)
- fire_bolt_or_beam(beam_chance(), GF_FIRE, dir,
+ fire_bolt_or_beam(beam_chance(caster_ptr), GF_FIRE, dir,
damroll(8 + ((plev - 5) / 4), 8));
else if (die < 76) hypodynamic_bolt(dir, 75);
else if (die < 81) fire_ball(caster_ptr, GF_ELEC, dir, 30 + plev / 2, 2);
}
else if (die < 36)
{
- fire_bolt_or_beam(beam_chance() - 10, GF_MISSILE, dir,
+ fire_bolt_or_beam(beam_chance(caster_ptr) - 10, GF_MISSILE, dir,
damroll(3 + ((plev - 1) / 5), 4));
}
else if (die < 41)
}
else if (die < 56)
{
- fire_bolt_or_beam(beam_chance() - 10, GF_ELEC, dir,
+ fire_bolt_or_beam(beam_chance(caster_ptr) - 10, GF_ELEC, dir,
damroll(3 + ((plev - 5) / 4), 8));
}
else if (die < 61)
{
- fire_bolt_or_beam(beam_chance() - 10, GF_COLD, dir,
+ fire_bolt_or_beam(beam_chance(caster_ptr) - 10, GF_COLD, dir,
damroll(5 + ((plev - 5) / 4), 8));
}
else if (die < 66)
{
- fire_bolt_or_beam(beam_chance(), GF_ACID, dir,
+ fire_bolt_or_beam(beam_chance(caster_ptr), GF_ACID, dir,
damroll(6 + ((plev - 5) / 4), 8));
}
else if (die < 71)
{
- fire_bolt_or_beam(beam_chance(), GF_FIRE, dir,
+ fire_bolt_or_beam(beam_chance(caster_ptr), GF_FIRE, dir,
damroll(8 + ((plev - 5) / 4), 8));
}
else if (die < 76)